unknown.417mjova,
-> #414, bambi> Da li neko zna kako da uklonim bedni cursor u Turbo C-u?
možeš sa _setcursor(). druga rešnje možeš naći u raznim fajlovima na
sezamu: snip9*.* (ne znam tačno) i dflat. lutaj malo...
SY
unknown.418bambi,
Hvala svima koji su mi odgovorili...
unknown.419djelovic,
Može neko da da rutinu za ubacivanje znaka u keyb buffer. Ungetch () radi
samo za jedan znak :(.
unknown.420mjova,
-> #419, djelovic> Može neko da da rutinu za ubacivanje znaka u keyb buffer.
> Ungetch () radi samo za jedan znak :(.
probaj int 16h 5. ako ti to ne ide (zbog kompatibilnosti), onda ćeš
morati direktno da upisuješ u kbd buffer. ovo drugo je lepše, mada ko
zna.
SY
unknown.421ivan.s,
Zbog seminarskog rada koji pisem, nabavio sam (posle dosta lutanja po
Inernetu) yacc-abilnu PD gramatiku Ca i C++, sve sa iscpnom diskusijom
svih konflikata. Meni je bila od velike pomoci, pa mi se cini da bi mogla
da bude zanimljiva i za SEZAM (i za direktorijum ;)
Iz arhive, koja je prikacena uz ovu poruku, sam (po preporuci autora)
izbacio jedino automatski generisan cross-reference (uglavnom zbog
velicine; nekompresovan ovaj fajl je nesto preko 4M) C++ gramatike. Ako
neko bude zainteresovan, poslacu i njega (zaista je neophodan za analizu
cpp5.y; VOLEO bih da imam program kojim je ovaj file generisan - pored
standardnog yaccovog -v ispisa, razlikuje LAR(1)-only konflikte, daje
primere ulaza pri kojima nastupa svaki od konflikata, stanje steka, i
crta parse trees...)
Pozdrav, Ivan
cppgram5.arjunknown.422skoprivica,
-> #421, ivan.s-> Inernetu) yacc-abilnu PD gramatiku Ca i C++, sve sa iscpnom
^^^^^^^^^^^^^
Pojasni mi ovo molim te...
-> velicine; nekompresovan ovaj fajl je nesto preko 4M) C++ gramatike.
Voleo bih ovo da imam, pa predlozi nesto...:)
Aje... CTEBO.
unknown.423dusanp,
Dal' me oči varaju, ili zz stvarno polako prelazi na
Borland C :)))))
A i nije čovek kriv. Pogledajte šta radi Microsoft.
Da sam hteo da mi se program INTERPRETIRA kupio bih bejzik
a ne onaj C 7.0 O:)
unknown.424kzoran,
Hi!
Ima li neko instaliranu cbase biblioteku funkcija za MSC 6.0?
Pokušao sam instalaciju na svojoj mašini, ali nešto nije išlo kako treba.
Install procedura mi prijavljuje gomilu unresolved external.
Pozdrav,
Zoran.
unknown.425dnikolic,
-> #424, kzoran>> Ima li neko instaliranu cbase biblioteku funkcija za MSC 6.0?
Ako sam te dobro razumeo, imas to ovde, na Sezamu, ali ne znam tacno u kom
direktorijumu. Pregledaj ( odlicno! ) uputstvo, imas objasnjenje kako se
CBASE bibilioteka prilagodjava Borland, MS i UNIX kompajlerima. Nije problem.
Ja jedino nisam uspeo da nateram TC 2.0 da radi sa CBASE iz integrisane okoline
( koju obozavam :)
dn
unknown.426hacker,
Pozdrav,
aman zaman, kako u Cu da dodam JEDAN znak "char" na string, naravno na
kraj stringa!?!
Pokusavam danima i ne uspeva mi, a neznam zasto, ajte recite Vi meni!
unknown.427dusanp,
-> #426, hacker=> aman zaman, kako u Cu da dodam JEDAN znak "char" na
=> string, naravno na kraj stringa!?!
**********************************************************
#include <string.h>
#include <stdio.h>
int main(void)
{
char destination[25];
char *blank = " ", *c = "C++", *Borland = "Borland";
strcpy(destination, Borland);
strcat(destination, blank);
strcat(destination, c);
printf("%s\n", destination);
return 0;
}
**********************************************************
unknown.428dvidovic,
Moze li ovo neko da mi iskompajlira i vrati exe verziju? Program je iz
PC Mag., zove se BigCopy i radi isto sto i Dejanovi Lcopy/Lretr.
Malo je i hitno.
Pozdrav
Dule
bcopy.cunknown.429hacker,
-> #427, dusanpDa, znam za taj lepi primer, danke
unknown.430prvul,
-> #426, hacker Ůaman zaman, kako u Cu da dodam JEDAN znak "char" na string, naravno na
Ů▄▄▄
Ako dodaješ na sting, moraš da u njemu imaš mesta za još znakova. Pošto se
C string završava sa 0x00 znakom, treba da na mesto tog znaka upišeš znak koji
ti treba, a u sledeće mesto da staviš novi 0x00... na primer,
char a[100];
/* Ubaciću slovo 'a' na kraj stringa a */
a[i=strlen(a)]='a';
a[++i]=(char)0x00;
Dobro, trebalo je da deklarišem i
int i;
ali pišem online, pa će mi valjda biti oprošteno
unknown.431mjova,
-> #428, dvidovic> Moze li ovo neko da mi iskompajlira i vrati exe verziju?
> Program je iz
vidi ovako, ovo je malo problematično, bilo je dosta štamparskih
grešaka, a nije samo to.. ima tu još po nešto da se ispravi... mene
mrzi prvo da ti kažem jer sve što želim da podelim to su arhive, a za
to mi je i arj dovoljan.
ako ti baš treba, mogu da ti pošaljem bcopy.exe, ali to ne radi kako
treba.
e, sad se setih, pogledaj po starim konferencijama za programom koji
se zove cut*.zip. to sam ostavio negde, ali nemam pojma gde...
SY
unknown.432dvidovic,
-> #431, mjova> vidi ovako, ovo je malo problematicno, bilo je dosta
> stamparskih gresaka, a nije samo to.. ima tu jos po nesto
> da se ispravi...
> e, sad se setih, pogledaj po starim konferencijama za
> programom koji se zove cut*.zip. to sam ostavio negde, ali
> nemam pojma gde...
Hvala u svakom slucaju. Pogledacu okolo.
Pozdrav
Dule
unknown.433dusanp,
Jedan program je radio savršeno do 29.2. ove godine,a onda
je pao. Zašto? Zato što sam u njemu koristio primer prikačen
uz ovu poruku. Bag BCa? Greška MsDos-a? Rezultat rada stranih
obaveštajnih službi? Ne znam. Da li se još nekom desilo nešto
slično?
greska.arjunknown.434bulaja,
**** new file **** \ibmpc\program\spawno41.zip
Zamena za Borland/Turbo C i Microsoft C spawn..() funkcije, swap-uje osnovni
program na disk, EMS, XMS ili extended memoriju dok se spawn-ovan program
izvrsava, ostavljajuci manje od 300 bajtova zauzeto u memoriji. Ukljucena je i
varijanta za Turbo Pascal.
unknown.435mjova,
-> #433, dusanp> Jedan program je radio savršeno do 29.2. ove godine,a onda
> Ne znam. Da li se još nekom desilo nešto slično?
pretpostavljam da si koristio mktime()? (videću posle dl-a). e, ako
jesi, onda u ovoj temi možeš da pronađeš nešto što sam napisao za
ispravljanje te greške. jedino čega se sećam (sad je sve ok) je da sam
se opasno napatio da nađem error...
SY
unknown.436dragisha,
-> #433, dusanpű> obavestajnih sluzbi? Ne znam. Da li se jos nekom desilo
ű> nesto slicno?
Desilo se jednom Ameru. On je i javio u Borland za problem, oni rekli
hvala popravicemo i u verziji 3.0 BC-a bug je jos uvijek gdje je i bio:).
dragisha
unknown.437viktor,
Zdravo,
Zamoljen sam da postavim pitanje:
- pri radu sa ORACLE-om pojavila se potreba za Lattice-C Ver 3.0 - 3.2
Zna li neko gde se tako nesxto mozxe nacyi, ko ga proizvodi, prodaje, da li je
zamenljiv nekim drugim oblikom C-a i slicxno.
Ako je pitanje i odgovr (mogucyi) interesantan za sve odgovore ostavite ovde u
konferenciji. Za ono sxto mozxda nije interesantno posxaljite u mail.
Unapred hvala u ime originalnog postavljacxa pitanja.
Pozdrav
unknown.438drakce,
Potrebni su mi programi (nešto kao Benchmark) za testiranje raznih kompajlera,
pre svega C-a. Svaki predlog i ideja su dobrodošli :)
Pozdrav
unknown.439bocko,
Ne znam da li je ovo pravo mesto, ali evo pitanja:
Gde se moze naci source za GhostScript 2.4?
( U dokumentaciji pise da je i source u PD-u)
Mislim da bi se odatle moglo podosta nauciti, pa molim
onoga ko je 'skinuo' GS24 da skine i source.....
Pozdrav, Bocko
unknown.440bulaja,
Otvoren je \IBMPC\C poddirektorijum i u njega su prebacene sledece
datoteke iz \ibmpc\program:
R:\IBMPC\C\*.*
----------------------
cbase101 a01 118403 C database library (source) (#2/2)
cbase101 arj 129200 C database library (source) (#1/2)
dflat9 zip 147342 C biblioteka (source) za korisnicki interfejs (DDJ)
dmake37e zip 145920 MAKE utility za C programere (TC, BC, MSC, MASM)
f2c-exe a01 127985 Fortran 77 -> C konverter (#2/2)
f2c-exe arj 139259 Fortran 77 -> C konverter (#1/2)
mc20 zip 190976 C compiler
sc88 zip 81240 Small C compiler (+ .C source)
snip9-91 arj 144788 Zbirka raznih primera i funkcija za C (source)
spawno41 zip 105023 Zamena za BC/MSC spawn..() funkcije
Bice jos noviteta ovih dana ;) ...
unknown.441madamov,
-> #439, bocko
Pa i nije baš pravo mesto, možda u ORKA:source ili tako negde. A
mogao bi Kale da otvori temu PostScript ili nešto slično u ORKA. Ne znam da
li ima negde za PC, a ja mogu da proverim da nema neki source tamo gde sam
ja našao GhostScript za ST. Koliko će da odgovara, ne znam, ali se radi o
GNU GhostScriptu, a taj je verovatno pisan u GNU C-u koji postoji valjda na
svim mašinama.
unknown.442bocko,
-> #441, madamov Jos jedan glas za PostScript!
Inace, GhostScript je, koliko sam primetio, napisan
tako da se sa par (desetina) #define - a prilagodjava
svim poznatijim (PC, UNIX i VMS) C-ovima.
U krajnjoj liniji, nije ni bitno. Mene interesuju
'parcici' koda, da naucim ponesto o implementiranju
PostScript-a i sl. Da li cu moci da rekompajliram celu
aplikac, nije ni vazno.
unknown.443dusanp,
-> #440, bulaja=> Otvoren je \IBMPC\C poddirektorijum i u njega su
=> prebacene sledece datoteke iz \ibmpc\program:
Pravi potez, iscasih oci trazeci programe vezane
za C.
unknown.444darone,
-> #439, bocko>> Mislim da bi se odatle moglo podosta nauciti, pa
>> molim onoga ko je 'skinuo' GS24 da skine i
>> source.....
Pa pre dva dana je došao na Sezam, ima ga u diru, a
i bila je poruka negde po konferencijama. A da
sysadmi ubace u sistemski autoexec i nešto kao:
echo Novi fajlovi:
dir /s /n
Moguće? Jako često se po konferencijama nalaze
poruke 'a žašto na sezamu nema toga i toga' a on je
tu od pre par dana.
darone
unknown.445bocko,
-> #444, darone>> Pa pre dva dana je dosao na Sezam, ima ga u diru, a
SOURCE?? Mozda sam obnevideo od zelje da ga nadjem,
^^^^^^^^
ali ja ga stvarno ne vidim. Pregledao sam sve sto ima veze
sa GhostScript-om, ali source-a nema pa nema.
Zeleo bih da nisam u pravu. Molim te, demantuj me.
Pozdrav, Bocko
unknown.446ndragan,
-> #437, viktor/ Zna li neko gde se tako nesxto mozxe nacyi, ko ga proizvodi, prodaje,
Set code maguar?
Bue_ Ndragan
unknown.447viktor,
-> #446, ndraganZdravo,
>>Set code maguar?
Ne, pokusao sam da vam prikazem jedan nacin "kodiranja" YU slova koji se lako
prebacuje na bilo koji kodni raspored sa replace. Nije vam se dopalo, jeste,
tesko je za citanje. Necu ga vise koristiti.
Dakle, zao mi je ako je nekome smetalo, ali ako nista drugo, videli ste ...
Pozdrav.
P.S. Sta bi sa Lattice - C?
unknown.448nick,
Da li je neko programirao nesto na C-u u okviru
AutoCAD-a verzija 11. Ako jeste neka se javi da
razmenimo iskustva.
pozdrav, nick
unknown.449bulaja,
-> #444, darone││molim onoga ko je 'skinuo' GS24 da skine i source.....
│└───
│Pa pre dva dana je dosao na Sezam, ima ga u diru,
└───
To nije bio source nego .EXE verzija i ostali glavin fajlovi. Source-a
nema na Trickle-u, cini mi se da je u dokumentaciji pisalo da se moze
naci na nekom ftp serveru (nemam vise dokumentaciju, obrisao sam je jer
mi GS en treba ;), ali nazalost ja nemam vremena ovih dana da to
dovlacim. Ako neko nabavi (a da nije mnogo dugacak source) ...
unknown.450madamov,
-> #449, bulaja Dugačak je, dugačak ... B((
unknown.451madamov,
-> #442, bocko
Onda je ok, ali tu je problem veličine fajla. Našao sam source za
verziju 2.11 GhostScripta na jednom ftp serveru za Atari, dug je oko 700Kb,
ZOO arhiva. Oštrim se da ga naručim, ali prvo moram da sredim stanje svog
direktorijuma na VAX-u da bi isti mogao da primi toliki fajl.
Najverovatnije za vikend.
unknown.452darone,
-> #445, bocko>> Zeleo bih da nisam u pravu. Molim te, demantuj
>> me.
U pravu si ;( Eh kad ne čitam svaku reč. Izvini.
darone
unknown.454dusanp,
-> #453, hacker=> JEL moze meni neko da objasni CELU proceduru pisanja
=> jednog LIBa u C++ 2.00 (BC) i kako kasnije iz TOG LIBa
=> koristiti funkcije koje sam napisao... I kako iz IDEa
=> ukljuciti LIB u program?
1..Napišeš svoju funkciju ili proceduru, koju hoćeš da
uključiš u lib. Na primer:
******************************************
#include <stdio.h>
void myfunc (void)
{
printf ("MYFUNC RADI!");
}
******************************************
2..Ovu proceduru prevedeš iz komandne linije sa BCCX -ml -c myfunc.c
(-ml određuje large model, a -c znaači samo kompajliranje u .OBJ)
3..Iz komandne linije otkucaš: TLIB mylib.lib +myfunc.obj
OVIM SI DOBIO BIBLIOTEKU MYLIB.LIB I U NJOJ FUNKCIJU MYFUNC()
4..Napišeš probni program, da vidiš kako to radi, na primer:
******************************************
void main (void)
{
myfunc();
}
******************************************
5..Iz komandne linije ovaj program prevodiš sa:
BCCX -ml main.c myfunc.lib
6..Iz IDEa otvoriš projekat i u njega upišeš da se sastoji iz
main.c i mylib.lib. Okineš F9 i radi...
unknown.455hacker,
HVALA...
unknown.456ndragan,
-> #447, viktor/ Ne, pokusao sam da vam prikazem jedan nacin "kodiranja" YU slova koji
/ se lako prebacuje na bilo koji kodni raspored sa replace. Nije vam se
Teško se čita, zaista. A i na Sezamu ima dosta citata iz engleskog
(beše li replace ili riplejs), kod kojih bi došlo do zabune ako bi se
ovo tvoje 'cy' prevodilo u neki drugi kodni raspored. Mislim da je neko
već okačio primer.
Bue_ NDragan
unknown.457kzoran,
Koristi li neko dflat user interfejs za c? Kako se to čudo instalira?
Pozdrav,
Zoran.
unknown.458ppekovic,
-> #457, kzoran>> Koristi li neko dflat user interfejs za c? Kako se to čudo instalira?
Citajuci uputstvo sam ga instalirao bez ikakvih problema. Nekako
tih dana se pojavilo nekoliko poruka u kojima oni koji su malo blize
zavirili u dflat i pokusali da ga korisno upotrebe izrazili rezervu
prema upotrebljivosti dflat-a. Koliko se secam, najvise je prituzbi
bilo na racun nacina programiranja pri koriscenju dflat procedura, ili
prosto receno: sve je to mnogo je komplikovano.
Paya
unknown.459kzoran,
-> #458, ppekovic>> Citajuci uputstvo sam ga instalirao bez ikakvih problema. Nekako
Ma, citao sam ja to sto si nazvao uputstvom; mozda je problem u drugom -
- dobio sam nesto sto nisam ocekivao. Naime, mislio sam da je to 'standardna'
biblioteka funkcija za user interface, a dobio memopad.exe! Takvih stvarcica
mi je vec pun ... Uz to, kompajliranje skoro svakog drugog .c fajla iz onog
poduzeg spiska proizvelo je gomilu poruka tipa : signed/unsigned mismatch;
conversion between different integral types; conditional expression is
constant; long/short mismatch in argument, a o onim 'All rights reserved'
da i ne govorim :)) Na kraju, naravno, o nekom .lib fajlu ni govora. Samo
mi jos treba da prekopavam po source-u i da trazim mesta na kojima je pisac
hteo nesto da kaze a nije se lepo odrazio ... Pa ako to i uradim, treba da
verujem da je sve OK, da od onih .obj fajlova pravim biblioteku i molim Slobu
da mi ne padne ... Hvala! I zasto sve u large modelu?
Kako se tebi dflat ponasao prilikom kompajliranja? Ili - postoji li nesto
pouzdano na istu temu, a da je rad sa njim jednostavniji?
Pozdrav,
Zoran.
unknown.460vilic,
Hi,
evo jedne od poslednjih poruka pristiglih sa TCPLUS-L listservera:
------------------------------------------------------------------
It comes from com.os.ms-windows.programmers.tools
---------------------
For now, here's a brief summary from Borland Language
Express:
- Full Windows 3.1 Support (MM, OLE, Pen, etc...)
- WINSTRIC.H Type Checking is now standard. (3 "relaxed" levels are
also available: 3.0, 3.1 compatibility, 3.1, and 3.1 strict)
- Better optimization, including 386 code generation (though not 32
bit flat memory :(, and "Object Data Calling Convention".
- The Windows IDE now includes the optimizing compiler.
- Optional "pretty color" syntax highlighting.
- The .RC compiler is now integrated into the Windows IDE (!)
- WinSpector, like Dr. Watson/Dr. Frank but allegedly better.
- "...hard copy documentation for the Windows 3.1 API..."
- AT&T Cfront 3.0 compliance (they rip on C++7 for being only 2.1
compliant, i.e. no templates)
- Precompiled Headers no longer requires the same headers in the
same order in every file (quite a Good Thing).
- The article takes a lot of shots at MSC++7, and they may have some
valid points...
Prices:
BC++/AF 3.1 $749.00 new
$199.95 from BC++ 3.0, BC++/AF 2.0, TC/TC++ Pro
$ 39.95 from BC++/AF 3.0
BC++ 3.1 $495.00 new
$199.95 from BC++ 2.0, TC/TC++ Pro
$ 39.95 from BC++ 3.0
Also, they throw in free ProtoGen 2.1 with both packages (if ya can't
sell it...)
All and all, a pretty nice package, especially if you have 3.0... I
don't see how anyone can complain that "Borland is screwing us into
another upgrade already." 39 bucks for a whole new set of manuals and
Windows stuff... heck, Borland can't be making a lot off of that... I'm
*poor*, and I'm not complaining...
\bye
unknown.461spantic,
-> #460, vilic> - Full Windows 3.1 Support (MM, OLE, Pen, etc...)
Ex, znam neke koji su kupili Borland C++ 3.0 i sada skidaju Borlandu svece
;)
unknown.462kzoran,
Hi!
Ima li neko Microsoft C Bible ili nešto slično KKvrlo slično za MSC 6.0?
Pozdrav,
Zoran.
unknown.463djelovic,
> class D š...ć
> class C : virtual public D š...ć
> class B : virtual public D š...ć
> class A : public B, public C š...ć
>
> A a;
>
> ovo ne funkcionise (D&)a (tacnije javlja gresku da ne moze da izvrsi cast)
S obzirom da bi ovo moralo da radi, pretpostavljam da si pre
napravio neku grešku koja daje istu poruku na tom mestu. Recimo, ako si
u klasi D imao funkciju show, verovatno si radio
(D&)a.show ();
Kompajler onda prvo uradi a.show (), pa onda vrednost koju ova f-ja
vraća (void, int, ...) pokušava da pretvori u D. Umesto toga, napiši
((D&)a).show ();
i sve će savršeno raditi.
P.S. Tvoja poruka je greškom dospela u CIVILIZACIJA::o.jeziku, pa sam
morao da odgovorim na nju sa rep (PC.PROG&)CIVILIZACIJA::5.487 :).
unknown.464nkbog,
-> #463, djelovic*****
S obzirom da bi ovo moralo da radi, pretpostavljam da si pre
napravio neku gresku koja daje istu poruku na tom mestu. Recimo, ako si
u klasi D imao funkciju show, verovatno si radio
(D&)a.show ();
Kompajler onda prvo uradi a.show (), pa onda vrednost koju ova f-ja
vraca (void, int, ...) pokusava da pretvori u D. Umesto toga, napisi
((D&)a).show ();
*****
Upravo ovako stoji, i opet ne radi. Na kraju sam odustao od mrezne
organizacije i presao na hijerarhiju, ali to nije ono sto mi je trebalo.
NB.
p.s. sorry za pogresnu temu, ko bi se setio tog Ctrl-D ;)
unknown.465djelovic,
-> #464, nkbog> Upravo ovako stoji, i opet ne radi. Na kraju sam odustao od mr
> organizacije i presao na hijerarhiju, ali to nije ono sto mi j
> balo.
Evo, potrudio sam se da proverim, i sledeći primer radi savršeno. Gledaj:
#include <stdio.h>
class D š
public:
int i;
void ass (int k) š i = k; ć
ć;
class C: virtual public D š
public:
void ass (int k) š i = k + 1; ć
ć;
class B: virtual public D š
public:
void ass1 (int k) š i = k - 1; ć
ć;
class A : public B, public C š
public:
void show (void) š printf ("%dĐn", i); ć
ć;
main ()
š
A a;
((D&)a).ass (5);
a.show ();
return 0;
ć
unknown.466nkbog,
-> #465, djelovic>> Evo, potrudio sam se da proverim, i sledeci primer radi savrseno.
Moja greska... u pitanju:
Nisam trebao da pitam za (D&)a vec za (A&)d. Npr:
// Iste klase
main()
{
D d;
((A&)d).ass(5);
...
}
Inace mogla bi da bude logika tipa virtuelni (prividni) predak u
stvari i nije predak, ali meni BAS TO TREBA.
p.s. Sta li si mislio sa ovim "ass". Sram te bilo ;) (mada kad razmislim,
kad neko pita pogresno pitanje, sta je on onda)
unknown.467djelovic,
-> #466, nkbog> D d;
> ((A&)d).ass(5);
Pazi: Klasa A nasleđuje klasu D pa prema tome *nema ni govora* da
instancu kase D možeš da pretvoriš u A. Ako počnemo da koristimo one
odvratne analogije OOP gurua, ovo se svodi na sledeće:
1. Klasa D = majmun.
2. Klasa A = čovek. (Nastao od majmuna, tj. nasleđuje majmuna.)
3. Sa (A&)d ti govoriš majmunu da se ponaša kao čovek. Ovo nije
moguće! Ti možeš da nateraš čoveka da se ponaša kao majmun (D&)a, ali
nikako ne možeš da nateraš majmuna da bude čovek, jer on to ne zna.
> Inace mogla bi da bude logika tipa virtuelni (prividni) predak u
> stvari i nije predak, ali meni BAS TO TREBA.
Virtualni predak je potpuno isti kao i običan predak. Virtualne
klase su izmišljene da bi se (kao na našem primeru) sprečilo da ista
klasa bude nasleđena više puta, tj. da postoje više primeraka bazne
klase u jednom nasledniku. Ovako, ako je virtualna, kompajler to uzima u
obzir i smešta je samo jednom u naslednika. (Ovaj pasus liči na
crnogorski rodoslov. Silni neki predaci i naslednici :).)
> p.s. Sta li si mislio sa ovim "ass". Sram te bilo ;) (mada kad razmislim,
> kad neko pita pogresno pitanje, sta je on onda)
Onaj ko pita (makar i pogrešno pitanje) jeste neko sa željom da
nauči. Doduše, onaj ko bi da od majmuna napravi čoveka... Šalu na
stranu, moje "ass" je "assign" za lenštine. Nisu to bile nikakve
insinuacije :).
unknown.468psti,
Imam jedan problem, pa molim da mi neko pomogne. Naime, hteo
bih da promenim interapt rutinu RTC (Real Time Counter) tako
da prilikom svakog interapta prvo se izvrsi "nesto" (na pr. neko
izracunavanje) a onda se nastavi izvrsavanje standardne interapt
rutine... Imam taj slucaj resen na sledecem listingu ali u
pitanju je Microsoft C a ja sam radio na Borland C++!? Neznam sta
je ekvivalent u Borland C-u za _chain_intr(old_rtc) i sta on tacno
radi...
void interrupt cdecl far rtc_int()
{
sada ide neki deo koji se ubacuje u standardnu
interapt rutinu...
_chain_intr(old_rtc); //rutina se zavrsava ovim
}
Unapred hvala PSTI.
unknown.469nkbog,
-> #467, djelovic> Pazi: Klasa A nasleduje klasu D pa prema tome *nema ni govora* da
> instancu kase D mozes da pretvoris u A.
Mogu preko pointera ili reference. Stvar je sto to ne funkcionise
kod virtuelnih predaka. A kod obicnih predaka to moze da funkcionise,
ali nije garantovano da ce funkcionisati (po logici covek je primat,
pa ako znamo da je neki primat covek, pretvorimo ga onda u coveka, ako
slucajno on bas i nije bio covek, onda u najboljem slucaju imamo Abnormal
Program Termination).
Naime ako preci nisu virtuelni sledeca stvar radi (bar u BC++ i to
dokumentovano):
class A {};
class A1: public A {};
A& a = *new A1;
((A1&)a).member();
((A1*)&a)->member();
i slicno.
Ako su preci virtuelni to ne radi. Zasto je jedna stvar dozvoljena, a
ne i druga? Ima tu i neke logike, ali i nema...
NB.
unknown.470mjova,
-> #468, psti> rutine... Imam taj slucaj resen na sledecem listingu ali u
> pitanju je Microsoft C a ja sam radio na Borland C++!?
> Neznam sta je ekvivalent u Borland C-u za
> _chain_intr(old_rtc) i sta on tacno radi...
ne znam kako se to radi u MSC-u, ali u borlandu to izgleda ovako (mrzi
me da menjam sve tako da ti samo prepišeš, ovo je primer za KBD int 9,
valjda ćeš se snaći sam).
možda bi trebalo da obratiš pažnju gde stavljaš poziv originalnog
interapta (a postavi negde obavezno). drugo, treba da isključiš 'stack
warning' i nemoj da koristiš promenljive definisane sa 'regester'.
//------------------------------------------ deklaracije
void interrupt (*oldint9)(...);
void interrupt newint9(...);
//------------------------------------------ funkcije
void interrupt newint9(...) {
(*oldint9)(); ..start starog int-a
// moj deo koda
}
void exit_fn(void) {
disable();
setvect(0x09, oldint9);
enable();
}
//-------------------------------------------------------------------
void main(void) {
oldint9= getvect(0x09);
disable();
setvect(0x09, newint9);
enable();
atexit(exit_fn);
// trte-mrte ;)
}
SY
unknown.471ljubao,
Treba mi pomoć oko harderr funkcije. Elem, kada vršim štampanje
sa npr. fputc, ne mogu nikako da dobijem -1 ili šta već treba kada se
pojavi greška. Probao sam da štampam sa biosprint, ali ako sam dobro
shvatio harderr nije za bios.
Iz harderr sam se vraćao na sve moguće načine, i kao što sam rekao,
nisam mogao sa fputc nikako da dobijem znak da se pojavila greška.
Pitanje bi npr. bilo, sa kojom funkcijom vi štampate (i dobijate
kod greške iz harderr) ?
Ljuba
unknown.472jtitov,
Postovani ljubitelji i korisnici C jezika.
"Zahvaljujuci" jednom Sezamovcu (a kome bi drugom), vrlo sam se zagrejao za C.
Sada mi treba savet, koji prevodilac koristiti? Imam u kucnoj bazi i MS C 6.0
i7dĽ# Borland C++ 3.0 for Win. Da li neki od ova dva vredi ozbiljno koristiti i
udubljivati se u njihov sistem rada, ili traziti nesto trece?
Pozdrav, Jura.
PS Molim prednosti i mane raznih C prevodilaca.
unknown.473dusanp,
Nisam znao gde da stavim ovu poruku, pa je evo ovde:
Iskompajliram ja lepo jedan kratak primer u BCu 2.0,
od opcija uzmem optimizaciju i 286 mode itd.
Startujem program i sta se desi? Dobijem poruku:
QEMM386: The processor has notified QEMM that an attempt has been made to
execute an invalid instruction. This may be due to an error in one
of your programs, a conflict between two pieces of software, or a
conflict between a piece of hardware and a piece of software. It is
likely that the system is unstable now and should be rebooted.
The report below may be able to help you and/or the developer of the
program determine the problem. Please refer to the troubleshooting
section of the QEMM manual for advice on resolving this problem.
Exception #13 at 1F0A:0167, error code: 0000
AX=FFFF BX=FFFF CX=1F29 DX=0004 SI=0203 DI=056C BP=1000
DS=1F29 ES=1F29 SS=208A SP=0FF6 Flags=7202
Instruction: 26 FF 07 7D 1B 26 8B 47 0E 26 8B 77 0C 26 FF
Do you want to (T)erminate the program or (R)eboot?
Ako nekog zanima da dalje čačka šta se desilo poslaću mu taj primer,
mene je mrzelo...
Šta još da vam kažem? OBOčAVAM QEMM!
unknown.474dnikolic,
-> #472, jtitov>> "Zahvaljujuci" jednom Sezamovcu (a kome bi drugom), vrlo sam se zagrejao
>> za C. Sada mi treba savet, koji prevodilac koristiti? Imam u kucnoj bazi i
>> MS C 6.0 i7dĽ# Borland C++ 3.0 for Win. Da li neki od ova dva vredi
>> ozbiljno koristiti i
Ja mislim ( i tvrdim :) da je za tebe najbolji Turbo C 2.0, koji, kako vidim,
nemas u kucnoj bazi. To pod uslovom da ne zelis da pises programe za Windows.
Najbrze kompajliranje, linkovanje, WS editor, integrisani dibager, imas i NG
bazu za njega, zauzima samo par MB na disku umesto danasnjih Kiklopa - ukratko
ja ga godinama sa zadovoljstvom koristim. Pozdrav,
dn
unknown.475spantic,
-> #472, jtitov> Sada mi treba savet, koji prevodilac koristiti? Imam u
> kucnoj bazi i MS C 6.0 i7dĽ# Borland C++ 3.0 for Win. Da
> li neki od ova dva vredi ozbiljno koristiti i
Neki će me odrati :) ali za učenje a i za prve primene više je nego dovoljan
Turbo C 2.0. Za profesionalne stvari odgovor će se verovatno razlikovati ali
opet sve zavisi šta ti treba.
unknown.476mjova,
-> #472, jtitov> PS Molim prednosti i mane raznih C prevodilaca.
što se tiče učenja, uzmi neki koji će ti zauzimati manje mseta na
disku, iz dva razloga. prvi je to što te glomaznost programa obično
obeshrabri, a drugi je što zauzima grdan prostor na disku pa te vuče
želja za jednim xrd.
preproručujem ti turbo c++, ali neku stariju verziju (1.01) koja ima
oko 4 - 5 disketa i sasvim je dovoljna za rad. tu se naravno nalazi i
običan c i sve što ti treba za ozbiljan rad a i za početak.
SY
unknown.477mjova,
-> #473, dusanp> Iskompajliram ja lepo jedan kratak primer u BCu 2.0,
> od opcija uzmem optimizaciju i 286 mode itd.
> Šta još da vam kažem? OBOčAVAM QEMM!
to nije do qemm-a, već do procesora koji mora da radi u V86 modu kad
je instaliran qemm (ili max). u tom modu ne rade instrukcije koje su
namenjene 286 i jačim. mislim da je to u pitanju.
unknown.478ndragan,
-> #472, jtitov/ PS Molim prednosti i mane raznih C prevodilaca.
Jura, jel' tebi kojim slučajem dosadno? Pa znaš šta si uradio? Pokrenuo
si lavinu. Sad ćemo čitati "MsC vs BC" reprizu na šablon od "ZX protiv
komodora", "atari protiv PCa", "teliks protiv telemejta", "dos protiv
juniksa"... ajd' izdržaćemo, al da napišeš nešto lepo i okačiš na Sezam.
Bue_ Ndragan
P.S. Mislim da ćeš se na kraju odlučiti prema nekakvim ličnim
simpatijama prema ovom ili onom kompajleru, bez obzira na ubedljivost
ove ili one strane.
unknown.479jtitov,
-> #478, ndragan> Jura, jel' tebi kojim slucajem dosadno? Pa znas sta si
> uradio? Pokrenuo si lavinu. Sad cemo citati "MsC vs BC"
> reprizu na sablon od "ZX protiv
Ma gde dosadno. Sta ti je?! :)) Ali problem je u tome sto volim da koristim
programe koji pruzaju najvise (po nekom mom misljenju). Svojim pitanjem sam
i zeleo da pokrenem diskusiju da bi se iznele one prave vrednosti i mane C
prevodilaca. Ne bih zeleo pricu u stilu "taj-i-taj C prevodilac je lep, ima
lepu okolinu, brzo prevodi, itd. ali znas, kad radis sa npr. bazama, ume da
zezne". Treba objasniti sta to zezne. Treba mi nesto pouzdano, brzo, sto
podrzava onaj pravi standard C-a. Ta ja sam pravi pocetnik. Prekjuce sam
napisao svoj PRVI C program (u onom stilu prinf("Hello, World.\n") ha, sta
radim!).
Sto se tice sablona "ZX vs. Comm." mislim da svaka argumentovana diskusija
vredi. A znas li ti sta su programeri izvlacili iz one crne, "lepljive"
kutije...?
unknown.480dusanp,
-> #477, mjova=> to nije do qemm-a, već do procesora koji mora da radi u
=> V86 modu kad je instaliran qemm (ili max). u tom modu ne
=> rade instrukcije koje su namenjene 286 i jačim. mislim da
=> je to u pitanju.
Znam, znam, dosetim se ja toga i prekompajliram program
ovoga puta za 8086. I šta se desi: Opet izleti sa istom
greškom. A Qemm nisam ni optužio, samo sam se oduševio njegovim
mogućnostima presretanja grešaka. E, da, da ne zaboravim:
Greška je i pronađena tako što se program obesio na jednom ATu
bez nekih rezidentnih programa - znači čista 286 mašina.
Da li neko zna šta oni kodovi koje je izbacio qemm znače,
odnosno o kojoj se nepostojećoj instrukciji radi. Da nije BC
pri optimizaciji iskoristio neki registar za nešto što taj
registar ne može?
unknown.481mjova,
skraćeno viđenje Borand C++ 3.0 paketa:
-: mnogo mesta na disku (bez win oko 16Mb, a samo obavezno + malo utl
+ .lib & .h je oko 7Mb)
nisu ispravljeni bagovi (mušice ;) u *.lib
korišćenje memorije (ne radi sa poznatim xms/ems veznicima)
+: src standardnih biblioteka (par mušica sam istrebio ;)
znimljiv TV
konačno ispravan help za cmd (ispravljeni bagovi)
sređenija help datoteka (ajoj sad ima 2.4Mb a ranije 800k!)
mada se ne slaže se max/qemm std-om korišćenje memorije mi se čini
mnogo bolje nego pre.
opšti utisak: tako - tako ;), razmišljam da se vratim na TC++ 1.01
(jedan korak napred, dva koraka nazad)
SY
ps. kad sam dao bildovanje ;) std *.lib imao sam oko 8Mb slobodnog
HD-a, verujte, to je malo... e, da, to je trajalo (do manjka
prostora na HD-u) oko 50 minuta.
unknown.482janko,
-> #481, mjova
> korišćenje memorije (ne radi sa poznatim xms/ems
> veznicima)
!! :(
> mada se ne slaže se max/qemm std-om korišćenje memorije mi
> se čini mnogo bolje nego pre.
Pa BC++ 2.0 je radila sa Qemm? Što bi sada odustali? Ajde
napiši još malo o tome.
I (još) ne briši te diskete da bi snimio TC 1.01, pliz. ;)
> -: mnogo mesta na disku
===
===== al si našao znak ;>
> (bez win oko 16Mb, a samo obavezno + malo utl + .lib & .h je oko 7Mb)
Koliko je velika jedna cX.lib? U TC 2.0 su bile oko 100K, na
BC++ 2.0 su oko 200K a sad?
unknown.483mjova,
-> #482, janko> Pa BC++ 2.0 je radila sa Qemm? Što bi sada odustali? Ajde
> napiši još malo o tome.
pa ne znam ništa više, u glavnom borland je priznao da to nije
kompatibilno, ali ono što sam ja primetio, u neki uslovima se slažu,
mada ne baš kao 2.0.
drugo, kako radim iz komandne linije (mrzim ide i ostale okoline)
primetio sam razna poboljšanja u help sistemu. sad se može prozor
proširiti po celom ekranu i pretraživanje ključnih reči je bolje (rade
i znaci koji nisu slova).
međutim, taj help mi pravi probleme, nisam 100% siguran, ali pravi.
kako se kači na int 13 (nemam pojma koje su mu potrebe), on ume lepo
da ometa ono što se tamo upisuje. kako mi je arj setovan da posle
pakovanja obavezno testira arhivu, on pri uključenom helpu javi neku
crc error i to me izluđuje...
> Koliko je velika jedna cX.lib? U TC 2.0 su bile oko 100K,
> na BC++ 2.0 su oko 200K a sad?
pa one koje dobijaš uz paket su oko 250k, prosek, a one koje možeš sam
da napraviš nešto su veće od 150k. kako nemam neku literaturu, ne mogu
da probalim onaj kod koji treba da generiše std lib, ali mislim da sam
se snašao.
kako sam hteo da instaliram stari kompajler (iz 2.0) onda je došlo do
problema pri povezivanju obj datoteka, pa je onda kukao da neke opcije
ne poznaje (kompajler) jer su se ovi baš potrudili da maksimalno
iskoriste sve novo.
SY
unknown.484jtitov,
-> #483, mjova> da ometa ono sto se tamo upisuje. kako mi je arj setovan
> da posle pakovanja obavezno testira arhivu, on pri
> ukljucenom helpu javi neku crc error i to me izluduje...
Kad spomenu vec ARJ i njegovo javljanje (u nekim slucajevima) crc error-a,
objasni zasto se to ponekad desava? Naime i meni se desava nesto slicno
tome. Malo, malo pa crc error. Pa kad se zainatim i iskljucim sve
rezidentno (cash, itd.) - ono arhiva cista ko suza.
unknown.485dusanp,
-> #481, mjova=> skraćeno viđenje Borand C++ 3.0 paketa: ...
Tako sam nešto i mislio, a mjova je potrvrdio moje
pretpostavke. BC3.0 ... Preglomazno, moćno i preglomazno.
Ukoliko vam stvarno ne trebaju WIN mogućnosti, ukoliko
vam ipak treba ponešto od objektnih mogućnosti neka od
nižih verzija ++a je sasvim dovoljna.
btw: BC++2.0 sam uspeo da stešem na samo 4.2 mb i još uvek
mi "zauzima previše mesta na disku".
8 mb? 16 mb? 30 mb?
:( /naježila mi se kosa na glavi/
unknown.486mjova,
-> #484, jtitov> Kad spomenu vec ARJ i njegovo javljanje (u nekim
> slucajevima) crc error-a, objasni zasto se to ponekad
> desava? Naime i meni se desava nesto slicno
nemam pojma, izolovao sam thelp 3.0 kao jedinog krivca, kači se na int
13 (kao i prethodni) i možda mu je malo pomrsio račune. meni se crc
error nije nikad pre javljao, osim kod slučajeva oštećene arhive, a sa
thelp-om u memoriji nikad nije crc na istom mestu! pri jednom čitanju
ima greške pri drugom ne mora!
btw, arj ima mogućnost da pre destrukcije uradi test arhive i njenih
sastojaka, za tu stvar definisao sam promenljivu koja podešava sve što
mi treba. jeste da je malo duže, ali sam siguran da posle move komande
(ajr m) neće obrisati datoteke kao je bilo problema.
(set arj_sw=-jycry -i1 -jv -jt2 -ja)
SY
unknown.487dnikolic,
-> #479, jtitov>> podrzava onaj pravi standard C-a. Ta ja sam pravi pocetnik. Prekjuce sam
>> napisao svoj PRVI C program (u onom stilu prinf("Hello, World.\n") ha, sta
>> radim!).
Pa okaci to ovde, da ga vidimo! :)
dn
unknown.488jtitov,
-> #485, dusanp> btw: BC++2.0 sam uspeo da stesem na samo 4.2 mb i jos uvek
Svaka cast. Ajde, ako te ne mrzi, posalji DIR i stablo direktorijuma.
unknown.489jtitov,
-> #486, mjova> btw, arj ima mogucnost da pre destrukcije uradi test
> arhive i njenih sastojaka, za tu stvar definisao sam
> promenljivu koja podesava sve sto
Btw, sto se tice definisanja promenljivih, preporucio bih ti sistem:
set arj_sw=<path>\arj.cfg
Pa u arj.cfg navedes koji parametri ce se primenjivati pri raznim arj
komandama. Na pr. a /jm /vva /wc:\windows\temp /x*.lzh /x*.zip /x*.arj
x /vva /y
itd.
Onda ce se svaki put, kada otkucas arj a <ime, itd.> aktivirati i ona masa
"prekidaca"...
unknown.490jtitov,
-> #487, dnikolic>>> napisao svoj PRVI C program (u onom stilu prinf("Hello,
>>> World.\n") ha, sta radim!).
>
> Pa okaci to ovde, da ga vidimo! :)
Pa nema sta da kacim :))) Sve je sadrzano u onom prontf(..). Treba samo
ispred main(), malo zagrada {} i to je sve :).
Uzgred i jedno strucno pitanje. Preporucuje se ubacivanje
#include <stdio.h>, mada se nigde konkretno ne kaze zasto. Programce mi
radi i sa #include i bez. U cemu se konkretno sastoji to ubacivanje?
unknown.491jtitov,
-> #487, dnikolicEvo jos jednog pitanjca. U toku instalacije C-a pitao me je za
memorijske modele. Ja mu rekoh hocu sve! O cemu se tu radi?
unknown.492dusanp,
-> #488, jtitov=> Svaka cast. Ajde, ako te ne mrzi, posalji DIR i stablo
=> direktorijuma.
Tu je sve što treba: Ide, Cmd, svi .h i large lib.
Zašto large? Pa iz dva razloga: taj model se najlakše linkuje
sa bilo čim, i svaki program na kraju naraste do large modela.
I nije 4.2 nego 4.00mb!!!
\───BORLANDC──┬─BIN
├─INCLUDE
└─LIB
Directory of D:\BORLANDC\BIN
[.] [..] PRJ2MAK.EXE TCCONFIG.TC GREP.COM
TKERNEL.EXE TLIB.EXE BCCX.EXE TCHELP.TCH TD.EXE
BCCX.OVY TDHELP.TDH MAKE.EXE TLINK.EXE BCX.EXE
TLINK.CFG TURBOC.CFG BCX.OVY TCDEF.DSK TCDEF.DPR
20 file(s) 3169645 bytes
Directory of D:\BORLANDC\INCLUDE
[.] [..] ALLOC.H ASSERT.H BCD.H
BIOS.H COMPLEX.H CONIO.H CTYPE.H DIR.H
DIRECT.H DOS.H ERRNO.H FCNTL.H FLOAT.H
FSTREAM.H GENERIC.H GRAPHICS.H IO.H IOMANIP.H
IOSTREAM.H LIMITS.H LOCALE.H MALLOC.H MATH.H
MEM.H MEMORY.H NEW.H PROCESS.H SEARCH.H
SETJMP.H SHARE.H SIGNAL.H STDARG.H STDDEF.H
STDIO.H STDIOSTR.H STDLIB.H STREAM.H STRING.H
STRSTREA.H TIME.H VALUES.H VARARGS.H BOOL.H
BLKIO.H BLKIO_.H BTREE.H BTREE_.H LSEQ.H
LSEQ_.H CBASE.H CBASE_.H BASSTR.H ROLODECK.H
PXENGINE.H STAT.H TIMEB.H TYPES.H
59 file(s) 258710 bytes
Directory of D:\BORLANDC\LIB
[.] [..] C0DL.OBJ C0FL.OBJ C0L.OBJ
CL.LIB MATHL.LIB OLDSTRML.LIB EMU.LIB FP87.LIB
GRAPHICS.LIB IMPORT.LIB MATHERR.C OVERLAY.LIB WILDARGS.OBJ
PXENGTCL.LIB
16 file(s) 652298 bytes
unknown.493ndragan,
-> #479, jtitov/ napisao svoj PRVI C program (u onom stilu prinf("Hello, World.Đn") ha,
/ sta radim!).
Nadam se da nije suviše dugačak :).
/ vredi. A znas li ti sta su programeri izvlacili iz one crne,
/ "lepljive" kutije...?
Znam. Radio sam bod liste za celu zbornicu (80 profesora) sa preračunom
ko kolko posto ide gore ili dole ako promenimo pravilnik ovako i onako,
pa sam nekoliko godina radio upis učenika (ono "zanimanje pod A, B, C,
sve zauzeto, ispadaš... oš' budeš bravar, tamo ima mesta?")... Jura, ti
si neverovatan - skoro da sam se rasplakao od nostalgije. Moraću da ga
popravim :). Btw, čini mi se da je negde postojao i minimalni C
kompajler za ZX - nemoj tek tako da ga izbaciš sa spiska zanimljivih.
Preporučujem da napišeš članak za Računare: "Sve škole C-a ili šta
raditi kad megabajti počnu da cure po podu".
Bue_ Ndragan
unknown.494ndragan,
-> #485, dusanp/ :( /naježila mi se kosa na glavi/
Ovo je jedan od boljih u poslednje vreme. Svaka čast.
unknown.495dejanr,
-> #490, jtitov>> Preporucuje se ubacivanje #include <stdio.h>, mada se nigde konkretno
>> ne kaze zasto. Programce mi radi i sa #include i bez. U cemu se
>> konkretno sastoji to ubacivanje?
U programu nemaš nikakve operacije sa diskom, samo ispis. žim budeš počeo
sa datotekama (a bez njih se ne stiže daleko), #include je neophodan
unknown.496jtitov,
:)))))))))))))))
unknown.497jtitov,
-> #495, dejanr> U programu nemas nikakve operacije sa diskom, samo ispis.
> Cim budes poceo sa datotekama (a bez njih se ne stize
> daleko), #include je neophodan
Hvala.
unknown.498janko,
Za sve koji koriste Borlandov BC++ 2.0 paket, ili neki drugi
Borlandov koji sadrži 'splitted' datoteke tipa ime.CA1
ime.CA2... i koji žele da skinu neke datoteke bez instaliranja
celog čuda od NN megabajta (napr. reše da skinu dibager, koji
pre nisu koristili, direktno sa instalacionih disketa, koji se
nalazi podeljen, na dve diskete u TD.CA1 i TD.CA2):
> CA2ZIP v0.1 Copyright 1992. Janko Stamenovic
>
> Spaja razdvojene .CAx datoteke na BC++ 2.0 disketama u jedan
> .ZIP fajl u radnom direktorijumu.
>
> This program is put in public domain by author.
ca2zip_e.zipunknown.499mjova,
imam jedno pitanjce za one koji imajuvolje i znanja da mi odgovore.
zanima me upotreba va_list, va_start i va_end. u stvari, znam kako se
koristi sa vprintf, ali me zanima kako mogu da napišem fn koja će da
prihvata takve argumente.
konkretno, kako se deklariše i kako izgleda konstukcija funkcije koja
kao parametar ima pointer na parametre.
SY
unknown.500kzoran,
Zdravo!
Je li radio neko sa int86 funkcijama u MSC 6.0? Interesuje me jedan detalj.
Naime, potrebno je uhvatiti stanje carry flega po izlasku iz interrupt poziva,
pa nađoh da REGS unija sadrzi strukturu WORDREGS, čiji poslednji član je
unsigned int cflag. Je li to sadrzaj samo carry flega ili celog
celog statusnog registra?
Pozdrav,
Zoran.
unknown.501madamov,
-> #499, mjova
>>konkretno, kako se deklariše i kako izgleda konstukcija funkcije koja kao
>>parametar ima pointer na parametre.
Loše si se izrazio, radi se o funkcijama sa promenljivim brojem
parametara. Kao prvo, moraš da uradiš including stdarg.h, jer su u njemu
definicije va_list tipa i va_start, va_arg i va_end makroa. Deklaracija
tvoje funkcije treba da izgleda ovako:
void fn(char *arg1, ... )
{
va_list ap; /* ap je skraćenica od argument pointer */
int ivred; /* ove dve promenljive samo za ilustraciju */
long lvred; /* va_arg makroa */
i zatim pre bilo kakvog posla sa argumentima treba sa va_start da
inicijalizuješ ap da pokazuje na prvi argument, tj. na arg1:
va_start(ap, arg1);
Zatim, parsuješ arg1 i u zavisnosti od njegovog sadržaja radiš svoj posao
sa ostalim argumentima koje kupiš korišćenjem va_arg makroa:
ivred = va_arg(ap, int);
lvred = va_arg(ap, long);
koji kao parametre uzima pointer na argument listu i tip, a vraća argument
na koji pointer trenutno pokazuje pretvoren u taj tip, i pomera argument
pointer na sledeći argument u argument listi.
Kada završiš posao, sa va_end(ap) počistiš stvari. Da ne bih ja mnogo
filozofirao, prekucaću ti primer iz drugog izdanja Kernigenovog i Ričijevog
"The C Programming Language":
void minprintf(char *fmt, ...)
{
va_list ap;
char *p, *sval;
int ival;
double dval;
va_start(ap, fmt);
for(p = fmt; *p; p++) {
if(*p != '%') {
putchar(*p);
continue;
}
switch(*++p) {
case 'd':
ival = va_arg(ap, int);
printf("%d", ival);
break;
case 'f':
dval = va_arg(ap, double);
printf("%f", dval);
break;
case 's':
for(sval = va_arg(ap, char *); *sval; sval++)
putchar(sval);
break;
default:
putchar(*p);
break;
}
}
va_end(ap);
}
unknown.502dragisha,
-> #499, mjovaű> konkretno, kako se deklariše i kako izgleda konstukcija
ű> funkcije koja kao parametar ima pointer na parametre.
Ovo je rješenje u JPI Moduli 2 ali mislim da je princip
generalan i da nije zgoreg da se pogleda.
Deklaracija
===========
(*# save,
call(c_conv=>on, var_arg=>on, reg_param=>())
*)
PROCEDURE PrintF(formstr: ARRAY OF CHAR (*...*));
(*# restore
*)
Implementacija
==============
(*# save *)
(*# call( reg_param=>(), reg_saved=>(dx,bx,cx,si,di,es,ds,st1,st2), inline=>on
)
*)
TYPE
A2 = ARRAY[0..1] OF SHORTCARD;
PROCEDURE GetBP(): CARDINAL=A2(089H, 0E8H); (* mov ax,bp *)
(*# restore *)
CONST
(*%T _fcall*) RetSize = 4; (*%E*)
(*%F _fcall*) RetSize = 2; (*%E*)
(*%T _fptr *) PtrSize = 4; (*%E*)
(*%F _fptr *) PtrSize = 2; (*%E*)
PROCEDURE PrintF(formstr: ARRAY OF CHAR (*...*));
CONST
MaxStrSize = 511;
TYPE
MaxStr = ARRAY [0..MaxStrSize] OF CHAR;
VAR
res: MaxStr;
BEGIN
StrIO.DoFormat(res, formstr, [SYSTEM.Seg(res):GetBP()+RetSize+PtrSize+6]);
WriteStr(res);
END PrintF;
Ko razumije, shvatiće. :)
dragisha
unknown.503mjova,
-> #501, madamov> Loše si se izrazio, radi se o funkcijama sa promenljivim
> brojem parametara. Kao prvo, moraš da uradiš including
jes, očigledno da jesam. znam kako se koristi u 'standardnom' obliku:
print(int msg, ...) {
va_list argptr;
strcmp(f_mat, string[msg]);
va_start(argptr, msg);
vprintf(f_mat, argptr);
va_end(argptr);
}
mene zanima sledeća kombinacija (nadovezuje se na prethodnu):
screen(nt msg, ...) {
// ovde radim neku pripremu..
// šta ovde treba da stoji da bi mogao da prenesem parametre
// u print sve one argumente koji su prosleđeni ovoj fn.
print(msg.......)
}
eto, da ponovim, kako treba da izgleda funkcija tipa vprintf(), kako
bi ja napisao funkciju kojoj se predaje pointer na parametre, baš kao
što se on prenosi funkciji vprintf() (i srodnom).
inače, ovo sam skoro počeo da koristim pa mi je onaj tvoj primer ipak
dobrodošao!
SY
unknown.504dnikolic,
Nisam siguran da li ovo pitanje treba da ide ovde ili u PC.PROG>BAZE.PODATAKA,
ali neka ga ovde.
Skinuo sam sa Sezama fajl CBASE, u kom su rutine ( i izvorni kod ) za rad sa
bazama, iz C-a. Neke svoje programe sam prepravio za rad sa CBASE rutinama,
ali se pojavio problem, tj. vise njih.
Recimo, kako se izvrsava uzastopno pretrazivanje? Trazim sve slogove koji
sadrze odredjenu vrednost. Postoji funkcija CBKEYSRCH(cbp,key,&buf) koja
vrsi pretrazivanje, ali uvek pocinje od pocetka ( ne od fizickog pocetka,
jer radi sa indeksima, vec od pocetka sortirane baze ). CBP je pointer na
bazu, KEY polje po kom se pretrazuje ( 0,1,2...) a &BUF pokazivac na tra-
zenu vrednost. Dakle, funkcija nadje prvu trazenu vrednost, ali ne moze
( koliko ja znam ) da nastavi trazenje od tog mesta.
Sem toga, funkcija ne moze ( opet koliko ja znam :) da nadje pojavu nekog
stringa, na primer "gan" u imenu Dragan.
Nije mi jasno cemu sluze flegovi CB_FKEY i CB_FUNIQ u funkciji CBCREATE. Mozda
je to u vezi sa gore spomenutim problemima.
Nedostatak je i sto se ne moze pretrazivati u nazad.
Ove stvari su krupni nedostaci, pa me zanima dali neko koristi CBASE i
kako je resio ove probleme. Bio bih veoma zahvalan za nekakav odgovor.
Za one koji se spremaju da pocnu rad sa CBASE funkcijama, stojim na
raspolozenju. :)
Pozdrav, dn
unknown.505madamov,
-> #503, mjova
Koliko sam shvatio (malo mi je nejasno šta želiš da postigneš), ali
ako želiš da napišeš stvar sličnu vprintf() onda moraš i da poštuješ ista
pravila koja važe i za poziv vprintf(), tj. pre poziva tvoje funkcije moraš
pozvati va_start, proslediti svojoj funkciji argptr i po povratku uraditi
va_end. A tvoja funkcija mora da ima deklaraciju kao:
void print(int msg, va_list argptr);
slično kao što je ima i vprintf(), a u okviru te funkcije bi pozivao va_arg
i pointer bi išao do sledećeg argumenta itd. Ne znam koliko sam bio jasan,
ali ovako sam ja shvatio ono što želiš da postigneš.
unknown.506kanda,
-> #504, dnikolic>> Recimo, kako se izvrsava uzastopno pretrazivanje? Trazim sve slogove
>> koji sadrze odredjenu vrednost. Postoji funkcija
>> CBKEYSRCH(cbp,key,&buf) koja vrsi pretrazivanje, ali uvek pocinje od
>> pocetka ( ne od fizickog pocetka, jer radi sa indeksima, vec od
>> pocetka sortirane baze ). CBP je pointer na bazu, KEY polje po kom se
>> pretrazuje ( 0,1,2...) a &BUF pokazivac na tra- zenu vrednost. Dakle,
>> funkcija nadje prvu trazenu vrednost, ali ne moze ( koliko ja znam )
>> da nastavi trazenje od tog mesta.
Pa to se verovatno radi kao u DBASE. Recimo, trazis ime 'Pera'. Kad
nadjes prvog Peru, svi ostali (ako ih ima) su odmah iza, zato sto
baza zbog indeksa izgleda kao da je sortirana. Znaci, iza tog CBKEYSRCH
zviznes nesto tipa 'while polje=vrednost... sledece polje) i to je to.
>> Sem toga, funkcija ne moze ( opet koliko ja znam :) da nadje pojavu
>> nekog stringa, na primer "gan" u imenu Dragan.
Za ovo, moras da prodjes kroz celu bazu i proveris koji slogovi
ispunjavaju takav uslov. Indeksi koriste druge tehnike pretrazivanja,
sa efektom da je pretrazivanje mnogo brze, ali se zato
kriterijum pretrazivanja svodi na zadavanje celog polja koji trazis.
>> Ove stvari su krupni nedostaci, pa me zanima dali neko koristi CBASE
>> i kako je resio ove probleme. Bio bih veoma zahvalan za nekakav
>> odgovor.
>>
>> Za one koji se spremaju da pocnu rad sa CBASE funkcijama, stojim na
>> raspolozenju. :)
Hm, ja sam zakljucio da CBASE moze otprilike ono sto moze i DBASE. S tim
da je sve to MNOGO komplikovanije nego u DBASE.
Video sam (ima na FENIX-u) neke biblioteke, kao CBASE, ali za C++, sintaksa
je (zbog koriscenja klasa) mnogo lepsa, a mogucnosti verovatno tu negde.
Opet, sve to je negde 50 svetlosnih godina iza klipera. Kada bi postojao
neki preprocesor za C++, kao za kliper, da mozes da uvodis komande; kada
bi postojao neki pouzdan prevodilac koji ume da radi sa virtualnom memorijom
kao kliper; ... mozda bi sve to i moglo da se koristi za posao. ovako, vise
je zanimljivo nego upotrebljivo.
unknown.507prvul,
Kako se radi ono zaključavanje slogova u fajlu? I da li je to moguće
uraditi iz standardnog C-a (da pojednostavim: jel' se tako radi i pod VMS-om i
UNIX-om? )
Unapred hvala na odgovorima,
Prvul
unknown.508djelovic,
-> #507, prvul> Kako se radi ono zaključavanje slogova u fajlu? I da li je to moguće
> uraditi iz standardnog C-a (da pojednostavim: jel' se tako radi i pod
> VMS-om i UNIX-om? )
Osnovno zaključavanje slogova vrši se pomoću funkcija lock i
unlock koje fajl određen handle-om zaključavaju/otključavaju od nekog
ofseta za određeni broj bajtova. Ako pokušaš da zaključaš područije koje
je već neko drugi zaključao, lock ti vrati -1.
(Ako koristiš ove funkcije pod DOS-om obavezno učitaj SHARE.EXE
da ti DOS ne bi sjebo disk. BTW, lock i unlock funkcije se mapiraju
direktno na DOS.)
Naravno, kada radiš zaključavanje slogova ne smeš da koristiš
nikakvo baferizovanje, to je i razlog zašto lock/unlock funkcije rade sa
handle-ovima a ne sa FILE*-ima.
Gornje rešenje mi se nikada nije sviđalo, i zbog nemogućnosti
korišćenja bafera i zbog neažurnosti podataka koje gledaš na ekranu.
Idealan sistem bi koristio međuprocesne komunikacije, a one se razlikuju
od sistema do sistema, mada bi i za njih mogao da korisitiš zajedničko
područije na disku koje bi razni procesi zaključavali i otključavali.
Više o tome pogledaj u nekim o prethodnih "Računara", tekstovi o
NetBIOS-u, i ZZ-ov tekst o CHAT-u, pogledaj u /RSOFT.
unknown.509mjova,
-> #507, prvul> Kako se radi ono zaključavanje slogova u fajlu? I da li je
> to moguće uraditi iz standardnog C-a
jes, valjda je isto i za unix jer je funkcije open(), sopen(), lock()
i unlock() UNIX-like, što bi rekli englezi ;)
e, sad kako to radi na VMS-u i UNIX-u nisam probao ;), ali za dos ti
treba share u root-u boot drive-a ;) ili da sam učitaš pre upotrebe.
SY
unknown.510ppekovic,
-> #509, mjova>> jes, valjda je isto i za unix jer je funkcije open(), sopen(), lock()
>> i unlock() UNIX-like, što bi rekli englezi ;)
E nije isto za UNIX. Na XENIX-u se zaključava i otključava fajl
ili deo fajla sa locking() funkcijom. Evo primera:
#include <sys/locking.h>
main()
{
int fh;
/* ... */
fh=open("fajl",O_RDWR);
lseek(fh,1024L,0);
locking(fh,LK_LOCK,300L);
/* ovde citas, pites itd. itd. */
lseek(fh,1024L,0);
locking(fh,LK_UNLCK,300L);
/* ... */
}
UNIX System V poznaje još dve funkcije za zaključavanje a to su:
fcntl()
lockf()
ali ih nisam koristio pa nemogu reći ništa više o njima.
Paya
unknown.511ppekovic,
Krenuo sam u osvajanje programiranja pod OS/2 uz pomoć
MSC-a 6.0 i naravno naišao na probleme.
Treba mi da uradim jednu banalnu operaciju a to je da
isčitam sadržaj dir-a. Stari dobri _dos_findfirst() i
_dos_findnext() naravno ne radi. Za to sada postoje
DosFindFirst() i DosFinfNext() čije definicije izgledaju ovako:
USHORT APIENTRY DosFindFirst(PSZ pszFSpec, PHDIR phdir, USHORT usAttr,
PFILEFINDBUF pffb, USHORT cbBuf, PUSHORT pcSearch,
ULONG ulReserved);
USHORT APIENTRY DosFindNext(HDIR hdir, PFILEFINDBUF pffb, USHORT cbBuf,
PUSHORT pcSearch);
Provalio sam šta je pszFSpec, usAttr i pffb jer su to
parametri za _dos_findfirst(), provalio sam i šta je phdir
(handle), ali jel zna neko šta su cbBuf, pcSearch i ulReserved?
E da, i čemu služe ove dve funkcije:
USHORT APIENTRY DosFindFirst2(PSZ pszFSpec, PHDIR phdir, USHORT usAttr,
PVOID pBuf, USHORT cbBuf, PUSHORT pcSearch,
USHORT usInfoLevel, ULONG ulReserved);
USHORT APIENTRY DosFindClose(HDIR hdir);
Ajde ova druga je logično da postoji jer mora neko i
da oslobodi "okupirani" ;) handle, al šta je ona prva?
Paya
unknown.512ppekovic,
Opet OS/2 ;). Jel zna neko zašto C programi koji
koriste grafiku puknu pre ili kasnije? žak ne rade ni oni demo
programi CHRTDEMO, GRDEMO i SORTRDEMO.
Paya
unknown.513mjova,
može li mi neko reći pouzdan način da datoteku otvorenu kao "rt"
prebacim u "rb"? probao sam sa setmode(fh, _O_BINARY), ali to nije to.
ne prebaci se u binarno način čitanja (nemam pojma zašto) jer i dalje
CR/LF čita kao LF.
ne znam da li je neki bug ili jednostavno ne može uvek da se prebaci
iz t => b. možda je problem što sam u sredini datoteke?
brljao sam čak i sa stream.flags, ali ništa ne pomaže. ajde neka
ideja, ako je ima. glupo mi je da koristim getc() kad ima fread(), no
i getc() rešava posao.
ipak i pored toga, zanima me ono prebacivanje.
e, da ne zaboravim, da li se sa ftell() određuje apsolutno mesto u
datoteci, bez obzira da li je otvorena kao bin ili kao text?
(logično je da nema veze, ali ko zna?)
SY
unknown.514zzivotic,
-> #511, ppekovic> USHORT APIENTRY DosFindFirst(PSZ pszFSpec, PHDIR phdir, USHORT
> usAttr, PFILEFINDBUF pffb, USHORT cbBuf, PUSHORT pcSearch,
> ULONG ulReserved);
pszFSpec - ascii path & file specifikacija
phdir - find handle (inicijalno -1, sistem vrati handle)
usAttr - atributi za pretrazivanje
pffb - adresar bafera za vraceni naziv datoteke
cbBuf - velicina bafera pffb
pcSearch - broj pronadjenih naziva
ulReserved - reservisano, treba da bude 0L
Ideja je da funkcija može u jednom potezu da vrati više od jednog filename.
cbBuf je umnožak sizeof( pffb );
> USHORT APIENTRY DosFindFirst2..
Nemam informacija (miriše na nešto što ima veze HPFS mogućnostima...)
> USHORT APIENTRY DosFindClose(HDIR hdir);
Oslobađa find handle. DosFindFirst bi trebalo da može da se 'otvori' i sa phdir
= 1 jer je taj handle inicijalno otvoren pa onda DosFindClose nije potrebno.
Pozdrav, zz
unknown.515janko,
-> #513, mjova> može li mi neko reći pouzdan način da datoteku otvorenu
> kao "rt" prebacim u "rb"? probao sam sa setmode(fh,
> _O_BINARY), ali to nije to. ne prebaci se u binarno način
> čitanja (nemam pojma zašto) jer i dalje CR/LF čita kao LF.
>
> ne znam da li je neki bug ili jednostavno ne može uvek da
> se prebaci iz t => b. možda je problem što sam u sredini
> datoteke?
Pa imaš sors standardnih biblioteka. Pogledaj kako je
realizovan rad sa "b" i "t" datotekama. Konkretno, iako nisam
video kod, (a znaš zašto :) siguran sam da onog trenutka kada
se učita parče dataoteke u bafer odmah 'padne' i eventualna
konverzija, a zatim samo nešto kao
return imaubaferu() ? *s++ : ucitaj_novi_bafer() ;
radi posao čitanja jednog karaktera, svaki put kada pozoveš
čitanje jednog znaka.
Bilo kako bilo, takvi problemi kao tvoj se drugačije
koncipiraju, pa se onda drugačije i rešavaju. Ideja nije 'kako
da ga nateram da uradi ovo ili ono' već 'krajnji cilj mi je taj
i taj, pa da vidim čime ću to da izvedem.' Hoću da kažem (a
naravno, ne moraš da me poslušaš) da razmisliš "da li ja to
stvarno hoću?" Možda si, ustvari, hteo nešto drugo? (nemoj da
misliš da ti popujem, ozbiljno mislim ovo što ti pričam)
unknown.516todorp,
Hi
Kako iz turbo C-a da startujem neki program u dos-u pa da program u C-u nastavi
sa izvrsavanjem.Znam za system() is stdlib.h ali da li moze nekako drugacije?
Pozdrav od Todora.
unknown.517radunovic,
Moze li mi neko preporuciti neku biblioteku funkcija za rad sa bazama podataka
u High C-u .
P.S.
Da li je neko radio sa High C-om ili Watcom-om i moze li nesto da napise o
dosadasnjem iskustvu.