unknown.1ppekovic,
A? ne, B? ne, C???? Daaaaa, CCCC, zašto kako gde šta i sva slična pitanja
komentare, predloge i sl. ostavite ovde.
Paya
unknown.2djelovic,
Ima li nacina da se u TC++-u nekom pragmom iskljuci upozorenje u jednom
redu. Recimo ako imate legalnu liniju "if (*q = *p)", kompajler ce tu stalno
davati upozorenje "possibly incorect assignment in function xxxx", sto ne smeta
mnogo, ali...
unknown.3ppekovic,
Kako da dobijem segment početka aktivne video strane???
Paya
unknown.4igor.mil,
> Ima li nacina da se u TC++-u nekom pragmom iskljuci upozorenje u jednom
> redu. Recimo ako imate legalnu liniju "if (*q = *p)", kompajler ce tu
> stalno davati upozorenje "possibly incorect assignment in function xxxx",
> sto ne smeta mnogo, ali...
Ne znam TC++, posto ga na zalost nemam, ali znam kako je u obicnom TC.
#pragma warn -pia /* iskljuci navedeno upozorenje */
if (*q = *p) {
#pragma warn +pia /* ponovo ukljuci upozorenje */
. . .
"pia" je oznaka upozorenja "possibly incorect assignment". Pogledaj
help za #pragma. Pomocu njega se mogu selektivno iskljucivati i sva
ostala upozorenja i tamo ces naci njihove oznake.
Igor
unknown.5glisin,
-> Ima li nacina da se u TC++-u nekom pragmom iskljuci upozorenje...
Eh! Ne znam da li se može isključiti, ali mogu nešto drugo da
prokomentarišem. TC++ je dovoljno pametan da ta upozorenja ne puca bez veze,
nego dobro "razmisli" šta će da kaže. Ukoliko upozorenja tog tipa ignorišeš,
program će ti proraditi uz malo nameštanja i radiće lepo iz ko zna kojih
razloga. Međutim, pokušaj prenosa na drugi kompajler će dati neko slično
upozorenje, ali program uopšte ne mora raditi kako treba. To se čak dešava i
sa EXE-om ako se nosi na drugu mašinu.
Meni se dešavalo da kompajliram program, on da upozorenje, ja ga ignorišem,
startujem i neće, lupa gluposti. Onda se vratim, malo modifikujem sors, opet
neko upozorenje, ali stvar proradi kako treba. To recimo radim na 386. E,
onda mi padne na pamet da nekome pokažem EXE na 386SX, startujem i cvrc!
Opali neku grešku, sj*be sistem ili nešto drugo. Pomislim da je nešto otišlo
na disketi, vratim kod na izvornu mašinu, kad ono sve u redu. E onda se
potrudim da napišem stvar tako da ne dobijem upozorenje, i sve ide kako treba.
Isto se dešava ako kod recimo prenesem na ATARI TC 2.0 ili UNIX-ov C. Lupa,
neće, prijavi upozorenje, muči se, ne radi kako treba, slupa memoriju. A ako
kod koji nije davao upozorenja na PC-u, probam na ST TC-u ili UNIX C-u, ide
lepo gotovo sigurno.
Zato, svima koji rade na TC++ preporučujem da ne pišu programe o kojima će
pričati da "pojma nemam kako, ali mi radi" ;-))) i koji im izdaju gomilu
upozorenja, nego da čiste sve od upozorenja, što će obezbediti bolju
prenosivost kako izvorne, tako i izvršne verzije. To je moje iskustvo. Ako
neko ima nešto da popljuje ;-) ili dopuni, samo napred. C je pravljen da
njegovi sorsovi budu prenosivi, pa ovo pitanje nije za zanemarivanje.
▀▀▀ ĎÍ─ĚÍ─ĚĎ Ď ▀▀▀
▀▀▀ ║║ Ě║ ĚËĎŻ ▀▀▀
▀▀▀ đË─ŻË─Ż đ ▀▀▀
unknown.6ljupco,
Probajte ovo:
#include <stdio.h>
char c;
void main(){
switch(c=getchar()){
case 'a': printf("aaaa\n"); break;
defoult : printf("****\n");
}
}
Q: Zvezdice ("****") ne dobijte nikad. Kompajler ne javlja gresku.
A: Nije "defOult" nego "defAult".
Q: Zasto kompajler (tcc) ne prijavljuje nista?
unknown.7zkehler,
Slažem se sa Iggyem za upozorenja u kompajliranju C i C++ programa.
Dok se nisam par puta opekao sa programima koji su bili prevedeni
sa upozorenjima (prenos PC_XT<->PC_AT<->VAX), nisam na to ni
obraćao pažnju. Nakon toga, stekao sam naviku da uključim sve
moguće warninge.
ZK
unknown.8ppekovic,
>>Probajte ovo:
>>#include <stdio.h>
>> char c;
>> void main()
>> š
>> switch(c=getchar())
>> š
>> case 'a': printf("aaaaĐn");
>> break;
>> defoult : printf("****Đn");
>>
>> ć
>>
>> ć
>>
>>
>>Q: Zvezdice ("****") ne dobijte nikad. Kompajler ne javlja
>> gresku.
>>A: Nije "defOult" nego "defAult".
>>
>>
>>Q: Zasto kompajler (tcc) ne prijavljuje nista?
Umesto defoult možeš da staviš šta god hoćeš i
kompajler neće prijaviti grešku. Razlog je jednostavan, on
defoult smatra za labelu (za goto), koju naravno nikad ne
izvrši. MSC kopajler će sa /W4 (warning level 4) dati
upozorenje da se komanda nikada neće izvršiti.
Paya
unknown.9bjankovic,
> Probajte ovo:
>
> #include <stdio.h>
> char c;
> void main()š
> switch(c=getchar())š
> case 'a': printf("aaaaĐn"); break;
> defoult : printf("****Đn");
> ć
> ć
>
> Q: Zvezdice ("****") ne dobijte nikad. Kompajler ne javlja gresku.
> A: Nije "defOult" nego "defAult".
>
> Q: Zasto kompajler (tcc) ne prijavljuje nista?
Zato što nema greške (defoult je labela):
#include <stdio.h>
char c;
void main()
š
switch(c=getchar())
š
case 'a': printf("aaaaĐn"); break;
defoult : printf("****Đn");break;
default: goto defoult;
ć
ć
unknown.10djelovic,
TC++ mi stalno kiksira na linijama tipa: scanf ("%f", r); i to sa greskom
floating point formats not linked?! printf normalno radi. Pregledao sam celu
razvojnu okolinu (ih, al ga srocih) i nigde nisam nasao opciju koja bi
ulinkovala FP formate... postajem ocajan...
unknown.11ppekovic,
>> TC++ mi stalno kiksira na linijama tipa: scanf ("%f", r); i to sa greskom
>> floating point formats not linked?! printf normalno radi. Pregledao sam
>>celu razvojnu okolinu (ih, al ga srocih) i nigde nisam nasao opciju koja
>>bi ulinkovala FP formate... postajem ocajan...
E to zavisi kakav ti je program. Naime, pre izvesnog vremena sam se ja
petljao nešto sa MSC-om i napisao jednostavan program koji je učitavao broj u
pokretnom zarezu, pa sam onda petljao nešto sa zajedničkim memorijskim zonama
da bi taj broj rastavio na činioce itd. itd. da ne tupim dalje, ukratko, sa tim
brojem dalje nisam radio baš ništa, tj. nigde u programu se nisu pojavile
operacije nad brojevima u pokretnom zarezu. E onda je tu optimizator uradio
svoj posao i lepo konstatovao da nema nikave potrebe da ulinkuje podršku za rad
sa PZ brojevima i naravno javila se greška slična kao tvoja. O ovome je pisao i
zzivotic u računarima u rubrici "moja škola c-a".
Inače, ovo važi samo za scanf, tj. ako se u programu pojavi printf("%f",r);
a nigde nema nikavih operacija na PZ brojevima sve će biti u redu.
Mislio sam da je ovo problem samo sa MSC-om kad ono vidi ni Borland ne maši
tu caku.
Zaključak: Učitelju, učitelju, BORLAND OPE PREPISUJE ;)))))
Paya
unknown.12djelovic,
Ma nebuloza! Kao poslednji idiot sam zaboravio da deklarisem p kao float*,
tj. deklarisao sam ga kao float, a TC++ ga upropasti. Treba brate napraviti
gresku: "To sto ste zadali kao format ne slaze se sa promenjljivima, ali cu ja
to ipak iskompajlrati, tek da te nerviram. A i ova linija je verovatno previse
duga da bi je procitao iz integrisane okoline ovog kompajlera... |)". Tj. ne
gresku nego warning... Mene je razmazio C++, jer sada u svojim programima uvek
pisem float &p, pa nek C++ razbija glavu... Back to K&R.
P.S. Prvo nisam hteo da napisem da sam napravio ovakvu banalnu gresku (blam
me), ali kada si poceo da mi diras BORLAND...
P.P.S. Ocekujte za jedno desetak dana oficijelne Borlandove patch-eve za TC++.
Ja nisam primetio neki veci bug, osim u exit f-ji. Doduse, ja kada mi program
ne radi ne ubacujem to u debugger vec sednem pa ga napisem iz pocetka |)).
unknown.13glisin,
-> Pregledao sam celu razvojnu okolinu (ih, al ga srocih) i nigde nisam
-> nasao opciju koja bi ulinkovala FP formate... postajem ocajan...
Ih, nisi dobro gledao. Ima jedna opcija (čini mi se baš u linker opcijama)
koja nudi izbor: FLOATING POINT: NONE, EMULATION, 8087/80287. Ja sam imao
problem sa printf-om, bio mi je na NONE (ista greška) a ti kažeš da to radi.
žudno, ali svejedno probaj, ima negde to podešavanje.
▀▀▀ ĎÍ─ĚÍ─ĚĎ Ď ▀▀▀
▀▀▀ ║║ Ě║ ĚËĎŻ ▀▀▀
▀▀▀ đË─ŻË─Ż đ ▀▀▀
unknown.14glisin,
Eto, poslah odgovor a vidim da si rešio stvar.
Nema veze, biće korisno ako se neko za.ebe sa istom cakom i ostavi NONE.
▀▀▀ ĎÍ─ĚÍ─ĚĎ Ď ▀▀▀
▀▀▀ ║║ Ě║ ĚËĎŻ ▀▀▀
▀▀▀ đË─ŻË─Ż đ ▀▀▀
unknown.15mkehler,
▄▀ TC++ mi stalno kiksira na linijama tipa: scanf ("%f", r); i to sa greskom
▄▀ floating point formats not linked?! printf normalno radi. Pregledao sam
▄▀ celu
/* varanje kompajlera da bi linkovao floating point konverziju */
float linkfloat (float *f)
š
float g = *f;
linkfloat (&g);
ć
Ova f-ja koristi fp broj kao lokalnu promenljivu i uzima adresu
te promenljive. Ova funkcijica je predložena od Borlanda u njihovim
"novinama" Hot topics for TC users (neko reče da Borland prepisuje ;)).
Linkfloat poziva sam sebe, pa ga ne treba nigde pozivati, nego samo
dodati (na kraj, npr.) u program. Zauzima samo par byte-a
ram-a i nikad se ne poziva iz programa pa ti neće poremetiti brzinu
tvog programa. Stvar radi, istina nisam probao TC++, ali TC da.
MK
unknown.16aradovanovic,
Da li je neko primetio da funkcija cprintf u Turbo C-u ne radi
korektno? Desava se vrlo retko i potpuno neregularno (posebno na EGA
karticama) pa ne uspevam da uhvatim u cemu je stvar.
unknown.17djelovic,
Achtung! Achtung! Ako gajite pilice, pazite da vas PC ne bude previse blizu
kavezu u kome se zivina nalazi, inace ce pilici uginuti!
Hint: Procitajte help TC++a za komandu nosound.
unknown.18ppekovic,
>> Achtung! Achtung! Ako gajite pilice, pazite da vas PC ne bude previse
>>blizu kavezu u kome se zivina nalazi, inace ce pilici uginuti!
>>
>>Hint: Procitajte help TC++a za komandu nosound.
;)))) Eto, bar neke koristi da ima od tog Borlanda, da se zabavimo malo.
Ajde ako ti nije teško prenesi taj deo iz priručnika ovde, ako je toliko
zanimljiv.
Paya
unknown.19igor.mil,
> /* varanje kompajlera da bi linkovao floating point konverziju */
Ja sam na "floating point formats not linked" gresku naisao u
sledecem slucaju:
1. neki od .OBJ modula je uradjen u assembleru (ne moraju raditi
nikakve FP operacije); i
2. prevodjenje i linkovanje se vrsi sa komandne linije ("tcc",
"tlink"); naravno, "emu.lib" i "math?.lib" se
eksplicitno navode u pozivu "tlink"-a.
Sve lepo radi do prvog "printf" poziva sa float argumentom.
Ubacivanje koda koji si naveo u svojoj poruci ne resava stvar (a bas
sam se ponadao, ovo me muci vec dugo vremena).
Ako se prevodi iz integrisane okoline sve lepo radi, a navedeni kod
(linkfloat) nije potreban.
Pretpostavljam da se radi o bug-u. Nasao sam neke patcheve
("tc2pat2.arc" na Trickle-u) u kojima je ispravka ove greske, ali na
zalost, radi samo za verziju 2.00, dok je moja verzija 2.01. Ima li
neko patch za 2.01?
Igor
unknown.20djelovic,
/* Emits a 7-Hz tone for 10 seconds.
True story: 7 Hz is the resonant frequency of a chicken's skull cavity.
This was determined empirically in Australia, where a new factory
generating 7-Hz tones was located too close to a chicken ranch:
When the factory started up, all the chickens died.
Your PC may not be able to emit a 7-Hz tone.
*/
Sta je sledece? Da li ce umesto greske "Too many errors in file XXXX.C" da
uvedu nesto kao: "I ti si u ovome sranju hteo da spalis moga dedu?" A umesto
upozorenja "Unreachable code in function xxxxx" da uvedu: "Pa njemu se i ne
isplati da izlazi odatle."
Hint: Kome je moj komentar ostao nejasan neka odgleda Maratonce. Ukusan ovaj
Pantelija.
unknown.21bulaja,
│Eto, bar neke koristi da ima od tog Borlanda ...
└───
Uaaaaa protekcija! Ocemo nezavisnu konferenciju!
Necemo favorizovanje Microsofta od strane moderatora ;).
PS Microsoft - sa njima nema neizvesnosti.
PPS Borland C je bolji od Microsoft C-a ;)
unknown.22mirkot,
██ Sta je sledece? Da li ce umesto greske "Too many errors in file XXXX.C"
██ da uvedu nesto kao: "I ti si u ovome sranju hteo da spalis moga dedu?" A
██ umesto upozorenja "Unreachable code in function xxxxx" da uvedu: "Pa
██ njemu se i ne isplati da izlazi odatle."
Tata, vidi, gospodin DJELOVIC, sta mu je? :)))))
unknown.23ilazarevic,
█ Tata, vidi, gospodin DJELOVIC, sta mu je? :)))))
Sad mu nije ništa, zgazio si ga ko zeca! :)))))))
unknown.24dnikolic,
Pitanje sam vec postavio u staroj pc.soft ali konkretnog odgovora nema...
Dakle evo sta je problem. Moze li se u TC raditi, brate, sa celih 640k ili
ti svom raspolozivom osnovnom memorijom? Recimo zatrazim od sistema 320K i
on mi vrati pokazivac na to podrucje. Pokusavao sam sa kombinacijama far-
malloc, farcoreleft, farfree ali ne radi kako treba... Voleo bih i neki
primer na desetak linija :)))
Kakav je PRECIZNO postupak za pravljenje svojih LIB biblioteka u TC-u?
Ja radim sa verzijom 2.0 ( ne volim objektne baljezgarije ). Recimo, napisem
neku rutinicu, i u daljem radu mi je linker automatski linkuje u glavni
program.
Eto to je sve.
dn
unknown.25dnikolic,
>> redu. Recimo ako imate legalnu liniju "if (*q = *p)", kompajler ce tu
>> stalno davati upozorenje "possibly incorect assignment in function xxxx",
>> sto ne smeta
hmmm... dali ovde mozda treba da stoji: if(*q==*p)... ??
unknown.26zkehler,
Ŕ Ja sam na "floating point formats not linked" gresku naisao u
Ŕ sledecem slucaju:
Ŕ
Ŕ 1. neki od .OBJ modula je uradjen u assembleru (ne moraju raditi
Ŕ nikakve FP operacije); i
Ŕ 2. prevodjenje i linkovanje se vrsi sa komandne linije ("tcc",
Ŕ "tlink"); naravno, "emu.lib" i "math?.lib" se
Ŕ eksplicitno navode u pozivu "tlink"-a.
Rešenje sa linkfloat() ne radi uvek. Greška se pojavljuje
ako se za linkovanje koristi TLINK umesto rada u integrisanoj
okolini.
Uputstvo za Turbo C kaže da je generalni format naredbe za
linkovanje ovakav:
TLINK c0? objs,exeŠ,mapĆ,libs float math? c?
Ne kaže, međutim, da je važan *redosled* kojim se bibiloteke
linkuju. Greška se javlja kada god se c? biblioteka navede
pre math? biblioteke.
Ispravna naredba je, dakle:
TLINK c0? objs,exeŠ,mapĆ,libs math? c?
i to tažno u tom redosledu.
Ŕ Ako se prevodi iz integrisane okoline sve lepo radi, a navedeni kod
Ŕ (linkfloat) nije potreban.
Integrisana okolina automatski linkuje biblioteke po pravilnom
redoledu, pa onda nema problema sa linkovanjem floating point
konverzije.
ZK
unknown.27zkehler,
Ŕ PPS Borland C je bolji od Microsoft C-a ;)
Slažem se ;)
ZK
unknown.28ppekovic,
>>>> redu. Recimo ako imate legalnu liniju "if (*q = *p)", kompajler ce tu
>>>> stalno davati upozorenje "possibly incorect assignment in function xxxx",
>>>> sto ne smeta
>>
>>hmmm... dali ovde mozda treba da stoji: if(*q==*p)... ??
Pa zavisi šta čovek hoće. U prvom slučaju da grana će biti ako je *P=null.
U drugom slučaju, koji si ti naveo, grana da će biti u slučaju kada sadržaj
adrese na koju pokazuje q bude jednak sadržaju adrese na koju pokazuje p.
Uz to, u prvom slučaju će se vršiti još i dodela, a u drugom neće.
Sve u svemu i prvi i drugi primer su potpuno legalni s tim što rade i
potpuno različite stvari ;)))
Paya
unknown.29ppekovic,
>>Ŕ PPS Borland C je bolji od Microsoft C-a ;)
>>
>>Slažem se ;)
Hmmmm, posle ovakvih argumenata ozbiljno se razmišljam da pređem na BC ;)))
Paya
unknown.30mjova,
> PPS Borland C je bolji od Microsoft C-a ;)
zar to treba dokazivati? :)
unknown.31igor.mil,
> Ispravna naredba je, dakle:
>
> TLINK c0? objs,exeS,mapC,libs math? c?
>
> i to tazno u tom redosledu.
Najzad da mi neko kaze o cemu se radi. Nikad se ne bi setio da
redosled biblioteka ima uticaja.
To sr* me je svojevremeno toliko mucilo da sam morao da naucim da
radim sa float brojevima u masinskom obliku...
unknown.32igor.mil,
> Kakav je PRECIZNO postupak za pravljenje svojih LIB biblioteka u TC-u?
> Ja radim sa verzijom 2.0 ( ne volim objektne baljezgarije ). Recimo,
> napisem neku rutinicu, i u daljem radu mi je linker automatski linkuje u
> glavni program.
Ne mozes napraviti svoju biblioteku (neka se zove MOJA.LIB) iz koje ce
se *automatski* linkovati moduli. Da bi se ona koristila moras da
napise .PRJ u kojem ce biti linija npr. C:\TC\MYLIB\MOJA.LIB (ovo
se odnosi samo na integ. okolinu, sa komandne linije se i onako sve
bibloteke moraju explicitno navesti). Ako hoces automatsko linkovanje,
onda .OBJ modul funkcije koju si napisao treba da dodati u standardne
biblioteke (CS.LIB, CM.LIB, CL.LIB itd).
Postupak pravljenja biblioteka je sledeci:
Nnapises funkciju FUNK.C.
Prevedes sa:
TCC -c FUNK.C
Dodas modul u svoju biblioteku sa:
TLIB MOJA, +FUNK
Ako hoces da se automatski linkuje, t.j. da postane deo standardnih
funkcija onda:
TLIB CS, +FUNK
Sada FUNK postaje deo standardne datoteke, ali samo u "small"
memorijskom modelu. Ako hoces npr. i u "large" modelu onda treba:
TCC -c -ml FUNK
TLIB CL, +FUNK
Modul se brise iz biblioteke sa:
TLIB MOJA, -FUNK
Zamena modula FUNK novom verzijom se radi sa:
TLIB MOJA, +-FUNK
U ostalom, zadavanje komande TLINK ber argumenata daje kratak help.
Sto se tice rada sa velikim blokovima memorije, s obzirom na shit
arhitekturu Intel procesora plasim se i da mislim o tome :)
Predvidjeno je da resenje za to budu huge pointeri ali kako se to
tacno radi, zaista mi nije jasno. Verovatno treba explicitno petljati
sa segmetnima i ofsetima, sto po meni predstavlja grubo narusavanje
koncepcije bilo kog viseg programskog jezika. Bas bih voleo da neko
ko je uspeo da nesto na tome uradi iznese svoja iskustva. Ja sam
jednom sa farmalloc rezervisao blok od oko 450K, i posle zavrsetka
programa (blok je oslobodjen sa farfree) racunar je ostao u stanju u
kojem je na svaku naredbu odgovarao sa "out of memory". Intel i
MSDOS... ;< Gde se samo nadjose ?
Pozdrav, Igor
unknown.33djelovic,
>hmmm... dali ovde mozda treba da stoji: if(*q==*p)... ??
Ne, o tome se i radi. Kada namerno stavim = on mi svaki put
javlja "possible ..." sto ja ne zelim. Taj je problem resen, ali
ostaje da je ANSI standard upropastio taj divni jezik - menjali su
optimizaciju za citljivost. Fala bogu da to moze da se iskljuci, a
ANSIjevci neka se bave paskalom i ostalim jezicima za zderace pite
|).
unknown.34ppekovic,
>> Ne, o tome se i radi. Kada namerno stavim = on mi svaki put
>>javlja "possible ..." sto ja ne zelim.
Zar u tom BC++ -u ne postoje w. levels. Na MSC-u ih ima 6. Nulti ti
isključuje sve warninge, dok vaj najviši prijavljuje bukvalno sve i svašta.
Paya
unknown.35nkbog,
>>> Ne, o tome se i radi. Kada namerno stavim = on mi svaki put
>>>javlja "possible ..." sto ja ne zelim.
> Zar u tom BC++ -u ne postoje w. levels. Na MSC-u ih ima 6. Nulti ti
> iskljucuje sve warninge, dok vaj najvisi prijavljuje bukvalno sve i svasta.
Naravno da postoje, ali nisu "varning levelsi" (koja kovanica:) vec je
moguce iskljucivanje svakog pojedinog upozorenja (ili svih). (Ja bi licno
voleo kad bi postojala kombinacija "levelsi" + pojedina upozorenja). Kontrola
se vrsi preko "#pragma warn" u programu ili "-w" opcije. U helpu je spisak
skracenica za upozorenja ("#pragma option -w-pia"
Inace postojanje ovog upozorenja nije bez razloga. Radi se o jednoj od
najcescih gresaka programera u C-u ("=" umesto "==").
NB.
unknown.36maleksic,
>> 2. prevodjenje i linkovanje se vrsi sa komandne linije ("tcc",
>> "tlink"); naravno, "emu.lib" i "math?.lib" se
>> eksplicitno navode u pozivu "tlink"-a.
******
A zasto zaboga linkujes direktno sa 'tlink'-om kad vec sve radis
na C-u?
Odavno nisam radio sa TC-om (razlog: MSC je 1000 puta bolji i
10000000 puta pouzdaniji :), ali mislim da je mnogo lakse linkovanje
pomocu 'tcc'-a (tcc ime1.obj ime2.obj ime3.lib ... => rezultat ime1.exe?
A i tlinker opcije mozes da prosledis, vidi tcc help).
U 'tcc' liniju ubacis jos switcheva po volji (npr. za FP math type itd.)
i nema zime? Iste FP switcheve moras valjda prethodno da zadas i prilikom
compilacije, nisam se mnogo zezo stim.
Uzgred BR, i ja sam primetio da ponekad TC i TC++ lepo(?) prevedu iz onog
integrisanog sr*nja, a posle za*ebavaju kad prevodis iz commandne
linije. Nisam se nimalo zacudio, ovakve Borlandove gluposti odavno su
me naterale da predjem na MSC ;>>>
unknown.37maleksic,
>> Najzad da mi neko kaze o cemu se radi. Nikad se ne bi setio da
>> redosled biblioteka ima uticaja.
Eh, nije to nista.
Zbog takvih i slicnih stvari prava je umetnost ulinkovati nesto pomocu
UNIX-ovog 'ld' linkera (tj. "link-editora", pomisli covek da je to
neki linker koji samo sto ne kuva kafu, al ne ide sve to tako jednostavno)
P.S.
Zato na UNIX-u linkujem sa 'cc' (isto sto i 'cl' ili 'tcc' na DOSu)
unknown.38igor.mil,
> A zasto zaboga linkujes direktno sa 'tlink'-om kad vec sve radis
> na C-u?
Neophodno je kada se neki moduli prevode necim drugim, assembler na
primer. tcc, na zalost, nije tako pametan kao Unix cc da sam poziva
assembler kada treba.
unknown.39spantic,
Evo molbe za pomoć jednog mog prijatelja. Ako neko može da pomogne, neka
priskoči. Možda ga tako i nagovorimo da uzme modem , :).
===============================================================================
Radim jedan program sa turbo C_om i db_FILE paketom za mreznu bazu
podataka.
Pojavljuju mi se neobicni problemi koji se ogledaju u tome da
program sve uradi pa se onda zaglavi na izlazu bez ikakvog komentara
ili da cak program zavrsi sa radom a da se na sledecoj komandi sve zaglavi
kao u goreopisanom slucaju.
Ranije sam imao problem slicnog oblika koji je nestao kada sam pri
izlasku iz programa stavio eksplicitno zatvaranje koriscenih datoteka.
Ovo me podseca na probleme u pascalu kada se prode po nekom pointeru preko
null pointera i onda nesto upise- gde se sve u C-u mogu desiti takve stvari?
Program treba da vrsi prevodjenje jednog pseudojezika u model entitet-veza
pa tako za slucaj gresaka koristim prljavstinu tipa SETJUMP-LONGJMP. Sta sve
moze da se desi kao rezultat toga.
Jos jedna cudnovata osobina ovog insekta je da se pojavljuje zavisno od
ulazne datoteke. Za odredjen model ne crkava, a crkne kada mu se doda npr
jos jedan entitet.
Svi ovi problemi su se pojavljivali pri prevodjenju iz komandne linije
koje je bilo definisano u primeru datom uz db_FILE. Uspeo sam da program
prevedem kao PROJECT u integrisanom turbo C-u i tada je sasvim lepo proradio.
Posto nisam ukapirao zasto je sada proradio jos uvek ocekujem da crkne onda
kada mi to bude najmanje odgovaralo.
Molim moguce odgovore ili pomocne informacije na bilo koje od gore
eksplicitno ili implicitno postavljenih pitanja.
Unapred hvala
Matos Gilberto Augusto
unknown.40maleksic,
Eh, tvom prijatelju nema pomoci!
Jadnik koristi Turbo C, tu nema leka.
Ustvari ima! Neka odma' predje na Microsoft C!!
unknown.41maleksic,
>> Neophodno je kada se neki moduli prevode necim drugim, assembler na
>> primer. tcc, na zalost, nije tako pametan kao Unix cc da sam poziva
>> assembler kada treba.
Gwach!
Izgleda da me nisi razumeo. Govorio sam o *linkovanju* pomocu
tcc, bez ikakvog prevodjenja (mada i ono moze da se ubaci). Evo
jos jednom primjer (note: svi argumenti su .OBJ ili .LIB fajlovi):
tcc ime1.obj ime2.obj asmcode.obj ime3.lib ... (=> rezultat ime1.exe?)
E, ova komanda sada linkeru prosledjuje navedene argumente & svu
onu boraniju od systemskih C-biblioteka, i sve to sa pravilnim
redosledom. Module (OBJ/LIB) nastale prevodjenjem asemblerskog
sourcea mozes bez ikakvih problema da ukljucujes.
A sto se tice onih dosadnih sistemskih C-biblioteka, to se valjda sve
lepo definise pomocu tcc switcheva. Ako stavis npr. -mh switch,
pri linkovanju (ne govorim o compiliranju!) bice koriscene
biblioteke za huge model itd. (ne znam da li je ovo neophodno,
ali valjda ne smeta).
Posto ipak ne radim na TC-u moguce je da sam napisao poneku glupost,
ali Borland i ne zasluzuje neku veliku paznju ;>>
unknown.42zkehler,
Ŕ Radim jedan program sa turbo C_om i db_FILE paketom za mreznu bazu
Ŕ podataka.
Ŕ Program treba da vrsi prevodjenje jednog pseudojezika u model
Ŕ entitet-veza
Pre nego što razmislim o rešenju, kod koga od profesora radiš to?
Je li ETF ili FON?
Na ETF-u sam radio pretvaranje XER modela u relacionu bazu u SQL-u.
Pisao sam sam u Turbo C-u. Nisam koristio setjmp() i/ili
longjmp(), već sam kod greške prenosio iz sveke rutine, sve do
main(), pa tek onda u main() zvao rutinu koja prepoznaje grešku.
ZK
unknown.43zkehler,
Ŕ Eh, tvom prijatelju nema pomoci!
Ŕ Jadnik koristi Turbo C, tu nema leka.
Ŕ Ustvari ima! Neka odma' predje na Microsoft C!!
maleksicu, šovinisto nijedan! Pa ovakve poruke su za FORUM,
a ne za konferenciju u kojoj se mozak koristi za malo
inteligentnije stvari od pljuvanja.
ZK
P.S. Opšta nit poruke je ;) (da ne bi bilo zabune)
unknown.44spantic,
>> Eh, tvom prijatelju nema pomoci!
>> Jadnik koristi Turbo C, tu nema leka.
>> Ustvari ima! Neka odma' predje na Microsoft C!!
Moj prijatelj ima životinjicu zvanu Toša (sa 386, EGA, laptop, ali 40MB HD).
Tako da nije za čuđenje zašto koristi TC 2.0. :)
Hajde, TC programeri! Probaćemo kod mene sa MSC 6.0 u međuvremenu.
unknown.45spantic,
>> Pre nego što razmislim o rešenju, kod koga od profesora radiš to?
>> Je li ETF ili FON?
>>
>> Na ETF-u sam radio pretvaranje XER modela u relacionu bazu u SQL-u.
>> Pisao sam sam u Turbo C-u. Nisam koristio setjmp() i/ili
>> longjmp(), već sam kod greške prenosio iz sveke rutine, sve do
>> main(), pa tek onda u main() zvao rutinu koja prepoznaje grešku.
ETF, kod Mišića.
unknown.46zkehler,
Ŕ >> Pre nego što razmislim o rešenju, kod koga od profesora radiš to?
Ŕ >> Je li ETF ili FON?
Ŕ >>
Ŕ >> Na ETF-u sam radio pretvaranje XER modela u relacionu bazu u SQL-u.
Ŕ >> Pisao sam sam u Turbo C-u. Nisam koristio setjmp() i/ili
Ŕ >> longjmp(), već sam kod greške prenosio iz sveke rutine, sve do
Ŕ >> main(), pa tek onda u main() zvao rutinu koja prepoznaje grešku.
Ŕ
Ŕ ETF, kod Mišića.
Vidi molim te. Pa i ja sam radio kod Mišića, a mentor mi je bio
Branko Lazareviš sa FON-a, koji je do prošle godine predavao
Baze podataka.
Ako si zainteresovan, možeš da vidiš program. Ima ga sigurno i Mišić,
bar u vidu knjižurine sa mojim diplomskim (složeno u TeX-u).
ZK
unknown.47zkehler,
Moram da napišem par rutina koje bi trebali da menjaju
paletu na VGA karti, odnosno da mogu da izaberem
8 boja pozadine i 16 boja karaktera iz većeg skupa
boja. Ideja je rođena gledajući user interface na
Norton 6.0, PC Tools 7.0 i sličnim paketima.
Pisaću u C-u (ili možda asembleru), a rutine treba da se
koriste u Clipper 5.01 programima.
Gde da pogledam kako se to radi? Ima li neko neke primere
rutina koje se bave time?
ZK
unknown.48ppekovic,
>> Moram da napišem par rutina koje bi trebali da menjaju
>> paletu na VGA karti, odnosno da mogu da izaberem
>> 8 boja pozadine i 16 boja karaktera iz većeg skupa
>> boja. Ideja je rođena gledajući user interface na
>> Norton 6.0, PC Tools 7.0 i sličnim paketima.
Postoji program koji se zove aaa_vga koji radi upravo to što
želiš. Program je ovde na sezamu. Međutim, pošto želiš:
>> Pisaću u C-u (ili možda asembleru), a rutine treba da se
>> koriste u Clipper 5.01 programima.
e onda baci lepo Borland C ;)))) i uzmi MSC 6.00. Tamo imaš
čitav set naredbi za rad sa paletama boja. Sve je veoma, veoma
jednostavno, ukratko, napraviš jedan long niz i taj niz proslediš
funkciji _remapallpalette() i gotovo. Naravno, možeš i svakoj
pojedinačnoj boji da menjaš long vrednost sa _ramappalette().
Struktura long vrednosti za boju je sledeća:
blue byte green byte red byte
00BBBBBB 00GGGGGG 00RRRRRR
high ----------------------> low order
Predlog: Uzmi aaa_vga, pa našteluj boje kako ti odgovaraju. Šta
će ti aaa_vga? Pa zato što ti on daje vrednosti plave, zelene i crvene
boje. Onda lepo uzmeš te vrednosti, po gornjoj šemi napraviš longove i
gotovo.
MEĐUTIM, (rano si se obradovao ;))) ) pošto to želiš da korstiš u
Clipper 5.01 programima da te obradujem da MSC 6.0 i Clipper neće
zajedno da rade kako treba, tj. bar neće sve. Ovo sam pročitao po svim
mogućim BBS-ovima i mrežama al nisam verovao pa sam lomio glavu xxx dana
da nateram da proradi i eto, ne radi. Ipak, kao što rekoh, ako se držiš
nekih pravila, radiće:
Pravilo: programe piši po ANSI C standardu, a kada poželiš da uradiš
nešto kao: _remappalette() i sl. e onda uzmi u ruke listu interapta i
uradi to isto ali na malko nižem nivo. Onda će sve da proradi.
Dakle, u tvom slučaju, moraćeš da koristiš:
INT 10H f:10H pf:10H
postavljanje kolor_registara
AH=10H
AL=10H
BX=kolor registar
CH=vrednost zelene boje
CL=plave
DH=crvene
vrednosti boja se izražavaju u procentima, s tim što se mora
paziti da zbir bude 100%. Poziv ovog int-a je ekvivalent goreopisanoj
funkciji _remappalette().
Zaključak: za ovakve stvari uzmi assembler! (zbog veličine kod-a).
Paya
P.S. Znam da će Borlandovci odmah da skoče zbog onog "baci lepo Borlnad
C ...", ali da ih preduhitrim, znam da tih funkcija ima i u BC-u ;))
unknown.49zkehler,
Hvala Payo! Nemam predrasuda prema MSC, jedino sam više
koristio TC i TCPP.
Javiću rezultate.
ZK
unknown.50vilic,
Hi,
da li se secate programa core-war. Ovo je jedan oblik
istog programa samo se programi za borce pišu u cccc-u.
bye
crobots.arjunknown.51natila,
Zdravo svima!
Imam dva pitanja u vezi programiranja u C-u:
1. Kako se iskljucuje prikaz kurzora na ekranu?
2. Kako mogu dobiti ili podesiti vrednost odredjenog bita (ili
nekoliko bitova) u jednom bajtu pomocu tri logicke operacije
(AND, OR, XOR).
Sto se drugog pitanja tice: u racunarima 74 sam procitao tekst Zorana
Zivotica pod naslovom Moja skola C-a, ali tamo navedeni nacin
resavanja
ovog problema (pomocu bit polja) nisam mogao da koristim jer, nisam
znao
kako da tako deklarisanoj strukturi dodelim vrednost (celoj
strukturi,
ceo jedan bajt). U stvari ja sam samo hteo da ocitam stanje INSERT
tastera.
Unapred zahvalan
Nemeth Attila
============
P.S. Moja skola C-a je | IZUZETNO | dobra serija tekstova. Iskreno se
nadam
============
da ce Zoran Zivotic izdati i knjigu.
unknown.52ppekovic,
>> 2. Kako mogu dobiti ili podesiti vrednost odredjenog bita (ili
>> nekoliko bitova) u jednom bajtu pomocu tri logicke operacije
>> (AND, OR, XOR).
Podešavanje vrednosti pojedinih bitova u bajtu se vrši na sledeći
način:
Ako želiš da postaviš nule na, recimo, 3. i 7. bit u bajtu uradi
sledeće:
bajt AND 01110111
Ako žeiš jedinice na 3. i 7. bitu:
bajt OR 10001000
Da pročitaš vrednost nekog bita, recimo 3., uradi:
bajt AND 00001000
RIGHT_SHIFT bajt,3 (bajt>>=3)
Paya
unknown.53mmihajlovic,
> Imam dva pitanja u vezi programiranja u C-u:
> 1. Kako se iskljucuje prikaz kurzora na ekranu?
> 2. Kako mogu dobiti ili podesiti vrednost odredjenog bita (ili
> nekoliko bitova) u jednom bajtu pomocu tri logicke operacije
> (AND, OR, XOR).
Evo kratke funkcije za iskljucivanje kursora:
---------------------------------------------
/*
* This function turn cursor off by setting bit 5 to 0x01 in ROM BIOS
* "set cursor size" service.
*
* Mihajlo Mihajlovic Mart 1990.
*/
#include <dos.h>
void curoff( void )
{
union REGS regs;
regs.x.cx = 0x2020;
regs.h.ah = 0x01;
int86(0x10, ®s, ®s);
}
A ovako mozes ocitati stanje INSERT moda:
-----------------------------------------
int ins_mode( void )
{
char far *bios_flags=(char far*)0x417L; /* BIOS shift flags */
if (*bios_flags & (char)0x80) /* Get INSERT mode */
return 1; /* INSERT On */
else
return 0; /* INSERT Off */
}
unknown.54djelovic,
Evo patch-a za TC++ 1.01. Uskoro cu sa trotneta dobiti i borland BGI
toolkit - editor fontova, program za pravljenje fontova i još po nešto.
patch.zipunknown.55drakce,
│Uskoro cu sa trotneta dobiti i borland BGI toolkit - editor fontova, program
│za pravljenje fontova i još po nešto.
└────
Mislim da imam te programe, ne trebaš da se trudiš. Zovu se:
BGIDRIV .ARJ ........ 74,944
BGIFONT .ARJ ........ 56,249
BGIFONTS.ARJ ........ 62,734
BGIHERC .ARJ ........ 35,956
Ako je to u pitanju, javi pa da šaljem.
Pozdrav od Dragana
unknown.56chege,
> Ima li nacina da se u TC++-u nekom pragmom iskljuci upozorenje u jednom
>redu. Recimo ako imate legalnu liniju "if (*q = *p)", kompajler ce tu stalno
>davati upozorenje "possibly incorect assignment in function xxxx", sto ne
smeta
>mnogo, ali...
stavi:
if ( NULL != (*q=*p) )
i proći će ti bez upozorenja.
( PS. ne zaboravi da ispravno definišeš NULL )
pozdrav Saša
unknown.58igor.mil,
> 2. Kako mogu dobiti ili podesiti vrednost odredjenog bita (ili
> nekoliko bitova) u jednom bajtu pomocu tri logicke operacije
> (AND, OR, XOR).
recimo ovako:
int data = INITIAL_VALUE;
data = data || 4; /* OR setovanje bita 2 */
data = data && ~0x28; /* AND gasenje bita 3 i 5 */
data = data ^ 0x41 /* XOR toggle-ovanje bita 6 i 0 */
> Sto se drugog pitanja tice: u racunarima 74 sam procitao tekst Zorana
> Zivotica pod naslovom Moja skola C-a, ali tamo navedeni nacin
> resavanja
> ovog problema (pomocu bit polja) nisam mogao da koristim jer, nisam
> znao
> kako da tako deklarisanoj strukturi dodelim vrednost (celoj
> strukturi,
> ceo jedan bajt). U stvari ja sam samo hteo da ocitam stanje INSERT
> tastera.
recimo ovako:
union {
struct {
unsigned int b0 : 1;
unsigned int b1 : 1;
unsigned int b2 : 1;
unsigned int b3 : 1;
unsigned int b4 : 1;
unsigned int b5 : 1;
unsigned int b6 : 1;
unsigned int b7 : 1;
} bitfield;
char wholebyte;
} data;
data.bitfield.b5 = 1; /* setovanje bita 5 */
data.whilebyte = 0x76; /* pristupanje polju kao bajtu */
unknown.59djelovic,
Pa shalji brate! Takodje, ako je neko pomocu toga napravio neki YU font,
neka shalje i to. Sta je BGIHERC?
unknown.60natila,
Zahvaljujem se na pomoci!
Nemeth AttilaĚ╗
unknown.61ivujanic,
╠ BGIDRIV .ARJ ........ 74,944
╠ BGIFONT .ARJ ........ 56,249
╠ BGIFONTS.ARJ ........ 62,734
╠ BGIHERC .ARJ ........ 35,956
╠
╠ Ako je to u pitanju, javi pa da šaljem.
Šalji, al' zakači u konferenciju, da svi pokupimo!
Ivica
unknown.62drakce,
│││Uskoro cu sa trotneta dobiti i borland BGI toolkit - editor fontova, program
││└────
││Mislim da imam te programe, ne trebaš da se trudiš. Zovu se:
│└────
│ Pa shalji brate! Takodje, ako je neko pomocu toga napravio
│ neki YU font, neka shalje i to. Sta je BGIHERC?
└────
Upss! Fatal Error in my head. Proverio sam programe i video da nisu ni
shareware ni public domain. Izvinjavam se svima na dezinformciji. BGIHERC je
driver koji podržava i Hercules monochrome i Hercules InColor Card, sa
primerima u C-u i Pascalu. Ništa posebno značajno. U ostalima se nalaze BGI
toolkit, BGI font editor i nekoliko fontova.
unknown.63igor.mil,
> 2. Kako mogu dobiti ili podesiti vrednost odredjenog bita (ili
> nekoliko bitova) u jednom bajtu pomocu tri logicke operacije
> (AND, OR, XOR).
recimo ovako:
int data = INITIAL_VALUE;
data = data || 4; /* OR setovanje bita 2 */
data = data && ~0x28; /* AND gasenje bita 3 i 5 */
data = data ^ 0x41 /* XOR toggle-ovanje bita 6 i 0 */
> Sto se drugog pitanja tice: u racunarima 74 sam procitao tekst Zorana
> Zivotica pod naslovom Moja skola C-a, ali tamo navedeni nacin
> resavanja
> ovog problema (pomocu bit polja) nisam mogao da koristim jer, nisam
> znao
> kako da tako deklarisanoj strukturi dodelim vrednost (celoj
> strukturi,
> ceo jedan bajt).
to se radi ovako:
union {
struct {
unsigned int b0 : 1;
unsigned int b1 : 1;
unsigned int b2 : 1;
unsigned int b3 : 1;
unsigned int b4 : 1;
unsigned int b5 : 1;
unsigned int b6 : 1;
unsigned int b7 : 1;
} bitfield;
char wholebyte;
} data;
data.bitfield.b5 = 1; /* setovanje bita 5 */
data.wholebyte = 0x76; /* pristupanje polju kao bajtu */
unknown.64ppekovic,
Jel petljao neko u MSC-u 6.0 sa funkcijama fread i fwrite, koje,
da podsetim, čitaju blok, ili niz blokova, koji se sastoje iz zadanog
broja bajtova, iz fajla?
U čemu je problem?
Pa, u help-u lepo piše da funkcija vraća vrednost stvarno
isčitanih (fread) ili upisanih (fwrite) bajtova. Međutim, meni i jedna
i druga funkcija uvek vraćaju 1 (jedan).
Program je trebao da isčitava iz fajla kilobajt po kilobajt, da
lepo stane kada je broj isčitanih bajtova manji od kilobajt (znači
nema više, tj. kraj fajla) i da ostatak bajtova čiji je broj trebala
da vrne funkcija fread dodatno upiše u izlazni fajl.
za fread mi stoji:
koliko=fread(&buffer,1024,1,ulazna);
mislio sam da slučajno ne vraća broj isčitanih blokova, ali nije,
probao sam. Buffer sam probao da definišem i kao neku strukturu od
ukupno 1024 bajta, i kao pokazivač i kao niz, al uvek isto.
Paya
unknown.65madamov,
Ne znam šta piše u help-u, ali biblija kaže da fread i fwrite vraćaju broj
iščitanih/upisanih blokova, a ne bajtova ( taj broj može da bude manji od
navedenog kao argumenta funkcije, jer one vraćaju broj uspešno
pročitanih/upisanih blokova ).
Što se tiče problema sa ostatkom od celog broja blokova, ja to radim na
ovaj način:
fseek(in_file,0,SEEK_END);
length = ftell(in_file);
rewind(in_file);
blocks = length/1024;
last = length % 1024;
a onda mu daš:
for(i=0;i<blocks;i++) fread(....);
fread(&buf,last,1,in_file);
Hope this helps.
|\/\/\/| *************************************************
| | * *
| | * *
| (o) (o) * Football is NOT the matter of life and death. *
C _) ...Hey Dude! * *
| `__| * IT'S MUCH MORE IMPORTANT !!! *
| / * *
/ \ * *
/ ---- \ *************************************************
unknown.66ppekovic,
>> Hope this helps.
Thanks!
Paya
unknown.67djelovic,
Da li neko moze zacas da izdeklamuje rutinu za vracanje znakova u kbd.
buffer. Naime, TC++ ima ovu rutinu, ali samo za jedan znak. Znaci, ungetch ()
ne dolazi u obzir, treba mi da u buff (koji je postavljen bilo gde) ubacim celu
recenicu.
unknown.68djelovic,
Kako da prevedem termin 'overloading'? Ono dsavic-evo 'preopterecenje' mi
nesto ne lezi...
P.S. Oli je to polimorfizam?
unknown.69ppekovic,
U jednom programu mi je bio potreban sarzaj adresa od
0049 do 004A. I krenem ja lepo i napisem ovakvo parce koda:
#include <stdio.h>
main()
{
char far *adresa=0x449;
for(;adresa<=0x4a0;adresa++)
printf("%p...%5u\t",adresa,*adresa);
}
Na prvi pogled, sve je ok. al mi ovaj program konstatno
ispisuje da su sadrzaji ovih adresa jednaki 0 (nula), sto
nikako nije tacno. I tu sam kontao, kontao, ali mi zaista nije
bilo jasno zasto ovo ne radi. I tako sasvim slucajno zamenim
mesta adresi i sadrzaju u printf-u tj. dobijem ovakav program:
#include <stdio.h>
main()
{
char far *adresa=0x449;
for(;adresa<=0x4a0;adresa++)
printf("%5u...%p\t",*adresa,adresa);
}
i sad, odjednom sve radi. Vratim na staro, ne radi. E ajde
neka mi neko kaze u cemu je stos, meni stvarno nije jasno.
Paya
unknown.70beki,
Koji si model koristio kod kompajliranja ? Ako si koristio neki sa jednim
data segmentom, pojavu koju si opisao objasnjavam na sledeci nacin:
printf ocekuje near pointere kod %p. U slucaju:
printf("%p...%u\n", p, *p);
na stek ide prvo *p, a zatim p (cetiri bajta). I na kraju pointer za
string "%p...%u\n":
*p...........................2 bajta
p............................4 bajta
pointer na format string.....2 bajta <----SP
Ono sto printf ocekuje (kada se radi sa jednim data segmentom) je:
*p...........................2 bajta
p............................2 bajta
pointer na format string.....2 bajta <----SP
Nakon ovoga mislim da je malo jasnije: Ono sto dobijas umesto *p je segment
pointera p.
U drugom slucaju, kad si upotrebio "%u...%p\n", stvar izgleda ovako:
p............................4 bajta
*p...........................2 bajta
pointer na format string.....2 bajta <----SP
Mislim da je to to.
Pozdrav, Beki
P.S.: Volim C.
unknown.72.bale.,
Da li neko zna kako da se procita broj cilindara diska (i gde ;)?
Regards from .bale. !
#8*)+-<
unknown.73ppekovic,
>>Koji si model koristio kod kompajliranja ? Ako si koristio neki sa jednim
>>data segmentom, pojavu koju si opisao objasnjavam na sledeci nacin:
Probao sam, i sve lepo radi u large modelu. Svaka čast
na objašnjenju!
Paya
unknown.74ppekovic,
>>Da li neko zna kako da se procita broj cilindara diska (i gde ;)?
Pa verovatno iz CMOS-a, ali kako se čitaju i upisuju
podaci iz i u CMOS? ;)
Paya
unknown.75miro,
■■ Pa verovatno iz CMOS-a, ali kako se čitaju i upisuju
■■ podaci iz i u CMOS? ;)
VAR
a: ARRAY Š0..255Ć OF SHORTCARD;
i: CARDINAL;
...
FOR i:=0 TO 255 DO
SYSTEM.Out(70H, SHORTCARD(i));
AsmLib.Delay(1); (* in ms *)
aŠiĆ:=SYSTEM.In(71H);
AsmLib.Delay(1);
END;
Ovako se cita, pisanje je koliko znam analogno. A pise sve u Tech
help.
O
/█>
Ů Ţ
▀ ▀ Dragisa.
unknown.76alexa,
> Da li neko zna kako da se procita broj cilindara diska (i gde ;)?
Za prvi disk u strukturi na koju pokazuje vektor za INT 41H, a za
drugi se ne sećam tačno (nije 42H, nego neki iza). E sad,ne sećam se
ničega ovako napamet, a nisu mi pri ruci one datoteke sa podacima
(INTER*.ZIP, čini mi se). Pretpostavljam da postoji i neki
poziv BIOSu za tako nešto - to je možda i najpouzdanije, jer
ako imaš neki neobični kontroler sa dodatnim BIOSom sve je moguće
(prvo da podaci u CMOS-u nisu tačni, a posle i da ovi na INT 41H
nisu tačni).
U CMOS-u se (po 'standardu') nalazi samo redni broj 'tipa diska',
tj. indeks u tabelu parametara diska koja se nalazi na tačno
određenom mestu u BIOS ROM-u. Razni proizvođači BIOS-a prevazilaze
probleme sa ovim 'standardom' tako što posebno tretiraju npr. tip 47
(u originalnom AT BIOS-u nema mesta za više tipova), pa se tada
za zapisivanje parametara diska ('user-defined type) koriste
delovi CMOS-a koji u originalnom AT-u nisu bili iskorišćeni.
Ne znam da li je ovo rešenje došlo do neke vrste 'standarda' -
u svakom slučaju, BIOS dohvati parametre diska kako zna i smesti ih
na gorepomenuto mesto u memoriji.
Klasičan primer da CMOS ne pomaže su ESDI kontroleri - žesto se
upotrebljava tip 1 (to je neki bedni 10 Mb disk), a onda se uz pomoć
dodatnog BIOSa na kontroleru dobave pravi podaci.
unknown.77znevenic,
> Da li neko zna kako da se procita broj cilindara diska (i gde ;)?
Ne piše direktno, ali može da se izvede iz boot sektora, evo i kako:
TYPE SECTOR=ARRAY Š1..512Ć OF BYTE;
VAR Buf : SECTOR;
PROCEDURE ChkBoot;
VAR CP : POINTER TO CARDINAL; (* CARDINAL = unsigned int *)
LP : POINTER TO LONGCARD;
BEGIN
RdSec(1,1,Buf); (* Reads boot sector into Buf*)
CP:=ADR(BufŠ20Ć); SecNum:=CPž;
CP:=ADR(BufŠ25Ć); SecPerTrack:=CPž;
CP:=ADR(BufŠ27Ć); Sides:=CPž;
LP:=ADR(BufŠ33Ć); BigSecNum:=LPž;
IF BigSecNum=0 THEN BigSecNum:=LONGCARD(SecNum); END;
END ChkBoot;
unknown.78miro,
■■ PROCEDURE ChkBoot;
■■ VAR CP : POINTER TO CARDINAL; (* CARDINAL = unsigned int *)
■■ LP : POINTER TO LONGCARD;
Koji je ovo SAVRSENI jezik ? :)
O
/█>
Ů Ţ
▀ ▀ Dragisa.
unknown.79miro,
Pitanje svima koji koriste MSC C 6.00.
Ima li igdje na dohvatu source-a ili .obj za QuickHelp engine.
Ja sam u paketu vidio samo MAKEHELP, a htio bih napraviti rezidentni
interpreter QH datoteka. (Upload na Sezam se podrazumijeva :) )
Unaprijed hvala.
O
/█>
Ů Ţ
▀ ▀ Dragisa.
unknown.80miro,
Pitanje svima koji koriste MSC C 6.00.
Ima li igdje na dohvatu source-a ili .obj za QuickHelp engine.
Ja sam u paketu vidio samo MAKEHELP, a htio bih napraviti rezidentni
interpreter QH datoteka. (Upload na Sezam se podrazumijeva :) )
Unaprijed hvala.
O
/█>
Ů Ţ
▀ ▀ Dragisa.
unknown.81spantic,
> ■■ PROCEDURE ChkBoot;
> ■■ VAR CP : POINTER TO CARDINAL; (* CARDINAL = unsigned
> int *) ■■ LP : POINTER TO LONGCARD;
>
> Koji je ovo SAVRSENI jezik ? :)
Znajući Zorana MODULA 2.
unknown.82znevenic,
>> ■■ PROCEDURE ChkBoot;
>> ■■ VAR CP : POINTER TO CARDINAL; (* CARDINAL = unsigned
>> int *) ■■ LP : POINTER TO LONGCARD;
>>
>> Koji je ovo SAVRSENI jezik ? :)
>
> Znajući Zorana MODULA 2.
Jel' ovo kompliment?
Jeste, kompliment je!
E, pa hvala!
BTW, ovo je tema cccc...
unknown.83ndragan,
>* Ne znam da li je ovo rešenje došlo do neke vrste
>* 'standarda' -
how yes no - sad u nekim biosima standard hvata do 48, a 49 je
za ručni rad; uspevali smo da nađemo čak i kombinacije
mama_ploča-konjtroler-disk-bios koje ovaj poslednji nikako (ni
ručno, ni pomoću trikova) nije hteo da prihvati.
unknown.84sgopcevic,
moj drugar pise program u C-u i interesuje ga na koji nacin moze da procita
serijski broj hard diska. Da li za to postoji neki INTerapt?
sgopcevic
unknown.85todorp,
Hi!
-----------------------------------------------------------------------
INT 21 - DOS 4.0 internal - GET/SET DISK SERIAL NUMBER
AH = 69h
AL = subfunction
00h get serial number
01h set serial number
BL = drive (0=default, 1=A, 2=B, etc)
DS:DX -> disk info (see below)
Return: CF set on error
AX = error code (see AH=59h)
CF clear if successful
AX destroyed
(AL = 00h) buffer filled with appropriate values from extended BPB
(AL = 01h) extended BPB on disk set to values from buffer
Notes: does not generate a critical error; all errors are returned in AX
error 0005h given if no extended BPB on disk
does not work on network drives (error 0001h)
buffer after first two bytes is exact copy of bytes 27h thru 3Dh of
extended BPB on disk
SeeAlso: AX=440Dh
Format of disk info:
Offset Size Description
00h WORD info level (zero)
02h DWORD disk serial number (binary)
06h 11 BYTEs volume label or "NO NAME " if none present
11h 8 BYTEs (AL=00h only) filesystem type--string "FAT12 " or "FAT16 "
-----------------------------------------
Nadam se da ce ovo pomoci.
Pozdrav od Todora.
unknown.86gristic,
HHU Svetom Murphyjevom zakoniku postoji pravilo koje kaže:
Ako grafički prikaz eksperimenta (članka) treba da bude prava linija,
pribavi podatke za samo dve tačke.
(Velilindijev drugi zakon eksperimentisanja)
Ovo gore se odnosi na tekst Laki uvod u *adu* u R76.
Dakle, ako treba dokazati da je *ada* SUPERIORNA u odnosu na C (ne
tvrdim da nije !) izaberite primere koji vam odgovaraju i samo napred...
Ukoliko autor tog članka povremeno prelistava ovu konferenciju imam za njega
(nagradno ?) pitanje:
ako jednog (skorog!) dana narodni poslanici *:o) (!č#&!*č) odluče da radimo
i subotom, na *KOLIKO* mesta i *GDE* treba ispraviti dolenapisani program ?
/*
Turbo(C,(short)0X2.000000);
*/
#include <stdio.h>
#include <math.h>
unsigned char*daniŠĆ=š(unsigned char*)1, /* PONEDELJAK */
(unsigned char*)2, /* UTORAK */
(unsigned char*)3, /* SREDA */
(unsigned char*)4, /* žETVRTAK */
(unsigned char*)'Đ5', /* PETAK */
/*(unsigned char*)'Đ6',*/ /* ????? <: */
(unsigned char*)'Đ0',ć;
float zaradaŠsizeof(dani)/*/02*/Ć;
int i;
#pragma void
*****************************************************************************
main ()
š
for (i*=č-0XL;(unsigned char*)(i&i)<daniŠi++Ć;printf
(
"Đn%10.2f",
zarada
Š
(int)--
dani
Š
(iđ=i)-pow
((int)01715.98e-2l,iži)
Ć
Ć
)
);
main/**/();
ć
Verujem da nije teško napisati program u *adi* koji radi istu stvar, a u kojem
bi trebalo ispraviti 234.67 mesta ;) .
Pozdrav,
__GR__
;*)
P.S
Vrela epruveta izgleda isto kao i hladna.
Murphyjev prvi zakon laboratorijskog rada.
P.P.S.
Grešiti je ljudski, ali da se stvarno zabrlja potreban je kompjuter.
Peti zakon nepouzdanosti.
P.P.P.S.
Nemam ništa protiv *ade*. (Al' ću uskoro da kupim CLIPPER++ :-o (Ovo bi valjda
trebao da bude znak za 'Ajde?! (c)Maratonci))
unknown.88mmihajlovic,
Kao sto sam (dosta) ranije najavio, FOR_C je stigao i posle
par nedelja rada sa njim mogu dati odredjeni prikaz. Da ja ne
bih previse tupio imate u prilogu uputstva za demo verzije
FOR_C i FOR_STRUCT kao i jedan (sasvim realan) primer, a ne
kako proizvodjaci imaju obicaj, dobro izabran u cilju
(ulepsanog) prikazivanja sopstvenih produkata. Nazalost
ne mogu da uploadujem demo verzije posto sam u razgovoru sa
odgovornom gospodom saznao da to ne dozvoljavaju. U svakom
slucaju ako neko ima nekih pitanja, neka se slobodno obrati.
MM
for_c.zipunknown.89djelovic,
Well, kada je pocelo ono opste pljuvanje po racunarima ja sam odustao od
"zalbe", ali kada si vec naceo temu, da kazem: Prvo, primer 2b iz teksta o Adi
nema veze s istinom; u C-u postoji tip enum koji ovakve stvari lako resava.
Drugo, zasto autor poredi Adu sa C-om? Naime, sada je u PC svetu C++ i bilo bi
fer da je poredi sa njim, u kom slucaju bi mu 95% teksta palo u vodu. Trece,
Ada jeste lep jezik, ali na nacin autor samo pokazuje koliko Ada nema sta novo
da pruzi. (Znam da nije novi jezik, ali Ada ima svoje prednosti. Autor ih nije
*naglasio*.)
Tekst o UNIX-u je napisan lose za auditorijum kome je namenjen - pocetnike.
Citat iz teksta DSAVIC-a: "Na engleskom virtual znaci 'onaj koji je
odlozen'..." Bez komentara.
P.S. Boja mi nije smetala. Riba i nije neka. A papir bi mogao biti tanji (ako
ce to znaciti da je jeftiniji).
unknown.90bearboy,
Pozdraw !
Jel' neko cuo nesto o High C-u ?
(Koristi se u vezi AutoCAD-a)
( 11 )
Thanx
─ /\/-\/\
\| |/
|O O|
/ \
| /0\ |
| \_/ |
\_____/
unknown.91zormi,
* Jel' neko cuo nesto o High C-u ?
Ja ga koristim... Pišem u njemu module za Matlab 386.
Šta te zanima?
unknown.92gristic,
1.
U radu sa kompajlerom Turbo C 2.0 primetio sam da povremeno izraz (-0!=0)
(isto je i za int i za double) proglašava za TRUE :( ?!?! To se naročito
dešava prilikom štampe nekih izveštaja gde je jedini uslov da varijabla nije 0.
Ako taj isti program kompajliram u MSC-u sve je OK. U čemu je štos ?
Sada stavljam nešto poput ovog pre testiranja:
if(iznos==-0.0)
iznos=0;
i nema problema. Ali, ipak ZAŠTO ??????????
2.
Prilikom linkovanja nekih programa TLINKOM dobijam sledeće greške:
Error: Segment _BSS exceeds 64K (pedesetak puta),
Error: Group DGROUP exceeds 64K (jednom),
a povremeno me časti i prekoračenjem TEXT segmenta.
Programi i biblioteke su kompajlirani u large i huge modelu
(SAMO large i SAMO huge !!!). Šta da se radi? (Samo ne da smanjim broj
funkcija i promenljivih!) (Šta je trebalo IBMu da uzme 8086? ;( )
3.
Imam razrađenu sopstvenu biblioteku za izradu menija, međutim sada želim
da prilikom pozivanja spoljašnjih programa ili odlaska u DOS shell smanjim
zauzetu memoriju (meni(ji) zauzima(ju) oko 90K, ali zato nema(ju) mane!).
To bi trebalo ovako da funkcioniše (nije uslov) nakon izbora funkcije:
.......
exec_prog(*program)
š
.......
snimi_stanje_memorije(); /* mapa celokupne memorije */
swap(memorija-->disk); /* snimi mapu na disk/EMS/XMS */
/* po najboljem izboru */
oslobodi_memoriju_osim_rezidentnog_dela(); /* vrati višak memorije DOSu */
pozovi_program(*program); /* pozovi program */
/* nakon povratka */
ukloni_eventualne_rezidentne_programe(); /* očisti "smeće" i rezidentne
programe instalirane nakon
poziva programa */
swap(disk-->memorija); /* obnovi stanje menija kao pre
poziva programa iz swap
datoteke sa diska/EMS/XMS */
.......
ć
.......
Zauzeće memorije rezidentnom funkcijom bi trebalo da bude manje od 8K
(poželjno je da bude oko 2K), otprilike kao što to rade QuckEdit, QTSR
i 4DOS prilikom pozivanja shell-a, ali bolje. ;) Zamalo da zaboravim:
model je large, ali ako baš mora može i small !
Ima li neko neku ideju ? Važan je princip, ali neću se naljutiti i ako
stigne gotova funkcija(e) ;) (samo pouzdana - ne bih da eksperimentišem
pošto imam suviše dana i noći snimljeno na disk, streamer nikako da stigne,
a za zipovanje mi treba više od 100 HD disketa X 2(sigurno je sigurno)
i 2 dana posla ;< !!).
__GR__
unknown.94bearboy,
Video sam u AutoCAD 11 fajlovima da su njegovi .EXP programi pisani u High C-u.
Da li znas kako to ide (konverzija C - EXP) ?
Stvar je interesantna zbog toga sto se mogu pisati programi za AutoCAD u C-u.
Jel' se moze kompajlirati AutoLisp s' High C-om (ovo nisam pitao ja) ?
/\/-\/\
\| |/
|O O|
/ \
| /0\ |
| \_/ |
\_____/
unknown.96bojt,
>> Video sam u AutoCAD 11 fajlovima da su njegovi .EXP programi
>> pisani u High C-u. Da li znas kako to ide (konverzija C - EXP)?
EXP se dobije pomoću PharLap linkera i potreban mu je PharLap
DOS-Extender da bi se pokrenuo. Postoji više proivodjača
kompajlera koji koriste (ili su do skoro koristili) PharLap
ravojni sistem (High C, NDP C, Watcom C, ...). Konverzija je
jednostavna: kompajliraš pa linkuješ ;).
unknown.97bearboy,
Video sam u AutoCAD 11 fajlovima da su njegovi .EXP programi pisani u High C-u.
Da li znas kako to ide (konverzija C - EXP) ?
Stvar je interesantna zbog toga sto se mogu pisati programi za AutoCAD u C-u.
Jel' se moze kompajlirati AutoLisp s' High C-om (ovo nisam pitao ja) ?
/\/-\/\
\| |/
|O O|
/ \
| /0\ |
| \_/ |
\_____/
unknown.98bearboy,
posto imam suvise dana i noci snimljeno na disk, streamer
nikako da stigne, a za zipovanje mi treba vise od 100 HD
disketa X 2(sigurno je sigurno) i 2 dana posla ;< !!).
Najjednostavnije je da kupis jos jedan HD od 100Mb, pa da koristis ili ARJ -
isprobano - ukljucis, odes kuci, stradan se vratis i sve lepo spakovano u 1.2M
fajlove. To uradis jednom, a posle samo Update-ujes (arhivira fajlove kojima se
promenio datum, ili su noviji)
/\/-\/\
\| |/
|O O|
/ \
| /0\ |
| \_/ |
\_____/
unknown.99bearboy,
> EXP se dobije pomocu PharLap linkera i potreban mu je
> PharLap DOS-Extender da bi se pokrenuo. Postoji vise
> proivodjaca kompajlera koji koriste (ili su do skoro
> koristili) PharLap ravojni sistem (High C, NDP C, Watcom
> C, ...). Konverzija je jednostavna: kompajliras pa
> linkujes ;).
'oce reci, treba da nabavim High-C ako hocu da pisem nesto u C-u za AutoCAD ?
Ona konverzija - jel' to ide nesto kao -Select output type:-,opalis PharLap ili
EXP, pa ti ga on lepo napravi ?
var
answer,sendme :boolean;
begin
if answer=true then sendme
else writeln(':(');
if sendme=true then writeln(' Posalji mi ga !');
end.
Sorry guys, Pascal ist Pascal.
/\/-\/\
\| |/
|O O|
/ \
| /0\ |
| \_/ |
\_____/
unknown.100beki,
> Imam razradenu sopstvenu biblioteku za izradu menija, medutim sada zelim
> da prilikom pozivanja spoljasnjih programa ili odlaska u DOS shell smanjim
> zauzetu memoriju (meni(ji) zauzima(ju) oko 90K, ali zato nema(ju) mane!).
"Overlay() Library Ver. 3.5
by SofDesign International,Inc.
Ideal for C or Clipper, Overlay() Lib Ver 3.5 lets you
'swap and RUN' applications with virtualy no memory tie
up......
LIST PRICE: $149 PS PRICE: $149
THE PROGRAMMER'S SHOP
90 Industrial Park Road, Hingham, MA02043"
Pozdrav, Beki
unknown.101igor.mil,
U direktorijumu \IBMPC\PROGRAM se nalazi izvrsna verzija programa
Flex, dobijena iz C izvornog koda koji se nalazi u direktorijumu
\UNIX.
Flex je "lex compiler" - programerska alatka koja na svom ulazu cita
specifikaciju koje se zove "lex program" i generise C izvorni kod
programa koji se zovu leksicki analizatori ili skaneri.
Osnovna namena Flex-a je da olaksa pisanje kompajlera i
interpretera, ali se moze koristiti i za generisanje bilo kakvih
programa koji vrse pretragu za odredjenim uzorcima u tekstu, i
nekakvu obradu po prepoznavanju.
Uzorci se definisu "regularnim izrazima", a akcije po prepoznavanju
su proizvoljne naredbe programskog jezika C.
unknown.102bojt,
>> 'oce reci, treba da nabavim High-C ako hocu da pisem nesto u
>> C-u za AutoCAD ? Ona konverzija - jel' to ide nesto kao
>> -Select output type:-,opalis PharLap ili EXP, pa ti ga on
>> lepo napravi ?
Jok. PharLap = EXP; on ti ionako da samo OBJ, ostalo uradi PharLap.
>> if sendme=true then writeln(' Posalji mi ga !');
Nemam ja to, samo u principu znam kako rade kompajleri pod Pharom.
unknown.103gristic,
Hvala lepo. Ja sam mislio nešto selfmade...
Ako baš mora i ako baš vredi možda...
Pozdrav
__GR__
unknown.104fric,
> Flex je "lex compiler" - programerska alatka koja na svom
> ulazu cita specifikaciju koje se zove "lex program" i
> generise C izvorni kod programa koji se zovu leksicki
> analizatori ili skaneri.
Možeš li da daš neki prost a ilustrativan primer upotrebe flexa ?
Tvoja poruka je sama po sebi razumljiva, ali kad sam pogledao
dokumentaciju uz flex - opet mi nije jasno kako to ide, korak po
korak.
Treba na uradim program koji je u suštini interpreter - čita red po
red iz text fajla, analizira, radi razne radnje. Kako bi se pisanje
takvog programa moglo olakšati/ubrzati pomoću flexa ?
fric
unknown.105igor.mil,
> Mozes li da das neki prost a ilustrativan primer upotrebe flexa ?
> Treba na uradim program koji je u sustini interpreter - cita red po
> red iz text fajla, analizira, radi razne radnje. Kako bi se pisanje
> takvog programa moglo olaksati/ubrzati pomocu flexa ?
Daj malo vise detalja u opisu prolema koji treba da se resi, pa cu
verovatno moci da ti pomognem. Nemam vremena da se raspisem o svim
mogucnostima flex-a. Evo nekoliko kratkih uputstava.
U FLEXDOC.MAN imas neke primere specifikacije skanera na pocetku (a i
kasnije). Ukucaj primer u neki file, recimo da se zove PRIMER.L i
uradi:
flex -t primer.l > primer.c
Switch '-t' znaci da se generisani skaner ispisuje na stdin. Bez ove
opcije ce se koristiti default naziv LEXYY.C za generisani fajl. Ovim
se generise C kod skanera u vidu funkcije 'yylex'. Ako je u sekciji
specifikacije "user code" (to je sekcija posle druge sekvence %% na
pocetku linije) definisana funkcija 'main' koja poziva 'yylex' onda
uradi:
tcc primer.c (ili: cl primer.c)
I dobijas "standalone" skaner koji cita standardni ulaz i pise na
standardni izlaz.
A ako nema definisanog 'main' u okviru specifikacije, onda napisi
glavi program koji koristi pozive funkcije 'yylex' pa ga linkuj sa
PRIMER.C.
unknown.106alexa,
> Treba na uradim program koji je u suštini interpreter - čita red
> po red iz text fajla, analizira, radi razne radnje. Kako bi
> se pisanje takvog programa moglo olakšati/ubrzati pomoću flexa
> ?
Ako je stvarno u pitanju interpreter, najviše bi ti odgovarala
kombinacija bison-flex odnosno yacc-lex. Posao oko analize ulaznog
teksta se značajno smanjuje, čini se sistematičnijim pa se smanjuje
i mogućnost greške itd. Istina, u početku je potrebno potrošiti
dosta vremena na upoznavanje sa 'mašinerijom'. Obično se kao primer
daje realizacija nekog kalkulatora pomoću yacc-a i lex-a. Nažalost,
nemam ovaj primer u obliku datoteke.
Inače, mogu da ti garantujem da Microsoft C za sintaksnu analizu -
parsing koristi analizator generisan pomoću yacc-a, a uveren sam
da je i leksički analizator generisan pomoću lex-a.
unknown.107beki,
Sad kada imamo LEX, logicni nastavak: Ima li neko YACC ?
Beki
unknown.108nkbog,
> Sad kad imamo LEX, logicni nastavak: Ima li neko YACC
1001. put: imas bison (sto je u stvari YACC) u UNIX dir-u, a imas i
Brekli YACC u PC.SOFT:unix (su .EXE verzijom za ms.dos) pa biraj.
NB.
unknown.109dejanr,
Za ljubitelje Borland C-ova: izašao je novi C++ (3.0) i par drugih alatki. Više
o tome u NOVOSTI/bix 5.43 i 5.44
unknown.110dlozic,
Evo jednog programcica sa sourceom u c-u. Najbolja ideja!
dont.zipunknown.111andra,
Nisi valjda ???
:)))))))))))))))))))))
unknown.112ppekovic,
>> Evo jednog programcica sa sourceom u c-u. Najbolja ideja!
Ovo je verovatno trebalo ići u viceve jer je ovo program koji ne
radi ništa, uostalom, pogledajte DOC fajl:
Pre nekoliko meseci (godinu dana) dobio sam program Don't i
odusevio sam se idejom. S obzirom da sam ga SLUCAJNO izbrisao, napisao
sam ga ponovo (sa izvinjenjem autoru). U ovoj arhivi imate source, izvrsnu
verziju i ovaj doc. file. Evo ga uputstvo kakvog ga se secam:
Da li ste umorni od dugih programa i uputstava? Ako jeste Don't je
prava stvar! Samo napisite sta netreba da se radi i on to nece uraditi.
Primer:
A:\>dont format my hard disk
nece formatirati vas hard disk! Ovo je prva i konacna verzija
(100% bug free). Program je shareware i ako ga koristite posaljite
$1000000 autoru.
Evo ga source u c-u:
#include <stdio.h>
main(argc,argv)
char *argv[];
int argc;
{
int i;
printf("Ok. I won't");
if (!--argc) printf(" do anything!\n");
else {
for (i=1;i<argc+1;i+=1) printf(" %s",*++argv);
printf(".\n"); }
}
Paya
unknown.113bojanp,
> Evo jednog programcica sa sourceom u c-u. Najbolja ideja!
Imam ja jos bolju: Don't buy computer!
unknown.114zocha,
Zna li neko u cemu je razlika izmedju:
1. char a;
2. char *a;
3. char * a;
4. char* a;
- Zocha@Rista -
unknown.115zocha,
Imam problem koji ne mogu nikako da resim. Naime, otvorim datoteku za citanje,
procitam prvi slog u datoteci, kad ono sadrzaj prvog polja ne odgovara stvarnom
sadrzaju tog polja. Razlika je u tome, sto mi program (compajler?) na
neobjasnjiv nacin u sredinu polja doda ascii znake 239 i 001 (dekadno).
Pokusavao sam da pre otvaranja datoteke polja resetujem (popunim)
znacima blanko, ali ne vredi, ovi "fantomski znaci" se uvek javljaju i to
na istim mestima u polju (slogu). Ima li neko ideju o cemu se radi??
- Zocha@Rista -
unknown.118dlozic,
aaaaaaaaaaaaaahaaaaaaaaaaa!
unknown.119dlozic,
Pa, moglo je i u viceve, ali mozda nekome bude korista...
Tek da ga kasnije ne premestam :)
a mogu i u viceve da ga stavim (ako ljudi pokazu interesovanje...)
unknown.120mjova,
> 1. char a;
definicija promenljive a kao char.
> 2. char *a;
> 3. char * a;
> 4. char* a;
definicaj pointera na niz char, sve ima isti smisao.
unknown.121ppekovic,
>> Imam problem koji ne mogu nikako da resim. Naime, otvorim datoteku za
>> citanje, procitam prvi slog u datoteci, kad ono sadrzaj prvog polja ne
>> odgovara stvarnom sadrzaju tog polja. Razlika je u tome, sto mi program
>> (compajler?) na neobjasnjiv nacin u sredinu polja doda ascii znake 239 i 001
>> (dekadno).
Bilo bi korisno kada bi napisao kako ti izgleda deo programa koji
pravi probleme.
Paya
unknown.122zocha,
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define Imenik "TELEFONI.DAT"
#define DuzinaIzlaznogSloga 55
#define MaxBrojPolja 2
typedef struct { char Ime[40];
char Telefon[15];
} Slog;
void main()
{
FILE *UlDat;
Slog *IzlazniSlog;
strcpy (IzlazniSlog->Ime, " ");
strcpy (IzlazniSlog->Telefon, " ");
UlDat = fopen (Imenik, "r+");
fread (IzlazniSlog, DuzinaIzlaznogSloga, 1, UlDat);
/* -----------------------------------------------------------------------
kada na ovom mestu pogledate sadrzaj sloga, u IzlazniSlog.Ime se nalaze
pomenuti fantomski znaci
----------------------------------------------------------------------- */
fclose (UlDat);
}
unknown.123zzivotic,
> void main()
> {
> FILE *UlDat;
> Slog *IzlazniSlog;
>
> strcpy (IzlazniSlog->Ime, " ");
> strcpy (IzlazniSlog->Telefon, " ");
>
> UlDat = fopen (Imenik, "r+");
> fread (IzlazniSlog, DuzinaIzlaznogSloga, 1, UlDat);
Imao si sreće - posledica ovakvog programa je češće zaglavljivanje računara ;)
Promenjiva IzlazniSlog je *pointer* - na šta on pokazuje to nigde nije
definisano. Dakle, treba ili prethodno:
IzlazniSlog = malloc( DuzinaIzlaznogSloga );
ili jednostavno, umesto pointera koristiti promenjivu, dakle
Slog IzlazniSlog;
pa zatim:
fread (&IzlazniSlog, DuzinaIzlaznogSloga, 1, UlDat);
Pozdrav, zz
unknown.125ddjj,
==> (100% bug free). Program je shareware i ako ga koristite
==> posaljite $1000000 autoru.
^^^^^^^^
Pošto mi se program strašno dopao i intenzivni ga koristim šaljem
autoru (koji je program napisao po sećanju) ono što je tražio.
Nastavak je u datoteci money.arj.
Dejan
money.arjunknown.126mjova,
ovako,
otvorim file kao text, učitam sa fread i normalno da se sekvenca CR-LF
pretvara u LF. ovim je stvarna dužina niza (char) manja za broj redova
(tj. sekvenci CR-LF). kako odrediti tu, novu dužinu. da li možda
postoji neka bolja fora za učitavanje u memoriju char datoteke?
SY
unknown.127zocha,
> Promenjiva IzlazniSlog je *pointer* - na sta on pokazuje
> to nigde nije definisano. Dakle, treba ili prethodno:
>
> IzlazniSlog = malloc( DuzinaIzlaznogSloga );
>
> ili jednostavno, umesto pointera koristiti promenjivu,
> dakle
>
> Slog IzlazniSlog;
>
> pa zatim:
>
> fread (&IzlazniSlog, DuzinaIzlaznogSloga, 1, UlDat);
Aleluja! Mojoj sreci nigde kraja. Nemam reci zahvalnosti, stvarno. Samo cu
da kazem da sam srecan isto onoliko, koliko me je ova zavrzlama dovodila
do ludila (znaci puno).
Primenio sam prvi predlog, jer u originalu programa, procitan slog
prosledjujem funkciji za dalju obradu, a posto ne znam bolji nacin, to radim
tako sto joj prosledim pointer na slog. Ili moze i bolje?
- zocha@rista -
unknown.128zzivotic,
> Primenio sam prvi predlog, jer u originalu programa, procitan slog
> prosledjujem funkciji za dalju obradu, a posto ne znam bolji nacin, to
> radim tako sto joj prosledim pointer na slog. Ili moze i bolje?
Pa sve jedno, i ako je struktura statički deklarisana možeš da proslediš adresu
& operatorom tako da tvoja funkcija za obradu ostaje ista, recimo:
obradi( &IzlaziSlog );
Odluka da li dinamička ili statička alokacija je najčešće pitanje ukupnog
dizajna programa.
Pozdrav, zz
unknown.129bearboy,
> Nemam ja to, samo u principu znam kako rade kompajleri pod
> Pharom.
Thanx
unknown.130vpetrovic,
Našao sam na TRICKLE-u program za simulaciju buba švabe sa
source-om u C. To je neka vrsta simulacije neuro-mreže. Ako nekog zanima
UL-ovaću. Sem toga, baš me zanima da li još nekog zanimaju slične teme (mislim
na neuro-mreže, a ne na bubašvabe)
unknown.131mjova,
> otvorim file kao text, učitam sa fread i normalno da se
> sekvenca CR-LF pretvara u LF. ovim je stvarna dužina niza
nema veze, rešio sam problem.
SY
unknown.132dlozic,
uploaduj! zanima me sve u vezi neuronskih mreza i sl. mogu ti
uploadovati i demo mog programa za dizajniranje&simulaciju. imam i
jednu lepu knjigu samo o n.mr.
(knj. je 550 str)
unknown.133djelovic,
Upravo sam sa Trickla dobio par casopisa CNEWS, i samo hocu da vas
obavestim da se ne trudite da ih DL-jete, jer su totalno sranje. Usput, ako
nekog zanima mala klasa (C++) za rad sa DXF (Autocad) fajlovima, javite se.
unknown.134dlozic,
Nisam stigao da se zahvalim do sada (morao sam da prebrojim)...
Sada imas i pismenu potvrdu autora da mozes da ga koristis!
Potpis: JA
unknown.135vpetrovic,
Evo stiže. Nego imam (opet sa trickle-a) i program za dizajniranj &
simulaciju. Mogu ja i to da ul. Nego ajd'mi pozajmi tu lepu knjigu za jedan
kratak vremenski period, ako nije neki problem.
Vlada
nerves.zipunknown.136dragan.juric,
Procitao sam da si resio, ali mozda ce ti ovo pomoci za svetlu buducnost.
Prvo, pitanje je sta ucitavas : tekst ili podatke ?
ako je tekst, predlog ti je niz pointera ( char **) pa ucitavaj svaki red
zasebno u jedan od njih.
ako su neki podaci, probaj C++ -
imas kontejnerske klase (tj podatke koji sadrze podatke) i koji imaju
procedure za snimanje onoga sto sadrze, a mozes i sam dopisati
( za ozbiljniji rad i moras). Rezultat je verovatno najelegantniji program
koji na tu temu moze da se sastavi
unknown.137mjova,
> Prvo, pitanje je sta ucitavas : tekst ili podatke ?
text, neodređenog formata.
> ako je tekst, predlog ti je niz pointera ( char **) pa
> ucitavaj svaki red zasebno u jedan od njih.
to sam i mislio, ali nisam probao jer sam imao neke gotove stvari koje
nisam hteo da menjam. kad sam o tome razmišljao, primetio sam da je to
najbolje rešenje, ali ja program uvek pišem od kraja :) pa sam tako
sad došao na težu opciju, koju sam nekako rešio (CR preskačem, a LF
tretiram kao kraj reda).
teško zaboravljam način razmišljanja spektrumovog asemblera, i to me
užasno nervira. koliko sam uz njega naučio toliko me sad davi.
> ako su neki podaci, probaj C++ -
što se tiče onog ++, trenutno mi je dosta daleko jer nemam vremena da
sednem i pročitam još neke stvari.
hvala na savetu, možda se i predomislim.
mjova
unknown.138miljko,
Pitanje u vezi kompajlera TC2.0. Kako da ga nateram da mi u program
koji se kompajlira u SMALL modelu, naprimer, ulinkuje recimo strcpy ili
neku drugu funkciju iz recimo COMPACT modela?
Ovaj problem mi se javlja, relativno često kad alociram memorju sa
farmalloc ili sl. Stvar se naravno da rešiti tako što se elegantno sve
kompajlira u COMPACT modelu, ali avaj.
Za neki program koji radim pokupio sam PD biblioteku (sa TRICKLE-a)
a ona ima podrsku samo za SMALL.
U većini situacija se može snaći nekako (koristiti se mem f-jama,
itd.), ali ja bih ipak voleo da znam elegantno rešenje.
Miljko
P.S. Biblioteka je PGRAF110 i sa njom se moze po stampacu crtati
f-jama koje podsecaju na BGI interfejs. Ako ima interesenata...
unknown.139mjova,
> farmalloc ili sl. Stvar se naravno da rešiti tako što se
> elegantno sve kompajlira u COMPACT modelu, ali avaj.
> Za neki program koji radim pokupio sam PD biblioteku (sa
> TRICKLE-a) a ona ima podrsku samo za SMALL.
pa, ako hoćeš u nekom drugom modelu, onda treba platiti?
nisam siguran da ima neko jednostavno rešenje...
unknown.140ndragan,
/ nisam siguran da ima neko jednostavno rešenje...
motorola?
unknown.141lazo,
VOZDRA C narode!!!
Htio bih se počet bavit C-om, pa pitam da li neko zna nešto o MC20 - C
kompajleru koji se nalazi na Sezamu. Da li je dovoljan za početak, da li ima
nekih velikih razlika s ostalim vrstama C-jezika (mada su u biti svi isti,
ili bi bar trebalo da je tako) i sl.
Nadam se da će te mi pomoći i da ću onda znati da li treba da DL-jem tih
190K ili ne.
Pozdrav Mickey.
unknown.142ppekovic,
>> Htio bih se počet bavit C-om, pa pitam da li neko zna nešto o MC20 - C
>> kompajleru koji se nalazi na Sezamu. Da li je dovoljan za početak, da li ima
>> nekih velikih razlika s ostalim vrstama C-jezika (mada su u biti svi isti,
>> ili bi bar trebalo da je tako) i sl.
>> Nadam se da će te mi pomoći i da ću onda znati da li treba da DL-jem tih
>> 190K ili ne.
*** MICRO-C Features ***
- Very easy to port, not tied to any processor architecture.
- Lots of documentation (>200 pages) and example programs.
Includes detailed information on porting the compiler.
- Includes built-in and external pre-processors.
- Includes post-processor optimizer for even better performance.
- Over 130 library functions supplied (IBM PC version).
- All source code for compiler, libraries and utilities is included.
- Includes code generators for: 8080/8085/Z80, 80x86, 6809, 68HC11
- 80x86 implementation is MASM compatible and supports both the TINY
and SMALL memory models.
- More complete implementation, more efficent code produced,
and faster compilation than most other "SMALL-C" compilers.
*** MICRO-C Language Summary ***
It does support:
- All 'C' statements:
if/else while do/while for break continue
return goto switch/case/default šć ;
- All 'C' operators:
(Except structure reference: . and ->)
+ - * / % & đ ž << >> > < == č
+= -= *= /= %= &= đ= ž= <<= >>= >= <= != !
++ -- ?: , () ŠĆ
(++ and -- may be pre or post)
( * and & also perform INDIRECTION and ADDRESS OF)
- The following data types (with no restrictions):
int char unsigned (incl: unsigned char)
extern static register
- pointers to any type (including pointers)
- Arrays of any type (including pointers)
- Function can return any type (incl. pointers)
- Typecast of value to above types
- Multi-dimensional arrays.
- Decimal, Octal and Hex constants
eg: 127, 0177, 0x7f
- Inline assembly code
- Full support for strings and character constants: ('' "")
Including: Đn Newline
Đr Carriage return
Đt Horizontal tab
Đb Backspace
Đf Formfeed
Đ177 Octal constants
Đx7f Hexidecimal constants
(16 bit character constants are supported. eg: 'ab')
- Fairly complete preprocessor
- Integral pre-processor is very FAST and supports
#define (non-parameterized)
#include
#ifdef/#ifndef/#else/#endif (single level)
#asm/#endasm
- External pre-processor supports:
#define (fully parameterized)
#undef
#forget (multi undef -similar to forth forget)
#include (with <> library support)
#ifdef/#ifndef/#else/#endif (fully nested)
#asm/#endasm (passed through & handled by integral)
It does not support:
- Structures and Unions, Typedef, Long / Double / Float and
Enumerated data types, Bit fields.
Paya
unknown.143lazo,
Hvala, DL-vaću :))))))).
unknown.144dgrbic,
:: Htio bih se pocet bavit C-om, pa pitam da li neko zna
:: nesto o MC20 - C
Ono sto ti je odgovorio PPekovic, stoji - pod uslovom da narucis
MC20 od proizvodjaca.
U fajlu koji je na Sezamu nedostaje source kompajlera (sto mislim
da ti i nije mnogo bitno), i dat je generator koda SAMO za 8088,
i biblioteke za IBM PC.
Znaci, iz Payinog odgovora "izbaci" tih par pasusa, i to ti je.
Inace, najveca mana mu je sto ne podrzava strukture.
U conf. ORKA, tema PD.SOFT imas i Small C prikacen uz neku poruku
(Bulaja nikako da ga prebaci u Dir).
Prilozen je i kompletan source kompajlera i biblioteka, ali za
njegovu upotrebu moras imati i assembler (ne prevodi direktno u
.OBJ, nego pravi .ASM source).
Jedan assembler imas u \IBMPC\PROG (cini mi se da se tako zove
dir?)
Takav postupak (.c -> .ASM -> .OBJ) je, cini mi se, dobar nacin
da se ponesto nauci.
Srecno ucenje!
unknown.145bulaja,
│U conf. ORKA, tema PD.SOFT imas i Small C prikacen uz neku poruku
│(Bulaja nikako da ga prebaci u Dir).
└───
Prebaceno ;).
\IBMPC\PROGRAM\sc88.zip
Zahvaljujem dvidovic-u koji je svojevremeno poslao sc88.zip na prilogu.
unknown.146mjova,
he, ne radim dugo u C-u, ali me zanimeju neke stvari :)
krenuo sam nešto da uradi i primetio sam blagu nelogičnost. u pitanju
je struktura ftime:
FTIME (struct)
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
A file's time and date.
struct ftime {
unsigned ft_tsec : 5;
unsigned ft_min : 6;
unsigned ft_hour : 5;
unsigned ft_day : 5;
unsigned ft_month : 4;
unsigned ft_year : 7;
};
Defined in io.h
ovim je definisano 5 bit-a za sekunde, a svima je dobro poznato da
sekundi ima 60 (a ne 32 koliko je 2^5). da li je ovourađeno namerno
ili ne nije mi jasno.
ima li načina da se izbegne ova struktura ili ne? (da li dos diktira
uslove?)
ovo je struktura koja je definisana u BC++, kako izgleda u MSC?
SY
unknown.147nandi,
> ovim je definisano 5 bit-a za sekunde, a svima je dobro poznato da
> sekundi ima 60 (a ne 32 koliko je 2^5). da li je ovourađeno namerno
> ili ne nije mi jasno.
>
> ima li načina da se izbegne ova struktura ili ne? (da li dos diktira
> uslove?)
vrednost u tih pet bitova treba pomnoziti sa dva da bi se dobile
sekunde. tu je dos ućario bit, da bi sve moglo da stane u ceo broj
bajtova. pogledaj vremena kad lupis time, sve sekunde su parne.
pozdrav nandi
unknown.148andra,
Jel neko probao da compilira onaj UNARJ.C koji se nalazi na sezamu
(ibmpc\archiver\unarj221.exe)? Ja sam probao ali mi nesto ne radi. Ako neko
ima neko iskustvo sa ovim, bio bih mu zahvalan na odgovoru!
Pozdrav, !Andra!
unknown.149ppekovic,
>> ovo je struktura koja je definisana u BC++, kako izgleda u MSC?
Ovako:
Include: <sysĐtimeb.h>
Structure:
struct timeb
š
time_t time;
unsigned short millitm;
short timezone;
short dstflag;
ć;
Type: time_t
Include: <time.h>
Summary: Type for representing calendar time in seconds.
typedef long time_t;
Paya
unknown.151dgrbic,
::>> ovo je struktura koja je definisana u BC++, kako
:: izgleda u MSC?
::
:: Ovako:
::
:: Include: <sysDtimeb.h>
Ne bih rekao, struktura FTIME u BC++ se koristi za citanje
vremena kreiranja/pisanja datoteke funkcijom... ne secam se vise
imena funkcije, sad sam presao na MSC, u njemu za tu svrhu sluzi
funkcija
_dos_getftime (int handle, unsigned *date, unsigned *time);
:: struct ftime {
:: unsigned ft_tsec : 5; \
:: unsigned ft_min : 6; > unsigned *time
:: unsigned ft_hour : 5; /
:: unsigned ft_day : 5; \
:: unsigned ft_month : 4; > unsigned *date
:: unsigned ft_year : 7; /
:: } ;
Velicine se potpuno slazu. A da bi sve stalo u unsigned long,
vreme je skraceno na parne sekunde, sto i nije neka greska, jer
je vreme zapisivanja fajla "proces koji traje"
Funkcija ftime u MSC (a verovatno i u BC), vraca tekuce vreme u
strukturi timeb:
void ftime (struct timeb *time);
description:
ftime returns the current time.
time is a pointer to a structure of type timeb defined in
the include file timeb.h as follows:
...
iz knjige MICROSOFT C RUN TIME LIBRARY, Kris James,
Microsoft Press
ftime je System V kompatibilna funkcija, i trebalo bi da je ima i
BC.
unknown.152lanik,
Kako bre ne radi? Pa radi i na Atariju ST a da ne radi na PC-ju???
;))
--> A nanosecond here, a nanosecond there,
--> next thing you know you've got real time.
unknown.153gww.,
>Treba na uradim program koji je u suštini interpreter - čita red po
>red iz text fajla, analizira, radi razne radnje. Kako bi se pisanje
>takvog programa moglo olakšati/ubrzati pomoću flexa ?
Pošto je tema ineteresantna i za mene evo sledećih zaklučaka do kojih sam
došao tragajući za rešenjem.
Baterija lex-yacc ima veliku filozofsku manu a to je da kao rezultat
dobiješ prevod tvog jezika u C, znači translator. Za konačno rešenje treba
ti C compiler.
E pa lepo, a gde je tu onda interpretator. Koliko sam shvatio baterriju
lex-yacc treba nekako preseliti u memoriju tako da, ako se dobro sećam
termina, sintaksni teror obaviš u memoriji i odmah izvršiš odgovarajuće
funkcije.
Video sam takav primer na PL-1 interpretatoru sličnom starim borlandovim
kompajlerima. Nažalost izvor tih informacija (Toza) preselio se u
Australiju pa ga je nemoguće pitati za detalje. Imam ovde na disketama neke
primere korišćenja takve baterije i otprilike mi je jasno šta se tu dešava.
Ono što mi je otprilike jasno jeste:
1. da LEX otprilike radi tzv. tokenizaciju t.j. odvaja objekt od objekta
(funkcije, promenljive, konstante, operacije) i ono što dobiješ ulaz je za
YACC odnosno header fajla za include u konačni C kod
2. da YACC radi sintaksnu analizu (koji objekt stoji ispred, iza i izmedju
čega) i izlaz mu je prevod tvog programa u tvom jeziku u obliku c source-a
3. Oba formiraju svojevrsne tabele (lex - kodova, yacc jedan veeeeeliki
switch)
Dakle uvek i uvek dobijaš transliran tvoj jezik u C. Filozofija je: "šta će
tu opet neki novi jezik kad je C dovoljan" i prilično mi se ne svidja
odnosno ne rešava ni moj ni tvoj problem. Jedini paket koji je čini mi se
dao slobodan pristup svojoj sintaksnoj analizi je Actor (pod windows-ima)
ali sumnjam da će ti to mnogo pomoći. Izgleda da nam se prespektiva smeši
verovatno kada situacija bude zrela (čitaj: kada ne budu imali više šta da
dodaju na ionako megabajte kompajlera, neko će se setiti da dodaju i ove
alate kao neke vrste funkcija). U C-ovim bibliotekama imaš neke rudimente
analizatora u okviru str... funkcija sve ostalo je tvoj (moj) posao. Voleo
bih da vidim šta si uradio kad uradiš.
Dobro razmisli o sledećim mogućnostima:
1. LEX + YACC u sorce-u (da bi mogao da ih ugradiš u tvoj program)
2. Da sam napišeš nešto poput takve baterije, to se zove proći sintaksni
teror, ne treba mnogo samo je strašno zamorno sa dosta fizičkog i mentalnog
posla (crtanje pomaže).
3. Da pitaš ZZ-a kako je rešio komandnu liniju u svojim programima
Nadam se da sam problem bar osvetlio.
Pozdrav GWW.
P.S. mislim da je ovo zaista interesantna tema za postavljanje na
rapravljački sto. Ako je to suviše za ovu konferenciju, rado bih učestvovao
u grupi koja bi se bavila/rapravila ovo pitanje.
unknown.154gww.,
Ima li preporuka za DOS-extender ?
unknown.155djelovic,
Zapravo gresis! Lex + Yacc pravi od ulaznog teksta kostur programa u C-u
zapravo onda ti nadogradjujes i pravis compiler ili interpreter. Moze se
napraviti interpreter pomocu L+Y, ali zavisno od strukture jezika odluci sam da
li se to isplati. Rescimo, za 6502 assembler ti to sigurno ne treba.
unknown.156djelovic,
Phar Lap DE. Najvise ga ljudi koristi, pa pretpostavljam da za to ima
razloga. Inace, objavljen je jedan i u DDJ-u, pa ako te zanima da ga dovuces u
izv. kodu sa trickle-a...
unknown.157bulaja,
│Jel neko probao da compilira onaj UNARJ.C koji se nalazi na sezamu
│(ibmpc\archiver\unarj221.exe)? Ja sam probao ali mi nesto ne radi.
│Ako neko ima neko iskustvo sa ovim, bio bih mu zahvalan na odgovoru!
└───
Da, meni radi odlicno sa Borland C++2.0. Koji C koristis i da li si
koristio MAKE il' samo kopajlirao unarj.c (a trebas i jos ona dva
odvojena modula, ne znam im ime).
unknown.158ppekovic,
>> Da, meni radi odlicno sa Borland C++2.0. Koji C koristis i da li si
>> koristio MAKE il' samo kopajlirao unarj.c (a trebas i jos ona dva
>> odvojena modula, ne znam im ime).
Nevolja je sto verovatno koristi MSC a za msc nije ukljucen make fajl u
ovoj arhivi. U stvari, postoji, ali za OS/2. E sad, sve to lepo radi i sa
MSC-om i, koliko se secam, treba jednostavno da prevedes svaki od datih modula
sa:
CL /c /AS <ime>.c
pa onda da ih ulinkujes sa:
LINK ime1 ime2 ime3,,,
i to je to. Jedino se ne secam koliko je bilo ovih modula (3-4 cini mi se).
Paya
unknown.159mjova,
> rapravljački sto. Ako je to suviše za ovu konferenciju,
> rado bih učestvovao u grupi koja bi se bavila/rapravila
> ovo pitanje.
zašto u grupi? ovde može ladno da se piše o tome! odavno ovde očekujem
jače tekstove o C-u i ostalom stvarima.
SY
unknown.160miro,
■■> Baterija lex-yacc ima veliku filozofsku manu a to je da
■■> kao rezultat dobijes prevod tvog jezika u C, znaci
■■> translator. Za konacno resenje treba ti C compiler.
Ovo nije tacno. Ni filozofski :), a logicki da i ne govorimo.
Rezultat nije prevod jezika u C, nego generisanje prevodioca u
C-u.
■■> 1. da LEX otprilike radi tzv. tokenizaciju t.j. odvaja
■■> objekt od objekta (funkcije, promenljive, konstante,
■■> operacije) i ono sto dobijes ulaz je za YACC odnosno
■■> header fajla za include u konacni C kod
Leksicki analizator nije tesko napraviti pjeske, ali poslije petog
put postaje DOSADNO :(( LEX pravi pristojan kod koji se onda kompajlira
sa CC i koristi kao takav.
■■> 2. da YACC radi sintaksnu analizu (koji objekt stoji
■■> ispred, iza i izmedju cega) i izlaz mu je prevod tvog
■■> programa u tvom jeziku u obliku c source-a
YACC generise kod za sintaksno upravljanu kompilaciju (otprilike tako
nesto). To znaci da generisani kod (procedure) obavlja analizu i u
kod za analizu inkorporira i neke akcije koje kod jednostavnih jezika
mogu sasvim udovoljiti.
■■> 3. Oba formiraju svojevrsne tabele (lex - kodova, yacc
■■> jedan veeeeeliki switch)
Tabele koje oni formiraju su njihova stvar. Veza sa njima se ostvaruje
kroz procedure koje LEX i YACC naprave.
Inace, sami program su dosta mocni i priznati u praksi. Trenutno citam
"Compilers, Principles, Techniques and Tools" od Aho-a, Sethi-a i
Ullman-a i autori u dva poglavlja, "Lexical Analysis" i "Syntax
Analysis", preporucuju koristenje LEXa i YACCa za razvoj odgovarajucih
dijelova kompajlera. Kvalitet leks.analizatora i parsera je slabiji
nego sto se moze postici rucnim kodiranjem, ali je odnos
upotrebljivost/vrijeme razvoja MAKSIMALAN.
Dragisa
unknown.161gww.,
> Zapravo gresis! Lex + Yacc pravi od ulaznog teksta kostur programa u
C-u zapravo onda ti nadogradjujes i pravis compiler ili interpreter.
Moze se napraviti interpreter pomocu L+Y, ali zavisno od strukture
jezika odluci sam da
well meni je jasno da on daje C source u izlazu, ako si na to mislio
upotrebom "pravi od ulaznog teksta kostur programa u C-u" samo pitanje
glasi šta je taj kostur? t.j. šta je produkt L&Y bez intervencija
translator ili interpretator. Nema problema dobiću neki SWITCH da razbacane
tokene nekako izvršim (po sintaksnim pravilima) ali koji deo generisanog
kod će mi uraditi leksičku/sintaksnu analizu?
Ne bi bilo loše od tebe ili od mira da napravite jedan primer u obliku
kalkulatora i to sledećeg:
brojevi, operacija sabiranja i oduzimanja
da ne bi bilo komplikovano ne treba da radi unarni minus.
dakle samo 3 tokena, broj i dve operacije.....
znači čita datoteku
1+2
2+3
3-4
5-2
i posle svakog reda ispise rezultat
pa bi na osnovu tog primera imali o čemu da raspravljamo. Objašnjenja o L&Y
sistemu koja imam ispričao mi je čovek koji nije ovde (u Jugi) pa sam
sretan kada imam nekog da pitam, s tim da volim da postavljam nezgodna
pitanja. Vrlo rado volim da se razuverim dobrim argumentima, onda sam nešto
saznao, ovako ....
pozdrav GWW.
unknown.162gww.,
> Rezultat nije prevod jezika u C, nego generisanje prevodioca u
> C-u.
da. generisanje prevodioca koji prevodi vaš jezik u C, to sam i rekao ako
se ne varam.
'i izlaz mu je prevod tvog programa u tvom jeziku u obliku c source-a
da varam se rekao sam ovo, a mislio na sledeće:
+------#include----+
: :
leksička pravila ---> lex -----: :
sintaksna pravila ---:---> YACC --+-> prevodilac.c --->
--->prevodilac.c---->prevodilac.exe----:
program u 'jezik'-u--+---> program.c ----> program.exe
rekoh, crtanje pomaže
> YACC generise kod za sintaksno upravljanu kompilaciju (otprilike tako
> nesto). To znaci da generisani kod (procedure) obavlja analizu i u
> kod za analizu inkorporira i neke akcije koje kod jednostavnih jezika
> mogu sasvim udovoljiti.
Ovo bih još mogao da progutam kao politički govor, ukratko ne znači mi
ništa (bez uvrede). Da li bi moglo ovo da se malo narodskije objasni?
> Inace, sami program su dosta mocni i priznati u praksi. Trenutno citam
> "Compilers, Principles, Techniques and Tools" od Aho-a, Sethi-a i
baš lepo, to je kao da imam rols-rojs a ne znam da ga vozim, samo znam da
je strašno moćan i priznat (i skup) :))) Bez šale voleo bih da pogledam tu
knjigu. Ima li u njoj some source u C-u, onako upotrebljiv, na primer kao u
"Data structures, an advanced approach using C" gde je dat mali lisp
interpreter.
unknown.163gww.,
Nemam ništa protiv da se o ovome razgovara u conf, naravno da nemam,
samo sam mislio da se priča neće dopasti ostalima.
unknown.164djelovic,
> Ne bi bilo loše od tebe ili od mira da napravite jedan primer
> u obliku kalkulatora i to sledećeg:
Nije meni tesko da ti napravim primer, ali evo da se odlucimo za laksu
varjantu: Uz Turbo C++ dobijas i spreadsheet TCALC. Posto sam ja to davno
obrisao sa HD-a i ne znam ime datoteke, potrazi malo - matematika u TCALC-u je
napravljena pomocu YACC-a.
unknown.165djelovic,
Nemoj da budes u zabludi da prevodilac napravljen Y+L-om pravi od datoteke
na jeziku X obavezno C source. Mozes ti da nabudzis bilo koji izlazni format
(recimo OBJ).
unknown.166gww.,
> Phar Lap DE. Najvise ga ljudi koristi, pa pretpostavljam
> da za to ima razloga. Inace, objavljen je jedan i u DDJ-u,
> pa ako te zanima da ga dovuces u izv. kodu sa trickle-a...
imaš li ddj-ove ? zanima me tekst o btree, source je ovde
negde na Sezamu, znam šta radi ali bih voleo da pročitam i
članak.
Naravno zanima me i taj DOS-extender. Znaš li kako se zove
datoteka? Za skidanje možda će pomoći MJOVA.
MJOVO hoćeš li ?
unknown.167gww.,
> Nije meni tesko da ti napravim primer, ali evo da se
> odlucimo za laksu varjantu: Uz Turbo C++ dobijas i
> spreadsheet TCALC. Posto sam ja to davno obrisao sa HD-a i
> ne znam ime datoteke, potrazi malo - matematika u TCALC-u
> je napravljena pomocu YACC-a.
Well, nisam ni mislio da je teško nego je to podloga za raspravu.
što se tiče calc-a u tc-u ili u tp-u znam da je napravljen pomoću YACC-a
tako bar piše u dokumentaciji, ali složićeš se sa mnom yacc source nije ni
dat uz malu napomenu da je dat samo minimalni deo opisa sintakse od 10-tak
redova i to za četiri osnovne računske radnje, ali pravi source nije dat.
Štaviše ostatak je mogao biti i sigurno jeste doterivan ručno. Slažeš li
se?? Pored toga tcalc-ovi imaju brdo tokena sa kojim barataju, tekst, slova
funkcije ... i to još raznih osobina. Ne! to je mnogo komplikovano za
raspravu, baš zato sam i poželeo onakav minimalan primer. "3 tokena a
interpretator"
unknown.168gww.,
> Nemoj da budes u zabludi da prevodilac napravljen Y+L-om
> pravi od datoteke na jeziku X obavezno C source. Mozes ti
> da nabudzis bilo koji izlazni format (recimo OBJ).
Da da u pravu si uvek je u pitanju translacije jezika X u jezik Y s tim što
je uobičajeno jezik Y = C. Mada to i nije problem, problem je u kao što
rekoh u filozofskoj postavci. Nema dela programa koji rade L&Y posao,
tokenizaciju i sintaksnu analizu, odnosno L&Y moraš imati u okviru
interpretatora da bi mogao da uz pomoć njih napraviš analizu pa
interpretaciju.
Sve mi se čini da razgovaramo na rusko kineskoj granici, razgovaramo o
granici ali ja pričam kineski i rešavam kineski problem a ti ruski i ruski
problem, hoću reći jedno je translator a drugo interpretator.
P.S. znaš li zašto se zove baš YACC ?
unknown.169djelovic,
> imaš li ddj-ove ? zanima me tekst o btree, source je ovde
> negde na Sezamu, znam šta radi ali bih voleo da pročitam
> i
> članak.
>
> Naravno zanima me i taj DOS-extender. Znaš li kako se zove
> datoteka? Za skidanje možda će pomoći MJOVA.
DDJ-ove imam, nije problem da ti ih pozajmim. Reci samo broj ili bar opseg
brojeva koji ti trebaju.
Sto se tice datoteka, na trickle-u se nalaze kompletni listinzi iz DDJ-a,
pa potrazi malo u onoj datoteci sto je Bulaja poslao. Ako ti treba, dacu ti ja
racun na BUEF78-ici pa ti to narucuj.
P.S. Extender se zove PROT i izasao je u Oktobru i Novembru 1990-te.
unknown.170djelovic,
> P.S. znaš li zašto se zove baš YACC ?
YACC = Yet Another Compiler Compiler.
Sacekaj sa raspravom, u nekim od sledecih racunara (mozda i ovi, decembraski)
igor.mil treba da napise tekst o L+Y. Onda napadaj :).
> odnosno L&Y moraš imati u okviru
> interpretatora da bi mogao da uz pomoć njih napraviš analizu
> pa interpretaciju.
NE! Tu zaista ima neko fiksno parce koda koje se ubacuje u svaki program
napravljen sa njima, ali to nisu kompletni L+Y.
unknown.171igor.mil,
> Ne bi bilo lose od tebe ili od mira da napravite jedan primer u obliku
> kalkulatora
Evo trazenog primera (tesko onome ko ima JUS standard za nasa slova,
ali takvi valjda i ne koriste C ):
=== file: first.l ===================================================
number [0-9]+\.?|[0-9]*\.[0-9]+
%%
[ \t]+
{number} { sscanf(yytext, "%lf", &yylval);
return NUMBER; }
\n|. return yytext[0];
=== file: second.y ==================================================
%{
#include <ctype.h>
#include <stdio.h>
#define YYSTYPE double
%}
%token NUMBER
%left '+' '-'
%left '*' '/'
%right UMINUS
%%
lines : lines expr '\n' { printf ("%g\n", $2); }
| lines '\n'
|
;
expr : expr '+' expr { $$ = $1 + $3; }
| expr '-' expr { $$ = $1 - $3; }
| expr '*' expr { $$ = $1 * $3; }
| expr '/' expr { $$ = $1 / $3; }
| '(' expr ')' { $$ = $2; }
| '-' expr %prec UMINUS { $$ = - $2; }
| NUMBER
;
%%
#ifdef MYLEX
yylex() { /* ovo je leksicki analizator */
int c;
while ( ( c = getchar() ) == ' ' );
if ( (c == '.') || isdigit(c) ) {
ungetc(c, stdin);
scanf("%lf", &yylval);
return NUMBER;
}
return c;
}
#else
#include "lexyy.c"
#endif
yyerror(char *msg)
{
}
main()
{
yyparse();
}
=====================================================================
Primeri su iz knjige Aho, Sethi, Ullman "Compilers - Principles,
Techniques, and Tools", s tim sto sam ih u nekim sitnicama izmenio.
Pretpostavlja se da imate *izvrsne* oblike lex&yacc programa, koje se
u mom slucaju zovu "flex.exe" i "byacc.exe". Kalkulator se pravi na
jedan od sledeca dva nacina (ne obracajte na paznju na compiler
warning-e tipa "unreachable code" i druge, koje cete dobiti od Turbo
C-a):
[varijanta 1]
flex first.l ! rezultat -> "lexyy.c"
byacc second.y ! rezultat -> "y_tab.c"
tcc y_tab.c ! rezultat -> "y_tab.exe"
[varijanta 2]
byacc second.y ! rezultat -> "y_tab.c"
tcc -DMYLEX y_tab.c ! rezultat -> "y_tab.exe"
Kalkulator cita aritmeticke izraze terminisane karakterom '\n' sa
standardnog ulaza i pise rezlutat na stand. izlaz. Poziva se, naravno
sa "y_tab".
Izrazi se sastoje iz operatora ( ) + - * / i unarni minus, a operandi
su C "double" konstante. Na primer:
3e-2/(6 - .45) (ne bojte se, 3e-2 ga nece zbuniti)
Znaci blanko i tab nisu bitni (leksicki analizator ih "pojede").
Program ispisuje rezultat izraza posle ucitavanja karaktera '\n'.
U varijanti 1, parser generisan yacc-om koristi leksicki analizator
generisan lex-om. U varijanti 2 je funkcija "yylex" koja obavlja
leks. analizu napravljena rucno i inkorporirana u "user code" sekciju
yacc specifikacije (fajl "second.y"). Parametar MYLEX odredjuje da li
ce se koristiti ovaj kod, ili includovati kod generisan lex-om (fajl
lexyy.c) po specifikaciji u fajlu "first.l".
I jos nesto, u izvrsnoj verziji dobijenoj var. 1 i var. 2 postoje
funkcionalna razlika kada se kao ulaz koristi tastatura (t.j. bez
redirekcije), jer leksicki analizator dobijen lex-om radi baferovanje
(tamponazzu :)) ulaza. Zbog ovoga u var. 1, udarac na "enter" na
kraju izraza nece odmah prouzrokovati ispis rezultata, nego tek drugi
udarac na pomenuti taster (kada se unese sledeci izraz, koji moze biti
i prazan), a u var. 2 se ulaz ne baferuje. Ako je ulaz preusmeren iz
fajla ponasanje porograma dobijenih u obe varijante je identicno.
Inace, "flex" ima opciju za proizvodnju leks. analizatora bez
baferovanja ulaza, koju je neophodno koristiti ako se planira ulaz sa
tastature.
unknown.172igor.mil,
> Stavise ostatak je mogao biti i sigurno jeste doterivan rucno. Slazes li
> se??
Ja se ne slazem. Yacc generise C kod u obliku funkcije koja se zove
"yyparse" i ona se jednostavno pozove uz prosledjivanje izraza i
izracuna rezultat. Nikakva rucna doterivanja koda generisanog yacc-om
ili lex-om nisu potrebna, a duboko sumnjam i da su moguca. Pogledaj C
source generisan yacc-om iz primera koji sam naveo u prethodnoj
poruci. Videces da je ogroman deo koda deklaracije tipa:
yytable[] = {3,6,7,0,0,0,5,6,7,0,0,0,0,4,5,6,7,8,... /* i.t.d. */
unknown.173igor.mil,
>---> prevodilac.c---->prevodilac.exe----:
> program u 'jezik'-u--+---> program.c ----> program.exe
Ovo sto si ti nacrtao je pravljenje translatora iz nekog programskog
jezika u C. Taj prevodilac se moze praviti lex&yacc alatima, ali to im
nije jedina namena. Naprotiv, oni se koriste da olaksaju dizajn bilo
kakvog kompajlera/interpretera/translatora.
Ja sam recimo, iz zezanja, za kratko vreme napravio jedan BASIC
interpreter koji je imao INPUT, PRINT, LET i IF naredbe. Naravno,
nema nikakvu upotrebnu vrednost (mrzelo me da resavam grananje), ali
recimo, slozenost izraza (broj postojecih operatora) ili liste
agrumenata PRINT naredbe nije nikakav problem. Ako nekog interesuje
kako to izgleda, mogu da stavim ovde lex i yacc programe (t.j. lex i
yacc specifikacije).
unknown.174igor.mil,
> Da da u pravu si uvek je u pitanju translacije jezika X u jezik Y s tim
> sto je uobicajeno jezik Y = C.
Daleko bilo! Uobicajeno je da je Y == OBJ, dok je ovo sto si ti naveo
prilicno neuobicajeno.
unknown.175bulaja,
│DDJ-ove imam, nije problem da ti ih pozajmim. Reci samo broj ili bar
│opseg brojeva koji ti trebaju.
│Sto se tice datoteka, na trickle-u se nalaze kompletni listinzi iz
│DDJ-a, pa potrazi malo u onoj datoteci sto je Bulaja poslao. Ako ti
│treba, dacu ti ja racun na BUEF78-ici pa ti to narucuj.
└───
Sad ste me ovog diskusijom naterali da malo ispitam "trziste" ;) za
ono sto planiram da uradim prilicno dugo.
Dakle, koliko vas je zainteresovano da se na Sezamu redovno (tj.
svakog meseca) pojavljuju listinzi iz DDJ-a? Ako ne znate sta se tamo
moze naci, poslacu ovih dana neki od svezijih paketa, a imate npr. i
dflat5.zip u \pc\prg koji je takodje iz jednog od takvih paketa.
Molim sve koji su za ovo, da mi jave na private mail.
Pozdrav,
Bulaja
unknown.176mjova,
> MJOVO hoćeš li ?
moze, moze ;)
unknown.177ppekovic,
>> Ako nekog interesuje
>> kako to izgleda, mogu da stavim ovde lex i yacc programe (t.j. lex i
>> yacc specifikacije).
Interesuje mene i to veoma!
Paya
unknown.178ppekovic,
>> Dakle, koliko vas je zainteresovano da se na Sezamu redovno (tj.
>> svakog meseca) pojavljuju listinzi iz DDJ-a? Ako ne znate sta se tamo
>> moze naci, poslacu ovih dana neki od svezijih paketa, a imate npr. i
Samo napred bulaja, mnoge će zanimati, a ostalima neće smetati
jer ćeš te listinge kačiti kao fajl uz poruke i svi srećni svi
zadovoljni.
Paya
unknown.179igor.mil,
>>> Ako nekog interesuje
>>> kako to izgleda, mogu da stavim ovde lex i yacc programe (t.j. lex i
>>> yacc specifikacije).
>
> Interesuje mene i to veoma!
Evo Payo, specijalno za tebe sam doterao komentare, i napisao
dokumentaciju, radio sam do 2h nocas, nadam se da ces to umeti da
cenis :)). Ne trazim nista vise nego da budes umeren sa kritikama,
mnogo sam sujetan covek :).
--- Izvod iz dokumentacije ----------------------------------------
MicroBASIC
==========
Ovo je interpreter za MicroBASIC napravljen uz pomoc lex&yacc alata.
Prilozeni su izvorni fajlovi za L&Y i izvrsna verzija MB.EXE. Osim
toga prilozen je i MAKEFILE za pravljenje izvrsne verzije MAKE
programom iz Turbo C paketa.
--------------------------------------------------------------------
mbasic.zipunknown.180igor.mil,
> I jos nesto, u izvrsnoj verziji dobijenoj var. 1 i var. 2 postoje
> funkcionalna razlika
Postoji i jos jedna razlika, koja se tice formata numerickih
konstanti. U varijanti 1 (lex-om generisan skaner) po ovome sto stoji
u "first.l", nije dozvoljen oblik sa eksponentom (na primer 4.3e-7), a
u varijanti 2 jeste. Za domaci zadatak vam zadajem da odredite zasto
je tako, i da promenite "flex.l" tako da i u var. 1 to bude podrzano.
unknown.181ppekovic,
>> Evo Payo, specijalno za tebe sam doterao komentare, i napisao
>> dokumentaciju, radio sam do 2h nocas, nadam se da ces to umeti da
>> cenis :)). Ne trazim nista vise nego da budes umeren sa kritikama,
>> mnogo sam sujetan covek :).
Odma cu da DL-ujem a onda moje omiljeno: hassan seckati :))))
Primedbe i komentari slede ...
Paya
P.S. Hvala!!!
unknown.182ivujanic,
U kom časopisu je bilo poređenje C++ kompajlera za DOS?
Mislim na malo ozbiljnije članke...
Ivica
unknown.183predragd,
Zna li neko za na kom kompajleru je pisan protokol ZMODEM (nalazi
se na SEZAM-u u \com\zmodemc.zip fajlu). Ja sam pokusao da ga
kompajliram sa BC++ 2.0 i TSC i nisam uspeo.
Pozdrav, Pedja.
unknown.184mjova,
borland c++, funkcija mktime(), koja proračunava na osnovu datuma
ostale parametre (rb. broj dana u godini i nedelji, sređuje nepravilne
datume npr 39-04-91 itd) ima jedan mali bagić :)
ako se u strukturu upiše datum 29-02 i to za prestupnu godinu, onda
dolazi do blokiranja komp-a. malo sam to sve muvao i mislim da je u
pitanju samo prestupna godina i to 29 feb.
kako sam postao "ovisan" :) o ovoj funkciji, dopisao sam par redova:
"mktime()" je definisana u "time.h"
time_t _mktime(struct tm *tc){
time_t t;
if(tc->tm_mon==1 && tc->tm_mday==29 &&
(tc->tm_year%4==0 && tc->tm_year%100!=0 || tc->tm_year%400==0)) {
tc->tm_mday--;
t= mktime(tc)+86400;
tc->tm_mday++;
tc->tm_yday++;
tc->tm_wday= ++tc->tm_wday%7;
return(t);}
return(mktime(tc));}
SY
unknown.185lazo,
Hajde da mi neko objasni kako se u C-u šalje string na štampač. Recimo
da hoću da napišem Hello na štampaču. Da li za ovo postoji neka
funkcija unutar C-a koja bi trebala da je standardna za sve C
kompajlere ili se način razlikuje od kompajlera do kompajlera? Ovo
pitam, jer nisam ništa slično našao (može bit da sam preskočio, jer
sam po nazivu funk.-naredbe pokušao da prepoznam nešto što bi ličilo
na izlaz na štampač).
Pozdrav, Mickey.
unknown.186ppekovic,
>>Hajde da mi neko objasni kako se u C-u šalje string na štampač. Recimo
>>da hoću da napišem Hello na štampaču. Da li za ovo postoji neka
Mislim da je najednostavnije koristiti fopen i fputs ili fprintf funkcije,
tj. uradis nesto ovako:
FILE *stampac
stampac=fopen("PRN","w")
fputs("Hello!",stampac)
Paya
unknown.187ppekovic,
Imam problema sa FLEX-om i MSC 6.0 compiler-om. Naime, pravio sam
neki programcic uz pomoc Flex-a i sve je bilo lepo dok nije doslo na
red kompajliranje programa generisanog pomocu Flex-a. Pri
kompjaliranju evo sta se desilo:
d:\flex>cl lexyy.c
Microsoft (R) C Optimizing Compiler Version 6.00
Copyright (c) Microsoft Corp 1984-1990. All rights reserved.
lexyy.c
proba.l(239) : fatal error C1001: Internal Compiler Error
(compiler file '@(#)regMD.c:1.100', line 3837)
Contact Microsoft Product Support Services
Naravno odmah sam probao sa sledecim jednostavnim primerom da
proverim u kome je greska:
%{
int bra=0;
%}
%%
[aA] ++bra;
%%
main()
{
yylex();
printf("Slova A ima %d.\n",bra);
}
I opet se pojavila ista greska (uostalom, zar se ne desava redovno
da kako pipnem C kompajler, odma nadjem neki bug :(((( )!
Jel ima neko objasnjenje?
Jel mi se to cini ili flex generise source prilagodjen za
Borlandov C kompajler?
Paya
unknown.188ppekovic,
>>proba.l(239) : fatal error C1001: Internal Compiler Error
>> (compiler file '@(#)regMD.c:1.100', line 3837)
>> Contact Microsoft Product Support Services
E da, zaboravio sam da pomenem da kada zadam opciju /qc pri kompajliranju,
sve radi bez greske.
Paya
unknown.189bulaja,
│Jel mi se to cini ili flex generise source prilagodjen za
│Borlandov C kompajler?
└───
Ne bih rekao da je u tome stvar, cim javlja "Internal Compiler Error"
onda je to bug Microsoft C-a ;) (nije sto mi je drago, nego je smiley
tek onako). Kad sam testirao FLEX pre stvaljanja u dir, takodje sam
imao takvih problema sa MSC dok je sa BC radio odlicno. Na kraju je
valjda igor.mil sve resio, ali ne mogu nikako da se setim sta je bilo,
valjda nista strano (tj. nikakav grozni bug MSC-a ;).
unknown.190ppekovic,
>> Ne bih rekao da je u tome stvar, cim javlja "Internal Compiler Error"
>> onda je to bug Microsoft C-a ;) (nije sto mi je drago, nego je smiley
Ne, ono za prilagodjenost BC-u sam pitao nevezano za onaj
internal error.
Paya
unknown.191braca,
U Borland/Turbo C-u imaš funkciju biosprint, sa njom čak možeš malo
bolje da kontrolišeš štampač, tj. da očitaš status i sl.
unknown.192mjova,
e, ovako, ovo je jedna zanmimljiva PD biblioteka za funkcije spawn..
ima dosta toga što donosi kao poboljšanje,a upotreba je jednostavna.
ko ne može bez ovih fn, nek dl ovo. ima i za bc++ i za msc.
mjova
unknown.193igor.mil,
> Imam problema sa FLEX-om i MSC 6.0 compiler-om. Naime, pravio sam
> neki programcic uz pomoc Flex-a i sve je bilo lepo dok nije doslo na
> red kompajliranje programa generisanog pomocu Flex-a. Pri
Cuo sam i od Bulaje da je imao problema sa MSC-om i Flex-om. Ja sam
problem "resio" tako sto sam sa neke disikete iskopao MSC 5.x i
probao. Sve je radilo kako treba. MSC 6.0 nemam, tako da zaista ne
mogu da pomognem.
Vidim u tvojoj sledecoj poruci da sa nekakvom opcijom (/qc ?) radi.
Sta znaci ta opcija? Ako nije strasno nepovoljno koristiti je, onda
je to valjda resenje?
Sto se tice "prilagodjenosti" Borland-ovom C-u, moguce da je Turbo C
blizi (nekakvom) standardnom C-u od MSC. Istina?
> proba.l(239) : fatal error C1001: Internal Compiler Error
> (compiler file '@(#)regMD.c:1.100', line 3837) <-+
> Contact Microsoft Product Support Services |
|
Sta znaci ovo ? -------------------------------------+
Koliko vidim (iz sekvence "@(#)") to je deo komentara. Ovakve
sekvence koristi neki Unix utility (ne znam tacno koji) za definisanje
standardnih zaglavlja sa imenom, verzijom i tome slicno, nevezano za
programski jezik.
Da li ova poruka prikazuje deo "naseg" fajla, ili je deo izvornog koda
samog kompajlera?
unknown.194djnsnd,
Da li neko moze da mi preporuci nakakav toolkit za Turbo C ili
Turbo C++ nalik na Turbo Vision za Turbo Pascal 6.0. (prozori,
meni, maske za unos i sl.).
Dejan
unknown.195ppekovic,
>>Da li neko moze da mi preporuci nakakav toolkit za Turbo C ili
>>Turbo C++ nalik na Turbo Vision za Turbo Pascal 6.0. (prozori,
>>meni, maske za unos i sl.).
H
Za pocetak, pogledaj:
dflat5 zip 119820 C biblioteka za korisnicki interfejs (DDJ)
u direktorijumu:
IBMPC/PROGRAM
Paya
unknown.196alexa,
> / nisam siguran da ima neko jednostavno rešenje...
>
> motorola?
386 ? (ko je rekao DOS???)
unknown.197alexa,
> Jel ima neko objasnjenje?
> Jel mi se to cini ili flex generise source prilagodjen
> za Borlandov C kompajler?
žini ti se, flex generiše source za UNIX C (bože, naravno).
Problem je (naravno) u Microsoft-ovom kompajleru. A onaj compiler
file je naziv source modula samog kompajlera - onaj 'č(#)' je
marker koji u source-u ostavlja SCCS (source code control system),
inače komplet programa na UNIX-u (vidi, vidi, ma nije valjda da
ni Microsoft ne koristi DOS? :)))
A pošto se modul zove regMD, probaj onako, za početak, da iz generisanog
source-a ukloniš pojavu reči 'register' - može biti da se komajler
zablesavi kad pokuša da rasporedi registre na register promenljive.
Ili, drastičnije rešenje, stavi na početak
#define register
pa da vidimo šta će biti.
Inače, ja sam silne muke imao pri kompilaciji sa MS C-om (istina,
pod XENIX-om) raznih UNIX programa, jer MS C (bar za XENIX) ima
silnih problema pri pretprocesiranju ako se pretera sa gomilom definisanih
makroa; da i ne spominjem neku, ne tako staru, verziju koja je nazive makroa
razlikovala samo na prvih 8 znakova (bljak!).
unknown.198mjova,
> Da li neko moze da mi preporuci nakakav toolkit za Turbo C
> ili Turbo C++ nalik na Turbo Vision za Turbo Pascal 6.0.
> (prozori, meni, maske za unos i sl.).
imaš jedan na sezamu, mislim da je dflat ili tako nešto.
ja imam neke stvari koje se bave prozorima i radom sa njima (sve što
možeš da pomisliš) ali samo za small model. imam i neke dodatne stvari
za turboc, sa divnom help bazom za NG.
sve to ima poliko kb, da me stvarno mrzi da pošaljem...
mjova
unknown.199fric,
> Za pocetak, pogledaj:
>
> dflat5 zip 119820 C biblioteka za korisnicki interfejs (DDJ)
Ali uputstvo (.doc) uz dflat je nekako sakato - bez detaljnijeg opisa
funkcija, koncepcije, načina korišćenja, primera...
fric
unknown.200nkbog,
>> Ali uputstvo (.doc) uz dflat je nekako sakato - bez detaljnijeg opisa
>> funkcija, koncepcije, načina korišćenja, primera...
Pogledaj članke o Windows programiranju u računarima. Knjige o IBM-ovom
SAA standardu bi bile još bolje. Naime i Windows-i i PM i DFLAT koriste
taj standard na nivou sors koda.
NB.
unknown.201bulaja,
│Da li neko moze da mi preporuci nakakav toolkit za Turbo C ili
│Turbo C++ nalik na Turbo Vision za Turbo Pascal 6.0. (prozori,
│meni, maske za unos i sl.).
└───
Postoji i Turbo Vision za Turbo C++ (i BC++).
unknown.202ppekovic,
>>Ili, drastičnije rešenje, stavi na početak
>>#define register
>>pa da vidimo šta će biti.
BINGO! Svaka čast Alexa! Proradilo je bez problema. Ako imaš vremena, voleo
bi da znam suštinu, zašto nije radilo bez #define registar?
Paya
unknown.203dgrbic,
:: BINGO! Svaka čast Alexa! Proradilo je bez problema. Ako imaš
:: vremena, voleo bi da znam suštinu, zašto nije radilo bez #define
:: registar?
Kolko sam ja video kod koji flex napravi, on skoro sve gurne u registar
promenljive.
Takođe, kolko se sećam, ZZ je jednom prilikom pisao o greškama koje MSC
pravi prilikom optimizacije i tu je pomenuo i to da mu se dešava da
"zaboravi" koja mu je promenljiva trenutno u registru :)
Mislim da je moglo da se reši i isključivanjem neke optimizacije, možda bi
ZZ mogao da kaže nešto detaljnije, on se, verovatno, od svih nas na Sezamu
najviše patio sa MSC kompajlerom.
Usput, zna li neko, koliko MSC 5.1 zauzima mesta na disku? Imam mali disk,
a MSC 6.0 je veeeelik (a treba mi C).
unknown.204alexa,
> zašto nije radilo bez #define registar?
Pa, glupi MS C ima neku bubu u raspoređivanju register varijabli.
Ne znam detalje, ovo sam zaključio na osnovu naziva modula u kompajleru;
#define je drastičnije rešenje jer 'uništava' i moguće register deklaracije
u header datotekama.
unknown.205dnikolic,
>> Postoji i Turbo Vision za Turbo C++ (i BC++).
Postoji, ali jos nije stigao do nas. Ili mozda jeste?
dn
unknown.207jpiri,
>> Postoji i Turbo Vision za Turbo C++ (i BC++).
>Postoji, ali jos nije stigao do nas. Ili mozda jeste?
Jeste.
Problem sa njim je samo to sto je zamisljen za programe poput IDE
verzije kompajlera (zapravo, Borlandov IDE je i napravljen uz pomoc
Turbo Vision-a). Totalno je nepogodan za form-oriented aplikacije
(baze podataka i sl.). Moram priznati da je, medjutim, odlicno
zamisljen i izveden potpuno u duhu objektnog programiranja.
Ako si zainteresovan mogu ti mailovati neki demo (mrzi me da saljem
100-ak Kb u konferenciju tek tako).
P.S. Uzgred, postoji i ObjectWindows sto je u stvari Turbo Vision za
Windows. Mana mu je sto source 'bas i nije' kompatibilan sa TV.
unknown.208djnsnd,
Ovo je odgovor na poruke 195, 198, 200, 201 i 205.
Zahvaljujem se svima na sugestijama. Pogledao sam dflat
sa sezama i u pravu ste - nije nesto... I mene interesuje Turbo
Vision za Turbo C++ (ili Borland C++) pa ce valjda doci i do mene.
Dejan (DjnSnd)
unknown.209igor.mil,
Danas sam, sasvim slucajno, otkrio jedan vrlo interesantan feature
MSDOS-a. Radi se o obradi parametara prosledjenih preko komandne
linije.
Na primer, ako napisemo program PROBA koji samo ispisuje argumente
koji su mu prosledjeni na komandnoj liniji, i startujemo ga sa:
proba 1 +2 +4 "aa bb"-4
Dobicemo izlaz:
1
+2
+4
aa bb
-4
Znaci, blanko znaci se ignorisu, osim ako se ne nalaze u okviru
polja uokvirenog navodnicima.
Jos jedna interesantna stvar: 4DOS vrsi kontrolu ispravnosti
parametara komandne linije (!), i to ne pitajuci nas da li je zelimo
ili ne (mozda se to i moze iskljuciti, ali ko ce da gleda ono ogromno
uputstvo?).
To znaci da nece hteti da izvrsi program koji se startuje komandom
koja ima neizbalansirane navodnike. Probajte da izvrsite:
command "take that!
i dobicete poruku:
No closing quote
"Obican" COMMAND.COM ne pravi pitanje od ovoga, i ako jedan navodnik
fali on podrazumava da postoji iza poslednjeg ne-blanko znaka u
komandnoj liniji. Znaci, ako radimo sa standardnim DOS shell-om,
rezultat naredbe:
proba "Ha!" "take that!
ce biti:
Ha!
take that!
Takodje, kod 4DOS-a treba obratiti paznju na upotrebu znaka '%' u
komandnoj liniji. Na primer kod programa CAL (racunjanje aritm.
izraza, autor S.Markovic) operator modulo je kao i kod C-a, znak '%'.
Ako izvrsite:
cal 10%5
dobicete rezultat 10 a ne 0, posto je %5 shvacen kao parameter 5 i
zamenjen njegovom vrednoscu, to jest praznim stringom, pre
prosledjivanja parametara programu CAL.
Ovo se izbegava koriscenjem obrnutih navodnika, koji sprecavaju
supstituciju:
cal 10`%`5 ili cal `10%5`
ili, mozda malo elegantnije, upotrebom "%%" umesto '%' na komandnoj
liniji:
cal 10%%5
unknown.210ppekovic,
>> Takodje, kod 4DOS-a treba obratiti paznju na upotrebu znaka '%' u
>> komandnoj liniji...
A kako iz programa prepoznati dali je komandni interpreter
COMMAND.COM ili 4DOS.COM ??? Naravno, ne uz pomoć comspec promenljive,
već neki način koji će raspoznati u 100% slučajeva.
Paya
unknown.211nandi,
> A kako iz programa prepoznati dali je komandni interpreter
> COMMAND.COM ili 4DOS.COM ??? Naravno, ne uz pomoć comspec promenljive,
> već neki način koji će raspoznati u 100% slučajeva.
uputstvo za 4dos (jeste, ono veliko), strana 334.
nandi
unknown.212mjova,
> A kako iz programa prepoznati dali je komandni interpreter
pa valjda piše u uputstvu? ;)
pa za sada jedna komanda radi i na 4dosu i na command to je ver,
pretpostavljam da ima neki INT ili fn, koja vraća neki znak.
unknown.213nkbog,
>> Danas sam, sasvim slucajno, otkrio jedan vrlo interesantan feature
>> MSDOS-a. Radi se o obradi parametara prosledjenih preko komandne
>> linije.
....
>> Znaci, blanko znaci se ignorisu, osim ako se ne nalaze u okviru
>> polja uokvirenog navodnicima.
Valjda misliš na .BAT ili C (verovatno i drugi jezici)? MSDOS programu
prosleđuje komandnu liniju u PSP-u (ofset 80h, prvi bajt je dužina linije),
a sam program je obrađuje. Startup code će se postarati za to u C-u, a
komandni interpreter za .BAT datoteke. DOS sam ne pravi razliku između
argumenata.
>> Jos jedna interesantna stvar: 4DOS vrsi kontrolu ispravnosti
>> parametara komandne linije (!), i to ne pitajuci nas da li je zelimo
>> ili ne (mozda se to i moze iskljuciti, ali ko ce da gleda ono ogromno
>> uputstvo?).
U 4DOS-u parametre možeš uokviravati i sa (") i sa ('). Kada se uokviruju
sa (') ne vrši se obrada specijalnih znaka. Kada se uokviruju sa (") vrši
se obrada specijalnih znakova (enviroment promenljive, parametri). I u
jednom, i u drugom slučaju 4DOS se ponaša kao da su to argumenti za .BAT
(.BTM) datoteke. Usled toga, 4DOS javlja "No closing quote"
NB.
unknown.214ppekovic,
Jel zna neko naziv i sintaksu funkcija za citanje sdrzaja direktorijuma na
XENIX-u. Tj. nesto nalik na funkcije _dos_findfirst i _dos_findnext pod DOS-om.
Paya
unknown.215alexa,
> Jel zna neko naziv i sintaksu funkcija za citanje sdrzaja direktorijuma
> na XENIX-u.
#include <sys/ndir.h>
OR
#include <dirent.h>
DIR *opendir(filename)
char *filename;
struct direct *readdir(dirp)
DIR *dirp;
long telldir(dirp)
DIR *dirp;
void seekdir(dirp, loc)
DIR *dirp;
long loc;
void rewinddir(dirp)
DIR *dirp;
void closedir(dirp)
DIR *dirp;
Ovo treba da važi i za druge raznorazne UNIXe. Preporučujem dirent.h; pri
linkovanju, valjda, treba koristiti -ldir (štos je u tome što sada na
XENIX-u postoje dva kompleta ovih funkcija, pri čemu je DIR struktura
različita; ovaj preporučeni je kao na UNIX-u).
unknown.216alazic,
Hi,
Da li neko slucajno se malo vise zabavljao sa kompajlerom TurboPascal --> C
. Cini mi se da me je vkostic pitao za njega (tj trazio mi ga je , i ostavio
sam mu ga u pc.soft/pascal , jos davno)... Dakle , da li je neko nesto
ozbiljnije prevodio sa njim ?
unknown.217mjova,
> . Cini mi se da me je vkostic pitao za njega (tj trazio mi
> ga je , i ostavio sam mu ga u pc.soft/pascal , jos
> davno)... Dakle , da li je neko nesto
jel a koja je to poruka ili koje je ime tog programa?
SY
unknown.218sslavko,
Ja sam probao nesto malo, ali me bas nije odusevio pa sam ga batalio.
To je onaj TP2TC zar ne? Najvise mi smeta sto radi sa TP 3.0 (ili 4.0
nisam siguran). Probao sam da prevedem neki sors, a on mi je javio
gomilu stvari koje ne poznaje. Jedino je tacno preveo komentare. Ni ja
ga nisam nesto puno koristio tako da su ovo samo prvi utisci.
Pozdrav
Slavko.
unknown.219dzakic,
Jedan me je prijatelj zamolio da pitam sezamovce:
Da li je moguće postići da neka MEMBER funkcija u klasi u C++ -u
bude tipa interrupt, odnosno kako da ona preuzme neki interapt?
unknown.220djelovic,
> Da li je moguće postići da neka MEMBER funkcija u klasi u C++
> -u bude tipa interrupt, odnosno kako da ona preuzme neki
> interapt?
Slusaj, nisam bas stigao da probam, ali ne vidim zasto ne bi mogla da bude
(mada je interrupt deklaracija zapravo prosirenje jezika i nema mnogo veze sa
C++-om, vec sa konkretnom implementacijom).
Interapt funkcije se razlikuju od "obicnih" samo po ulaznom i izlaznom kodu
(recimo ne stoji RET nego IRET). Dakle:
Tvoj drug neka stavi u deklaraciji klase da je funkcija interrupt, a to
neka ne spominje u implementaciji. O nacinu pisanja interrupt funkcija nemam
sada vremena da se raspisem, ali ako nema bas nikakvu literaturu neka, neka
pogleda u help TC++-a, tamo bi to trebalo da bude lepo opisano.
unknown.221cacxa,
Akcija :
----------------------------
#include <stream.h>
main()
{
cout << "Hello World\n";
}
---------------------------
Reakcija:
Linker Error : Undefined symbol ostream::operator <<(const char far*) in module
MYFIRST.CPP
Subakcija:
????????????
unknown.222djelovic,
Stavi <iostream.h> umesto <stream.h>. I pisi originalnije programe :).
unknown.223cacxa,
> Stavi <iostream.h> umesto <stream.h>. I pisi originalnije
> programe :).
Tenk ju. ;)
Znači TC++ ne podržava u potpunosti 'pravi' C++.Programče oridžinal iz C++ od
Bjarnea S. ;))
unknown.224djelovic,
> Znači TC++ ne podržava u potpunosti 'pravi' C++.Programče oridžinal
> iz C++ od Bjarnea S. ;))
TC++ podrzava AT&T-ovu C++ specifikaciju 2.0. BS-ova
je (naravno) 1.0, pa otuda neslaganje. Inace, najnovija je
2.1, i nju (mislim) podrzava BC++.
unknown.225nkbog,
>> Inace, najnovija je 2.1, i nju (mislim) podrzava BC++.
(Mislim) da je podrzava BC++ 3.0. BC++ 2.0 podrzava 2.0.
NB.
unknown.227dbojan,
Kako MSC 6.0 radi sa overlay-ima ?
Da li MSC 6.0 100% podrzava ANSI C ?
Kako generisati ASM listing C programa u MSC 6.0 ?
unknown.228mjova,
postoji li neka fora da se vidi dužina neke posebne funkcije?
lako imam pointer na nju, ali me zanima da li može nekako da se vidi
koliko mesta zauzima ta fn u memoriji. mogu da od sledećeg fn pointera
oduzmem neki, ali to nije kulturno rešenje.
SY
unknown.229radunovic,
Imam problema sa povezivanjem MSCa i MS fortrana. Hocu da mi c funkcija
poziva fortran funkciju. To sve lepo funkcionise kada kao parametre
prebacujem integer tipove. Medjutim, kad prebacim real tipove i vrsim neka
izracunavanja, npr sin,sqr,.. prvo mi linker javi puno gresaka i kaze da
stavim opciju /NOE(vec definisani simboli ili sl.), a kad to stavim prodje
bez problema pa se posle zaglavi(program). Ako je neko imao iskustva sa ovim
stvarima bio bih mu zahvalan na pomoci.
Boki
unknown.230nkbog,
Naišao sam na sledeću "stvar" u BC++ (za koju nisam našao dokumentovana, a
ne deluje kao "feature" ;)):
Ako izvršavate program korak po korak, statički podaci u klasi dobijaju
pogrešne vrednosti. Watch ih prikazuje onakvim kakve bi trebale biti, ali
se tako ne ponašaju u samom programu.
Npr.
class Klasa {
static Klasa * p;
...
public:
Klasa();
...
};
Klasa * Klasa::p = NULL;
Klasa::Klasa()
{
if( p == NULL )
p = ...; //***
...
}
Ako se program izvršava red po red, red sa zvezdicama se nikad ne izvrši.
Turbo Debbuger ovo izvrši kako treba, a i sam program se dobro ponaša.
Dakle, ako imate statičke članove klase, debagujte klasu u TD, ne u BC++
NB.
unknown.231dgrbic,
:: prebacujem integer tipove. Medjutim, kad prebacim real tipove i
:: vrsim neka izracunavanja, npr sin,sqr,.. prvo mi linker javi puno
:: gresaka i kaze da
Proveri da li oba kompajlera rade sa istim math libovima, ako jedan koristi
alt math a drugi emulaciju 8087, onda nema sheme da proradi, zbog
različitog formata float podataka.
Onda treba da ponovo instaliraš jedan od dva kompajlera.
unknown.232bojanp,
> Proveri da li oba kompajlera rade sa istim math libovima, ako jedan
> koristi alt math a drugi emulaciju 8087, onda nema sheme da proradi, zbog
> različitog formata float podataka.
> Onda treba da ponovo instaliraš jedan od dva kompajlera.
Ni slučajno nije potrebno ponovo instalirati ceo compiler. Dovoljno je
kreirati odgovarajuću biblioteku.
unknown.233dbojan,
Evo jedne MSC 6.0 biblioteke za MS MOUSE (iz knjige Microsoft Quick C
Programmer's Toolbox, Microsoft Press.Valjda je jos ima u YU knjizi).
Evo i jednog pitanja: Kako MSC pravi programe vece od 640KB tj. kako radi sa
overlay-ima.
MMMMH
msmouse.arjunknown.234radunovic,
A cemu sluzi opcija u instalaciji MS Fortrana -
kompatibilnost sa C-om. Meni je radilo i bez toga(sa int
tipovima). Inace, mislim da je u onome greska. Probacu. Hvala na
pomoci.
Boki
unknown.235bojt,
>> Imam problema sa povezivanjem MSCa i MS fortrana. Hocu da mi
>> c funkcija poziva fortran funkciju. To sve lepo funkcionise
>> kada kao parametre prebacujem integer tipove. Medjutim, kad
>> prebacim real tipove i vrsim neka izracunavanja, npr
>> sin,sqr,.. prvo mi linker javi puno gresaka i kaze da stavim
>> opciju /NOE(vec definisani simboli ili sl.), a kad to stavim
>> prodje bez problema pa se posle zaglavi(program).
Treba u C source-u da deklarišeš funkciju koju pozivaš kao
fortransku (npr int _fortran forfun(...); ). Bilo koji tip
bezdimenzionalnih podataka prebacuješ sa &, jer fortran prima
samo adrese tih podataka u memoriji.
>> A cemu sluzi opcija u instalaciji MS Fortrana -
>> kompatibilnost sa C-om. Meni je radilo i bez toga(sa
>> int tipovima).
Ne znam šta se tačno dešava kada se pri instalaciji fortrana
stavi kompatibilnost sa MS C-om, ali ja bi je stavio ;)). Mislim
da se u tom slučaju uključuju u bibilioteku neke rutine koje su
bitne za pozivanje C-a iz Fortrana. Inače, 80% biblioteka za MS
kompjalere je skoro potpuno identično.
Inače, jako je bitno da oba modula (i C i Fortran) kompajliraš
sa istim opcijama, a naročito onim koje se odnose na koprocesor.
C-u je default da koprocesora nema, a Fortranu da ima. Dakle,
ako imaš koprocesor kompjaliraj C modul sa FPi87, a ako nemaš
kompajliraj fortran modul sa FPi. Pored toga, biblioteke za C i
Fortran moraaju da budu istovetne po pitanju koprocesora (7, E
ili A). Pri linkovanju moraš da staviš opcije /NOE/NOD (da ti ne
javlja greške kad naidje na višestruko definisane simbole i da
*ne* koristi default biblioteke) i onda *obavezno* u listi
biblioteka navedi prvo biblioteku za C pa tek onda biblioteku za
fortran. Na primer, imaš koprocesor i kompajlirao si i C i
Fortran sa opcijama -AL ili -AH (large ili huge memorijski
model). Tada bi kompajliranje i linkovanje izgledalo:
FL -c -AH testf.for
CL -c -FPi87 -AH testc.c
link/noe/nod testf+testc,test,,llibc7+llibfor7;
Ako nemaš koproc. onda:
FL -c -FPi -AH testf.for
CL -c -AH testc.c
link/noe/nod testf+testc,test,,llibce+llibfore;
Ako i to ne ide probaj da pri likovanju staviš opciju /SEG:1024
(meni ona obično pomogne ;) ).
Ponekad linker i pored opcije /NOE javi grešku višestrukog
pojavljivanja simbola (obično neka tri), ali na to nemoj da se
obazireš.
unknown.236prvul,
>> A cemu sluzi opcija u instalaciji MS Fortrana -
>> kompatibilnost sa C-om. Meni je radilo i bez toga(sa int
Da nije za calling convention (tj. način prenošenja parametara u
potprograme) ?
Prvul.
..co j orka
..co rep 9.1005
>>>>>> naravoučenije: u svakom PrC-ovcu čuči jedan Amigista. ;))>> Više ne
čuči, obrisao se Amigom, od kada se na PC-u pojavljuju
>>igre, za kojima Amigisti mogu samo da plaču....
hmm.. ja sam se nešto igrao na sva tri računara (PC, amiga, atari) i
za igre bih još uvek odabrao amigu... (oh, da, nemoj da mi pricaš o
tome kako pc MOčE da ima neku ultra-moćnu VGA kartu i Sound Blaster,
jer sam baš takav i koristio...;)
Prvul.
P.S. Sve, sve, ali zar igre na amigi da napada... ;)
unknown.237sslavko,
>> Da nije za calling convention (tj. nacin prenosenja
>> parametara u potprograme) ?
>>
>> Prvul.
>> ..co j orka
>> ..co rep 9.1005
>>>>>>>> naravoucenije: u svakom PrC-ovcu cuci jedan
>> Amigista. ;))>> Vise ne cuci, obrisao se Amigom, od
>>>> kada se na PC-u pojavljuju igre, za kojima Amigisti
>>>> mogu samo da placu....
:))))))))))))))
Kako si to uspeo??? Zar je SOR "zaboravio" da stavi jedan ctrl-Z?
unknown.238dnikolic,
Kako da ispisujem tekuci datum i vreme? Ali tako, da ako neko koristi pro-
gram nocu, u ponoc promeni datum!
dn
unknown.239nandi,
> Kako da ispisujem tekuci datum i vreme? Ali tako, da ako neko koristi pro-
> gram nocu, u ponoc promeni datum!
#include <stdio.h>
#include <time.h>
main()
{
time_t sad;
char vreme[27];
time(&sad); /* upisuje tekuće vreme u struct sad */
sprintf(vreme, "%s", ctime(&sad));
printf("%s", vreme);
}
/* string vreme je oblika (na primer): Thu Jan 21 15:02:04 1992\n\0 */
unknown.240ivans,
* Kako si to uspeo??? Zar je SOR "zaboravio" da stavi jedan
* ctrl-Z?
Prvul, koliko mi je poznato (a poznato mi je prilicno dobro), ne koristi SOR.
Pozdrav,
Ivans.
unknown.241prvul,
>>>> ..co j orka
>>>> ..co rep 9.1005
>>
>>:))))))))))))))
>>Kako si to uspeo??? Zar je SOR "zaboravio" da stavi jedan ctrl-Z?
Nije, nego sam ja uzeo da malko izmenim taj exec, pa sam greskom
obrisao red sa ctrl-z... Tek kada je exec prosao, videh sta sam uradio, pa
sam ipak resio da poruku ostavim... računao sam da će ovde svima biti jasno
dokle treba da čitaju...
Prvul.
P.S. Evo, kajem se... neću više... dobro, možda... ;)
unknown.242cacxa,
Jedno pitanje u vezi s FLEX-om - kako ovo da se pokrene? Dobijem lexyy.c
i probam da ga kompajliram iz TC-a a ono razni unreachable code in function
main, linker error, s0.asm, ...
Dakle, jel može neko da opiše celokupnu proceduru oko recimo ovog :
[a-z0-9] => printf("Slovo ili broj.\n")
unknown.243alexa,
> Dobijem lexyy.c
> i probam da ga kompajliram iz TC-a a ono razni unreachable
> code in function main, linker error, s0.asm,
Unreachable code smatraj normalnom pojavom (u pitanju je generisani
C program koji nije preterano optimizovan). Za ostalo - ne znam,
ima ljudi koji su radili pod DOS-om, neka oni kažu :)
Postoji i biblioteka koju treba da upotrebiš pri linkovanju (na UNIX-u
se zove libfl.a).
U njoj se nalazi samo (trivijalni) modul libmain. Prema tome, možeš
jednostavno da linkuješ lexyy.obj i libmain.obj.
U sledećoj poruci (bez YUSCII-ja) ide procedura na UNIX-u.
unknown.244alexa,
... dakle, da nastavim.
Izvorni program (za flex) trebada izgleda ovako:
%%
[a-z0-9] printf("Slovo ili broj\n");
Komanduje{
flex datoteka.l
i dobije{ lexyy.obj.
Linkuje{ lexyy.obj i libmain.obj i treba da dobije{ svoj program
koji cita stdin i na stdout izbacuje svoja zapazanja :)
Izvinjavam se sto sam po navici koristio YUSCII i u ovoj poruci -
nadam se da cete me razumeti.
P.S. Ovo nije bas procedura na UNIX-u - tamo se umesto sufiksa .obj
koristi .o, a umesto naziva lexyy.c koristi se lex.yy.c. Inace je
sve prakticno isto.
Izgleda da nam mnogo treba neka alatka koja ume da cita MAN
datoteke (tj. da ih raspakuje).
unknown.245djelovic,
Procitaj igor.mil-ov tekst u Decembarskim racunarima. Inace, u primeru sto
ti ga alexa dade, tebi uz onu *.l datoteku treba datoteka koja sadrzi funkciju
main () koja poziva lexxy ().
Ako nekoga zanima uputstvo za YACC (Bison), ja sam dekompajlirao onaj TEX
fajl i napravio datoteku koja moze lepo da se cita editorom (bez TeX-ovih
čkvacica). Kome treba neka vika.
unknown.246igor.mil,
> Dakle, jel moze neko da opise celokupnu proceduru oko recimo ovog :
>
> [a-z0-9] => printf("Slovo ili broj.\n")
Napravi ovakav fajl:
--- LEX.L ---
%%
[a-z0-9] printf("Slovo ili broj.\n");
%%
main()
{
yylex(); /* poziv skanera koji se zove 'yylex', ako se drugacije
ne naredi */
}
-------------
onda uradi:
flex lex.l
tcc lexyy.c (ne zaboravimo na potrebne definicije za
staze do standardnih headera i biblioteka
koje stavljamo u TURBOC.CFG!!!)
a moze i:
tc lexyy.c
pa se onda sve radi iz IDE.
Objasnjenje: u delu iza drugog %% u lex programu, nalazi se tekst koji
se DOSLOVNO KOPIRA U GENERISANI C KOD. Znaci, izostavis li definiciju
funkcije 'main', dobices "linker error" prilikom pokusaja da linkujes
"lexyy.c", posto je takav "lexyy.c" samo C kod POTPROGRAMA (funkcije)
'yylex'.
Ako hoces da ti 'main' funkcija bude posebnom fajlu, onda napravi
sledece:
--- LEX.L ---
%%
[a-z0-9] printf("Slovo ili broj.\n");
-------------
--- MAIN.C --
main()
{
yylex();
}
-------------
Onda se radi:
flex lex.l
tcc main.c lexyy.c
a za integrisanu okolinu mora da se napravi .PRJ fajl koji ce
sadrzati:
main
lexyy
Inace, ime izlaznog fajla koji generise flex ne mora bude bas lexyy.c:
flex -t lex.l > lex.c
I zvace se "lex.c". Switch '-t' komandije flexu da svoj rezultat
salje na standardni izlaz.
unknown.247igor.mil,
> Komanduješ
> flex datoteka.l
> i dobiješ lexyy.obj.
> Linkuješ lexyy.obj i libmain.obj i treba da dobiješ svoj program
Ja nisam "unixman", ali mi izgleda dosta čudno da se kao rezultat rada
lex kompajlera dobija objektni modul. Zar ne bi trebalo da se dobije
C source?
unknown.248igor.mil,
> > Dobijem lexyy.c
> > i probam da ga kompajliram iz TC-a a ono razni unreachable
> > code in function main, linker error, s0.asm,
>
> Unreachable code smatraj normalnom pojavom (u pitanju je generisani
> C program koji nije preterano optimizovan). Za ostalo - ne znam,
Da ne bude zabune, nije reč o tome da program nije optimizovan da radi
što je moguće breže ili sa manjim utroškom memorije, nego da u prosto
kodu ima nekog teksta koji nije neophodan. Ovo ovo je posledica toga
što se kod generiše tako što se u kostur skanera (fajl "flex.ske")
ubaci "meso" koje predstavlja akcije koje definišemo lex programom.
Na primer, u svakoj od grana "switch" strukture se po difoltu nalazi
"break". Ako se iz te grane, recimo, izlazi sa "return", onda je
"break" višak, i dovodi do upozorenja "unreachable code".
Takođe, ovu poruku izaziva i dosta intenzivno korišćenje "goto"
naredbe u generisanom kodu, koje "zbunjuje" kompajler. A "goto" se
koristi baš zato da bi se ubrzalo izvršavanje (na primer, za
izbegavanje rekurzije).
unknown.249ljupco,
Pokusao sam
1: int i,j;
2: void main(void)
3: {
4: for (i=10, while(--i); i<100; i++)
5: ;
6: for (i=0, while(++i<10); i<100; i++)
7: ;
8: for (i=0, while(i<10) i++; i<100; i++)
9: ;
10: for (i=0; i<100; j=i+10, while (i<j) i++)
11: ;
12: }
i dobio
Borland C++ Version 2.0 Copyright (c) 1991 Borland International
pr.cpp:
Error pr.cpp 6: Variable name expected in function main()
Error pr.cpp 8: Expression syntax in function main()
Error pr.cpp 10: Expression syntax in function main()
*** 3 errors in Compile ***
Prva petlja (linija 4) prolazi, ali ne radi kako treba. Meni treba
recimo nesto kao
for(G=-1, while (used[++G]); G<=9; while (used[G] && G<=9) G++)
Bitno mi je to sto se ono "while (used[G] && G<=9) G++" izvrsava kad forsiram
sa continue.
Help!
unknown.250duduk,
> Error pr.cpp 6: Variable name expected in function main()
Neverovatno, kako si samo ovo dobio?!?!?
Treba da se pojavi, kao prvo i glavno, expression syntax ...., a za
njom i jos jedna greska (nije vazno koja) za svaku liniju.
expression syntax ... se javlja iz istog razloga kao i kod, na primer
i = while(--j)j++;
Dakle, ne moze while u izraz( iliti expression ).
> for(G=-1, while (used[++G]); G<=9; while (used[G] && G<=9) G++)
Ako sam u pravu, ista pojava i ovde.
unknown.251alexa,
> Ja nisam "unixman", ali mi izgleda dosta čudno da se kao rezultat
> rada lex kompajlera dobija objektni modul.
Glb, moja greška (posledica vremena kad sam kucao poruku).
Naravno, dobije se C modul, a onda se jednim trivijalnim potezom
dobija i objektni modul :)
Inače, vidim da svi ubacujete main() u flex modul; u originalu
nije praksa da se tako radi - po analogiji sa lex-om, linkuje
se sa bibliotekom libfl.a, koja sadrži samo libmain.o .
A modul libmain sadrži upravo onakav trivijalni main kakav
i vi stavljate u flex module.
unknown.252ljupco,
Probao sam ovo
#include <stdio.h>
int i;
void init(void)
{
i=3;
while(--i);
}
void main(void)
{
for (i=3, while(--i); i<5; i++)
printf("%d\n",i);
puts("******");
for (init(); i<5; i++)
printf("%d\n",i);
}
i dobijam
2
3
4
******
0
1
2
3
4
Na zalost, NE MOZE ovo
void main(void)
{
void init(void)
{
nesto...
}
int cond(void)
{
return(nesto...)
}
void loop(void)
{
nesto...
}
for(init(); cond(); loop())
{
telo petlje...
}
}
Takodje, ako init(), cond() i loop() definisem kao inline, dobijem
Warning xx.xx xx: Functions containing while are not expanded inline
unknown.253mjova,
> for (i=3, while(--i); i<5; i++)
> printf("%d\n",i);
nemoj pogrešno da me razumeš, ali meni nije jasno čemu ovo?
kako mi se čini, u C-u se for komande ovako definiše:
for ([izraz_1]; [izraz_2]; [izraz_3]) {
funkcija()
}
*PRE* prvog prolaza, izračunava se 'izraz_1'.
'funkcija()' se izvršava dokle god je 'izraz_2' jednak nuli.
'izraz_3' se izračunava posle svakog prolaza.
dakle, po nekoj mojoj logici, mislim da će pre ulaska u for petlju,
ako ga kompajler sažvaće, ono 'i=3, while(--i)' odvrteti i ništa osim
gubljenja vremena nema. takođe, krenuće od 'i=0'. nisam probao, pričam
napamet. reci koji ti je cilj?
> Na zalost, NE MOZE ovo
> for(init(); cond(); loop())
naravno da ne može, pogledaj help:
*> for ( [<expr1>] ; [<expr2>] ; [<expr3>] )
*> <statement>
dakle, samo izrazi, komande nikako.
SY
unknown.254ljupco,
> dakle, po nekoj mojoj logici, mislim da ce pre ulaska u for petlju,
> ako ga kompajler sazvace, ono 'i=3, while(--i)' odvrteti i nista osim
> gubljenja vremena nema. takode, krenuce od 'i=0'. nisam probao, pricam
> napamet. reci koji ti je cilj?
Trebalo bi da prijavi gresku (duduk je ranije rekao). Medjutim, bcc ga
kompajlira bez greske, a zatim radi kao da je 'i=3, --i', dok tc prijavljuje
gresku (probao danas).
> > Na zalost, NE MOZE ovo
> > for(init(); cond(); loop())
>
> naravno da ne moze, pogledaj help:
>
> *> for ( [<expr1>] ; [<expr2>] ; [<expr3>] )
> *> <statement>
>
> dakle, samo izrazi, komande nikako.
Ma poziv f-je nije komanda, i radi recimo
#include <stdio.h>
int i;
void init(void) {
i=3;
while(--i);
}
int cond(void) {
return(i<5);
}
void loop(void) {
i++;
}
void main(void)
{
for (init(); cond(); loop())
printf("%d\n",i);
}
(stampa 0 1 2 3 4) ali ovaj primer nema prakticne primene jer 'i' mora biti
definisano izvan main da bi ga videle init, cond i loop f-je. Moje *ne moze* se
odnosilo na to da ne mogu neposredno iznad for petlje da definisem init, cond i
loop.
> nemoj pogresno da me razumes, ali meni nije jasno cemu ovo?
Zatrebalo mi je nesto kao
for(G=-1, while (used[++G]); G<=9; while (used[G] && G<=9) G++)
t.j. na pocetku je petlje 'G' broj izmedju 0 i 9 ali takav da je u tabeli used
used[G]==0, a zatim u svakom je koraku G sledeci za koji je used[G]==0 (i jos
<= 9). Petju for shvatam kao
for(inicijalizacija; uslov; sledeci_korak)
i otuda sve ovo.
unknown.255mjova,
>> dakle, samo izrazi, komande nikako.
> Ma poziv f-je nije komanda, i radi recimo
naravno, verovatno sam se prebacio kod onog while() u for petlji,
pa sam generalizovao init() kao while(), ko zna... ;)
SY
unknown.256sslavko,
Ima li ko iskustva sa Dflat-om? Interesuje me sve u vezi ove
biblioteke od instalacije do koriscenja.
Pozdrav
Slavko.
unknown.257dnikolic,
>> Ima li ko iskustva sa Dflat-om? Interesuje me sve u vezi ove
>> biblioteke od instalacije do koriscenja.
Ma ono je toliko komplikovano, da mi je bilo lakse da napisem stvari za koris-
nicki interfejs sam, nego da lupam glavu kako stvar radi.
dn
unknown.258gristic,
Što se dflat-a tiče važi ona narodna: spolja gladac, unutra jadac.
Takav kakav jeste je prilično neupotrebljiv jer "pojede" oko 160K
memorije iz čistog mira (dflat 5 cca 140K). Ali, ako želiš da
skidaš cake i još po nešto naučiš onda je odličan.
unknown.259sslavko,
>> Ma ono je toliko komplikovano, da mi je bilo lakse da
>> napisem stvari za koris- nicki interfejs sam, nego da
>> lupam glavu kako stvar radi.
To sam i ja mislio ali reko' sto da otkrivam toplu vodu. Izgleda da cu
ipak morati.
Uzgred, probao sam one A.Radovanoviceve "Prozore na C-u" pa mi i tu
nisu jasne neke stvari. Prilikom svakog pozivanja onih funkcija na
ekranu mi se ispise nesto poput "Null pointer assignment." Zna li neko
nesto o ovome. Naglasavam da nisam imao vremena da dublje analiziram
tu njegovu biblioteku pa me interesuju iskustva u vezi istog.
Pozdrav
Slavko.
unknown.260dnikolic,
>> Uzgred, probao sam one A.Radovanoviceve "Prozore na C-u" pa mi i tu
>> nisu jasne neke stvari. Prilikom svakog pozivanja onih funkcija na
>> ekranu mi se ispise nesto poput "Null pointer assignment." Zna li neko
>> nesto o ovome. Naglasavam da nisam imao vremena da dublje analiziram
>> tu njegovu biblioteku pa me interesuju iskustva u vezi istog.
Da nisi nesto pogresio sa pointerom na bafer za cuvanje sadrzaja ekrana?
Inace, taj clanak je veoma dobar, moze dosta da se nauci, i ja sam ga koris-
tio kao osnovu za rad u mojim programima. Ali voleo bih da postojece funkcije
jos vise usavrsim. Nekad sam imao ST i svideo mi se rad pomocu RCS-a. Cilj je
da kompletan rad sa menijima ( horizontalnim i vertikanim ) ide preko jedne
jedine funkcije, koja vraca broj menija. Dalje sve ide preko switch/case. Ako
zelis mogu ti poslati moje rutinice, ( koje rade :) pa pogledaj.
dn
dn
unknown.261sslavko,
>> .................. Ako zelis mogu ti poslati moje
>> rutinice, ( koje rade :) pa pogledaj.
Bio bih ti veoma zahvalan ako to uradis.
Ne bi bilo lose da se pokrene rasprava o podeli programa na module.
Svako ima neki svoj kriterijum po kome odvaja funkcije u posebne
module. U najgorem slucaju se dobije gomila manjih modula i par
veeeliikiiiih. Da li neko uopste ima obicaj da prvo smisli program na
papiru u obliku nekog blok-dijagrama pa tek onda da ga kodira ili svi
radimo onako, iz glave.
Pozdrav
Slavko.
unknown.262dusanp,
Da li se neko bavio "pametnim programima" u C-u.
Treba mi program koji se ponaša što inteligentije. Nešto
kao Eliza /ako se neko još seća tog programa/.
To me zanima zato što sam se neko vreme bavio
takvim programom i nisam postigao Bog zna šta.
Stvar je u tome što je rešenje ovog problema više
vezano sa nekim drugim stvarima nego sa C-om.
Dušan Popović -> dusanp
P.S. Lep efekat se dobija ako se, recimo neki takav
program poveže sa SoundBlasterom.
unknown.263dr.obradovic,
Cini mi se da sam nasao jedan vrlo cudan bag Turbo C++ compilera...
Kompajlirao sam neki program u kome ima i asm naredbi i naravno dobio sam
.ASM verziju celog programa. Desilo se to da mi Turbo Asembler prijavi
sledecu gresku:
Illegal use of segment register "
les ds,dword ...
Verovatno je u pravu - i MASM prijavljuje istu gresku - ali da li je moguce
da je Turbo C prilikom pravljenja .ASM verzije ubacio instrukciju koja ne
postoji.
Da napomenem da ovu instrukciju nisam ja stavio pomocu "asm" vec ju je
generisao sam Turbo C.
Kako ovo da resim ??? Verovatno cu zameniti ovu instrukciju u samom .ASM
programu sa vise instrukcija koje ce raditi isto, ali mi se to ipak ne svidja.
Jos nesto - kod svih instrukcija "les" osim kod ove kompajler je koristio
registar bx.
Ako neko ima slicnih iskustava...
Dragoljub B. Obradovic
unknown.264mjova,
> Kako ovo da resim ??? Verovatno cu zameniti ovu
> instrukciju u samom .ASM programu sa vise instrukcija koje
> ce raditi isto, ali mi se to ipak ne svidja.
e, slab sam sa asemblerom, ali da možda nije neka od optimizacija? ili
nešto tako?
imao sam nekoliko puta potrebe za asm naredbama, ali nisam imao
nikakvih problema
SY
unknown.265dbojan,
Kako snimiti screen u datoteku (i vratiti ga nazad) sa MSC6 ???
unknown.266bearboy,
-+={ P.S. Lep efekat se dobija ako se, recimo neki takav
-+={ program poveze sa SoundBlasterom.
SBTalker with Dr. Saibatso, npr ? To se dobija uz Sound Blaster.
unknown.267djelovic,
> Verovatno je u pravu - i MASM prijavljuje istu gresku - ali da
> da je Turbo C prilikom pravljenja .ASM verzije ubacio instrukci
> postoji.
Probaj da dobijeni .ASM listing prevedeš sa TASM-om 2.0 ili
većim. Moguće je da TC++ daje kod koji je TASM kompatibilan (TASM ima
poseban režim pisanja), pa zato MASM neće da prevede. A sam TC++ neće da
ga prevede jer je u njega ugrađen TASM 1.0 koji je pun bubica i često
pravi probleme.
unknown.268djelovic,
> Kako snimiti screen u datoteku (i vratiti ga nazad) sa MSC6 ???
Imaš dosta na tu temu u PC.SOFT. Potraži tamo.
unknown.269nkbog,
> sledecu gresku:
> Illegal use of segment register "
> les ds,dword ...
Ta instrukcija jednostavno ne postoji. Inače, daj malo više podataka:
kako izgleda program, koja verzija kompajlera, kako se zovu promenljive
itd.
NB.
unknown.270pjankovic,
Da li bi neko zelio da ovdje iznese svoja iskustva u radu sa
BORLAND C++ & APPLICATIONS FRAMEWORK? Koliko sam razumio iz oglasa, tu
su ukljuceni i objekti za programiranje za WINDOWS-e.
Kakva su uopste iskustva u pravljenju WINDOWS programa (ne
moraju biti u C-u)?
Pratim po malo americke casopise i vidim da se skoro svi veliki
komercijalni programi prepravljaju za WINDOWS-e, pa mi se cini da cemo i
mi uskoro morati da se uhvatimo u kostac sa WINDOWS programiranjem.
Pedja
unknown.271bojanp,
> Cini mi se da sam nasao jedan vrlo cudan bag Turbo C++ compilera...
> Kompajlirao sam neki program u kome ima i asm naredbi i naravno dobio sam
> .ASM verziju celog programa. Desilo se to da mi Turbo Asembler prijavi
> sledecu gresku:
> Illegal use of segment register "
> les ds,dword ...
> Verovatno je u pravu - i MASM prijavljuje istu gresku - ali da li je
> moguce da je Turbo C prilikom pravljenja .ASM verzije ubacio instrukciju
> koja ne postoji.
Instrukcija les ds,dword ... je sigurno nepostojeća! Moguće je da
Turbo C++ daje loš ispis jer me dotična instrukcija asocira na
sledeću: les dx,dword ... koja je potpuno legalna. Ako program koji
si napisao radi onda je verovatno problem u generisanju asemblerskog
listinga.
Pozdrav, Bojan
unknown.273djelovic,
Noviji kompajleri (pri tome mislim primarno na MS i Borland) bi
trebali da izbacuju neiskorišćene funkcije i promenjljive iz programa.
Da li to radi kompajler na delu programa koji vi napišete, ili to radi
linker pa on izbacuje sve što je nepotrebno i iz biblioteka?
Ovo me zanima prvenstveno za Borland C++, ali je i odgovor za
MSC dobrodošao (valjda je princip isti). ZZ, eto ti pasusa u Školici C-a.
unknown.274nesavic,
Pitanje: da li sa MSC 6 mogu da se pisu programi za WIN?
unknown.275ivans,
Interesuje me kolike su razlike izmedu Dflat3 i Dflat9. Sta mislite?
Pozdrav,
Ivans.
unknown.276djelovic,
Ne mozes bez Win SDK-a. Ako već nameravaš da pišeš Win programe, bolje
pređi na BC++. Lakše je.
unknown.277dejanr,
>> Pitanje: da li sa MSC 6 mogu da se pisu programi za WIN?
Da, mnogi ih pišu baš tako. Ali sam MSC nije dovoljan, potreban
ti je Microsoft Windows SDK (Software Development Kit).
unknown.278alexa,
> Noviji kompajleri (pri tome mislim primarno na MS i Borland)
> bi trebali da izbacuju neiskorišćene funkcije i promenjljive iz
> programa. Da li to radi kompajler na delu programa koji vi napišete,
> ili to radi linker pa on izbacuje sve što je nepotrebno i iz biblioteka?
Razmisli kako bi to moglo da radi: funkcije i promenljive koje se
ne koriste u modulu u kojem su definisane kompajler sme da "ukloni"
samo u slučaju da su nevidljive iz drugih modula, npr. automatske
promenljive ili eksplicitno lokalne statičke promenljive (one koje
imaju reč "static" u deklaraciji) ili "static" funkcije.
Ostalo bi imao pravo da ukloni samo linker, jer tek on zna da se na
te funkcije/promenljive ne poziva neki drugi modul. On to (u
MS-DOS-u) ne radi, jer su u standardnom objektnom modulu
(Intel/Microsoft OMF) pojmovi "promenljiva" i "funkcija"
izgubljeni. U njemu postoje podaci i simboli - podaci ne
pripadaju ni jednom simbolu, pa se ne mogu ukloniti.
Što se tiče izbacivanja nepotrebnih stvari iz biblioteka, to se,
na izvestan način, radi: u stvari, ubacuju se samo oni moduli za
koje linker zaključi da su potrebni (ali to nema veze sa novijim
kompajlerima).
Što se tiče Borlanda, ništa me od njih ne može iznenaditi :)
unknown.279dusanp,
==> SBTalker with Dr. Saibatso, npr ? To se dobija uz Sound
==> Blaster.
Naravno, ali šta mi vredi kada meni treba source u C-u.
Možda bi trebalo pitati Dejana - ako me pamćenje služi on
je nekad (davno,davno...) pokrenuo konkurs za najpametniji
program.
unknown.280nesavic,
Imam malih problema sa povezivanjem Pascala i funkcija pisanih u Cu...
Evo problema, ja lepo napisem sve funkcije koje mi trebaju u Cu napravim OBJ
fajl i sve lepo radi, prebacim obj fajl u dir za Pascalove objekte, i startujem
program iz koga pozivam š$L PITER.OBJć medjutim pri kompajliranju on mi rece da
je bilo koja od tih funkcija neprepoznatljiva tj. nije definisana u OBJ fajlu
kao PUBLIC...
E sad ja uzmem TCC i izlistam ASM verziju... i sta vidim one definisane na
kraju kao PUBLIC sve funkcije... U cemu je sad fora???
zahvalan, NeSa!
unknown.281dzakic,
>> Imam malih problema sa povezivanjem Pascala i funkcija pisanih u
>> Cu...
Ne znam za C i paskal ali znam za asembler i paskal. Paskal
zahteva (osim da svi objetki budu public) i deklaraciju
"code segment public". Možda ti to pomogne...
unknown.282dgrbic,
:: program iz koga pozivam š$L PITER.OBJć medjutim pri kompajliranju
:: on mi rece da je bilo koja od tih funkcija neprepoznatljiva tj.
:: nije definisana u OBJ fajlu kao PUBLIC...
Nisam se time bavio, pa samo nagađam:
Probaj da razdvojiš C funkcije, tako da svaka ima svoj .obj, znam da neki
kompajleri imaju tendenciju da podrazumevaju da je ime funkcije u .obj
fajlu isto kao i ime .obj fajla, pa ako to ne radi, da mislimo dalje.
unknown.283duduk,
> Imam malih problema sa povezivanjem Pascala i funkcija pisanih u Cu...
Probleme ti pravi vise stvari, recimo underscore ispred imena, imena
segmenata, konvencije za pozivanje.... U svakom slucaju, imas negde, ili
u C-u ili u Pas-u, CTOPAS.CFG. Kad prevodis C funkciju, prevedi je s ovom
konfiguracijom i sve ce biti O.K. Ako ga nemas, ili si ga zagubio, evo ga:
-wrvl
-p <- Pascal calling konvencija
-k- <- iskljuci standard stack frame
-r- <- iskljuci koriscenje registarskih varijabli
-u- <- da iskljuci 'Underscores on externs'
-zCCODE <- odavde pa do kraja imena koja su razlicita za C i Pas
-zP
-zA
-zRCONST
-zS
-zT
-zDDATA
-zG
-zB
P.S. Jedino na sta jos treba da pazis je prenos stringova.
unknown.284ljupco,
Imam c program i malo inline asemblera u njemu. Kada kompjaliram sa bcc
(bcc -B -mt -lt program), linker javlja fatal error "Cannot generate COM file:
segment relocatable items present". U popisu gresaka za linker za ovo kaze
"program contains segment relative fixups".
Kako da pronadjem u cemu je problem? U map fajlu koji generise tlink
(sa /s) u popisu simbola na kraju jedino ispred __setargv__ stoji Abs. U
uputstvu je dato objasnjenje kad ispred stoji Idle, ali Abs ne pominje - ima li
to uopste veze sa mojim problemom?
Treba mi bas .com fajl, help!
unknown.285nesavic,
Hvala, probacu pa cu da javim...
unknown.286duduk,
> Imam c program i malo inline asemblera u njemu. Kada kompjaliram sa bcc
> (bcc -B -mt -lt program), linker javlja fatal error "Cannot generate COM
> file: segment relocatable items present". U popisu gresaka za linker za
> ovo kaze "program contains segment relative fixups".
- This TLINK error is displayed when using any floating point
- routines, far calls or C++ stream functions in a program compiled
- in the tiny model and linked using the -t linker option to create
- a .COM file.
Izvor - PC.PROG:11.50
unknown.287ljupco,
> - This TLINK error is displayed when using any floating point
> - routines, far calls or C++ stream functions in a program compiled
^^^^^^^^^
> - in the tiny model and linked using the -t linker option to create
> - a .COM file.
Hvala, uzeo sam taj fajl jutros, i stvarno, problem je
bio u far pozivu interapt funkcije. Konkretno, program preuzima
keyborad interapt 9, i na pocetku newkey procedure poziva se oldkey
sa
(*oldkey)()
dok je prethodno deklarisano:
void (interrupt far *oldkey)(void);
unknown.288ljupco,
> - This TLINK error is displayed when using any floating point
> - routines, far calls or C++ stream functions in a program compiled
^^^^^^^^^
> - in the tiny model and linked using the -t linker option to create
> - a .COM file.
Hvala, uzeo sam taj fajl jutros, i stvarno, problem je
bio u far pozivu interapt funkcije. Konkretno, program preuzima
keyborad interapt 9, i na pocetku newkey procedure poziva se oldkey
sa
(*oldkey)()
dok je prethodno deklarisano:
void (interrupt far *oldkey)(void);
unknown.289mjova,
nije C, al' ajde ;)
uz ovu poruku okačeni su makroi koji služe za komunikaciju QEDIT-a sa
borlandovim bcc (bccx) C prevodiocem. gotivni su al' ne zato što smo
ih napisali jedan moj drugar i ja, već zato što su stvarno dobri ;)
moguće je da se prebace za rad sa drugim prevodiocem, kome treba nek
menja slobodno.
e, da, kako sam imao mali problem u vezi uključivanja ovih makroa u
qconfig.dat, napravio sam tako da se makroi učitaju pri prvom pritisku
nekog od tih tastera. problem je u tome što je 'qconfig.exe' jedan
vrlo stupidan program koji dozovljava da makro bude u samo jednom redu
:(.
e, kako su ovi makroi malo duži, moralo je ovako.
dakle, ovde ima borlandc.mac, .qm i qconfig.dat (samo deo).
SY
bcc-mac.arjunknown.290zsavic,
Gde može da se nabavi C++ 2.0 predprocesor za MSC 6.0 ?
SAVA
unknown.291iboris,
Da li neko zna gde mogu da nabavim grafičke biblioteke za C ,
ZINC
C-SCAPE
Zahvaljujem unapred na svakoj informaciji !
Pozdrav,
Boris
unknown.292dusanp,
Da li se neko malo duže bavio message-driven
programiranjem ? Skinuo sam DFLAT9 i zgrozio se.
Sve to ne bi bilo tako strašno da se i WIN ne
programira tako. Možda sam ja staromodan, ali mi
se /bar u slučaju DFLATa/ sve to čini nepotrebnim
komplikovanjem.
Da li neko ima literaturu koja ide uz MS SDK ?
Samo me zanima da li se isplati nabavka - da li
u njoj ima dovljno informacija za WIN programi-
ranje ?
unknown.293dejanr,
>> Da li neko ima literaturu koja ide uz MS SDK ?
>> Samo me zanima da li se isplati nabavka - da li
>> u njoj ima dovljno informacija za WIN programi-
>> ranje ?
Ima ih i više nego mnogo, na hiljade strana :(
unknown.294vbole,
> e, da, kako sam imao mali problem u vezi ukljucivanja ovih makroa u
> qconfig.dat, napravio sam tako da se makroi ucitaju pri prvom pritisku
> nekog od tih tastera. problem je u tome sto je 'qconfig.exe' jedan
> vrlo stupidan program koji dozovljava da makro bude u samo jednom redu
> :(.
Nije lose, nije lose...
A za ukljucivanje makroa - sto ne probas sa malim batch-om, recimo qc.bat
q %1 /Lborlandc.mac
startujes sa: qc ime.ext - i makroi su tu za rad u C-u, a inace vaze stari
iz qconfig.
P.S. Ja nisam ni znao za ono SetScreen i SetSound, ali brate kod mene nema
neke razlike u brzini.Jel' to ubrzava samo u 2 prozora ili kako ?
bye... vbole
unknown.295bulaja,
│Da li neko ima literaturu koja ide uz MS SDK ? Samo me zanima da
│li se isplati nabavka - da li u njoj ima dovljno informacija za
│WIN programiranje?
└───
Literatura koja ide uz MS SDK se prodaje i posebno (izdavac Microsfot
Press) i sastoji se od tri knjige - Guide To Programming (sluzi onome
sto i ime kaze ;), Programmers Refference (knjizurina, oko 1200
strana, refference svih Win funkcija) i Tools (meni ne izgleda nesto
preterano potrebna ;). Ali obavezno pogledaj pre svega ovoga
"Programming Windows (2nd ed.)" Charles Petzold-a (nesto deblje od
1000 strana, ima svega), jer svi kazu da je najbolja knjiga. Kod
"Sahinpasica" u cenovniku ima Petzold za 105 DEM (bezobrazno skupo,
posto inace kosta 30 USD).
unknown.296mjova,
> P.S. Ja nisam ni znao za ono SetScreen i SetSound, ali
> brate kod mene nema neke razlike u brzini.Jel' to ubrzava
> samo u 2 prozora ili kako ?
pa to što se isključi beep-er, ili ekran, samo služi kad se radi nešto
po editoru. dakle, ako nađe na neku muku neće da kuka ;). i ako
koristiš screenoff nećeš moći da vidiš kako razvlači blok marker i one
među poteze koje bi inače video.
probaj da napraviš makro koji imati neki posao na ekranu (promena
veličine prozora, markiranje...). kad budeš pustio taj makro, onda ćeš
videti (ubrzano) kako qedit to sam radi. e, sad, ako staviš screenoff
onda vidiš samo pre i posle.
brzina je veća samo utoliko što ne radi sa ekranom. uglavnom, to se
tamo nalazi samo da bi bilo lepše za rad.
> q %1 /Lborlandc.mac
ovo je dobra opcija, samo ja često učitavam po nekoliko fajlova (može
sa %& u 4dos-u) i volim da izlazim iz editora često. baš zbog ove
druge stvari i koristim mali editor a ne IDE.
SY
unknown.297gvuckovic,
Juce sam preuzeo sa sezama DFLAT9, ali kad sam ga
instalirao primetio sam da mi fale heder fajlovi u ĐSYS
direktorijumu.Pa ako ima neka dobra dusa nek mi ih posalje
Inace imam Turbo C .
Unapred hvala,
Goran..
unknown.298psti,
Da li neko moze da mi pomogne. Naime prevodim nekakav program
pisan u Microsoft-ovom C-u na Borland C, pa ne znam neke linije da
prevedem (namam uputstvo za Microsoft C). U programu stoji sledece:
- void interupt cdecl far .... (Sta znaci ovo CDECL)
na kraju interapt rutine stoji:
- _chain_intr(....);
odgovor moze i na mail psti!
Hvala!
unknown.299mjova,
> Da li neko moze da mi pomogne. Naime prevodim nekakav
> program pisan u Microsoft-ovom C-u na Borland C, pa ne
> znam neke linije da prevedem (namam uputstvo za Microsoft
> C). U programu stoji sledece:
samo da si pogledao help, video bi...
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
cdecl (keyword)
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
Declares a variable or a function using a C-style naming convention
(case-sensitive, with a leading underscore appended).
cdecl <data-definition> ;
OR
cdecl <function-definition> ;
In addition, cdecl declares C-style parameter passing conventions when
applied to a function header (last parameter pushed first, and the
caller cleans up the stack).
Example
▀▀▀▀▀▀▀
int cdecl FileCount;
far cdecl HisFunc(int x);
SY
unknown.300vilic,
Hi,
da li je ovo tema i za C++, ako jeste onda je ovo pravo mesto
za ovaj tekst sa najčešće postavljanim pitanjima o C++.
Tekst je skinut sa TCPLUS list servera.
bye
unknown.301djelovic,
Stepujem ja malopre (tap-tok-tap-tap-tok) kroz sledeci program u
IDE-u TC++-a:
-----------------------------------------------
1: if (*p)
2: *q++ = *p++;
3: while (*p) {
4: if (!(prez-- % 3))
5: if (prez)
6: *q++ = ',';
7: *q++ = *p++;
8: }
-----------------------------------------------
i posle naredbe u prvom redu ne izvrsi se naredba u drugom nego ona u
sedmom. Eto sta je optimizacija!
unknown.302bulaja,
│** Uz poruku 'cppfaq.arj' (62423 bytes)
└───
Prebaceno u \IBMPC\INFO. Thanks na prilogu.
unknown.303ppekovic,
Verovatno svi znate za 'register' kvalifikator (jooj
prevoda). Naime, kada se varijabla deklariše kao recimo:
register int i;
onda će kompajler pokušati da njenu vrednost čuva u
nekom od registara umesto u memoriji. Jasno je kolike se
uštede u brzini mogu ponekad postići upotrebom registara.
Ono što je mene zanimalo je algoritam po kom kompajler
određuje da li u određenom trenutku ima slobodnih registara, i
ako ima, kom kandidatu, ako ih ima više od registara, dodeliti
registar, a kog strpati u memoriju.
Probao sam jedan jednostavan program:
main()
š
register int i, j, k, l, z=0;
for(i=0;i<=100;i++)
for(j=0;j<=100;j++)
for(k=0;k<=100;k++)
for(l=0;l<=100;l++)
z++;
ć
Kompajler je "dao" SI i DI registre i i j varijablama,
a ostale je smestio u memoriju.
Ok. a šta ako promenim redosled u deklaraciji, tj
stavim:
register k, l, i, j, z=0;
SI i DI su dodeljeni k i l varijablama.
Ovo se sve dešavalo sa isključenom optimizacijom. Kada
sam izbacio taj switch (/Od), opet isto, algoritam se i dalje
ponašao prilično glupo, tj. umesto da brojačima unutrašnjih
petlji dodeli registre, a spoljnim memoriju, kompajler je i
dalje išao po kriterijumu rasporeda u liniji za deklaraciju.
Pitanje!
Da li postoji neki switch, direktiva i sl. vezan za
ovaj algoritam?
Paya
unknown.304djelovic,
> Ovo se sve dešavalo sa isključenom optimizacijom. Kada
> sam izbacio taj switch (/Od), opet isto, algoritam se i dalje
> ponašao prilično glupo, tj. umesto da brojačima unutrašnjih
> petlji dodeli registre, a spoljnim memoriju, kompajler je i
> dalje išao po kriterijumu rasporeda u liniji za deklaraciju.
Well, sa direktivom register ti zapravo daješ kompajleru 'hint'
koje promenljive da koristi kao registarske. Kompajler ti slepo veruje
( :) ) i misli da ćeš ti poređati promenjlive po važnosti. Ukoliko želiš
da on razmišlja svojom glavom, uključi register optimization i uživaj.
E sad, fora je da za (po brzini) kritične f-je (ukoliko ih ne
pišeš na asembleru) ti sam odrediš koje su promenjljive registarske, jer
ti to ipak radiš mnogo bolje od kompajlera, a njega da pustiš da se muči
sa ostalima (nisu vredne tvoga truda). Malo ručnog doterivanja vredi
više nego sve optimizacije ovog sveta. Pogotovu ako imaš MS C koji može
lokalno da uključuje razne tipove optimizacije.
Mala napomena vezana za registarske promenjljive: Ako tvoj
program operiše sa interaptima (f-je intXX i slične) onda izbegavaj
korišćenje registarskih promenjljivih, umeju i te kako da zajebu stvar.
unknown.305dgrbic,
:: Da li postoji neki switch, direktiva i sl. vezan za
:: ovaj algoritam?
Probaj da izbaciš deklaraciju (kvalifikaotr :) register i da to prepustiš
optimizaciji. Kada eksplicitno tražiš register promenljive, normalno je da
kompajler ne zna za koji će ti, pa će pokušati da ih po redu strpa u
registre. A 8088 je tanak sa registrima...
unknown.306nkbog,
Sinoć mi se desila interesantna stvar sa BCC-om i MAKE-om:
Naime prevodio sam program oko ponoći - i desilo se to da su sve
generisane datoteke bile jučerašnjeg datuma, ali sa vremenom neposredno
posle ponoći.
Mislim da je do ovoga došlo jer sam koristio mogućnost MAKE-a da skupi
sve ciljne datoteke u jedan niz, i mogućnost BCC da prevede više datoteka
sa jednim učitavanjem (obrađujući gorepomenut niz). Izgleda da BCC uzima
datum u trenutku svog učitavanja, a ne u trenutku snimanja .OBJ datoteke.
Naravno, verovatnoća pogrešnog datuma je mala, ali ako imate puno datoteka
i prevodite oko ponoći - ko vam je kriv kad ne radite ko svi normalni ljudi
danju, a ne noću.
NB.
p.s.
NB Ono sa MAKE se izvodi preko impliciranih pravila uokvirujući makroe u
vitičaste zagrade (npr. {$< } stavlja u komadnu liniju niz svih datoteka
koje treba obraditi zajedno sa njihovim ekstenzijama).
p.p.s. ovo drugo NB znači Nota Bene - otprilike: važna pribeleška.
unknown.307dnikolic,
Radim neki poslic u Borland Turbo C 2.0. Imam projekat od 5 fajlova. Desava
mi se sledeca stvar: kazem mu da uradi Build All, i on to uradi, medjutim,
posle toga, svaki put kompajlira sve fajlove, bez obzira da li sam rekao samo
RUN ( alt-R-ENTER ) ili Goto Cursor( F4). To tako traje jedno vreme, pa se
samo od sebe sredi ( sto rece balinda (?) ). Mislio sam da je uzrok ovom kes
program koji kesira i pisanje, ali se njegovim iskljucenjem stvar ponavlja.
Koristim SUPERPCK iz paketa PC-KWIK 4.02. U cemu je stvar? :)
dn
unknown.308nandi,
> Radim neki poslic u Borland Turbo C 2.0. Imam projekat od 5 fajlova.
> Desava mi se sledeca stvar: kazem mu da uradi Build All, i on to uradi,
> medjutim, posle toga, svaki put kompajlira sve fajlove, bez obzira da li
> sam rekao samo RUN ( alt-R-ENTER ) ili Goto Cursor( F4). To tako traje
> jedno vreme, pa se samo od sebe sredi ( sto rece balinda (?) ).
pretpostavka je da sve vreme imaš opciju prekompajlirani hederi on.
i ja sam primetio da ponekad algoritam koji određuje koji modul se
kad kompajlira malo škripi, ali ne ovoliko. obrati pažnju na sledeću
stvar: u heder falovima (*.h) treba da se nalaze samo deklaracije, a
ne i definicije (iliti implementacije). znači char *ime može, a
char ime[20] već ne može. tj može, ali onda bc to ne može da strpa u
*.sym datoteku nego svaki put kompajlira heder izpočetka (kao da je
*.c) i kompajlira i sve module u kojima se javlja tzj heder.
nandi
unknown.309janko,
Skoro sam nešto gledao Zoranov komunikacioni program iz R57.
E, tamo ima linija scanf sa formatom u kojoj idu redom
postotak, leva srednja zagrada, pa strelica na gore, pa kvačica
pa desna srednja zagrada.
Šta to znači?
(Morao sam ovako, jer oni koji nemaju YUSCII bi se čudili sto
godina, da sam citirao liniju -- samo Š-ovi, ž-ovi itd).
unknown.310janko,
Neko je pominjao OOP skoro, pa hajde malo na tu temu.
Ko ima, i kakve, gotove klase za C++ ?
Mene zanima, napr, rad sa stringovima, ali na turbo-paskalski
način (da je i chr(0) normalan znak, da radi + za
konkatenaciju, itd.) Ako niko nema, to ću sigurno i sam
napisati.
Zatim, univerzalno parsiranje komandne linije, sve sa džokerima,
opcijama i opcijama uz koje se navode fajlovi i datoteke sa
spiskovima fajlova, napr:
ACTION -p -q aa.rrr čfil.lst -xčfilx.lst -z
Pa prozori, miševi, na niskoj i visokoj rezoluciji, žitanje i
upis .DBF datoteka...
unknown.311janko,
> Sinoć mi se desila interesantna stvar sa BCC-om i MAKE-om:
>
> Naime prevodio sam program oko ponoći - i desilo se to da
> su sve generisane datoteke bile jučerašnjeg datuma, ali sa
> vremenom neposredno posle ponoći.
Ma, mislim da nema to veze sam sa tim Make ili BCC-om. To je
zez u MS-DOS-u, čini mi se. Znam da se i meni događalo, i to
da nisam zaključio kada se to događa. Neko od sezamovaca ti
sigurno može reći više o ovome.
unknown.312janko,
>> Radim neki poslic u Borland Turbo C 2.0. Imam projekat od
>
> pretpostavka je da sve vreme imaš opciju prekompajlirani
> hederi on.
>
žini mi se da čovek ipak priča o TC 2.0, inače ne bi pomenuo
Turbo, a nije ni plusiće stavio. :)
unknown.313alexa,
E, tamo ima linija scanf sa formatom u kojoj idu redom
> postotak, leva srednja zagrada, pa strelica na gore, pa kvačica
> pa desna srednja zagrada.
A da nema možda i neki blanko znak pre desne zagrade?
Ono u zagradama predstavlja karaktere koji "dolaze u obzir",
a ako ima "strelicu na gore" na početku onda je u pitanju negacija.
Zanči, sve osim blanko znaka (tj. do prvog blanko znaka),
ako je bio i blanko znak u (uglastim) zagradama.
Mada, mislim da je to ekvivalentno sa %s, osim možda kada ima vodećih
blanko znakova.
unknown.314dusanp,
=> Mada, mislim da je to ekvivalentno sa %s, osim možda kada
=> ima vodećih blanko znakova.
Nema mnogo veze sa prošlom porukom, ali da pokušam da se
nadovežem. Kako drugi rešavaju učitavanje stringova sa diska
i snimanje na disk. Ja sam se jedno vreme mučio dok nisam
napisao par rutina koje pre rada sa diskom prilagode string
tako da fscanf i fprintf ne greše. Ako bude trebalo, ovo
mogu i detaljnije da objasnim, ali za sada dosta.
A opet, u programima koje je pisao zz vidim dosta slobodno
baratanje stringovima na disku /stringovi imaju i razmake/, a
opet ih c lepo ucitava. Mislim da sam video u sor.str, nije ni
bitno. Jel to zasluga mnogohvaljenih _dos_open i _dos_read ?:)
unknown.315nandi,
> žini mi se da čovek ipak priča o TC 2.0, inače ne bi pomenuo
> Turbo, a nije ni plusiće stavio. :)
:))). a ja hteo da pomognem. ako je ovo gore tačno dnikolić odmah da
pređe na c++.
dajte ljudi, ako imate problem, opišite malo okolinu i simptome više.
ovako uglavnom se samo pogađa ...
nandi
ps: kola neće da mi se upale. šta da raaaadim?
unknown.316nkbog,
>> Ma, mislim da nema to veze sam sa tim Make ili BCC-om. To je
>> zez u MS-DOS-u, čini mi se. Znam da se i meni događalo, i to
>> da nisam zaključio kada se to događa. Neko od sezamovaca ti
>> sigurno može reći više o ovome.
Ajd ovako:
U BIOS-u ima poziv funkcije koja vraća informaciju da li je prošla
ponoć (to je int 1Ah/00h). Ova funkcija briše fleg na adresi 40h:70h
koji to pokazuje. Ukoliko vaš program sam meri vreme preko ovog poziva,
to može biti izvor zapetljancija, jer neko drugi (npr DOS neće znati
da treba da promeni datum).
Make utility, sa druge strane, bi trebao uzima podatke od DOS-a koji
sam vodi računa o ovome i o datumu. Da nije tako sistemski datum ne bi bio
ispravan.
NB.
unknown.317nkbog,
>> Zatim, univerzalno parsiranje komandne linije, sve sa džokerima,
>> opcijama i opcijama uz koje se navode fajlovi i datoteke sa
>> spiskovima fajlova, napr:
Za džokere u linijama uz većinu kompajlera se isporučuje WILDARG.OBJ
koji se poveže sa ostatkom programa, i sam obradi takve stvari. Za ostale
stvari postoje razni standardni UNIX potprogrami na C-u (na MSDOS nema
takvih standardnih) koji to rade. Inače ne vidim razlog da se za ovo koriste
klase - to već pretstavlja nepotrebno komplikovanje - klase imaju puno
bolju primenu.
NB.
unknown.318janko,
> nadovežem. Kako drugi rešavaju učitavanje stringova sa
> diska i snimanje na disk. Ja sam se jedno vreme mučio dok
> nisam napisao par rutina koje pre rada sa diskom prilagode
> string tako da fscanf i fprintf ne greše.
Nije mi jasan problem, priznajem. Gde je bila mina?
Ja sam imao problema sa fgets, dok nisam otkrio da posle linije
duže nego što se navede u pozivu ne učitava sledeću, nego
nastavlja gde je stao. S obzirom da se ne zna gde je stao
(možda baš na NL znaku), nisam rešio problem dok nisam napisao
sam svoj ekvivalent fgets. Ne znam može li to elegantnije?
Ne znam šta je problem sa fscanf itd, ali znam da se na C++
manje igra sa formatima. Skoro da možeš kao na bejziku,
(zagriženiji ljubitelji bi rekli, puno više nego na bejziku :)
sve redom da pišeš i ne brineš da li si sve 'skrpio' i u
formatu i u pozivu funkcije.
unknown.319dusanp,
=> Nije mi jasan problem, priznajem. Gde je bila mina?
Pa greška i nije bila do C-a. Problem je bio u tome
što sam morao da napišem mnogo koda u malo vremena.
Baza podataka je bila na disku organizovana ovako
PRVAVREDNOST=.............CR/LF
DRUGAVREDNOST=............CR/LF
.
.
Itd.
Stvar je bila u tome što sam stringove u bazu nor-
malno fprintfovao na disk, a pri ucitavanju sa
fscanf (file,"%s",...) je program citao stringove do
prvog razmaka i onda haos. Onda dozvlim i ucitavanje
razmaka. Ništa. Dodam kontrolu cr/lf. Opet ništa.
Pošto je rok (tik-tak,tik-tak) opasno isticao, zaklju-
čim da mi je pametnije da prilagodim string pre sni-
manja na disk tako da "ovo je string" postane
"ovo_je_string". Tako sam bio u mogućnosti da ga samo
pljusnem na disk sa fprintf, a kada ga vraćam samo
izbacim crtice i radi. Sad, (lenjost?) i u daljim
programima koristim ove rutine, jer me jednostavno
mrzi da probam nešto što mi već radi.
/Lepša verzija prethodne rečenice kaže da nemam
vremena :)/
unknown.320mjova,
ima li neke šanse da se u nekim slučajevima isključi izvršavanje
funkcije destruktora?
odgovara mi da se ta funkcija uvek izvrašava osim u 1 slučaju. za taj
slučaj mi smeta. da li ima neka konkretna komanda ili mora da se sredi
nekako drugačije?
dakle, može li nekako da se zaobiđe izvršavanje destruktora?
SY
ps. mogu ja sa tim da izađem na kraj, ali me zaima da li ima kraći
put...
unknown.321nandi,
> odgovara mi da se ta funkcija uvek izvrašava osim u 1 slučaju.
>
> dakle, može li nekako da se zaobiđe izvršavanje destruktora?
nisam baš najbolje shvatio šta hoćeš da postigneš: da li da neki
objekat nema destruktor (prazan destruktor) ili da se funkcija u
destruktoru izvršava uslovno (if (!slučaj) funkcija) ili nešto treće.
nandi
unknown.322djelovic,
> ima li neke šanse da se u nekim slučajevima isključi izvršavanje
> funkcije destruktora?
Destruktori mogu biti virtualni. Ako ga u okviru neke klase tako
deklarišeš, a onda u njenom nasledniku staviš za destruktor praznu f-ju,
onda za naslednike destruktor ne važi.
Drugi način je, naravno, da u klasu uvedeš neki flag koji bi
konstruktor postavljao na 1. Onda oko tela f-je destruktora ubaciš
uslov "if (flag) ...", i posao je završen. Jednostavnim postavljanjem
flega na 0 destruktor neće biti izvršen.
Treće, jedna rizična varjanta: Ako si instancu klase kreirao sa
new, onda nemoj da je uništavaš sa delete (koja poziva destruktor), već
sa free. Ovo bi u principu trebalo da radi, mada je (mislim) zavisno od
načina na koji je new/delete konstruisan, tj. od načina čuvanja
virtualnih tabela. Ako klasa nema virtualnih članova, onda ovo sigurno
radi.█
unknown.323bulaja,
**** new file **** \ibmpc\program\snip9-91.arj
Zbirka raznih korisnik funkcija i primera (isecaka) datih kao C source.
Evo spisa njihovih opisa:
Macros for ANSI.SYS screen control
Write portable code for various PC compilers
Macros for direct video work
AWK program to count lines of C code
Saves/restores 80x87 environment
Reliable cold/warm boot
Determine type of CPU in use
Determine presence of coprocessor
Switch to 43/50 line mode on EGA/VGA
Multiple printer support
Read attribute and build ANSI.SYS command
Build ANSI.SYS command string, given attribute
Allow up to 255 open files under DOS 3+
Filter ASCII to bytes
Allocate stack memory
Detect ANSI.SYS
Fuzzy string search
Filter bytes to ASCII
Read variables from a file
BASIC-like string functions
Bit array functions
Count 1 bits
Small bit array macros
Set border color
Cast any object to any type
Change the standard printer device
Checksum protection for executable files
On-screen clock generator
Calculated 16-bit CRC
Table lookup 32-bit CRC
S-Coder data encryption from DDJ
Cursor management/manipulation
Hide/unhide cursor
TC/TC++/BC++ DOS file time/date macros
DES encryption/decryption
Complex pattern matching (calls patmat())
Copy a file
DOS SORT work-alike
Benignly validate disk drives
On-screen TSR clock
Direct video benchmark - ZTC/Watcom
Copy a file
Like fgets, except reads backwards
Count files/directories
Crunch dot directories, verify DOS-valid paths
Full file name normalization
Demonstrates a finite state machine
Get current working directory for given drive
AT&T compatible getopt(3)
Scan command line for switches
Unix head work-alike
Obfuscated C code
Read data into variables
Expression evaluator
Is a path a valid directory?
Is a file handle associated with a file?
Is a number an integral power of 2?
Integer square root
Julian Day Number computation
Joystick support functions
Keyboard status determination
Set/clear Caps/Num/Scroll locks
Caps/Num lock set/clear functions
Distribution counting sort rediscovered
Large bit array macros
Long double floor
Linked list mergesort
Linked list quicksort
DOS DIR work-alike
Convert long to a string
Convert long to a string
Compression used in LHARC & LHA
Obfuscated C code
Convert strings to morse code
MS Mouse functions
MS Mouse functions
MS Mouse functions
MS Mouse functions
Add peek/poke to MSC
Traps Ctrl-C, Ctrl-Break, Ctrl-Alt-Del
Traps Ctrl-Alt-Del
String pattern matching
Convert Pascal strings to C
Permute strings
Permute strings
Determine permutation index
Calculate PI to 60,000 digits or more
How to print proper plurals
Pop-up communications
Tee stdio to stdprn
Stack-oriented CHDIR functions
Optimized bubble sort
Timed query w/default for batch files
Random number generator
Random number generator
Random number generator
Convert between number bases
Demonstrates output redirection
Regular expression (subset) pattern matching
Compiler-independent find first/next functions
ANSI quicksort function
ANSI quicksort-compatible shellsort function
Remove all files
How to seed ANSI random number generator
Scalar ("Julian") date functions
Scans/converts text fractions
Get screen size
Set DOS master environment legally
Allow user input into a .BAT file
Set, change, or kill a disk volume label
Standard English soundex
Benchmark to calculate I/O performance
Analyze file statistics
Reverse a string in place using XOR swapping
(Shell) Sort a string array
Trim trailing spaces from a string
Read/write structures to/from a file
Suggested coding style guidelines
TC/TC++/BC++ display file date
EBCDIC-ASCII conversion arrays
TC/TC++/BC++ set file time/date stamp
Recursive directory lister
Convert Unix-style pathnames to DOS-style
Unix uudecode
Setup video operations
Fast file copy/append
Obfuscated C code
Search for a file
String concatenation functions
C++ wrapper for LITECOMM
Portability guidelines
How to validate a logical drive
How to blank/restore EGA/VGA screen
How to check if file sharing is active
Direct screen package
Access command processor "back door"
C "glue" to use Int 2Eh
POSIX-compliant header
opendir(), readdir(), seekdir(), closedir()
Directory lister demo
Microsecond timing function header
Microsecond resolution timing functions
Sound functions header
Speaker control functions
Tone generation functions
Background music package
Demo of backgroud music package
unknown.324igor.mil,
> Mada, mislim da je to ekvivalentno sa %s, osim možda kada ima vodećih
> blanko znakova.
Pa lepo tamo piše da ima kvačica (pretpostavljam da je to znak č), pa
to predstavlja učitavanje niza do prve kvačice.
unknown.325igor.mil,
> Stvar je bila u tome što sam stringove u bazu nor-
> malno fprintfovao na disk, a pri ucitavanju sa
> fscanf (file,"%s",...) je program citao stringove do
> prvog razmaka i onda haos. Onda dozvlim i ucitavanje
Ovo se, koliko je meni poznato, rešava sa pomenutim uglastim zagradama
u formatu "fscanf" funkcije. Na primer:
fscanf(file, "%ŠžĐnĆ", string);
/* format: '%', left brace, caret, backslash, 'n', right brace */
učitava niz znakova *do* "newline" u niz "string", znači ceo red.
Interesuje me šta se dešava sa samim "newline" karakterom. Bilo bi
logično da on ostane nepročitan (zapravo moralo bi biti tako, u duhu
jezika), pa ga onda treba pojesti npr. pozivom "fgetc". Da li je
uvek ovako? I šta se dešava kad se gornjoj naredbi poturi prazan
red, tj, red koji sadrži samo "newline" karakter?
unknown.326igor.mil,
> Za džokere u linijama uz većinu kompajlera se isporučuje WILDARG.OBJ
> koji se poveže sa ostatkom programa, i sam obradi takve stvari.
Onaj koji je isporučen uz Turbo C 2.01 ne radi kako treba.
unknown.327mjova,
> Treće, jedna rizična varjanta: Ako si instancu klase
> kreirao sa new, onda nemoj da je uništavaš sa delete (koja
> poziva destruktor), već sa free. Ovo bi u principu trebalo
uh, ovo mi ne zvuči baš 'legalno' ;), a ona dva rešenja druga sam i
sam skontao, ali me zanimalo da li ima možda neki drugi, lakši način.
kako sam objekte pravio pre same funkcije main(), njihovi destruktori
su se izvršavali pri svakom napuštanju programa. kad objekte definišem
u samoj fn main() i kad prekidam izvršavanje exit()-om destruktori se
ne startuju!?
na kraju sam se odlučio za korišćenje new, a delete tamo gde treba.
thanks!
SY
unknown.328dusanp,
=> Interesuje me šta se dešava sa samim "newline"
=> karakterom. Bilo bi logično da on ostane nepročitan
=> (zapravo moralo bi biti tako, u duhu jezika), pa ga onda
=> treba pojesti npr. pozivom "fgetc". Da li je
Pokušam, recimo "%[^\n]". Ne radi. Onda iza zagrade dodam
\n. To zato što se, po teoriji, karakteri van format stringa
preskaču. Tako se izbegava fgetc. Opet ne radi. Zašto?
Ne znam. Onda ipak string pre snimanja sredim sa
while (*s!=0) {if (*s==32) *s='_';}. Gledao sam po dokumenta-
ciji, ali brate deo uputstva za scanf ima 7-8 strana, pa sam
batalio. Bilo mi je bitno da ne moram da kombinujem fscanf i
fgetc, jer na taj način ceo slog baze pokupim sa jednim
fscanf, nekoliko redova dugačkim.
unknown.329zonjic,
> Interesuje me šta se dešava sa samim "newline" karakterom. Bilo bi
Ostaje u stdin-u i treba uraditi jedno fflush(stdin); da bi ga odbaciJo
unknown.330dgrbic,
:: fscanf(file, "%[^\n]s", string);
:: /* format: '%', left brace, caret, backslash, 'n', right brace */
::
:: učitava niz znakova *do* "newline" u niz "string", znači ceo red.
::
:: Interesuje me šta se dešava sa samim "newline" karakterom. Bilo bi
:: logično da on ostane nepročitan (zapravo moralo bi biti tako, u
:: duhu jezika), pa ga onda treba pojesti npr. pozivom "fgetc". Da li
:: je uvek ovako? I šta se dešava kad se gornjoj naredbi poturi
:: prazan red, tj, red koji sadrži samo "newline" karakter?
Ja probao (MSC 6.0) i evo rezultata:
Navedeni format zaista učitava CEO red (do newline).
Zatim je potrebno pročitati newline sa fgets, nisam uspeo na drugi način
(neko je pomenuo fflush, ali to ne radi).
fscanf, čini se, nikako ne može da pročita newline?
unknown.331rcojba,
Ima li neko od korisnika sezama BC++ 3.0 ako ima nek se javi !!!!!
rcojba !
unknown.332dusanp,
=> Ima li neko od korisnika sezama BC++ 3.0 ako ima nek se
=> javi !!!!!
Zvao sam juče. Za nove korisnike je cena $569, a za
upgrade treba imati $229 !!! Ne misliš valjda na crnu
kopiju, greh je jedan tako moćan paket imati bez doku-
mentacije.
unknown.333gvuckovic,
Molio bih neku dobru dusu(ako je ima ;) da mi posalje c0h.obj
za TC 2.0 (nevidjoh da sam je obris'o), hitno mi je potrebno.
Goran..
unknown.334ndragan,
/ ps: kola neće da mi se upale. šta da raaaadim?
Pređi na bicikl. Ne smeta mu ni ako u sred zime prenoći sa uključenim
svetlima. Ujutro garant kreše - proverio sam stotinama puta.
unknown.335dnikolic,
>> Onaj koji je isporucen uz Turbo C 2.01 ne radi kako treba.
Koji bre Tc 2.01?!?!?!? Pa zar to postoja, a ja da nemam?? Kad je to izaslo i
kakve su razlike u odnosu na 2.0?
dn
unknown.336stomic,
$ / ps: kola neće da mi se upale. šta da raaaadim?
$
$ Pređi na bicikl. Ne smeta mu ni ako u sred zime prenoći sa
$ uključenim svetlima. Ujutro garant kreše - proverio sam
$ stotinama puta.
Kakve ovo ima veze sa C-om? Jel' to neka UNDOCUMENTED
funkcija C-a?
Pozdrav stomic
▀▀▀▀▀▀▀▀▀▀▀▀▀▀
P.S: Šalim se! OK?
unknown.338ndragan,
/ /* format: '%', left brace, caret, backslash, 'n', right brace */
Mislio sam da se taj 'caret' zove u stvari 'circumflex', a da je 'caret'
obrnut (onaj znak na slovu ž kao chetka). Btw, za ostale znake još i znam
neke tipografske nazive (ampersend &, underscore _, asterisk *, ellipsis
...), ali kako se stručno zovu majmun i taraba?
Bue_ NDragan
unknown.340janko,
> Ovo se, koliko je meni poznato, rešava sa pomenutim
> uglastim zagradama u formatu "fscanf" funkcije. Na
> primer:
>
> fscanf(file, "%ŠžĐnĆ", string);
> /* format: '%', left brace, caret, backslash, 'n', right
> brace */
>
> učitava niz znakova *do* "newline" u niz "string", znači
> ceo red.
Najlepše je to što upotreba srednjih zagrada _postoji_ u ANSI
standardu (ali ja to nisam primetio). Dakle, portabilno je, i
može da se preporuči za upotrebu!
U zz-ovom programu se ne navode Đn-ovi, a program ipak čita
konfiguraciju koja je u više redova. Kako to?
Kada se navede veličina polja u formatu, koji je sledeći znak
koji se dobija sa getchar?
unknown.341duduk,
> Interesuje me sta se desava sa samim "newline" karakterom. Bilo bi
> logicno da on ostane neprocitan (zapravo moralo bi biti tako, u duhu
> jezika), .....
"\n" se NE ucitava, a problemi obicno nastanu kad treba da se ucita.
Dakle, pod pretpostavkom da je linija ucitana sa formatom "%[^\n]", ako
se izvrsi fscanf(...,"\n") predje preko nl-ova koliko ih ima jedan do
drugog ( preskacu se prazne linije ), a zatim i PREKO VODECIH RAZMAKA u
narednoj nepraznoj liniji?!?! Ako se pak izvrsi fscanf(...,"%*[\n]), gde
zvezdica znaci da procitano ne treba nigde smestiti, prelazi se SAMO preko
uzastopnih nl-ova!! Ovo drugo sam i ocekivao, jer prelazim preko niza od
samih nl-ova, ali ono prvo mi i nije bas jasno. Uostalom evo primera, pa
nek proba koga je volja:
[=== CUT HERE =========================================================]
#include <stdio.h>
#include <conio.h>
void main(int argc,char **argv)
{
FILE *f;char s[100];
clrscr();
f=fopen(argv[1],"r");
fscanf(f,"\n");
if (!feof(f)) fscanf(f,"%[^\n]",s);
while(!feof(f))
{
fscanf(f,"\n");
printf("s=%s;\n",s);
fscanf(f,"%[^\n]",s);
}
fclose(f);
getch();
f=fopen(argv[1],"r");
fscanf(f,"%*[\n]");
if (!feof(f)) fscanf(f,"%[^\n]",s);
while(!feof(f))
{
fscanf(f,"%*[\n]");
printf("s=%s;\n",s);
fscanf(f,"%[^\n]",s);
}
fclose(f);
}
[=== CUT HERE =========================================================]
Preskacu se prazne linije na pocetku, i bilo gde drugde, a i izbegavaju
se pojave da se zadnja linija ispise dva puta ili ne procita/ispise
uopste ako nije zavrsena nl-om.
read.exeunknown.342duduk,
> ali kako se strucno zovu majmun i taraba?
@ = business a
# = hash
unknown.343ljubao,
>>U zz-ovom programu se ne navode Đn-ovi, a program ipak čita
>>konfiguraciju koja je u više redova. Kako to?
Verovatno ima na kraju format stringa (ili na početku sledećeg) jedan
'space' kojim se preskaču svi sledeći razmaci, 'tabovi', CR-ovi itd.
Ljuba
unknown.344vbole,
> Mislio sam da se taj 'caret' zove u stvari 'circumflex', a da je 'caret'
> obrnut (onaj znak na slovu C kao chetka). Btw, za ostale znake jos i
> znam neke tipografske nazive (ampersend &, underscore _, asterisk *,
> ellipsis ...), ali kako se strucno zovu majmun i taraba?
@ = majmun = At (Sign)
# = taraba = Pound (Sign)
$ = dolar = Dollar (Sign)
^ = stepen(?) = Caret
- = minus = Hyphen
. = tacka = Period
/ = kosa crta = Slash
: = dvotacka = Colon
; = tac-zarez = Semicolon
( = zagrada = Paranthesis (Left, Right)
[ = u.zagrada = Bracket (Left, Right)
{ = v.zagrada = Brace (Left, Right)
Glupo mi je vise da kucam, em' vidim sve nasa slova umesto zagrada i majmuna,
em' verovatno i znas - ajd' cao.
unknown.345ilazarevic,
█ # = taraba = Pound (Sign)
Pound? Engleska funta? Ako je to, znak je ono L :))
█ ž = stepen(?) = Caret
Ovo se u francuskom zove circumflex (nepravilno napisano)
unknown.346ndragan,
/ P.S: Šalim se! OK?
Nije bilo jasno? Pa, veza je u sledećem: za istu godinu sam planirao da
naučim C i da rasturam menjač na biciklu. Te dve stvari imaju podjednako
mutnu sintaksu. Koja je to godina? Nemam pojma, počinje sa 2.
unknown.347dejanr,
>> Pound? Engleska funta? Ako je to, znak je ono L :))
Jeste, ako postoji u setu znakova.Ako ne postoji, koristi se #
unknown.348mjova,
vrlo zanimljivo, imam 'wildargs.obj', ali nemam uputstvo :)
može li neko da mi da par smernica, u kratkim crtama, kako da to
probam, ili ću morati sam da napišem obradu ludih ;) argumenata..
SY
unknown.349mjova,
> U zz-ovom programu se ne navode Đn-ovi, a program ipak
> čita konfiguraciju koja je u više redova. Kako to?
kad učitavam tekst iz neke datoteke to datim npr ovako:
fscanf(input_file, "%160[ - ]", &input_line);
e, sad, možda postoje i druga rešenja, ali meni ovakvo odgovara i
radi. u [] se nalazi kod 32, '-' i kod 255. broj 160 je dužina reda
koji učitavam. konkretno mi je tako trebalo, ali ako se izostavi onda
se čita ceo red tj do pojave nekog od znakova koji nisu u skupu od 32
do 255.
sasvim je logično učitavati red po red i svaki posebno skanirati i
upoređivati zadate reči u cfg datoteci sa nekom tabelom u kojoj su
opisane same reči i aktivnosti koje treba preduzeti radi njihove
obrade.
ako pri skaniranju umesto značajnog znaka (slova) prg naiđe na '\n'
vrati se nazad u petlju i nastavi sa čitanjem (tj čitaj novi red).
ako neke reči nema u onoj tabeli prijavi grešku itd.
treba se odlučiti o tome da li se koriste kodovi ispod 32, koji su
vrlo nezgodni za upotrebu u datotekama koje se edituju običnim
editorom.
SY
unknown.350ppekovic,
>> vrlo zanimljivo, imam 'wildargs.obj', ali nemam uputstvo :)
>> može li neko da mi da par smernica, u kratkim crtama, kako da to
>> probam, ili ću morati sam da napišem obradu ludih ;) argumenata..
Nemaš potrebe da se trudiš mjovo. U onoj novoj arhivi (stigla pre
neki dan) gde ima gomila C source-ova, imaš i jedan u kome je rešen
rad sa * i ?.
Paya
unknown.351obren,
> vrlo zanimljivo, imam 'wildargs.obj', ali nemam uputstvo :)
> može li neko da mi da par smernica, u kratkim crtama, kako da to
> probam, ili ću morati sam da napišem obradu ludih ;) argumenata..
Ubaciš u project osim tvojih modula i WILDARGS.OBJ pa onda lepo prevedeš.
Posle kada startuješ program sa recimo:
WILD *.EXE
on ti ubaci u listu argumenata umesto '*.EXE', imena fajlova koji zadovoljavaju
tu masku. Posle ih samo skidaš sa argvŠ1Ć, argvŠ2Ć, ...
unknown.352ndragan,
/ em' verovatno i znas - ajd' cao.
Ostalo jesam znao, a i ovo me razočaralo. Očekivao sam da će i za ona
dva odnekud isplivati latinski nazivi. Et sajn - ne zvuči baš jasno kad
nekom treba da diktiraš preko telefona. Uostalom, za diktiranje preko
telefona idu druge tehnike "kucaš onda chkdsk... c kao cetinje, h kao
hrkanje, ne ne, hrkanje, k kao kanta, pa onda dsk kao daska bez a... bez
razmaka, jel imaš šes slova dosad, dobro, pa sad razmak, pa kroz, imaš
ga tamo desno iznad sedmice, jedte kosa crta, i f kao furuna, bez
razmaka, i enter jel te pita nešto za jes no? ne? ajd izdiktiraj šta si
napisala.." i tako do besvesti.
Bue_ NDragan
unknown.353igor.mil,
> Koji bre Tc 2.01?!?!?!? Pa zar to postoja, a ja da nemam?? Kad je to
> izaslo i kakve su razlike u odnosu na 2.0?
Ne znam brate, to je prvi i jedini Turbo C koji imam.
unknown.354janko,
> ga tamo desno iznad sedmice, jedte kosa crta, i f kao
> furuna, bez razmaka, i enter jel te pita nešto za jes no?
> ne? ajd izdiktiraj šta si napisala.." i tako do besvesti.
Pa zatim, dobro si napisala, ali šta još vidiš na ekranu? I
onda provališ da je sve to kucala tamo gde ne treba -- nije ni
ušla u Dos (ako si diktirao 'Chkdsk') Da, da. :)
unknown.355dzoran,
rz
B00000000000000
Zdravo! Imam jedan problem.
Neznam da li spada u ovu temu konferencije ali nista slicno nisam video.
Uprilici sam da doradjujem jedan fortranski program iz domena kvantne fizike.
Dosta memorijskog prostora se potrosi na razne matrice.
Program je duzine oko 40 KB i kompajlira se sa MS Fortranom u large modu,
tom prilikom se poveca na oko 450 KB.
Za neke graficke rutine sam napravio shell u MSC600.
Sa obicnim linkanjem sa LINK /NOE program je dugacak oko 550 KB.
Funkcije u MSC koriste pointere i jedan bafer za skrolovanje grafickog dela
ekrana.
Opcija /P u
LINK /NOP /P ....;
smanji program na oko 110 KB ali program tada ne mogu startovati.
Zanima me ima da li neko ima informaciju da li mogu da module kompajliram
u small ili medium modu radi manjeg gutanja memorije,da bih izbegao koriscenje
overleja i pripadajuce opcije za compajliranje i linkanje.
Pozeljan je kratak primer iz definicionog dela fortrana i C-a.
Unapred zahvalan Zoran
unknown.356ppekovic,
Jel postoji neki lakši način od pisanja potpuno nove funkcije za editovanje
stringa. Tj. hoću nešto kao gets() ili scanf("%s",...) ali da mi dozvoli
ispravljanje prethodne vrednosti stringa.
Paya
unknown.357mjova,
> š
> asm š
ako već simuliraš YUSCII ;), onda je { == Š, a ne š (== [).
drugo, problem ćeš rešiti ovako (dok neko ne da bolje rešenje):
ili
void main() { │ void main() {
asm { │ asm cmp ax, ax
cmp ax, ax │ asm je labela
je labela │ labela:
} │ asm nop
labela: │ }
asm { │
nop │
} │
} │
takođe da ti skrenem pažnju da bi trebalo da paziš na registre (BP,
SP), jer to nije uradio kompajler.
SY
unknown.358obren,
> drugo, problem ćeš rešiti ovako (dok neko ne da bolje rešenje):
Hvala! žesto sam koristio asm u programima ali još ni jednom mi
nisu trebali skokovi, tako da nisam ni primetio da zeza sa labelama.
Rešenje lepo radi, što sam i probao, ali mi nekako izgleda neprirodno
što moram da prekidam blok da bih napisao labelu, pa zatim ponovo da
nastavim... a uz to rekao sam čoveku (malte ne sam se opkladio) da je
moguće koristiti labele ali sigurno na neki specifičan način, jer ne
verujem da je Borland dopustio sebi neku takvu nedoslednost.
BTW, meni je u SOR-u po broju tvoja poruka odgovor na MOJE pitanje
mada vidim da si ti odgovorio ppekovic-u. Ne znam šta je to pisalo u
njegovoj poruci ali u svakom slučaju hvala svima. Verovatno je došlo
do zbrke zbog onog novog diska, koji je "pojeo" neke poruke.
unknown.359obren,
> Jel postoji neki lakši način od pisanja potpuno nove funkcije za
> editovanje stringa. Tj. hoću nešto kao gets() ili scanf("%s",...)
> ali da mi dozvoli ispravljanje prethodne vrednosti stringa.
>
> Paya
Jel bi neko mogao da ponovi odgovor na ovo pitanje? Nema ga kod mene u
SOR-u, a interesuje me. Ispod poruke piše "Reply(s) in: 357". Na žalost
tu poruku nisam dobio u PAD-u. Verovatno je završila na novom disku.
P.S. Može i na mail.
unknown.360skoprivica,
>-> ako vec simuliras YUSCII ;), onda je { == S, a ne s (== [).
Nije, ali nije vazno...S je na [, a s je na {...
unknown.361mjova,
> BTW, meni je u SOR-u po broju tvoja poruka odgovor na MOJE
> pitanje mada vidim da si ti odgovorio ppekovic-u. Ne znam
ma neka frka je bila oko onog novog diska, inače sam tebi odgovorio a
ne paji, njemu samo jedna devojčica sme da odgovori ;)
SY
unknown.362dnikolic,
Jel skidao ovde neko onaj CBASE sa Sezama, i kakva su iskustva sa njim. Mislim
na pouzdanost, brzinu i slicno.
dn
P.S. Bulajo, ti rece da imas nesto slicno. Kako to radi, opet u poredjenju sa
Clipperom?
unknown.363max.headroom,
Evo jedne male rekurzivne f-je, ali stvar radi dosta šašavo :)
Slučajno sam naišao na ovo kada sam kopao po "C-Tutor"u, pa
rek'o da vidim ima li ko ideju šta se ovde zaista događa. Ja sam
došao do zanimljivog rešenja, pretpostavljam da je tačno.
(Pažnja, stvar ne radi ono što bi rekli na prvi pogled! ;)
main()
š
int index=8;
odbrojav (index);
ć
odbrojav (broj)
int broj;
š
broj--;
printf ("Vrednost broja je %dĐn",broj);
if (count > 0)
odbrojav (broj);
printf ("Sada je broj = %dĐn",broj);
ć
unknown.364ppekovic,
>> main()
>> š
>> int index=8;
>>
>> odbrojav (index);
>>ć
>>
>> odbrojav (broj)
>> int broj;
>> š
>> broj--;
>> printf ("Vrednost broja je %dĐn",broj);
>>
>> if (count > 0)
>> odbrojav (broj);
>>
>> printf ("Sada je broj = %dĐn",broj);
>>ć
Pa prvo, kompajler će prijaviti grešku pri kompajliranju jer
promenljiva count uopšte nije definisana, a i da jeste, program bi bio
besmislen, tj. ili bi se odbrojav izvršilo jednom ili onoliko koliko
bi veličina steka dozvolila.
A ako staviš broj umesto count, onda program radi upravo ono što
na prvi pogled izgleda da radi.
Paya
unknown.366nimi,
pocetniku u TSR programiranju potrebna informacija o interrupt handler-u.
M.D.Nikolic
unknown.367obren,
> pocetniku u TSR programiranju potrebna informacija o interrupt
> handler-u.
Pretpostavljam da te interesuje kako da preuzmeš neki interapt. To
imaš u help-u pa nema potrebe da ti pišem primer. Pogledaj example za
funkciju keep. Inače, pošto si početnik u toj oblasti, savetujem ti
da za početak nabaviš neku dobru knjigu. Teško da ćeš naučiti nešto
više od osnova gledajući helpove ili hakerišući.
Pozdrav, Dragan
unknown.368mjova,
treba li pratiti int 9 u cilju detekcije ctrl-break-a ili se može
nekako preusmeriti (promeniti default) rutina za obradu break stanja?
SY
unknown.369dzakic,
>> treba li pratiti int 9 u cilju detekcije ctrl-break-a ili se može
>> nekako preusmeriti (promeniti default) rutina za obradu break
>> stanja?
INT 23h Break address. Zar nije to što ti treba?
unknown.370max.headroom,
> A ako staviš broj umesto count, onda program radi upravo
Sorry, u pravu si za zamenu "count" u "broj". Ali, rezultat je i
dalje:
7
6
5
4
3
2
1
0
1
2
3
4
5
6
7
Zanimljivo, ha? :)
unknown.371mjova,
> INT 23h Break address. Zar nije to što ti treba?
ne znam, ali moraću da probam. isključivanje nije problem, ali neki
put reba napraviti lep prekid, a ne kao default što odštampa ^C. ružno
deluje ako se neki proces prekine i onda se pojavi takvo nešto na
ekranu.
SY
unknown.372ppekovic,
>> Pretpostavljam da te interesuje kako da preuzmeš neki interapt. To
>> imaš u help-u pa nema potrebe da ti pišem primer. Pogledaj example za
>> funkciju keep. Inače, pošto si početnik u toj oblasti, savetujem ti
>> da za početak nabaviš neku dobru knjigu. Teško da ćeš naučiti nešto
>> više od osnova gledajući helpove ili hakerišući.
Ima i zanimljiv tekst ZZivotic-a u jednom od prošlogodišnjih
brojeva Računara. Takođe, na sezamu u RSOFT dir-u ima i primer iz tog
teksta.
Paya
unknown.373prvul,
ŮSorry, u pravu si za zamenu "count" u "broj". Ali, rezultat je i
Ůdalje:
Ů▄▄
A šta si ti očekivao? Pa "izvlačenje" iz rekurzije ide po LIFO šemi...
Prvul
unknown.374max.headroom,
Help!
Hoću da napišem program koji će da otvori ASCII fajl i da
podatke koje pročita iz njega ispiše na ekran (ili prebaci u
neki niz, još bolje), ali u BINARNOM obliku.
Na primer, ako u ASCII fajlu piše:
TRA LA LA
On treba da mi ubaci u niz:
01100100011100100000101010010101010 (na primer)
čelim da ostavim i space-ove, tj. sve kako jeste.
Problem mi je što ne znam kako da pravilno otvorim datoteku za
binarno čitanje, a i kada je tako otvorim - kako da sadržaj tog
dela memorije (gde je ubačen sadržaj fajla) prebacim, npr., u
niz, a sve to u Binarnom obliku.
unknown.375obren,
> Ima i zanimljiv tekst ZZivotic-a u jednom od prošlogodišnjih
> brojeva Računara. Takođe, na sezamu u RSOFT dir-u ima i primer iz
> tog teksta.
Da, zaboravio sam na taj tekst. Odličan je ali ne bih rekao da je
namenjen totalnim početnicima. Sem toga ne verujem da čovek koristi
Microsoft C.
unknown.376obren,
> ne znam, ali moraću da probam. isključivanje nije problem, ali neki
> put reba napraviti lep prekid, a ne kao default što odštampa ^C.
> ružno deluje ako se neki proces prekine i onda se pojavi takvo nešto
> na ekranu.
Ako koristiš Turbo C/C++ imaš funkciju ctrlbrk koja radi upravo ono
što ti treba. Imaš i primer u helpu.
unknown.377dusanp,
=> Hoću da napišem program koji će da otvori ASCII
=> fajl i da podatke koje pročita iz njega ispiše na
=> ekran (ili prebaci u neki niz, još bolje), ali u BINARNOM
=> obliku.
************************************************************
#include <stdio.h>
FILE *file;
void translate (int ch)
{
if (ch & 128) {putch ('1');} else putch('0');
if (ch & 64) {putch ('1');} else putch('0');
if (ch & 32) {putch ('1');} else putch('0');
if (ch & 16) {putch ('1');} else putch('0');
if (ch & 8) {putch ('1');} else putch('0');
if (ch & 4) {putch ('1');} else putch('0');
if (ch & 2) {putch ('1');} else putch('0');
if (ch & 1) {putch ('1');} else putch('0');
}
void main (int argc,char *argv[])
{
long filelen,counter;
int ch;
if ((file=fopen(argv[argc-1],"r+"))==0) {
perror (argv[argc-1]);
exit (1);
}
fseek (file,0L,SEEK_END);
filelen=ftell(file);
fseek (file,0L,SEEK_SET);
for (counter=1;counter<=filelen;counter++) {
ch=fgetc(file);
printf ("\nChar #%ld = %i = ",counter,ch);
translate(ch);
}
fclose (file);
}
************************************************************
Mislim da ces lako da se snadjes...
unknown.378max.headroom,
> A šta si ti očekivao? Pa "izvlačenje" iz rekurzije ide po
> LIFO šemi...
Ok, interesuje me gde se smešta ona promenljiva "broj" za svaki
"nivo" rekurzije, jer se očigledno svaki put, kako se program
vraća iz rekurzije, on povećava za jedan (ona stara vrednost sa
tog "nivoa" je negde smeštena, ali gde?) Kako kompajler zna sa
kog je nivoa npr. "broj=4" i kako ne pomeša promenljivu sa
vrednostima sa drugih nivoa?
unknown.379prvul,
Ů> A šta si ti očekivao? Pa "izvlačenje" iz rekurzije ide po
Ů> LIFO šemi...
Ů
ŮOk, interesuje me gde se smešta ona promenljiva "broj" za svaki
Ů"nivo" rekurzije, jer se očigledno svaki put, kako se programŮ▄▄▄
Na steku (u stvari, čim je LIFO u pitanju, mora da je tu negde i stek).
Sada, postoji više šema pokojima se to može stvarno realizovati, ali
jedan od najčešćih je sledeći: na steku se pri pozivu procedure ostavlja
mesta za lokalne promenljive (osim ako su klase static). I onda, kada
se upadne u drugi nivo rekurzije, na steku se opet alocira mesto za lokalne
promenljive tako da funkcija više ne "vidi" lokalnu promenljivu iz
prethodnog nivoa... kada se vrati iz unutrašnjeg nivoa rekurzije,
oslobađa se to mesto na steku i time ponovo "otkriva" promenljive
iz prethodnog nivoa...
Prvul
unknown.380mjova,
> Ako koristiš Turbo C/C++ imaš funkciju ctrlbrk koja radi
> upravo ono što ti treba. Imaš i primer u helpu.
da, da, koristim, ali ni sa ovim ne mogu da sredim lako problem. ovim
mogu da sredim problem delimično. ipak ću morati da isključim
ctrl-break.
u onoj gomili C programčića (sa sezama SNAP ili tako nekako) našao sam
kako može da se presretne break. naravno da sam morao to malo da
izmenim, ali ko zna da li i to valja. meni se komp par puta blokirao,
možda je razlog u tome što su silni TSR-ovi u memoriji. (mada me ne
zanima me da li je do njih, jer mi oni više znače. ;)
deo koda je ovakav (ovuda prolazi samo ako je pritisnut ctrl):
b= inp(0x61);
outp(0x61, b | 0x80); // disable keyboard
outp(0x61, b); // enable keyboard
outp(0x20, 0x20);
???????? 0x20 je intr kontroler, ali u HelpPC-u sam našao da na taj
port ne ide više od 0x1f ima li neko podatak šta se ovde dešava?
SY
unknown.381dgrbic,
:: outp(0x20, 0x20);
::
:: ???????? 0x20 je intr kontroler, ali u HelpPC-u sam našao da na taj
:: port ne ide više od 0x1f ima li neko podatak šta se ovde dešava?
Interapt kontroler se resetuje da bi mogao da generiše naredni interapt.
Ako ovo ne staviš, zaludeće se tastatura, sat i sve ostalo što pokuša da
prekine procesor.
unknown.382ppekovic,
>> Ok, interesuje me gde se smešta ona promenljiva "broj" za svaki
>> "nivo" rekurzije, jer se očigledno svaki put, kako se program
>> vraća iz rekurzije, on povećava za jedan (ona stara vrednost sa
>> tog "nivoa" je negde smeštena, ali gde?) Kako kompajler zna sa
>> kog je nivoa npr. "broj=4" i kako ne pomeša promenljivu sa
>> vrednostima sa drugih nivoa?
žuva se na stack-u.
Paya
unknown.383obren,
> da, da, koristim, ali ni sa ovim ne mogu da sredim lako problem.
> ovim mogu da sredim problem delimično. ipak ću morati da isključim
> ctrl-break.
Napiši šta TAžNO želiš da se dogodi kada pritisneš CTRL-BREAK - možda
mogu da ti pomognem. Ne znam jel ti hoćeš da se tog trenutka izađe u dos
uz neku lepu poruku ili želiš da se onda izvrši neka funkcija pa da se
nastavi rad programa? Ili je možda nešto treće?
Pozdrav, Dragan
unknown.384mjova,
> Napiši šta TAžNO želiš da se dogodi kada pritisneš
> CTRL-BREAK - možda
ovo što ću sad da opišem rešio sam preuzimanjem int 9, ali to mi se ne
dopada iz drugih razloga.
u nekim slučajevima želim da onemogućim break, tako da se prekid
ostvari kad ja hoću (ako treba), a ne u svakom slučaju. dobro, bolje
je uvek zabraniti break nego ružan prekid u nezgodnom trenutku.
ctrlbrk() je fina funkcija, ali proces se ipak prekida. evo glupe
situacije. ne želiš da prekineš proces i daš da rutina za obradu
prekida ima samo return(TRUE); probaš da prekineš i primetiš ^C na
ekranu ;).
ako štampaš nešto na ekran, onda će se štampanje prekinuti, ispisati
^C, pozvati rutina za obradu break-a i nastaviti program, ali ne tamo
gde je prekinut! nego od sledeće linije koda. ovo je glup način za
kontrolu break-a i zato sam od ovoga odustao.
preuzimanje int 9 rešava ovaj problem u potpunosti ali mora velika
pažnja da se obrati na oslobađanje istog pri izlasku. zsa ovo je
zgodno koristiti konstruktor i destruktor.
SY
unknown.385radunovic,
Jesi li probao funkcije signal() i raise()?
unknown.386mjova,
> Jesi li probao funkcije signal() i raise()?
nisam, probaću, ali iz čiste radoznalosti ;) jer sam problem rešio na
drugi način koji mi se u potpunosti dopada. hvala na novoj ideji.
nešto se sad setih, ako pozoveš neki program kao child process, onda
se verovatno ne prenosi 'signal' pa to može da ima loše strane.
SY
unknown.387ljubao,
Oj, imam TC++ 1.0 i juče sam hteo da poludim. Naime, program je
čitao iz datoteke stringove napisane kao 'tekst'\n, a u programu je
bilo fscanf(fp,"'%(^')' ",ptr); (male zagrade u format stringu su naravno
srednje).
Program lepo pročita prvi string i onda nikako nije hteo LF. Probao
sam i \n i lupao svakakve gluposti i ništa. Na kraju sam morao da sa dva
fgetc pređem na sledeći string.
Takođe, nije čitao drugi string kada su bili u istom redu razdvojeni
blankovima.
Sada, zašto ovo ne radi (bag ili šta je već razlog), jer na Atariju
ovako čitanje je u redu, a i koliko ja znam, onaj blanko na kraju format
stringa treba da preskoči sve blankove, tabove i ostala čuda.
I na kraju, da li mogu (ako da, kako) da kažem linkeru koje
biblioteke da mi linkuje ili to C radi sam, tj. ako postoji funkcija
iz neke LIB u programu automatski je linkuje.
Ljuba
unknown.388mjova,
> Program lepo pročita prvi string i onda nikako nije hteo
> LF. Probao sam i \n i lupao svakakve gluposti i ništa. Na
> kraju sam morao da sa dva
za rad sa tekstovima imam neke rutine koje služe za uzimanje cele
linije, znaka, broja itd. ono što tebi treba je sledeća fn. obično
datoteke koje su ul/izl baferišem pre toga, radi brzine. a liniju uvek
učitam u buffer (ceo red) i ako nisu baferisane onda se ovim dovoljno
lepo radi..
char input_line[81];
//-------------------------------------------- get_ch
// uzimanje tekućeg karaktera,
// ako je kraj onda vraca CR (ako naiđe na \0 onda LF)
char get_ch(void){
if(!input_line[ch_add]) return(LF);
return(input_line[ch_add]);
}
//-------------------------------------------- get_nx
// uzima PRVI sledeci char
// vraca char, LF ako je kraj reda i CR ako je kraj fajla
// ovo možeš u c++ da razdvojiš na dve fn (overload)
char get_nx(int n){ // default n= 1
if(!n) return(get_ch());
while(n) {
n--;
ch_add++;
if(strlen(input_line) < ch_add) get_nl();
}
return(get_ch());
}
//-------------------------------------------- get_nl
// uzima ceo red i enter
char *get_nl(void){
fscanf(text, "%[^\n]", input_line); // do entera
fgetc(text); // i enter
ch_add= 0;
if(feof(text)) {
input_line[0]= CR, '\0';
return(input_line);
}
line_add++;
return(input_line);
}
SY
unknown.389ljubao,
Mogao sam i ja da izvodim takve egzibicije, ali nije to to. Osim
toga, pored stringova tu će se naći i neki brojevi, tako da ovo nema šanse.
Najverovatnije ću na kraju da stavim da mi se blankovi i ostalo smeštaju
u neki dummy string.
I dalje me zanima, zašto TC kada naiđe u format stringu na space, ne
preskače tabove i ostala čuda ?
Ljuba
unknown.390nandi,
> Sada, zašto ovo ne radi (bag ili šta je već razlog), jer na Atariju
> ovako čitanje je u redu, a i koliko ja znam, onaj blanko na kraju format
> stringa treba da preskoči sve blankove, tabove i ostala čuda.
tc na atariju nije kompatibilan sa ovim tc na pc. napr: neki
životićevi trivijalni primeri iz računara (baš nešto u vezi
učitavanja stringova) na atariju nisu radili korektno.
> I na kraju, da li mogu (ako da, kako) da kažem linkeru koje
> biblioteke da mi linkuje ili to C radi sam, tj. ako postoji funkcija
> iz neke LIB u programu automatski je linkuje.
otvoriš projekt, i samo navedeš biblioteku koju koristiš. ovo je
potrebno samo ako koristiš neke lib-ove sa strane (mislim da se kod
atarija trebala navoditi svaka biblioteka, ovde samo one koje ne idu
uz paket tc).
nandi
unknown.392ppekovic,
>> I dalje me zanima, zasto TC kada nai|e u format stringu na space, ne
>> preskace tabove i ostala cuda ?
? Pa zar nije tako logicno. Space je space a tab je tab. Ako bi
sve radilo po tvojoj ideji, onda bi nastao problem prvi put kada bi ti
bilo vazno sta je space a sta je tab.
A kad smo vec kod formata u scanf-u, mene je bas ovih dana namucio
sledeci problem. Trebao mi je jedan programcic koji bi analizirao fajl
sa pristiglim mail-ovima (na XENIX-u). Poruka se sastoji iz header-a i
tela poruke s tim, da bi se razlikovalo sta je sta, ova dva dela su
odvojena praznim redom, iliti jednim newline-om.
Tj. ne{to ovako:
Heder_red1\n
heder_red2\n
\n
telo_red1\n
telo_red2\n
Ako sa sledecim programom krenem da citam fajl:
while(!feof(mail))
{
fscanf(mail,"%[^\n]",str_red);
printf("%d %s\n",++line,str_red);
}
program ce pronaci 4 linije, tj. zanemarice onaj prazan red.
Ako u formatu dodam \n na kraju reda, ostaje sve isto.
Ostalo mi je jedino, da posle scanf, uradim:
ch1=fgetc(mail);
ch2=fgetc(mail);
ungetc(ch,mail);
ungetc(ch,mail);
pa da ispitujem da li je ch2=='\n'
Jel ima neko neko pametnije resenje?
Paya
unknown.393ljubao,
** otvoriš projekt, i samo navedeš biblioteku koju koristiš. ovo je
** potrebno samo ako koristiš neke lib-ove sa strane (mislim da se kod
** atarija trebala navoditi svaka biblioteka, ovde samo one koje ne idu
** uz paket tc).
Na Atariju sam mogao ručno da biram koje će sistemske biblioteke da
se linkuju.
A što se tiče PC-ja, znači on sam linkuje potrebne sys biblioteke.
Ljuba
unknown.394ljubao,
** ? Pa zar nije tako logicno. Space je space a tab je tab. Ako bi
** sve radilo po tvojoj ideji, onda bi nastao problem prvi put kada bi ti
** bilo vazno sta je space a sta je tab.
Ma može da bude kako hoćeš, samo da on preskače npr. sve blankove
kada mu stavim blanko u format string.
** Ostalo mi je jedino, da posle scanf, uradim:
**
** ch1=fgetc(mail);
** ch2=fgetc(mail);
Zbog toga sam ja i kukao između ostalog. Neće nikako da pročita new
line, već moram to da uradim 'ručno' (kao ti).
Ljuba
unknown.395ljubao,
Kakav je ono fajl u info direktorijumu ? Običan help ili nešto drugo
i da li vredi da ga DL ?
Ljuba
unknown.396mjova,
> Mogao sam i ja da izvodim takve egzibicije, ali nije to
> to. Osim toga, pored stringova tu će se naći i neki
> brojevi, tako da ovo nema šanse.
u prinpicu ;) standardne funkcije mi služe samo za proveru algoritma.
ono što sam ti dao je deo rutina koje uključujem ako je potrebno da
pročitam bilo kakav tekst. volim da program javi tačno mesto greške, a
to je moguće samo (meni je bar lakše) posebnim rutinama.
veoma retko se smisao prenosi u sledeći redi ili još gore da se smisao
protumači posle drugog reda, a da se onda mora čitati prvi radi
skupljanja potrebnih podataka.
ono što htedoh reći, treba imati neke fn() koje će čitati tekući znak,
sledeći, sledeću reč, broj, niz do znaka itd. nema toga puno, a
kasnije olakšava posao.
SY
unknown.397bulaja,
│Kakav je ono fajl u info direktorijumu ? Obican help ili nesto drugo
│i da li vredi da ga DL ?
└───
Koji file? BCHelp? Vredi.
unknown.398ppekovic,
>> Ma moze da bude kako hoces, samo da on preskace npr. sve blankove
>> kada mu stavim blanko u format string.
Pa to i radi ;) Npr. ako stavis sscanf(str1," %s",str2); a
str1=" bla_bla", str2 ce biti = "bla_bla". Dakle, ovo radi,
medjutim, ti si prvo pitao zasto kad se stavi blanko ne preskace i
tab-ove. Ovo je vec logicno sto ne radi.
>> Zbog toga sam ja i kukao izmedju ostalog. Nece nikako da procita
new
>> line, vec moram to da uradim 'rucno' (kao ti).
file: R E D _ 1 \n
R E D _ 2 \n
\n
R E D _ 3 \n
Ako das:
fscanf(file,"%[^\n]",str1); u str1 ce biti "RED_1" a filepointer
ce pokazivati na newline na kraju prvog reda. Biser je sto ako zadam
opet isti fscanf, on procita i drugi red, iako mu u formatu nigde
nisam dao da cita onaj new_line.
Ako pa zadas fscanf(file,"%[^\n]\n",str1); u str1 ce opet biti
"RED_1", ali }e fp pokazivati na pocetak red_2. Ako opet ponovis istu
komandu, str1="RED_2", a fp->RED_3.
Znaci fscanf cita! new_line, al ga ne pamti nigde ;((((
dgrbic i mjova su mi rekli da postoje izvesne razlike izmedju MSC-
a i TC-a. Ovo sto sam ja naveo vazi za C na Xenix-u.
Paya
unknown.399nesavic,
Ako li ko ima neki lepi modul sa prozorima na Cu, neka mi posalje...
Unapred zahvalan, NeŠa!
unknown.400janko,
> //-------------------------------------------- get_nl
> // uzima ceo red i enter
:(
Ja nikad ne bih koristio takvu rutinu, kakvu si ti predložio, u
svom programu, iz prostog razloga što ova, i ekvivalentne koje
koriste standardne rutine C-a 'nemaju meru.' Znači da će ti
program SIGURNO poludeti ako mu poturiš dovoljno dugu liniju :)
A već sam pisao da je i upotrebna vrednost gets f-je, u kojoj se
navodi dužina linije, takođe diskutabilna, jer ta f-ja nekada
pročita NL a nekad ne, kako joj se svidi, pa dolazi do
nepredvidivog ponašanja kada su linije u tekstu duže nego parče
što mi želimo da učitamo.
Rešenje: lepo uzmeš pa napišeš gets_j, koja u petlji koristi smo
getc naredbu, a ostalo radi sama. I ne može da se zbuni. I čita
(i prepoznaje) i one linije koje su prazne. Itd. itd.
Stvarno nije neka velika mudrost, to bi svaki C programer trebalo
da može da uradi kao vežbicu, pre doručka. :)
(A i uklapa u 6 linija koda, koje su dnevna produktivnost onih
Microsoftovih programera, i u moju tvrdnju da je moja
produktivnost jedna procedura/fja dnevno ;>
------Ovde iseci-----
int fgets_j( char* s, int n, FILE* f ) ??<
register char* p=s; register int c;
if (feof(f)) ??< *p=0; return EOF; ??>
for (c=fgetc(f); c!=EOF && c!='??/n'; c=fgetc(f)) if (p-s<n) *p++=c;
*p=0; return p-s;
??>
------Ovde iseci------
Ko kaže da ne može i C i juski zajedno? :) Ne znam za MSC, ali
za BC pre prevođenja ovu rutinu propustite kroz TRIGRAPH program.
BACITE pogled i na prilično lep rezultat prevođenja ove rutine
pomoću BC 2.0, u small modelu, koji je ipak gori od ljudskog.
Uspeo je da samo jednom ima sekvencu poziva fgetc, i da van
petlje stavi dodelu fajl pointera, ali.. Promenljiva c je mogla
da se smesti u, naprimer, BX registar, bez problema, a nije umeo
(iako je prevođen sa tom opcijom) da optimizuje korišćenje
registara ni kada proverava EOF i NL, što je dosta čudno. Takođe,
bilo bi bolje da se tako elemetarna funkcija kao fgetc realizuje
inline, dakle, da nema overheda CALL sekvence, što bi bilo
moguće, jer fgetc može biti kratka, sama po sebi.
Zaključak: moglo bi još malo da se optimizuje, ali i ovako je,
ipak, lepo. Neko je rekao da današnji C kompajleri daju bolji kod
od 90% asemblerskih programera. Za BC, ipak, to još ne važi. Ako
nekog ne mrzi, nek pusti ovu rutinu i kroz MSC 6.0, sa uključenim
svim optimizacijama i small modelom pa da uporedimo koji je
bolji. Isto važi i za korisnike BC 3.0, iako vrlo verovatno da
nema razlike.
(Priložen samo relevantan deo)
; register char* p=s; register int c;
mov si,word ptr Šbp+4Ć ;jedan red, kao i Bog sto bi uradio :)
; if (feof( fp )) š *p=0; return EOF; ć
test word ptr Šdi+2Ć,32 ; if feof(f) ..
je short č1č74
mov byte ptr ŠsiĆ,0 ; *p=0
mov ax,65535 ; EOF
jmp short č1č242
č1č74:
jmp short č1č146
č1č98:
; for (c=fgetc(fp); c!=EOF && c!='Đn'; c=fgetc(fp)) if (p-s<n) *p++=c;
mov ax,si ; if (p-s<n)
sub ax,word ptr Šbp+4Ć ; p-s
cmp ax,word ptr Šbp+6Ć ; <n ?
jge short č1č146
mov al,byte ptr Šbp-2Ć ; al = c
mov byte ptr ŠsiĆ,al ; *p = al
inc si ; p++
č1č146:
push di ; c=fgetc(f)
call near ptr _fgetc ; primetite da je poziva samo na jednom
inc sp ; mestu!
inc sp ;
mov word ptr Šbp-2Ć,ax ; if ( c!=EOF && c!=NL )
cmp word ptr Šbp-2Ć,65535 ; da je ovde AX, bio bi genije!
je short č1č218 ; a ovako...
cmp word ptr Šbp-2Ć,10 ; isto i ovde...
jne short č1č98
č1č218:
; *p=0; return p-s;
mov byte ptr ŠsiĆ,0 ; *p=0
mov ax,si ; p
sub ax,word ptr Šbp+4Ć ; -s
č1č242:
; ć
unknown.401mjova,
prvo ću da skratim tvoju fn u jedan red, a onda malo da se raspišem:
- tvoja fn je samo osakaćena fscan:
fscanf(f, "%n[^\n]", s);
┌───────┘
└── ovo je broj, treba staviti cifre (dužina
buffer-a).
> Ja nikad ne bih koristio takvu rutinu, kakvu si ti
pa naravno, od tebe me to i ne čudi ;). kako si počeo poruku mislio
sam da ću videti nešto novo... kad ono jok.
već u prvoj liniji primetio sam nešto što mi je ukazalo na to šta mogu
da očekujem posle ;). znak '*' se obično piše uz onu promenljivu koju
treba da definiše. ako napišeš:
char* s, p, t;
onda možeš da previdiš činjenicu da 'p' i 't' nisu pointeri, a po
pisanju tako deluje. unarni operatori se uvek pišu uz promenljivu,
samo radi čitljivijeg koda. ti, naravno, piši kako voliš, ovo ti dajem
mali savet.
a sad što se tiče tvoje fn(). ono što mi se ne dopada to je brdo
parametara koji su, po meni, mnogobrojni. one fn koje sam izložio ovde
dovoljno su skraćene (jer nema potrebe da ih pišem u celosti samo da
bih pokazao algoritam). pa mi je promakla jedna brojka:
fscanf(text, "%80[^\n]", input_line); // do entera
onaj broj (80) je u stvari broj kojim sam definisao maksimalnu dužinu
bafera. a kasnije ima još nekoliko redova koji sređuju promenljive
(line_add), uzimanje '\n', itd.. pri sledećem pozivu ove fn, učitava
se nastavak reda. ako učita menje od 80 znakova (vraća broj pročitanih
znakova) onda uzimam '\n', uvećavam line_add itd.
glupo mi je da pozivam fn sa mnogo parametara. to mi se ni malo ne
dopada. kad vidim sarmu u deklaraciji odma mi se smuči. zato i
koristim c++ jer ima default vrednosti parametara, overload fn i još
dosta toga.
SY
unknown.402wizard,
>> Rešenje: lepo uzmeš pa napišeš gets_j (...)
gets_j(anko)? :)
<<Nenad<<
unknown.403ljubao,
** Pa to i radi ;) Npr. ako stavis sscanf(str1," %s",str2); a
** str1=" bla_bla", str2 ce biti = "bla_bla". Dakle, ovo radi,
** medjutim, ti si prvo pitao zasto kad se stavi blanko ne preskace i
** tab-ove. Ovo je vec logicno sto ne radi.
Radi na početku teksta i kod mene. Verovatno sam posle stringa imao
i tabove pa nije radilo. U svakom slučaju, probaću večeras.
A što se tiče LF-a, nikako nisam mogao da ga pročitam, mada nisam
čitao sa "%[^\n]" (probaću još jednom ako budem imao vremena da se zezam).
Ljuba
unknown.404janko,
>>> Rešenje: lepo uzmeš pa napišeš gets_j (...)
>
> gets_j(anko)? :)
Naravno. Kako bih razlikovao moju f-ju od bibliotečke?
Slobodno je nazovi gets_n, ili bilo kako drugačije. :)
unknown.405amilanov,
Jedna interesantna stvar mi se "slučajno" iz zaboravnosti dogodila.
Sledeći "program" se bez problema kompajlira u svim Borlandovim C++
kompajlerima od 1.0 preko 2.0 do 3.0 :
#include <dos.h>
int main (void)
š
clrscr();
printf ("Hello, world /n");
getch();
return 0;
ć
Omaškom sam zaboravio da includujem conio.h, gde se nalazi deklaracija
za clrscr(), ali sve je prošlo bez worningsa, a kamoli bilo kakvih errora.
Primer je dat bez veze, ali gde god da zovnem clrscr() f-ciju, iz bilo kog
programa, ovo ovako BEZ conio.h radi odlično. Gde mi je deklaracija za
clrscr() ? Zar je moguće da negde postoji pointer na ovu funkciju, i
bez deklaracije, što bi bilo krajnje začuđujuće, da ne kažem bezobrazno :)) !
Dali je clrscr() tolko specijalna f-cija, da joj ne treba deklaracija ?
Dosad se nisam susreo sa nekim "vanzemaljskim" opisom ove funkcije, sem
normalnog i klasičnog, šta radi, gde joj je deklaracija i sl. Dali postoji
nešto što ja neznam, ili nisam saznao ? Razmišljanja ???
pozdrav milanov
P.S. Izgleda šašavo, ali meni je EXE cod kraći ( a i radi ) ! :)))))) !
unknown.406dusanp,
=> deklaracija ? Dosad se nisam susreo sa nekim
=> "vanzemaljskim" opisom ove funkcije, sem normalnog i
=> klasičnog, šta radi, gde joj je deklaracija i sl. Dali
=> postoji nešto što ja neznam, ili nisam saznao ?
=> Razmišljanja ???
To se i meni dešava, i to sa puno f-ja (radi se o BC++ 2.0)
To mi se toliko dopalo da sad programe pišem otprilike ovako:
Napišem program bez include direktiva, pa ga iskompajliram.
Ako ne prijavi greške, ok, a ako prijavi onda uradim još
prljaviju stvar. Naime, u helpu postoji i kompletna deklaracija
f-je, koju ja dopisem na početak programa. To radi 100%, a
vreme kompajliranja je dosta smanjeno, jer se ne usporava nepo-
trebnim funkcijama.
unknown.407mjova,
> Omaškom sam zaboravio da includujem conio.h, gde se nalazi
> deklaracija za clrscr(), ali sve je prošlo bez worningsa,
> a kamoli bilo kakvih errora.
probao sam i ne radi tj. ne kompajlira do kraja. kuka da nisu
deklarisane neke fn. mislim da bi ipak trebalo da vodiš računa o tome
da uključiš sve potrebne *.h jer može doći do čudnih (sasvim logičnih)
bagova. dovoljno je bar da upišeš kako izgleda sintaksa. ako ne upišeš
to, onda se parametri mogu pogrešno tumačiti...
SY
unknown.408amilanov,
>> To se i meni dešava, i to sa puno f-ja (radi se o BC++
>> 2.0) To mi se toliko dopalo da sad programe pišem
>> otprilike ovako: Napišem program bez include direktiva,
>> pa ga iskompajliram. Ako ne prijavi greške, ok, a ako
Pa dobro bre ljudi, jer nas to Borland vuče za nos, ili ... :)))
Sad umesto OOP, Borland lansira FOP ( Function Oriented Programing :)) ),
uz koncepciju IIWIW ( If It Works It Works ) dodajući TBC ( Try Before
Compile ) opciju :))) ! Interesantno, veoma interesantno. Šta kažu
iskustva drugih o ovom "fenomenu" ?? Jasno je da je portabilnost ovakvog
sourcea == 0 , ali ako radi sa puno funkcija, ćemu hederi i deklaracije
pa i pointeri na te funkcije koji troše memoriju "bespotrebno".
Ako je budućnost C jezika C+++ na bazi FWD ( Functions Without Declarations )
ja sam ZA :)))) ! Lakše je za pisanje, a i kod je kraći :))) ! Kako stoje
stvari kod MS C ? Is this a bug or feature ??
pozdrav amilanov
P.S. Sve korišćene skraćenice su Copyright amilanov :))))) !
unknown.409amilanov,
>> probao sam i ne radi tj. ne kompajlira do kraja. kuka da
>> nisu deklarisane neke fn. mislim da bi ipak trebalo da
>> vodiš računa o tome da uključiš sve potrebne *.h jer može
>> doći do čudnih (sasvim logičnih) bagova. dovoljno je bar
>> da upišeš kako izgleda sintaksa. ako ne upišeš to, onda
>> se parametri mogu pogrešno tumačiti...
Ha, otkrio sam u ćemu je stvar, mada eto čovek se može i ovako opeći.
U meniju OPTIONS/COMPILER/C++ OPTIONS, TREBA podesiti switcher kod opcije
Use C++ Compiler na C++ Always. Do rešenja sam došo uz pomoć nandija, koji
mi je ovo reko u private mailu, ali sam ja nešto zabrljao oko switchera, pa
prvi put nije išlo. Znači stavite opciju USE C++ COMPILER na CPP EXTENSION
pa uživajte u compilovanju "BEZ" hedera :)))) ! Usput, ova opcija je
kod mene DEFAULT pri instalaciji. Baš stoga ostaje "gorak ukus" da C++
"propušta" stvari koje ne sme da radi, a na kraju sve to i radi :).
Mogli su ( po meni ) da DEFAULT stave na C++ Always. Ustvari, kad bolje
razmislim, oni to sve lepo opisuju u manualu !!!!
Ah, da manual ... :))))))))))))))))))))) !
P.S. Jedno iskustvo više, nije na odmet. Naučili smo gde "curi", pa sad
možemo i da "zatvorimo slavine" :))).
P.P.S. U pravu si da može doći do čudnih, i sasvim logičkih bagova. To sam
i bio tražio, prosto vapio da dobijem, ali ništa od toga. I posle kažu da
su DEFAULT opcije (gotovo) idealno izabrane. SVAŠTA ! :))) !
pozdrav amilanov
unknown.410janko,
> programa, ovo ovako BEZ conio.h radi odlično. Gde mi je
> deklaracija za clrscr() ? Zar je moguće da negde postoji
> pointer na ovu funkciju, i bez deklaracije, što bi bilo
> krajnje začuđujuće, da ne kažem bezobrazno :)) ! Dali je
> clrscr() tolko specijalna f-cija, da joj ne treba
> deklaracija ? Dosad se nisam susreo sa nekim
> "vanzemaljskim" opisom ove funkcije, sem normalnog i
> klasičnog, šta radi, gde joj je deklaracija i sl. Dali
> postoji nešto što ja neznam, ili nisam saznao ?
> Razmišljanja ???
Nema tu razmišljanja, 'nagazio' si na našto što bi moglo da se
nazove 'opšta kultura C-a.' Ništa specijalno a kamoli
vanzemaljski.
Stari, K&R C je zamišljen kao jedan jako mali programski jezik,
u kome se mnogo toga podrazumevalo. Konkeretno, nije bilo
potrebno da funkcija deklariše, ako je vraćala int i ako su,
koliko se sećam, parametri u pozivu svi int, ma koliko ih
bilo.
Problem je bio taj što tako kompajler nije mogao da proverava
da li smo napisali ono što smo želeli, ili smo mislili jedno a
napisali drugo, u pozivima f-ja. Na svu sreću, postojao je
poseban program, koji je dosta toga umeo da otkrije.
Da ne dužim, to što ti to uspeva je rudiment, jer ANSI je
predvideo da prevodioci po ANSI standardu prevode programe
starog stila. Da si pisao C++ program, (ekstenzija .cpp)
prevodilac bi ti javio GREŠKU bez pardona, jer C++ prevodilac
nije dužan da 'miluje' stare programe.
Inače u .H datotekama se nekakvi pointeri na f-je NE deklarišu.
Ako imaš nameru da ozbiljno pišeš (znači više od par stotina
linija) na C-u, trebalo bi da dobro shvatiš i koncept .H
datoteka.
U onom programu ti fali i #include <stdio.h> (za printf) a
#include <dos.h> ti je suvišno (druge dve f-je su iz conio.h).
Bottom line: možeš tako da radiš, (što si i sam otkrio) ali to
je, po današnjim merilima, 'hakerisanje.'
Da bi ti sve bilo jasnije, preporučujem ti da proučavaš knjige
'The C Programming Language,' Brian W. Kernighan, Dennis M.
Ritchie, first edition, a zatim i knjigu istog naslova, ali
second edition. U 1st ed. je upravo 'definisan' (tj. predložen)
ono što je posle nazvan "K&R C," a u 2nd ed. samo uključen
ANSI C, koji je nastao mimo autora. Upravo u razlikama se kriju
objašnjenja. Inače, bez poznavanja njih, ili nekih adekvatnih
knjiga tog nivoa, teško da možeš da kažeš da znaš C.
unknown.411amilanov,
>> Nema tu razmišljanja, 'nagazio' si na našto što bi moglo
>> da se nazove 'opšta kultura C-a.' Ništa specijalno a
>> kamoli vanzemaljski.
Ma, to o vanzemaljskim, sam namerno stavio u navodnike, više da
"popalim strasti" (kako bi inače drugi probali isti primer ;)) ),
nego da bilo šta prejudiciram. Šta je bilo posredi pojasnio sam u
prethodnoj poruci, koju si pročitao ( valjda :) ). O 'opštoj
kulturi C-a', ;)), ne bi sada, ovde. Pre bi se reklo da je u pitanju
večna boljka, (ne)imanje manuala, u kome je sve lepo opisano, po pitanju
switchera, zar ne.
>> Stari, K&R C je zamišljen kao jedan jako mali programski
>> jezik, u kome se mnogo toga podrazumevalo. Konkeretno,
>> nije bilo potrebno da funkcija deklariše, ako je vraćala
>> int i ako su, koliko se sećam, parametri u pozivu svi
>> int, ma koliko ih bilo.
>> Problem je bio taj što tako kompajler nije mogao da
>> proverava da li smo napisali ono što smo želeli, ili smo
>> mislili jedno a napisali drugo, u pozivima f-ja. Na svu
>> sreću, postojao je poseban program, koji je dosta toga
>> umeo da otkrije.
Hvala, na digresiji ! Ovo nisam znao. Mlada sam ti ja "klasa" :)) !
>> Da ne dužim, to što ti to uspeva je rudiment, jer ANSI je
>> predvideo da prevodioci po ANSI standardu prevode
>> programe starog stila. Da si pisao C++ program,
>> (ekstenzija .cpp) prevodilac bi ti javio GREŠKU bez
>> pardona, jer C++ prevodilac nije dužan da 'miluje' stare
>> programe.
Pa to sam baš i u prethodnoj poruci kritikovao. Borland prodaje C++
kompajler, pa je logično da DEFAULT postavi C++ kompajliranje, tojest
Use C++ Always. Kako ne volim previše ( bez uputstava ) da čačkam
po switcherima, ja skoro uvek ( iz iskustva ) ostavim osim par stvari
koje sigurno znam šta rade, DEFAULT. To je cela priča. Ah da program je
bio .c, u pravu si ono za .cpp. Al možda je ovako i bolje, čovek uči
( bez manuala :)) ) dok je živ.
>> Inače u .H datotekama se nekakvi pointeri na f-je NE
>> deklarišu. Ako imaš nameru da ozbiljno pišeš (znači više
>> od par stotina linija) na C-u, trebalo bi da dobro
>> shvatiš i koncept .H datoteka.
U pravu si. Ništa bez dobrog poznavanja .h datoteka. Kad njih skratim,
tojest izbacim deklaracije funkcija koje ne koristim u zadatom programu
kod izađe kraći. Upravo radim na programu koji bi trebao da pravi
leksičku analizu .h datoteka, i da (ako uspem :)) ) pre kompilacije,
"izbaci" nepotrebne prototipe, ostavljajući samo onaj deo .h koji zaista
koristim u programu, pa to i includuje. Možda to i prodam Borlandu :))))) !
Naravno tad nema precompile headere, ali ... Nobody is perfect Automen :)) !
E, da. Nismo se razumeli. U "panici" sam pitao gde mi je pointer na
funkciju ( ne u .h nego naravno u memoriji, a gde bi ;)) ).
>> U onom programu ti fali i #include <stdio.h> (za printf)
>># a include <dos.h> ti je suvišno (druge dve f-je su iz
>> conio.h).
Tačno ! Primer sam Cut & Paste direktno iz jednog malo većeg (mojeg ;) )
programa, u editor, pa dodao klasiku od HELLO WORLD, tek da se nadje :)) !
Pri tom sam zaboravio da dodam prave hedere. Al i bez njih je TO išlo ko
što treba.
>> Bottom line: možeš tako da radiš, (što si i sam otkrio)
>> ali to je, po današnjim merilima, 'hakerisanje.'
Fakat ! A i ne isplati se tako, nije p(rofi)ortabilno :))) !
>> Da bi ti sve bilo jasnije, preporučujem ti da proučavaš
>> knjige 'The C Programming Language,' Brian W. Kernighan,
>> Dennis M. Ritchie, first edition, a zatim i knjigu istog
>> naslova, ali second edition. U 1st ed. je upravo
>> 'definisan' (tj. predložen) ono što je posle nazvan "K&R
>> C," a u 2nd ed. samo uključen ANSI C, koji je nastao
>> mimo autora. Upravo u razlikama se kriju objašnjenja.
>> Inače, bez poznavanja njih, ili nekih adekvatnih knjiga
>> tog nivoa, teško da možeš da kažeš da znaš C.
Ovom tvom savetu za početnike u C programiranju, dodao bih i izvrsnu
knjigu "C++ Programing Language" gurua, i oca C++ jezika, Bjarnea
Stroustrupa. Izvrsna je ( a i programi su .cpp, pa nema za**bancije
sa .h datotekama :))) ).
NARAVOUžENIJE ( po 1000.. put ) : When everything fails, read the manual !
Korolar AMILANOVA: If you have manual ! :)))) !
Pozdrav amilanov !
unknown.412dusanp,
=> Pa to sam baš i u prethodnoj poruci kritikovao. Borland
=> prodaje C++ kompajler, pa je logično da DEFAULT postavi
=> C++ kompajliranje, tojest Use C++ Always. Kako ne volim
=> previše ( bez uputstava ) da čačkam po switcherima, ja
=> skoro uvek ( iz iskustva ) ostavim osim par stvari koje
=> sigurno znam šta rade, DEFAULT. To je cela priča. Ah da
=> program je bio .c, u pravu si ono za .cpp. Al možda je
=> ovako i bolje, čovek uči
Ne slažem se da je C++ Always logično. Recimo da pišeš
par projekata, jedan u C-u a drugi u C++. Ako ne bi bilo
"C++ extensions only" onda bi morao da svaki čas /dobro,
kad se umoriš od jednog programa i radiš drugi/ ulaziš u
options itd,itd. Ovako, samo jedan program bude .c a drugi
.cpp i Borland sam dalje brine o prevođenju. Takođe, neke
stvari je lakše uraditi u standardnom C-u negu u C++, bar
dok OOP ne uđe pod kožu.
Nemo' neko Borland da mi dira...
unknown.413pmsimic,
Napisao sam program za zastitu od kopiranja u TC++ 2.0 . Molio bih da mi neko
objasni kako napraviti od toga odgovarajucu funkciju za CLIPPER koja se moze
pozvati sa CALL iz CLIPPER-a. Molim primer. Molim i primer za linkovanje
za PLINK86 ili kako vec treba.
Unapred zahvalan PMSIMIC iz Pristine
unknown.414bambi,
Da li neko zna kako da uklonim bedni cursor u Turbo C-u?
unknown.415dusanp,
=> Da li neko zna kako da uklonim bedni cursor u Turbo C-u?
Sa _setcursortype (_NOCURSOR) uklanjas kursor.
Sa _setcursortype (_NORMALCURSOR) vracas kursor na normalu.
Sa _setcursortype (_SOLIDCURSOR) kursor prelazi u pun kvadrat.
unknown.416janko,
> Da li neko zna kako da uklonim bedni cursor u Turbo C-u?
Evo rešenja nezavisnog od jezika:
Pozivom BIOS interapta 10
sa ah=1
ch=20h
cl=0
Ne sećam se da li je TC 2.0 imao _setcursortype f-ju. Potraži u
helpu, pa ako nema, uradi ovo gore. BC 2.0 ima.
unknown.417mjova,
> 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,
> 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,
-> 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,
>> 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,
=> 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,
Da, znam za taj lepi primer, danke
unknown.430prvul,
Ů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,
> 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,
> 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,
> 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,
ű> 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,
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,
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,
=> 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,
>> 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,
>> 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,
/ Zna li neko gde se tako nesxto mozxe nacyi, ko ga proizvodi, prodaje,
Set code maguar?
Bue_ Ndragan
unknown.447viktor,
Zdravo,
>>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,
││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,
Dugačak je, dugačak ... B((
unknown.451madamov,
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,
>> Zeleo bih da nisam u pravu. Molim te, demantuj
>> me.
U pravu si ;( Eh kad ne čitam svaku reč. Izvini.
darone
unknown.454dusanp,
=> 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,
/ 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,
>> 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,
>> 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,
> - 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,
*****
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,
> 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,
>> 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,
> 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,
> 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,
> 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,
>> "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,
> 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,
> 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,
> 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,
/ 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,
> 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,
=> 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,
> 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,
> 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,
> 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,
=> 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,
> 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,
>> 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,
> 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,
> 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,
>>> 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,
Evo 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,
=> 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,
/ 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,
/ :( /naježila mi se kosa na glavi/
Ovo je jedan od boljih u poslednje vreme. Svaka čast.
unknown.495dejanr,
>> 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,
> 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,
>>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,
ű> 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,
> 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,
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,
>> 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,
> 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,
> 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,
>> 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,
> 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,
> 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.
unknown.518mjova,
> 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
trenutno mi v3.0 nije tu, a i da jeste, na to đubre neću ni da
pomislim. definitivno sam razočaran u tu verziju.
inače, što se tiče pitanja bufferisanog r/w, problem je rešen, ali sam
ipak promenio koncepciju. mislio sam (a i sasvim je logično) da čita
iz bafera dok ne promenim neki od parametra ili pročitam ceo. za mene
su ti baferi skroz transparentni i kao programera ne treba da me
zanima način na koji se datoteka učitava...
zar nije logičnije da se prevođenje cr/lf u lf obavlja pri čitanju iz
bafera? ono kako je sad je skroz glupavo. ok, možda ima neke
prednosti, ali trenutno ih ne vidim ;)
posle promene treba bafer isprazniti ili ga ukinuti. ono prvo nije mi
poznato, a ovo drugo se radi sa setbuf() (ne provereno, ali radi ;).
SY
unknown.519mjova,
> 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?
pogledaj: spawn*() set funkcija.
SY
unknown.520ppekovic,
>> 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?
Na MSC-u, a čini mi se da je isto ili slično na TC-u, imaš čitavu
gomilu exec* i spawn* funkcija. Uostalom, pogledaj u helpu system()
funkciju pa pogledaj "see also".
Paya
unknown.521todorp,
Hi!
Hvala tebi i ppekovicu.Resio sam problem sa spawnl().
Pozdrav od Todora.
unknown.522djelovic,
> Moze li mi neko preporuciti neku biblioteku funkcija za rad sa bazama
> podataka u High C-u.
Pošto High C i Watcom C oba prave prave programe u 386 režimu,
onda si ograničen na biblioteke za koje imaš source za MSC sa koji su
oba ova kompajlera kompatibilna (Watcom sigurno, za High mislim da
jeste). Ukoliko si spreman da daš neku paru reci, pa ću ti par adresa u
Americi na koje da se javiš. Ukoliko ti treba sirotinjska verzija, imaš
ovde na Sezamu biblioteku po imenu CBASE koja nit' je previše laka, nit'
je previše brza. Izmađu nje i Clippera pre bi izabrao Clipper!
No, ne znam zašto sebe ograničavaš na 386 kompajlere? U radu sa
bazama podataka brzina procesora i veličina radne memorije nisu previše
bitni, pre je važan dobar keš i brz disk, na operacije sa diskom ionako
otpada većina vremena. Zato ti preporučujem da isprobaš MSC ili BC sa
nekim DB menadžerom, recimo BTREAVE-om. Najefikasnije rešenje.
P.S. Povodom neke diskusije pre jedno mesec dana ovde: Nejbrže baze
podataka na mreži ne pravi ni Clipper, ni BTREAVE ni bilo šta od vama
poznatih alatki. Najbrža je jedna implementacija Kobola, zaboravio sam
ime, ali ako nekoga zanima iščačkaću. Boj ne bije jezik, već boj bije
onaj ko pravi kompajler.
unknown.523radunovic,
Pitanje sam postavio na molbu jednog druga koji bi baze koristiou okviru
autocad-a pa je samim tim ogranicen na 386 kompajlere.
unknown.524djelovic,
> > Pazi: Klasa A nasleduje klasu D pa prema tome *nema ni govor
> > instancu kase D mozes da pretvoris u A.
>
> Mogu preko pointera ili reference.
Q. What potential problems can arise from typecasting a base
class pointer into a derived class pointer so that the derived
class's member functions can be called?
A. Syntactically this is allowable. There is always a possibility of
a base pointer actually pointing to a base class. If this is
typecast to a derived type, the method being called may not exist
in the base class. Therefore, you would be grabbing the address of
a function that does not exist.
unknown.525bojt,
>> Pošto High C i Watcom C oba prave prave programe u 386 režimu...
Jesi li imao prilike da vidiš NDP C 386 ?
unknown.526kuzma,
HELP!
Jednom kolegi su potrebna znacenja sledecih prekidaca kod Microsoft-
ovog C-a:
/AL /Od /c
Pa ako je neko raspolozen nek napise
unknown.527bojt,
>> Jednom kolegi su potrebna znacenja sledecih prekidaca kod
>> Microsoft- ovog C-a: /AL /Od /c
/AL - Large memory model
/Od - disable optimization
/c - compiling without linking
unknown.528kuzma,
Hvala!
unknown.529dnikolic,
Imam jedan problem sa CBASE-om. Program ( koji pisem ) kreira i otvori tri
baze. Sve operacije sa podacima i samim bazam idu OK do izlaska iz programa.
Ponovnim startovanjem programa, sve funkcije i operacije rade OK izuzev jedne
u kojoj se vrsi tabelaran prikaz podataka, i u kojoj su otvorene sve tri baze.
Program otvori prve dve, a za trecu prijavi gresku. Ovo se desava stalno, bez
obzira kojim redosledom otvaram baze - treca se ne moze otvoriti. Po izlasku iz
ove funkcije, ostatak programa radi kao i pre - odlicno. Ne znam da li je ovo
vezano sa CBASE ili za nesto drugo. U CONFIGu je FILES=80.
dn
unknown.530ppekovic,
Potrebno mi je da računar generiše slučajne brojeve izmedju 0 i 9,999,999.
Funkcija rand() iz MSC-a generiše slučjne brojeve izmedju 0 i 7fff. Jel ima
neko ideju, ili neku funkciju koja generiše long slučajne brojeve?
Paya
unknown.532dejanr,
Ako "pristaješ" na funkciju koja radi sa racionalnim brojevima, imam ja
veliki izbor. Ako mora celobrojna, nemam.
unknown.534ppekovic,
>> Ako "pristaješ" na funkciju koja radi sa racionalnim brojevima,
>> imam ja veliki izbor. Ako mora celobrojna, nemam.
Pa ako generiše dovoljno veliki broj raličitih racionalnih brojeva (>
9,999,999) onda naravno da može. Da bi se od toga napravilo ono što meni treba
je potrebno najobičnije linearno preslikavanje. Dakle, šalji!
Paya
unknown.535janko,
> Funkcija rand() iz MSC-a generiše slučjne brojeve izmedju
> 0 i 7fff. Jel ima neko ideju, ili neku funkciju koja
> generiše long slučajne brojeve?
Baci pogled kod Knuta. Nema potrebe da radiš sa realnim, što ti
predlaže Dejan, sve se lepo može uraditi sa intidžerima. U ovom
slučaju, sa long-om. Realizacija prizvoljnih RND generatora se
na ETF-u, otsek RT uči još na trećoj godini. ;)
unknown.536ppekovic,
>> Realizacija prizvoljnih RND generatora se
>> na ETF-u, otsek RT uči još na trećoj godini. ;)
Da, učio sam to u III godini ali matematičke gimnazije, ali, pošto
generator slučajnih brojeva spada u tzv. "ne izmišljaj toplu vodu" algoritme,
pitao sam jel ima neko gotov algoritam, a ja sam se u medjuvremenu bacio na
druge "ne izmišljam toplu vodu" stvari.
Paya
unknown.537mjova,
> ove funkcije, ostatak programa radi kao i pre - odlicno.
> Ne znam da li je ovo vezano sa CBASE ili za nesto drugo. U
> CONFIGu je FILES=80.
mislim da ima problema oko većeg broja otvorenih fajlova od 20.
računaj da je 5 osnovnih pa ti ostaje samo 15. e, sad ako se baza
sastoji od više fajlova (indexi, podaci itd) možda pri otvaranju
poslednje baze imaš previše otvorenih fajlova.
dakle, ono files u config.sys-u ne rešava problem.
SY
unknown.538mjova,
kako mogu da dobijem ispravnu adresu člana nekog objekta?
konkretno, ako je neki član objekta definisan kao interrupt handler,
kako mogu da uradim setvect(), a da mi kompajler ne javlja grešku u
stilu: 'Use :: to take the address of a member function'. kako glasi
red u kome se dodoeljuje nova adresa nekom interaptu, ali tako da je
data fn član neke klase.
SY
unknown.539djelovic,
> Potrebno mi je da racunar generise slucajne brojeve izmedju 0
> Funkcija rand() iz MSC-a generise slucjne brojeve izmedju 0 i
> neko ideju, ili neku funkciju koja generise long slucajne broj
Kod mjove su mi Dr. Dobbs-ovi, neka ti u jednom od njih potra`i algoritam
pod imenom r250. Te{ko da }e{ na}i bolji, makar i kod Knuta.
unknown.540djelovic,
> kako mogu da dobijem ispravnu adresu clana nekog objekta?
Pogledaj za to {to te zanima u BCHELP datoteci koju ima{ u /IBMPC/INFO.
Ukratko, koristi se sintaksa klasa::*funkcija za pointer na f-ju. No, kako tebi
treba kori{e}enje interapta, to je druga pri~a. Interapt ne mo`e da pokazuje na
~lana klase zbog skrivenog parametra this. Umesto toga mo`e{ interapt da
usmeri{ na stati~ki ~lan klase, a on mo`e da poziva neku drugu funkciju preko
za to odre|enih pravila. Ako treba jo{, vikaj.
unknown.541obren,
> konkretno, ako je neki član objekta definisan kao interrupt handler,
> kako mogu da uradim setvect(), a da mi kompajler ne javlja grešku u
> stilu: 'Use :: to take the address of a member function'.
Isti problem je i mene mučio pre mesečak dana dok ne nađoh uzrok:
"Member function pointers are not true pointer types, and do not refer to
any particular instance of a class."
Posle sam se oprostio od interapt handlera u okviru klase, mada ko zna,
možda je ipak moguće?
unknown.542cacxa,
...
char zn;
if(*bafer==0)
{
cin.get(zn);
*bafer++ = zn;
char* p = bafer;
*p++ = zn;
while (cin.get(zn) && zn!='\n') *p++ = zn;
cin.putback(zn);
*p=0;
cout << bafer;
}
...
Zašto ovo ne radi? (npr za ulaz "aaaaaaaaaa\n" izlaz je "aaa┌$9aaa")
unknown.543ljubao,
Imam problema sa TURBO C++ 1.0. Elem, deo koda je radio OK, sve
dok nisam sa malloc odvojio još 4 KB memorije.
Tačnije, sada neće nikako da učita neke podatke iz datoteke (ne
učitava se u pomenuti deo memorije). Probao sam sa fread i read, memoriju
gde se učitavaju podaci sam odvajao i sa malloc i farmalloc, i neće da
radi.
Inače, sve je to u LARGE modelu, pa sumnjam na petljanje sa far
i običnim pointerima (čemu nisam vičan jer sam ranije imao normalan kom-
pjuter sa linearnom memorijom, a do sada mi je bio dovoljan i small
model).
Ako neko nešto zna, neka kaže i spasi me nepotrebnog noćenja i
nerviranja.
Ljuba
unknown.544ppekovic,
>> Kod mjove su mi Dr. Dobbs-ovi, neka ti u jednom od njih
>> potra`i algoritam pod imenom r250. Te{ko da }e{ na}i bolji,
>> makar i kod Knuta.
Već sam se snašao ali hvala u svakom slučaju. Pomogao mi je robert koji me
je uputio na zbirku C programčića koja postoji ovde na sezamu (ne sećam se kako
se zvaše).
Paya
unknown.545ppekovic,
Pronašao sam dosta zanimljivih random generatora ali ipak i dalje ostaje
problem šta uzeti za početnu vrednost a da se zadovolji uslov prenosivosti
programa, dakle da ostanem u okviru ANSI C-a. Dakle, mogao bi da očitam vreme
ili nešto slično, ali bi želeo da isti program radi i na xenix-u i na dos-u i
na os/2-u.
Paya
unknown.546zormi,
* Potrebno mi je da računar generiše slučajne brojeve izmedju 0 i
* 9,999,999. Funkcija rand() iz MSC-a generiše slučjne brojeve
* izmedju 0 i 7fff. Jel ima neko ideju, ili neku funkciju koja
* generiše long slučajne brojeve?
Ako nije za neke "naučne" primene: pozovi funkciju dvaput pa sastavi
normalizovane cifre ;)
unknown.547djelovic,
> problem šta uzeti za početnu vrednost a da se zadovolji uslov
> programa, dakle da ostanem u okviru ANSI C-a. Dakle, mogao bi
> ili nešto slično, ali bi želeo da isti program radi i na xenix
> na os/2-u.
Joj. To je problem koji još niko nije uspeo da reši. Jedino da koristiš
#ifdef direktive, svaki kompajler definiše svoje ime, a pretpostavljam da
postoji i neka definisana reč ako je ANSI kompajler. Za C++ se recimo koristi
reč __cplusplus.
unknown.548ndragan,
/ Funkcija rand() iz MSC-a generiše slučjne brojeve izmedju 0 i 7fff.
Pade mi na um najprostija stvar: da napraviš
rnd=rand()*8000+rand()
U stvari ne znam kako se piše shl(rand(),15) na Ceu, ali ovo bi moglo
da radi poso.
Bue_ Ndragan
unknown.549mjova,
> Kod mjove su mi Dr. Dobbs-ovi, neka ti u jednom od njih
> potra`i algoritam pod imenom r250. Te{ko da }e{ na}i
> bolji, makar i kod Knuta.
nađoh, ali pajo, ako me ne pohvališ drž' se dobro ;)
──────────────────────────────────────────────────────────────────────────────
//=====================================================
// written by: W. L. Maier (a mjova nije bio lenj :)
//=====================================================
#include <stdlib.h>
static unsigned int r250_buffer[250];
static int r250_index;
void r250_init(int seed);
unsigned int r250();
double dr250();
//----------------------------------
// initializes r250 random number generator
void r250_init(int seed) {
int j,
k;
unsigned int mask;
unsigned int msb;
srand(seed);
r250_index= 0;
for(j= 0; j<250; j++) // fill the r250 buffer with 15-bit values
r250_buffer[j]= rand();
for(j= 0; j<250; j++) // set some of the MS bits to 1
if(rand() > 16384)
r250_buffer[j] |= 0x8000;
msb= 0x8000; // to turn on the diagonal bit
mask= 0xffff; // to turn off the leftmost bits
for(j= 0; j<16; j++) {
k= 11 *j +3; // select a word to operate on
r250_buffer[k] &= mask; // turn off bits left of the diagonal
r250_buffer[k] |= msb; // turn on the diagonal bit
mask >>= 1;
msb >>= 1;
}
}
//----------------------------------
// returns random unsigned integer
unsigned int r250() {
register int j;
register unsigned int new_rand;
if(r250_index >= 147)
j= r250_index -147; // wrap pointer around
else
j= r250_index +103;
new_rand= r250_buffer[r250_index] ^ r250_buffer[j];
r250_buffer[r250_index]= new_rand;
if(r250_index >= 249) // increment pointer for next time
r250_index= 0;
else
r250_index++;
return(new_rand);
}
//----------------------------------
// returns random double in range 0..1
double dr250() {
register int j;
register unsigned int new_rand;
if(r250_index >= 147)
j= r250_index -147; // wrap pointer around
else
j= r250_index +103;
new_rand= r250_buffer[r250_index] ^ r250_buffer[j];
r250_buffer[r250_index]= new_rand;
if(r250_index >= 249) // increment pointer for next time
r250_index= 0;
else
r250_index++;
return(new_rand/(double)0xffff); // return a number in 0.0 to 1.1
}
//=====================================================================
#include <stdio.h>
#include <stdlib.h>
#define NMR_RAND 5000
#define MAX_BINS 500
//----------------------------------
void main(int argc, char *argv[]) {
int j,
k,
nmr_bins,
seed,
bins[MAX_BINS];
double randm,
bin_limit[MAX_BINS],
bin_inc;
if(argc != 3) {
printf("Usage -- rtest [nmr_bins] [seed]\n");
exit(1);
}
nmr_bins= atoi(argv[2]);
r250_init(seed);
bin_inc= 1.0/nmr_bins;
for(j=0; j<nmr_bins; j++) {
bins[j]= 0; // initalize bins to zero
bin_limit[j]= (j +1) *bin_inc;
}
bin_limit[nmr_bins-1]= 1.0e7; // make sure all others are in last bin
for(j= 0; j<nmr_bins; j++) {
randm= r250()/(double)0xffff;
for(k= 0; k<nmr_bins; k++)
if(randm < bin_limit[k]) {
(bins[k])++;
break;
}
}
for(j= 0; j<nmr_bins; j++)
printf("%d\n", bins[j]);
}
──────────────────────────────────────────────────────────────────────────────
mj
unknown.550ppekovic,
>> nađoh, ali pajo, ako me ne pohvališ drž' se dobro ;)
Pohvaljujem te mjovo! ;) Hvala i svima ostalima!
Paya
unknown.551robert,
<:> Inače, sve je to u LARGE modelu, pa sumnjam na petljanje sa far
<:> i običnim pointerima (čemu nisam vičan jer sam ranije imao
<:> normalan kom-
čao mi je što ne mogu baš konkretno da ti pomognem (mjovo!?) ali evo
da pokušam...
I ja sam imao slične probleme... (u pitanju je TC++ 2.0) upotrebljavao
sam farmalloc u LARGE modelu i kad sam sa coreleft() ispitao raspolo-
živu memoriju dobio sam svega 2-3 kb. Kad sam upotrebio malloc i preveo
u SMALL modelu coreleft mi je vraćao lepo 64 kb slobodno. E sad, ja
ne umem da kažem zašto je to tako ali bi trebalo pročitati malo pažlji-
vije neku literaturu u vezi tog alociranja memorije.
Farmalloc rezerviše memoriju u far-heap- u pa možda tu smetaju rezidentni
drajveri ili programi tako da se ne može rezervisati više, stvarno ne
znam za sigurno ali moglo bi da se isproba.
E sad, ako neko zna bolje objašnjenje, nek pomogne čoveku...
Pozdrav ... Robert.
unknown.552janko,
># ifdef direktive, svaki kompajler definiše svoje ime, a
> pretpostavljam da postoji i neka definisana reč ako je
> ANSI kompajler. Za C++ se recimo koristi reč __cplusplus.
__STDC__ je predefinisana reč koja označava da se prevodi ANSI
C-om, i, za razliku od C++ definisane reči __cplusplus koja,
nažalost, NIJE stvarno standardna, ova jeste, i označava
standardni ANSI C. Zanimljivo je da po difoltu Borlandovi
kompajleri ne javljaju da su standardni ANSI, dok im se ne
uključi poseban svič. To objašnjavaju time što njihov C
prepoznaje, bez tog aktiviranog sviča, i ključne reči tipa FAR
i šta-ti-ja-znam koje su specijalitet MS-DOS-a. Kada se
aktivira svič za prevođenje po ANSI standardu, onda se takve
reči ne prepoznaju na MS-DOS način.
unknown.553janko,
> Pronašao sam dosta zanimljivih random generatora ali ipak
> i dalje ostaje problem šta uzeti za početnu vrednost a da
> se zadovolji uslov prenosivosti programa, dakle da ostanem
> u okviru ANSI C-a. Dakle, mogao bi da očitam vreme ili
> nešto slično, ali bi želeo da isti program radi i na
> xenix-u i na dos-u i na os/2-u.
Zavisi od upotrebe programa. Za neke primene (monte-karlo
simulacije, jer u njima je samo veličnia perioda generatora
bitna) je bilo koja KONSTANTA sasvim OK. Ako ti trebaju razičite
početne vrednosti, ANSI C ti omogućava da uzmeš sistemske minute
i sekunde, ali te to oganičava na 3600 mogućih početaka. Ako ti
je taj broj dovoljan, i naravno, ne inicijalizuješ generator
previše često, rešio si problem: Minute i sekunde iskoristiš za
rendom generator (OBAVEZNO različit od onog koga ćeš posle
koristiti!) koji će ti dati SEED onog sledećeg. Ako ti 3600
'početaka' nije dosta, moraš da 'vadiš' sistemsko vreme u
milisekundama ili još sitnije, što nije po ANSI-ju, ali se može
naći na svakoj mašini.
unknown.554janko,
> Ako nije za neke "naučne" primene: pozovi funkciju dvaput
> pa sastavi normalizovane cifre ;)
To može samo ako će jako malo puta u programu pozvati funkciju.
Inače, neće da valja, jer će perioda biti nedopustivo mala.
unknown.555janko,
> I ja sam imao slične probleme... (u pitanju je TC++ 2.0)
> upotrebljavao sam farmalloc u LARGE modelu i kad sam sa
> coreleft() ispitao raspolo- živu memoriju dobio sam svega
> 2-3 kb. Kad sam upotrebio malloc i preveo u SMALL modelu
> coreleft mi je vraćao lepo 64 kb slobodno. E sad, ja
U LARGE modelu može da se koristi malloc, koji će, naravno,
alocirati memoriju na far hipu, jer drugi i ne postoji.
Tako bi trebalo da radi i sa napr. COMPACT modelom, ali ne
radi. U Borland C++ 2.0 kompajleru, u L. modelu bez problema
alocira kako treba, i koristi svu raspoloživu memoriju (meni
kada alociram 1K blokove, daje 490 takvih blokova pre nego što
mi vrati NULL. Ali, zbog očiglednog baga u stand. biblioteci
(ako ima neko sors, koji se dobija uz profešnal verziju, mogli
bismo, verovatno, to da ispravimo) u COMPACT modelu 1K blokove
uspe da alocira šezdesetak puta pa SRUŠI ceo sistem.
unknown.557djelovic,
> Pade mi na um najprostija stvar: da napraviš
> rnd=rand()*8000+rand()
Da, ali na taj način dobija slučajne vrednosti istog, ili upola
manjeg od onog koji već ima (u MSC slučaju, upola manji). Tako, iako
povećava opseg za dobijene slučajne vrednosti, ne dobija sve (ne dobija
čak ni dobar deo, naprotiv!) vrednosti iz tog opsega.
unknown.558sasa,
Interesuju me neke stvari oko CODE BASE biblioteke za Dbase/Clipper pa ako neko
ima nesto slicno bio bih veoma zahvalan!
Unapred hvala,
Sasa@nsd
unknown.559zormi,
* > Ako nije za neke "naučne" primene: pozovi funkciju dvaput
* > pa sastavi normalizovane cifre ;)
*
* To može samo ako će jako malo puta u programu pozvati funkciju.
* Inače, neće da valja, jer će perioda biti nedopustivo mala.
Zato sam i rekao "ako nije za naučne primene". Ima tu još formalnih
nedostataka, ne samo zbog periode, ali ne bi da počinjem još jedan
krug rasprava o verovatnoći.
Ako mu treba za video-igru, ništa ne smeta ;).
unknown.560mjova,
> podaci sam odvajao i sa malloc i farmalloc, i neće da
malloc i farmalloc daju različite rezultate samo za small i medium
mem modele. u ostalim modelima nema razlike jer nemaju FAR HEAP (nije
odvojen od near heap-a).
međutim, lepo je koristiti farmalloc() ako treba neke izvorne kodove
prevoditi (npr za lib) u raznim modelima, a zahtevaju uptrebu FAR
HEAP-a.
drugo, pri alociranju mememorije postoje određeni bug-ovi u .lib za c
i h model, toplo preporučujem definitivno izbegavanje ;).
mj
unknown.561robert,
Trebao bi mi opis *.DBF datoteka tj. format ispisa DBASE-a u *.DBF
datoteke. Nisam siguran ali mi se čini da je to već neko pitao u
temi baze podataka ili sl. pa ako je bio odgovor na to bitanje bilo
bi mnooogo lepo da mi kažete gde.
Ovo pitam ovde jer treba da pišem kod u C-u koji kao izlaz, između
ostalog, generiše i *.DBF datoteke tako da se kasnije mogu koristiti
iz DBASE paketa.
Još nešto, da li je neko već radio sa DFLAT bibliotekom u C-u za rad
sa prozorima (koji liče na WINDOWS ali su u ASCII modu) i kakva su
iskustva sa tim.
Pozdrav ... Robert.
unknown.562mjova,
> Ovo pitam ovde jer treba da pišem kod u C-u koji kao
> izlaz, između ostalog, generiše i *.DBF datoteke tako da
> se kasnije mogu koristiti iz DBASE paketa.
pitao sam jednom ovde i neko je bio dovoljno ljubazan da mi pošalje
kod koji se bavi .dbf datotekama. ako te zanima mogu da ti pošaljem.
moram samo da pogledam da li je pd.
SY
unknown.563pjankovic,
> Interesuju me neke stvari oko CODE BASE biblioteke za
> Dbase/Clipper pa ako neko ima nesto slicno bio bih veoma
> zahvalan!
Posjedujem CODE BASE 4.2. Reci sta te interesuje pa da pokusam
da ti odgovorim.
unknown.564ivantod,
v{Što se tiče strukture dBase fajla, ovo su podaci koji se nalaze
u "dBase III+ priručniku" koji je izdala Mikro knjiga. Zaglavlje
fajla sastavljeno je od sledećih delova:
- prvih 32 bajta rasporedjenih ovako:
0 83h ako je uz bazu uključen fajl tipa DBT, 03h ako nije
1-3 datum poslednje izmene u formatu ggmmdd
4-7 ukupan broj slogova u bazi
8-9 ukupan broj bajtova zaglavlja
10-11 broj bajtova po slogu
12-14 rezervisano
15-27 rezervisano za višekorisnički rad
28-31 rezervisano
- posle ovoga dolazi po 33 bajta za opis svakog polja u slogu
posebno i to ovako:
0-10 ime polja
11 tip polja (N, C, L, D, ili M)
12-15 adresa u memoriji podataka iz polja
16 širina polja
17 broj decimalnih mesta
18-19 rezervisano za višekorisnički rad
20 oznaka radnog prostora
21-22 rezervisano za višekorisnički rad
23 pokazatelj stanja odredjenog naredbom SET FIELDS
24-31 rezervisano
32 oznaka kraja podataka o polju
- iza ovoga se upisuju slogovi. Svaki slog počinje bajtom u koji
je upisana zvezdica (*) ako je označen za brisanje, ili razmak
ako nije. Jedina važna napomena je da se datumsko polje upisuje
u formatu ggggmmdd.
unknown.568robert,
<:> Auuu, nije nego! Kada si ti uzimao kod onda nema veze; kada treba
<:> drugom da
Ma sve je u redu, ljudi, dobio sam ono što sam tražio i hvala mjovi
za to. On se to samo šalio... ;)
Pozdrav ... Robert.
unknown.569robert,
<:> v{Što se tiče strukture dBase fajla, ovo su podaci koji se nalaze
Puno hvala na ovim informacijama i uz mjovinu pomoć, verujem da sada imam
sve što mi treba. Ako bude problema, naravno, pitaću opet... ;)
Pozdrav ... Robert.
unknown.570dnikolic,
>> Interesuju me neke stvari oko CODE BASE biblioteke za
>> Dbase/Clipper pa ako neko ima nesto slicno bio bih veoma zahvalan!
I mene ovo VEOMA zanima!
dn
unknown.571tesloni,
Ajde maheri ...
Ima li ko TopSpeed C++ ....
... Ú-> Tesloni <-Ú
unknown.572rogi,
Stize Micro Emacs za Windowse sa kompletnim sourceom u c
Rogi
mewin10.zipunknown.573rogi,
A evo i uputstva za Micro Emacs u Windows "WRI"
formatu.
Rogi
mewri.arjunknown.574rogi,
Postoje li na SEZAMU grupe sa temom Borland C++, C++ i
programiranje pod Windowsima ? Ako postoje molim Vas da
me uclanite ili obavestite o uclanjenju.
Rogi
unknown.575janko,
Natrčao sam na bag u BC++ 2.0.
Kada definišete klasu koja sadrži niz ne-elementarnog tipa,
već od objekata neke druge klase, BC++ 2.0 će se ponašati kao
da joj je tzv. kopi konstruktor prazan (iako bi, po difoltu,
trebalo da podrazumeva kopiranje). Napr. ako je fja članica
definisana kao
X X::vrati()
onda u njoj
return x;
ne vraća objekat tipa X, već samo radi return, a ono što tako
pokupite, je, naravno, đubre. Proveravao sam asm. kod.
Jednostavno i tamo kaže return, umesto da prekopira bilo šta.
Na sreću (jedina nesreća je što sam izgubio vreme na jurenju
baga), ovo se može 'izvaditi' eksplicitnim definisanjem kopi
konstruktora, koji kopira u *this.
---
Kad smo već kod C++-a: ima li neko detaljnije podatke (sa
programskim primerima) o razlikama 1.x 2.0 i 3.0 cfront
(odnosno C++) 'standarda?'
unknown.576rogi,
Novosti o Borlandovim kompajlerima.
Rogi
5new.rlsunknown.577rogi,
Novosti o beta kompajleru za WINDOWS NT od Borlanda.
Rogi
win32.arjunknown.578rogi,
Izvinjavam se nije ZIP nego ARJ.
Rogi
unknown.580jtitov,
> Izvinjavam se nije ZIP nego ARJ.
Uopste se ne izvinjavaj. Samo salji. Snacicemo se.
unknown.581rogi,
Evo i GNU-CHESS v3.21 for WINDOWS
Rogi
chess321.arjunknown.582rogi,
Prilikom prenosa arhive je doslo do prekida linije,
pa je arhiva prenesena iz dva transfera. Nadam se da
je Zmodem ispravno nastavio slanje fajla, a ako nije
javite pa cu opet prebaciti.
Inace sam zaboravio da napisem da je u arhivi komple-
tan source u c + exe + dokumentacija + help.
Imam primera za tehnike programiranja pod Windows-ima
ali niko ne odgovori na moje ranije postavljeno pitanje
o grupama na SEZAM-u koje se bave BC++, C++ i programi-
ranjem pod WINDOWS-ima.
Rogi
unknown.583ppekovic,
>> Imam primera za tehnike programiranja pod Windows-ima
>> ali niko ne odgovori na moje ranije postavljeno pitanje
>> o grupama na SEZAM-u koje se bave BC++, C++ i programi-
>> ranjem pod WINDOWS-ima.
Obrati se bulaji, mislim da je on osnovao jednu takvu grupu. Ujedno, hvala
na GNU Chess-u.
Paya
unknown.584dnikolic,
Moze li se u TC ( ili uopste ) napisati program koji bi recimo ispisao neko ime
na ekran, a koji bi posle kompajliranja imao duzinu oko max 50 bajtova tj. kao
odgovarajuci u masincu? U pitanju je opklada.
dn
unknown.585dnikolic,
Ko ime CODE BASE 4.xx?
dn
unknown.586janko,
Ima li neko iskustva, informacije ili sorsove o korišćenju
setjmp i longjmp instrukcija za realizaciju korutina?
Napisao sam dva programa, istim metodama, i jedan ruši sistem,
a jedan 'odradi.'
Izgleda da je problem u tome da prevodilac, čak i kada se
unutar rutine ne koriste lokalne promenljive, nekad koristi
stek tako da ošteti informacije drugih korutina. (Filozofski,
ne bi morao tako da radi, BP i SP bi trebalo da se nezavisno
pomeraju?) Svaka korutina je, u mojoj realizaciji, funkcija
članica klase koja određuje korutinu, iz koje se izašlo
sa longjmp.
unknown.587zzivotic,
> Moze li se u TC ( ili uopste ) napisati program koji bi recimo
> ispisao neko ime na ekran, a koji bi posle kompajliranja imao
> duzinu oko max 50 bajtova tj. kao odgovarajuci u masincu? U
> pitanju je opklada.
Koristeći potpuno *standardne* tehnike prevođenja - nije moguće. Problem je u
modulu iz biblioteke koji se obično zove crt0 u kome je inicijalizacija, koji
je retko manji od 2-3K i koji se uvek linkuje u program.
Ako napraviš svoj crt0.asm i izbegavaš funkcije iz C biblioteke (ne baš sve,
ali one za ispis tipa puts, ili printf) onda bi bilo sasvim moguće - pitanje je
samo koliko je to onda C ;)
Pozdrav, zz
unknown.588rogi,
Poslao si premalo informacija da bi se moglo shvatiti sta se desava
sa setjmp/longjmp. Opisi detaljnije sta se tacno dogadja sa programom
i posalji kod ili algoritamski opisan metod. Sto se tice prevodioca
kompajliraj kod da generise ASM listing i onda ces videti sta tacno
prevodioc uradi.
Rogi.
unknown.589janko,
Hvala na trudu, Obren mi je poslao e-poštom baš ono što mi je
trebalo.
Konkretno, dva su razloga mogućeg pada, i meni je padao zbog ovog
drugog:
- rutina je radila sa registrima koji nisu sačuvani sa setjmp
(to mi je poslao Obren).
- jedna korutina je drugoj uništila njen deo steka (to sam sam
isčačkao).
Sve sam rešio. Obrenu se i ovde zahvaljujem.
unknown.590mdimitrijevic,
Hi!
Ima li neko source za Turbo C v2.0 za grafiku, scroll, prokaz slike ili
slicno. Prilicno je vazno.
unknown.591dnikolic,
Kako je najbolje prebaciti radne fajlove na diskete? Moze li se koristiti DOS
naredba COPY preko SPAWNxx funkcija? Postoji li neki drugi, bolji, nacin?
dn
unknown.592ppekovic,
>> Kako je najbolje prebaciti radne fajlove na diskete? Moze
>> li se koristiti DOS naredba COPY preko SPAWNxx funkcija?
>> Postoji li neki drugi, bolji, nacin?
system("arj a -vva a:arhiva *.*"); :))))
Paya
unknown.593vitez.koja,
-> system("arj a -vva a:arhiva *.*"); :))))
system("arj a -va -jt1 -r -we:\ -i1 a:arhiva *.*");
^^^
ram disk... ;)
unknown.594mdimitrijevic,
Imam problema sa prikazivanjem slika na VGA karti iz Turbo C-a 2.0, molio
bih ako neko ima neki source ili zna kako da prikazem neku sliku u 320x200x256
da mi napise. Kad skinem rezidentnim programom deo memorije od A000-AFFF
dobijem sliku ali bez boja kakve bi trebalo. Zato ako bi neko mogao da mi
pomogne bio bih mu vrlo zahvalan.
Pozdrav,
Marjan Dimitrijevic
unknown.595mornar,
Evo ti program koji ce ti prikazati sliku u 320x200x256 skinutu kao
dump sa ekrana.
Prilozen je i source u C-u (TC/BC) i .EXE verzija.
Mozda naidjes na neki bag jer sam program napisao na brzinu,ali kolko
sam ga testirao - radi.Ako program modifikujes, kompajliraj ga iskljucivo u
HUGE modelu (inace ce da prijavi nedostatak memorije).
Ako ima nekih nejasnoca i pitanja slobodno pitaj ovde ili salji mail.
[mornar]
pic.arjunknown.596pjankovic,
> Ima li neko source za Turbo C v2.0 za grafiku, scroll,
> prokaz slike ili slicno. Prilicno je vazno.
Uz taj kompajler se dobija BGIDEMO.C koji je najbolji primjer kako
se radi sa grafikom. Ako ga nemas reci da ti posaljem.
unknown.597mdimitrijevic,
Hvala pogledacu pa cu se javiti.
mdimitrijevic
unknown.598mdimitrijevic,
Znam za BGIDEMO ali nisam mislio na crtanje i C-a vec na prikazivanje neke
slike na primer GIF,BMP,PCX i slicno ili dump ekrana ali za VGA
mdimitrijevic
unknown.599ndragan,
Jes' da je prošlo dve nedelje, al' danas sam morao da se patim sa nekom
ogavnom bazom od pet mega sa nekog zjeban*g diska, pa sam pisao jednu
malu nisku (*) proceduru za rekonstrukciju onog što se iščupati dade. Imam
ispravku na ovo:
/ - posle ovoga dolazi po 33 bajta za opis svakog polja u slogu
/ 0-10 ime polja
/ 32 oznaka kraja podataka o polju
Ide u stvari po 32 bajta; vo treba shvatiti kao 0-9 za ime polja (ili
1-10, ako ćemo da krenemo od 1); posle niza tih podataka dolazi jedan
bajt u kojem piše 0D, i onda slog za slogom.
Ostalo je tačno. žini mi se da bi bilo lepše da je prilikom
projektovanja .DBF fajla ubačeno nešto tipa CHR(15) ili tako nešto za
vodeći bajt (onaj što postaje '*' kad se slog obriše), baš zato da se
olakša život nama jadnicima koji ovakve programčiće za rekonstrukciju
piskaramo od slučaja do slučaja.
(*) Mislim na low level čitanje .DBF fajla kao niza bajtova.
unknown.600bearboy,
˙¨:> -> system("arj a -vva a:arhiva *.*"); :))))
˙¨:>
˙¨:> system("arj a -va -jt1 -r -we:\ -i1 a:arhiva *.*");
˙¨:> ^^^
˙¨:> ram disk... ;)
system("arj a -va -jt1 -r -we:\ -1 a:arhiva");
je saasvim dovoljno, posto ARJ podrazumeva *.* Ipak moze krace :)
unknown.601bojanp,
Za sve one koji koriste Borland C++ 3.0 jedno pitanje. Da li vam
radi utility WinSight?
Pozdrav, Bojan
unknown.602mornar,
Radi! ,ali Windowsi moraju da 'trce' u enhanced modu! Inace efekti nisu bog
zna kako vidljivi, cak se nista i ne desava.
unknown.603tesloni,
Sorry narode ... Interesuje me koji C kompajler ima ugrađenu
podršku dinamičkom linkingu ( podataka i procedura ), ili bar
da li postoje dodaci za neki od poznatih koji to omogučavaju ?
P.S. Ako neko ima nešto od navedenog neka mi se javi na mail ...
... Ú-> Tesloni <-Ú
unknown.604mornar,
Dynamic linking je ugradjen u BC++ 3.0 !
unknown.605tesloni,
Ú-> : Dynamic linking je ugradjen u BC++ 3.0 !
TNX...
... Ú-> Tesloni <-Ú
unknown.606paris,
Preklinjem za pomoc, naime imam knjigu C++ (Bjarne STROUSTRUP) i neku ─od
verzija TC-a. Vec kod prvog prţbiŢ╔mera sam stao jer nemam bibliotekau
li to znaci da za C++ moram da nabavim poseban kompailer Ú, a ako da gde to
mogu da nadjem, zaista je hitno.
╝Ż paris
unknown.607robert,
<:> li to znaci da za C++ moram da nabavim poseban kompailer Ú, a ako
<:> da gde to mogu da nadjem, zaista je hitno.
Za C++ ti treba (ako koristiš Borlandove kompajlere) TC++ 1.0 i veće
ili BC++ 2.0 ili 3.0 (to je i poslednja verzija Borland C++).
Ja, konkretno, koristim TC++ 1.0 ali imam i BC++ 2.0 ali mi to još
nije potrebno jer se ne bavim pisanjem aplikacija za Windows. Mislim
da je TC++ 1.0 prava stvar jer je prilično kompaktan (ne zauzima mnogo
prostora na disku) a može da se radi svašta sa njim. Ima samo dve knjige
(TC++ Users guide i Programmers guide) tako da ni tu nema prevelikih
troškova kopiranja (naravno ako nisi kupio paket od Borlanda). TC++ 1.01
bi trebalo da ima svako ko se bavi programiranjem u C-u tako da samo
treba da poznaješ nekog takvog i da ga lepo zamoliš da ti da da iskopiraš
diskete ;).
TC++ 1.0 ide na 8 disketa od 360k samo da znaš.
Pozdrav... Robert.
P.S. Mail me ako imaš još pitanja.
unknown.608mjova,
> verzija TC-a. Vec kod prvog prţbiŢ╔mera sam stao jer nemam
> bibliotekau li to znaci da za C++ moram da nabavim poseban
> kompailer Ú, a ako da gde to
naravno da su ti potrebne biblioteke, ono bar za početak (dok sam ne
napišeš ;). biblioteke idu uz prevodioc, i ako imaš neki TC, verovatno
da si uzeo sa diska (samo exe), ili nisi (pri instalaciji) pravilino
podesio putanje, itd
pretpostavljam da ti verovatno nedostaje još dosta toga, nađi
kompletan prevodioc.
SY
unknown.609pstojanovic,
Pokusavam da zadam pointer na odredjenu FAR adresu u TC-u. Medjutim,
problem je u tome sto se pointer uvek postavi na tekuci data segment.
U turbo paskalu sa tim nisam imao problema, jednostavno sam zadavao
var p:pointer;
begin
...
p:=ptr(segvar,ofsvar);
...
end.
Da li postoji odgovor za C, ili se ipak mora pisati dodatna
asemblerska rutina ?
unknown.610ppekovic,
>> Pokusavam da zadam pointer na odredjenu FAR adresu u TC-u. Medjutim,
>> problem je u tome sto se pointer uvek postavi na tekuci data segment.
Postoji nekoliko načina za to, evo ti dva najjednostavnija:
<type> far *<far_pointer_name>=<32_bit_adress>;
primer:
int far *pocetak=0xB8000000;
ako te mrzi da pišeš 32 bitne adrese tj. više voliš segmente i
offset-e, onda uradi sledeće:
#define MK_FP(seg,ofs) ((void far*) (((long) (seg)<<16) | (ofs)))
int far *pocetak;
pocetak=MK_FP(0xB800,0);
...
Paya
unknown.611ppekovic,
>> Preklinjem za pomoc, naime imam knjigu C++ (Bjarne STROUSTRUP) i neku ─od
>> verzija TC-a. Vec kod prvog prţbiŢ╔mera sam stao jer nemam bibliotekau
>> li to znaci da za C++ moram da nabavim poseban kompailer Ú, a ako da gde to
>> mogu da nadjem, zaista je hitno.
Potreban ti je neki od C++ compiler-a. Za MSDOS imaš gomilu
Borlandovih C++ compiler-a kao i Microsft C 7.0. Za UNIX/XENIX
imaš GNU C++. Ako ti ovaj potonji treba javi kad dolaziš do
fakulteta i spremi 5 1.44 disketa.
Paya
unknown.612djelovic,
> Pokusavam da zadam pointer na odredjenu FAR adresu u TC-u. Medjutim,
> problem je u tome sto se pointer uvek postavi na tekuci data segment.
Ako si u Small ili nekom drugom "near" memorijskom modelu
pointer deklariši kao "far" ili pređi u large model. Prvo se radi tako
što umesto, recimo, void *p napišeš void far *p, a drugo možeš u
integrisanoj okolini da središ u Options/Compile meniju, ili svičem -ml
u komandnoj liniji.
Za dodelu pointera mislim da ti je najlakše da koristiš makro
MK_FP, recimo
void *p = MK_FP (segment, offset);
Das ist alles.
unknown.613obren,
> Pokusavam da zadam pointer na odredjenu FAR adresu u TC-u. Medjutim,
> problem je u tome sto se pointer uvek postavi na tekuci data
> segment.
To se lako reši jednim cast-om, mada je lepše koristiti makro MK_FP:
Primer:
void far *ptr=MK_FP(0xA000, 0x0000);
unknown.614robert,
<:># define MK_FP(seg,ofs) ((void far*) (((long) (seg)<<16) | (ofs)))
Kod Borlanda je ovaj makro već definisan...
Robert
unknown.615janko,
> Pokusavam da zadam pointer na odredjenu FAR adresu u TC-u.
> Medjutim, problem je u tome sto se pointer uvek postavi na
> tekuci data segment.
Najlakše je da pređeš na LARGE model. Ne boj se, nije strašno,
niti previše sporo. Odaću ti tajnu: Turbo Paskal NA SVE STRANE
radi sa FAR pointerima, inače ne bi mu ista rutina mogla da
radi i sa promenljivom koja je alocirana na Hipu.
> Da li postoji odgovor za C, ili se ipak mora
> pisati dodatna asemblerska rutina ?
Ne mora, ali, Small, Medium modelu puno BIBLIOTEžKIH rutina
ti neće raditi sa far pointerima! Postoji farmalloc, ali ne i
rutine kojima je PRAMETAR far pointer -- moraš sam da ih pišeš.
Lakše preći na LARGE.
A, ako, ipak, nećeš, čarobne reči su MK_FP, FP_SEG i FP_OFS:
>
> ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ■ Get a far address offset (FP_OFF)
> ŢFP_OFF, FP_SEG, and MK_FP macrosŮ ■ Get a far address segment (FP_SEG
> ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ ■ Make a far pointer (MK_FP)
> Syntax:
> unsigned FP_OFF(void far *p);
> unsigned FP_SEG(void far *p);
> void far *MK_FP(unsigned seg, unsigned ofs);
>
> Defined in dos.h
>
> See Also:
> movedata segread
>
> /* FP_OFF */
>
> #include <dos.h>
> #include <stdio.h>
>
> int main(void)
> š
> char *str = "fpoff.c";
>
> printf("The offset of this file in memoryĐ
> is: %FpĐn", FP_OFF(str));
>
> return 0;
> ć
>
>
> /* FP_SEG */
>
> #include <dos.h>
> #include <stdio.h>
>
> int main(void)
> š
> char *filename = "fpseg.c";
>
> printf("The offset of this file in memoryĐ
> is: %FpĐn", FP_SEG(filename));
>
> return(0);
> ć
>
>
> /* MK_FP */
>
> #include <dos.h>
> #include <graphics.h>
>
> int main(void)
> š
> int gd, gm, i;
> unsigned int far *screen;
>
> detectgraph(&gd, &gm);
> if (gd == HERCMONO)
> screen = MK_FP(0xB000, 0);
> else
> screen = MK_FP(0xB800, 0);
> for (i=0; i<26; i++)
> screenŠiĆ = 0x0700 + ('a' + i);
> return 0;
> ć
>
>
unknown.616ppekovic,
>> <:># define MK_FP(seg,ofs) ((void far*) (((long) (seg)<<16) | (ofs)))
>>
>> Kod Borlanda je ovaj makro već definisan...
Kad smo već krenuli sa ovom temom da dodam da je moguć i
sledeći način za "igranje" sa segment-ima i offset-ima.
_segment seg=0xb800;
int _based(seg) *pocetak=0;
Dakle, pointer pocetak je 16 bitni offset na segmentu seg.
Paya
unknown.617dnikolic,
>> podrsku dinamickom linkingu ( podataka i procedura ), ili bar
Sta je to?
dn
unknown.618dnikolic,
>> ili BC++ 2.0 ili 3.0 (to je i poslednja verzija Borland C++).
Poslednja je valjda, 3.1?
dn
unknown.619ppekovic,
>> >> podrsku dinamickom linkingu ( podataka i procedura ),
>> ili bar
>>
>> Sta je to?
Ukratko to ti je kada jedan deo programa odvojiš u poseban fajl pa ga po
potrebi učitavaš za vreme izvršavanja programa. To su ti oni fajlovi sa
ekstenzijom OVL, ili kod OS/2 DLL, ...
Paya
unknown.620robert,
<:> Poslednja je valjda, 3.1?
OK, može biti... Izvinjavam se ako sam pogrešio.
unknown.621jtitov,
> Poslednja je valjda, 3.1?
Tacno, a da li je neko ima?
unknown.622pstojanovic,
Hvala svima za opsirne savete.
unknown.623todorp,
Hi
Zanima me kako u turbo C-u broj npr. 1234567 napiše kao 1,234,567.Ja sam
napravio rutinu (ono sa deljenjem bez ostatka,oduzimanje itd) ali me
zanima da li to može nekako jednostavnije.
Pozdrav od Todora.
unknown.624djelovic,
> Zanima me kako u turbo C-u broj npr. 1234567 napiše kao 1,234,567?
Ne postoji bibliotečka rutina koja bi to radila. No, pošto se ovakvi
brojevi sa zarezima uglavnom koriste sa novac, pa se završavaju sa dve cifre
iza decimalnog mesta (.00), onda možeš da jednostavno ispišeš broj bez zareza u
string, sa strlen izračunar njegovu dužinu, i onda kreneš pa ubacuješ zareze na
odgovarajuđa mesta (do_kraja%3 == 0).
unknown.625bearboy,
˙¨:> ekstenzijom OVL, ili kod OS/2 DLL, ...
DLL se vidi i kod Udovice, a ima ga i kod Odyssey-a (X-Y-Z Modemi su u jednom
DLL-u, pa koji zatreba...)
unknown.626todorp,
> iza decimalnog mesta (.00), onda mozes da jednostavno ispises broj
> bez zareza u string, sa strlen izracunar njegovu duzinu, i onda
> krenes pa ubacujes zareze na odgovarajuda mesta (do_kraja%3 == 0).
Pa ideja nije losa.Ja sam to resio tako sto broj delim u petlji
sa ldiv(broj,pow10(broj dec. mesta)*broj dec. mesta,pa to oduzmem od broja i
ispred razlike dopisem , .Nadao sam se da moze mnogo lakse,ipak HVALA!!
Pozdrav od Todora.
unknown.627garderp,
Sezamovci Programeri,
Posto se mnogo vise bavim Windowsima nego DOS-om,
molio bih da mi neko kaze kako da saznam koji je karater
na odredjenoj poziciji na ekranu (u tekst modu) zajedno
sa njegovim atributima. Ta glupost mi treba iz prostog
razloga sto kad opalim neki dajalog boks preko ekrana
kad ga izbrisem onda se brise i ono preko cega je postavljen
dajalog boks. U windowsima to je lako reseno jer je dajalog
boks prirodna stvar ovog operativnog sistema. Dakle, samo
funkcija tipa
unsigned StaJeNaXY(int x,int y)
Predrag [za Arape]
unknown.628todorp,
A zasto deo pre ispisivanja novog prozora na prekopiras u memoriju
sa komandom gettext i posle samo vratis umesto prozora koji brises?
Pozdrav od Todora.
unknown.629mjova,
> boks prirodna stvar ovog operativnog sistema. Dakle, samo
> funkcija tipa unsigned StaJeNaXY(int x,int y)
najjednostavnije je preko (HelpPC 2.10):
INT 10,8 - Read Character and Attribute at Cursor Position
AH = 08
BH = display page
on return:
AH = attribute of character (alpha modes only)
AL = character at cursor position
mada možeš i direktno, ako izračunaš adresu aktivne video strane, pa
onda dodaš X*Y*2 na to. pročitaš prvi byte, to je slovo, a drugi je
atribut. ovo možeš da pogledaš u izvornom kodu koji sam ostavio ovde u
temi pod imenom windows.arj (valjda ;), ali ako ti nije potrebna
rezolucija veća od 25 redova, onda se sve može srediti i standardnim
fn koje idu uz bc. (imaju bug, pa ne radi sa više od 25 redova).
SY
unknown.630todorp,
Hi!
Ima li neko fajl ct.lib iz Turbo C-a 2.0? Imam c0t.obj ali sam ovaj nekako
izgubio :)).
Pozdrav od Todora.
ps.Bio bih mu veoma zahvalan kao bi fajl okačio u mail.
unknown.631mjova,
> Ima li neko fajl ct.lib iz Turbo C-a 2.0?
jel to šala ili misliš ozbiljno?
ako misliš ozbiljno, onda ti moram reći da nisi izgubio ništa jer
biblioteka za t model nije odvojena, tj. ista je kao i za s model pa
nemaš sekiracije. razlika je samo u linkovanju.
SY
unknown.632todorp,
> ako mislis ozbiljno, onda ti moram reci da nisi izgubio nista jer
> biblioteka za t model nije odvojena, tj. ista je kao i za s model pa
> nemas sekiracije. razlika je samo u linkovanju.
Pa ja sam i bez tog fajla dosada linkovao .com fajlove sa:
tlink /t /x \lib\c0t ime.obj,ime.com,,\lib\cs medjutim pozajmim ja od
Klapa knjigu Turbo C/C++ The Complete Reference od Herberta Schildta
(mislim da i ti imas tu knjigu;) i tamo na 366. strani pise da postoji i
ct.lib.Koliko sam ja video nigde se ne pominje da je ct.lib ukinut i da
je predvidjeno drugacije linkovanje.
Pozdrav od Todora.
unknown.634dnikolic,
>> Tacno, a da li je neko ima?
Pa valjda je jtitov ima, ko bi drugi?!?!? :))
dn
unknown.635mornar,
Ima li u nekoj grupi za C/C++ mesta, ili bi morao da otvorim nbovu grupu ?
mornar
unknown.636jtitov,
> Ima li u nekoj grupi za C/C++ mesta, ili bi morao da
> otvorim nbovu grupu ?
A sta ce ti grupa kad imas celu konferenciju? Bez veze. Ako mislis na
razmenu software-a, opet bez veze, jer su svi kompajleri abnormalno veliki
da bi se slali preko Sezama... A tvoja pitanja/potraznja mogu biti
zanimljivi svima koji prate ovu konferenciju.
unknown.637robert,
<:> Ima li u nekoj grupi za C/C++ mesta, ili bi morao da otvorim nbovu
<:> grupu ?
Što neko u temi clipper reče šta će ti grupa kad imaš konferenciju :))
a i ona mi je ovih dana (nedelja) malo presahnula...
Robert.
P.S. Nema ljutiš... !?
unknown.638todorp,
Kako u Turbo C-u da mu kazem da sve sto treba da ide na screen da ide na
lpt1 ili lpt2? U jednoj knjizi pise da moze ali nigde ne pise kako :((
biosprint mi nista neznaci.Dakle treba mi nesto trajno (relativno) da posle
mogu jednostavno puts("hjhj") da bacim na printer.
Pozdrav od Todora.
unknown.639janko,
Probao sam BC++ 3.0 -- samo DOS verziju.
- Iako piše da je po cfront 2.1 standardu, već i BC 3.0 ima
podršku templejtima (koji su glavna fora cfronta 3.0, i stvarno
značajno olakšavaju i unapređuju C++ programiranje)
- U 3.0 više ne postoje verzije prevodilaca koje rade bez
slobodne extended memorije. Dakle, imamo samo BCC umesto
ranijeg BCCX-a, i samo BC umesto BCX-a. Zaključak: treba vam
bar 2 MB memorije u mašini!
- Nasuprot nekim tvrdnjama, BC++ 3.0 sasvim fino radi sa
QEMM-om i ostalim dragim nam čudima. Problem je što je BC-u
treba puna 2 MB za početak. Integrisana okolina je prespora i
u ta 2 MB -- svapuje ko blesava već za program od dve hiljade
linija. Linijski prevodilac BCC takođe svapuje ko blesav, ako
damo kešu makar i 200 K nauštrb svih 2 MB. Ukratko: za BC++ 3.0
vam treba mašina sa VIŠE od 2 MB, ako ne želite da popijete po
kafu u za vreme svakog prevođenja.
- Nisu napravili samo BC i BCC da moraju da rade sa extended
memorijom, već, začudo, i MAKE, LINK i CPP. Svaki od njih mora
da inicijalizuje svoju podršku za extended memoriju itd. što
dalje dovodi do zaključka da vam treba i
a) pristojno brz disk (bar 17 ms)
b) prostojno brza mašina (bar 386/25)
c) još memorije za disk keš od bar 2-3 MB.
- Do sada nisam pomenuo. Minimalna DOS konfiguracija, bez bilo
kakvih dodataka, je malo jače od 8 MB. Od toga 2,5 MB ode na
on-lajn help fajl, koji je sjajan, ali u njemu su i informacije
o Windows delu i CLASSLIB f-jama (tj. da nisu i to da nabili u
taj fajl, bio bi primetno manji) (CLASSLIB fje nisu deo
standardne biblioteke, već paket rutina koji dobijate kao neku
upotrebljivu demonstraciju C++-a). ko želite da imate još
štošta od pratećih stvari, odoše novi megabajti... Puna DOS
konfiguracija je 30-tak MB, kažu (nisam probao). Dakle,
zaključak: za BC 3.0 -- i to samo DOS verziju, vam treba disk
od BAR 80 MB i to brz (vidi gore).
- 'Bag' na koji sam naleteo radeći sa 2.0 (ono da ne ugrađuje
implicitno kopiranje objekta što sadrže druge objekte) ovde je
otklonjen.
- BC++ 3.0 je prvi koji ima više optimizacija od TC 2.0 (sve
prethodnee su imale isti, izuzetno mali broj optimizacija).
Ipak, i pored svega, MSC 5.0 iz '87 ume da BOLJE optimizuje
suvi C kod, od ovog supermodernog čuda iz '91. Napr. poređenje
dx registra sa 65535 BC prevodi kao 'CMP dx,65535' ali MSC 5.0
kaže 'INC dx.' Pametan mali. Usput, BC++ za 'register'
promenljive NIKAD ne koristi više od dva registra: SI i DI!
Zaključak: iako u minimalnoj konfiguraciji ne zauzima puno više
od 2.0, 3.0 je daleko zahtevniji. Generalno gledano, ako imate
slabiju mašinu od 386/25 sa min 4MB (preporučujem: 8 ili više),
brzim diskom od min 80 MB, opasno ćete se napatiti...
Filozofski minimum je 286 sa 2 MB memorije i 9 MB slobodnih na
hard disku, ali, to je samo za mazohiste! (Usput, da bi ste
izveli ovo, instalaciju BC++ na ovakav 'knap' prostor,
morate da koristite program CA2ZIP koji sam ja svojevremeno
napisao, i može se naći negde u Sezamovim konferencijama).
Ako pišete suve C programe, i nemate jaku mašinu, OSTANITE na
2.0 (ili, možda, osvrnite se na MSC <=6.0, ako ne koristite
sjajnu integrisanu okolinu koju ima BC 2.0, a potrebna vam je
optimizacija koja 'vadi creva').
Ako pišete C++ programe za DOS... verovatno ćete morati da
pojačate mašinu, (ako dosad niste) ako hoćete da ostanete u
trendu. Po najavama, BC++ 3.1 je cfront 3.0 kompatibilan. A
BC++ 3.1 sigurno nije milosrdniji od BC++ 3.0.
Ako pišete Windows programe, znači da već imate bar 386/33,
8MB, VGA i 120MB HD, pa za vas nema krize. O Windows aspektu
trojke je zz napisao članak u nekim od poslednjih Računara,
koji ste, onda, već odavno pročitali...
unknown.640mjova,
> Kako u Turbo C-u da mu kazem da sve sto treba da ide na
> screen da ide na lpt1 ili lpt2?
obično radim ovako:
fprintf(stdprn, "hjhj");
SY
unknown.641floyd,
-> obicno radim ovako:
-> fprintf(stdprn, "hjhj");
Da li je moguca redirekcija u stilu DOS-a? Nesto kao:
.......
stampanje; /* procedura koja izbacuje podatke na ekran */
stampanje >prn; /* isto sto i gore, samo na stampac */
stampanje >imedat.eks; /* isto sto i gore, samo u datoteku */
.......
unknown.642todorp,
> fprintf(stdprn, "hjhj");
Hvala,ali znao sam za to.Meni treba nesto sto ce stvarno da promeni standard
out.Posto znam da imas knjigu Turbo C/C++ od Herberta Schildta,molim te
pogledaj 207. i 208-u stranu.Pise:
It is possible to redirect the console I/O to other devices.For simplicity
of discussion,however,it is assumed that the console will be the device used
since it is the most common.
Ali nepise kako,sem ako se pod tim ne podrazumeva fprintf i biosprint :((
Ja sam problem resio sa fprintf(stdout,"ghhh"); a po potrebi ubacim ispred
#define stdout stdprn.
Glupo je da jedan jezik kao C (ako stvarno nemoze) ne daje mogucnost da mu
zamenim ekran sa lpt.
Pozdrav od Todora.
ps.Ipak HVALA!
unknown.643mornar,
Jel' bi mogao ovde neko da napise funkciju za C koja bi vrsila konverziju
heksadecimalnog i decimalnog broja u binarni oblik dugacak 16 bitova(ili 32).
Hvala unapred.
Mornar
unknown.644djelovic,
> stampanje; /* procedura koja izbacuje podatk
> stampanje >prn; /* isto sto i gore, samo na stamp
> stampanje >imedat.eks; /* isto sto i gore, samo u datote
Redirekcija konzole na štampač vrši se u C-u sa:
int handle=dup(fileno(stdout));
dup2(fileno(stdprn),fileno(stdout));
... // ovde ubaci svoje procedure
dup2(handle,fileno(stdout));
Naravno, ovde možete umesto stdprn ubaciti bilo koji FILE*, a
moguće je čak spawn-ovati drugi program sa ovakvom redirekcijom, što je
mnogo efikasnije od dosadašnjeg korišćenja COMMAND.COM-a za ovakve stvari.
unknown.646djelovic,
> Jel' bi mogao ovde neko da napise funkciju za C koja bi vrsila
> konverziju heksadecimalnog i decimalnog broja u binarni oblik dugacak 16
> ili 32 bita.
int i = broj;
char s Š80Ć;
char *q = s;
while (i) š
*q++ = (i & 1 ? '1' : '0');
i >>= 1;
ć
*q = 0;
strrev (s);
Brojeve iz decimalnog i hexdecimalnog stringa možeš dobiti
funkcijom sscanf.
unknown.648mornar,
Hvala puno !
Mornar.
unknown.649zvonko,
># Posjedujem CODE BASE 4.2. Reci sta te interesuje pa da
># pokusam da ti odgovorim.
Na koliko i kakvih disketa staje, odnosno koliko stranica
ima uputstvo ;)
zvonko
unknown.650todorp,
> Naravno, ovde mozete umesto stdprn ubaciti bilo koji FILE*, a
> moguce je cak spawn-ovati drugi program sa ovakvom redire;c─joml │ÎRĽüj
Hvala!!! To mi je trebalo.
Pozdrav od Todora.
unknown.651robert,
<:> heksadecimalnog i decimalnog broja u binarni oblik dugacak 16
<:> bitova(ili 32).
Za ovaj program je sve jedno da li je broj hex ili dec...
#include <stdio.h>
void itobin (char *, unsigned int);
void main ()
{
char bin[17];
unsigned int broj;
printf ("Unesi broj: ");
scanf ("%d", &broj);
itobin (bin, broj);
printf ("\n\nBroj %u je binarno %s\n", broj, bin);
}
void itobin (char *niz, unsigned int b)
{
int i;
unsigned int maska = 1;
for (i = 0; i < 16; ++i)
{
niz[15-i] = '0' + ((b & maska) >> i);
maska <<= 1;
}
niz[i] = '\0';
}
Pozdrav, Robert.
unknown.652mjova,
> Ja sam problem resio sa fprintf(stdout,"ghhh"); a po
> potrebi ubacim ispred #define stdout stdprn.
> Glupo je da jedan jezik kao C (ako stvarno nemoze) ne daje
> mogucnost da mu zamenim ekran sa lpt.
pa može, ali ne baš tako kako si ti zamislio ;)
u dosu postoje neki 'zamišljeni' fajlovi (oni to zovu 'device'), a ti
ih možeš koristiti po svojoj volji. takavi su npr 'NUL', 'AUX', 'CON'
i 'PRN'. njihova imena možeš da koristiš u fopen() sasvim ravnopravno.
pitanje je da li ti tako nešto treba jer postoje stdin, stdout... pa
ti predlažem nešto ovako:
void print(FILE *strout) {
.....
fprintf(strout, "adasda");
.....
}
void main(void) {
int out= 0; // uvek na ekran po definiciji
.......
if(!out)
print(stdout); // štampanje na ekran:
else
print(stdprn); // štampanje na štampač:
.......
}
tek kao primer osnovne ideje. možeš 'strout' da deklarišeš kao
globalnu promenljivu pa da iz programa samo promeniš njenu vrednost
nepozivajući print() sa parametrom...
SY
unknown.653k.sasa,
Mali savet za sve D-DFLAT programere. Sa MS LINKEROM obavezno ukljuciti
/ST:XXXX opciju (za stek) gde je XXXX broj bajtova (npr /ST:2048). Ovo je
potrebno jer u suprotnom dolazi do neuhvatljivih gresaka u programu, posebno
ako se koristi i help sistem.
Pozdrav, B&S!
unknown.654robert,
Da... kad malo bolje pogledam, može i bolje... ;))))
Robert.
unknown.655todorp,
Hvala na lepom resenju!
Pozdrav od Todora.
unknown.656dnikolic,
>> molio bih da mi neko kaze kako da saznam koji je karater
>> na odredjenoj poziciji na ekranu (u tekst modu) zajedno
>> sa njegovim atributima. Ta glupost mi treba iz prostog
Sto rece todor, imas funkciju gettext koja ti pokupi deo ekrana u bafer. Ako ti
bas treba citanje karaktera, imas funkciju 8 interapta 10h koja upravo to radi.
U BH moras imati video stranu, AH broj funkcije (8), a u izlazu AL sadrzi ASCII
kod karaktera, a AH njegov atribut.
dn
unknown.657bulaja,
**** new file **** \ibmpc\c
**** arr-v110.arj
LARGE, VIRTUAL AND HUGH ARRAYS Version 1.1
by Graham Robertson
The software enclosed has three parts.
1. Large Arrays (Arrays up to the size memory allows)
Procedures are written in machine code to allow the use of large arrays in
a C program. The array can be of any size as long as memory permits.
2. Virtual Arrays and Hugh Arrays (Arrays up to the size of your DISK or
VDISK)
Procedures which include the code from part one but allow many large
arrays to be accessed. If there is no space left then old arrays will
cached to the disk or a virtual disk. Several virtual arrays can be used
to create one hugh array of any size. This restricted version limits the
number of virtual arrays to sixteen.
3. Version 1.1 of this software also allows your extended memory to be
accessed directly for this system.
unknown.658pjankovic,
>># Posjedujem CODE BASE 4.2. Reci sta te interesuje pa da
>># pokusam da ti odgovorim.
> Na koliko i kakvih disketa staje, odnosno koliko stranica
> ima uputstvo ;)
Staje na dvije diskete od 1,2Mb.
Uputstvo ima 300 stranica.
Pozdrav :)
unknown.659todorp,
Hi!
Koristim Turbo C 2.0 i naisao sam na zanimljiost.Jel' moze neko da mi objasni
kako je moguce da naredba getdfree i getfat ne rade isto??!! u sledecim
slucajevima:
struct fatinfo p;
getfat(4,&p);
total =(UL)p.fi_sclus*(UL)p.fi_nclus*(UL)p.fi_bysec; Ovaj posle odredjenog
kapaciteta lupa gluposti (poznat
vam je moj program df).Preko odre-
djenog kapaciteta ipisuje za sve
4Gb.
i
struct dfree p;
getdfree(4,&p);
total=(UL)p.df_total * (UL)p.df_bsec * (UL)p.df_sclus;
Pozdrav od Todora.
ps.UL je unsigned long.
unknown.660mjova,
> Ovaj posle odredjenog kapaciteta lupa gluposti
> (poznat vam je moj program df).Preko odre-
> djenog kapaciteta ipisuje za sve 4Gb.
Šta da ti kažem, imaš izvorni kod fds-a ;), pa pogledaj ja se time
slušim i nema nikakvih problema, bar ne za sada...
Da li si nekim operacijama nad brojem dobio preveliku vrednost? možda
se radi o tome da ako diska nema (onda je jedna od vrednosti -1)
ispiše unsigned long (-1) (to bi trebalo da bude onih 4Gb)? Ko zna?
ono fi_sclus (pišem napamet, proveri) treba ispitati da li je 0xffff
(tj -1) pa onda ako nije raditi dalje...
ako hoćeš, pošalji mi source u priv poštu da pogledam...
SY
unknown.661robert,
<:> Koristim Turbo C 2.0 i naisao sam na zanimljiost.Jel' moze neko da
<:> mi objasni kako je moguce da naredba getdfree i getfat ne rade
<:> isto??!! u sledecim
Evo kako su obe strukture definisane:
struct fatinfo {
char fi_sclus; /* sectors per cluster */
char fi_fatid; /* FAT id byte */
int fi_nclus; /* number of clusters */
int fi_bysec; /* bytes per cluster */
};
struct dfree {
unsigned int df_avail; /* available clusters */
unsigned int df_total; /* total clustrs */
unsigned int df_bsec; /* bytes per sector */
unsigned int sclus; /* sectors per cluster*/
};
E sad, kod većih diskova možda promenljive u strukturi fatinfo ne
mogu da prihvate date veličine ili rutina getfat() postavlja neke
vrednosti u slučaju pojave greške (o tome međutim, ništa ne piše u
helpu dok za getdfree() piše da se negde vraća 0xfff ili nešto tako
u slučaju greške). Trebalo bi se oko toga malo igrati u trace modu
pa videti šta se upisuje gde i u kom slučaju.
unknown.662todorp,
Stvar je u tome sto bi ona dva primera morala na istoj particiji isto da rade,
(zar ne?) a oni ne rade.
> Da li si nekim operacijama nad brojem dobio preveliku vrednost?
Pa sta to znaci prevelika vrednost.Prevelika bi bila vrednost od jedno 10
cifara (posto je long) a to nikako nisam mogao da dobijem.
Pozdrav od Todora.
ps.Ono za source,obrisao sam bagovitu zivotinju u afektu.Procackacu malo
sa undelete pa ako uspem da ga izvucem saljem ti na mail.Bio sam dovoljno
glup da obrisem i prethodne verzije iz confa :(
unknown.663todorp,
> u slucaju greske). Trebalo bi se oko toga malo igrati u trace modu
> pa videti sta se upisuje gde i u kom slucaju.
Pa igrao sam se sa debugerom i lupao je gluposti a, ja nisam hteo da preterano
ulazim u problematiku TC-a.Znam samo da cu izbegavati getfat gde god mogu.
A ono o razlikama u strukturi ne razumem sta ce im int kad nemoze da bude
ni jedan broj vezan za disk negativan (sto nije unsigned?).Znaci opet glupost.
> char fi_sclus; /* sectors per cluster */
Sta ce ovde char?
Pozdrav od Todora.
unknown.664obren,
> Pa igrao sam se sa debugerom i lupao je gluposti a, ja nisam hteo da
> preterano ulazim u problematiku TC-a.
U fi_sclus je u slučaju nepostojećeg diska vrednost -1 (nema u helpu, ali
mogao si i probom da provališ da si malo bolje pogledao "gluposti" ;)). Kada
se -1 castuje u unsigned pa pomnoži za drugim članovima fatinfo strukture,
(koji su u tom slučaju neodređeni) dobijaju se vesele vrednosti, odnosno oni
diskovi sa poželjnim kapacitetom... :)))
> Znam samo da cu izbegavati getfat gde god mogu.
Ma lupi HELP IGNORE GETFAT i gledaj posla, kad ne ume da napiše ni pošten
resume u helpu, pa treba da pogađaš ko je, šta je i kako radi... ;)
unknown.665todorp,
> U fi_sclus je u slucaju nepostojeceg diska vrednost -1 (nema u helpu,
> mogao si i probom da provalis da si malo bolje pogledao "gluposti" ;)).
> se -1 castuje u unsigned pa pomnozi za drugim clanovima fatinfo struktur
> (koji su u tom slucaju neodredeni) dobijaju se vesele vrednosti, odnosno
Ili ja tebe nisam razumeo ili ti mene.Kako je nepostojeci disk kad ta ista
particija kad se smanji radi program a ako je vise od oko 70mb neradi, a
getdfat radi?
Pozdrav od Todora.
E je* ga posto kucam on line gore nije getfat nego getdfree.
unknown.666obren,
> Ili ja tebe nisam razumeo ili ti mene.Kako je nepostojeci disk kad
> ta ista particija kad se smanji radi program a ako je vise od oko
> 70mb neradi, a getdfat radi?
Izgleda ja tebe - mislio sam da te izluđivalo što dobijaš velike brojeve
za nepostojeće diskove, pa sam pogledao malo po literaturi šta može da bude
uzrok. Ne pominju se eventualni problemi sa particijama koje postoje, a u
principu tu se samo poziva odgovarajuća DOS-ova funkcija, i tu (valjda) ne
bi trebalo da ima bagova (?).
unknown.667ilazarevic,
Može jedno početničko pitanje? Može... Daklem:
Koja je razlika između signed i unsigned promenljivih?
unknown.668glisin,
ŢŢŢKoja je razlika između signed i unsigned promenljivih?
U vrednostima koje se mogu staviti unutra. Signed oblik koristi zapis broja u
potpunom komplementu, tako da se mogu pakovati i pozitivni i negativni, dok
unsigned to tretira kao niz bitova sa vrednostima od nula pa dalje. Da ne
detaljišem oko zapisa brojeva u binarnom sistemu, ono što ti treba je sledeće:
unsigned signed
────────┼────────────────┼─────────────────────────
char │ 0...255 │ -128...127
short │ 0...65535 │ -32768...32767
long │ 0...4294967296 │ -2147483648...2147483647
────────┴────────────────┴─────────────────────────
Primeti da NEMA int-a u tabeli. To je zato što je "int" jednak ili short ili
long, zavisi od mašine. Recimo, na 16-bitnim mašinama je obično int=short, dok
se kod 32-bitnih pravi tako da je int=long, da bi po bio što srodniji
organizaciji samog procesora. Preporučujem da koristiš baš short i long a
izbegavaš int ako te interesuje portabilnost a radiš nešto sa bitovima ili
pointerima i takvim varijablama. U ostalim slučajevima nema veze.
Opaska: Slične stvari postoje i u drugim jezicima. Na primer u MODULI-2 je tip
CARDINAL baš ono što je u C-u unsigned (0...) a u Pascalu toga nema, ali se
može napraviti CARDINAL (0..32767 doduše) ako se stavi
TYPE cardinal = 0..MAXINT;
a takođe i
TYPE byte = 0..255;
što je ekvivalentno C-ovom
typedef unsigned char byte;
Eto. Nadam se da sam bio dovoljno informativan. Ako nešto još zapne, pitaj pa
da objašnjavamo. Inače, moja objašnjenja se baziraju na STANDARDIMA jezika.
Zato i kažem da Pascal nema unsigned, iako Turbo ima, jer po Wirth-u nema,
dakle nema i tačka. :-)))
ŢŢŢIGGYŮŮŮ
unknown.669janko,
> Koja je razlika između signed i unsigned promenljivih?
Pitanje je više vezano za osnove računarstva, a ne C kao jezik.
Signed imaju znak a unsigned ne. :) Kodovanje signed ne mora da
bude u drugom komplementu, zavisi od mašine, ali obično jeste.
Na 80X86 procesorima jeste. Drugi komplement je kodovanje tako
da je 65535 == -1, 65534 == -2 itd. Pozitivni brojevi su
0..32767. Ovo pričam za int (na dos C-ovima je int 16 bita).
Slično važi i za char, koji je 8 bita, i za long (32).
Uzmi malo eksperimentiši i sve će ti biti jasno.
unknown.670ilazarevic,
█ Eto. Nadam se da sam bio dovoljno informativan. Ako nešto još zapne,
█ pitaj pa da objašnjavamo. Inače, moja objašnjenja se baziraju na
█ STANDARDIMA jezika.
Hvala, bilo je divno :) Mene baš interesuju standardi, posle je lako
popunjavati rupe...
unknown.671ilazarevic,
Hvala i gliši i janku na objašnjenjima.
unknown.672rogi,
Ukoliko neko poseduje datoteku "commdlg.h" molio bih
ga da mi se javi na mailH povodom iste.
Rogi
unknown.673ciki,
Ho!
Posto sam tek poceo da radim u C-u,imam jedno pitanjce.
Da li je moguce procitati poziciju na disku odgovarajuceg programa
i kako?
Pozdrav Ciki!
unknown.674d.petrovic,
Početničko pitanje !
Možda nekom bude čudno, ali...
Treba da napravim jedno kratko programče koje treba da ima
štampa jedan obrazac i još par sitnica.
Ja sam do sad piskarao samo po Clipper-u (bilo bi smešno da
program koji tako malo stvari radi bude dug cca 300 K), a sa
engleskim se salbo snalazim pa bih bio presrećan da mi neka dobra
duša napiše par reči o C-u (to je vama < 5 min).
Daklem:
1. Kako da preusmerim izlaz na štampač ?
2. Kako da odštampam nešto u koloni 5 na ekranu, a da ne obrišem
znake u kolonama 0-4 ?
3. Kako da još par podataka smestim u fajl na disku i odatle ih
učitavam (ovo nije neophodno, ako je komlikovano za početnika u C-u)?
Hi!
P.S. Ako je bitno imam Borlandov TC 1.0 !
Uz svaku upotrebljenu funkciju molim napomenu gde se nalazi, t.j. koji
heder fajl povezati.
unknown.675janko,
> P.S. Ako je bitno imam Borlandov TC 1.0 !
Pređi na TC 2.01 i nabavi :) samo TSR help iz paketa Borland
C++ 2.0. To ti je najbolja kombinacija. TC 2.01 je najbrži u
prevođenju, a help iz BC 2.0 daje najviše informacija. Probaj
-- i broj pitanja će ti se naglo smanjiti... onda se ponovo
javi...
unknown.676mjova,
> Da li je moguce procitati poziciju na disku odgovarajuceg
> programa i kako?
kakvu poziciju? čak i da sam te dobro razumeo, to nema potrebe raditi.
program (neki com ili exe) možeš da otvoriš funkcijom fopen() ili
nekom koja radi sličnu stvar.
možda absread() i abswrite() rade ono što te zanima, ali nisam siguran
baš 100% jer njima ne određuješlokaciju programa već čitaš odeređeno
mesto na disku. e, sad, što se tiče lociranja nekog programa za rad sa
ove dve funkcije nisam upućen jer mi to nikad nije bilo potrebno jer
sve probleme rešavam sa fopen().
unknown.677mjova,
> 1. Kako da preusmerim izlaz na štampač ?
pogledaj poruku pc.prog:6.642 i odgovore na nju.
> 2. Kako da odštampam nešto u koloni 5 na ekranu, a da ne
> obrišem znake u kolonama 0-4 ?
probaj sa putch(), cprintf() i ostalim sličnim fn. naravno, koristi
gotoxy(), wherex(), wherey()...
> P.S. Ako je bitno imam Borlandov TC 1.0 !
nije preterano bitno, ali predlažem ti BC++ 2.0, i biblioteke iz 3.0.
verzija 2.0 ima prednosti kad se pri prevođenju koriste ranije
prevedena zaglavlja. time se dosta ubrzava prevođenje C++ koda.
SY
unknown.678rogi,
Postovane kolege,
Ponovo se javljam povodom meni tako neophodne datoteke "commdlg.h".
Da bih Vam osvezio pamcenje objasnicu sta je u toj datoteci. Od BETA
verzije Windows 3.1 distibuira se fajl COMMDLG.DLL koji sadrzi odredjeni
skup dijaloga za otvaranje, zatvaranje i stampanje datoteka. Posto pose-
dujem BC++ v3.0 u njemu se ne nalazi include datoteka commdlg.h a i sami
zante kako sada stoje stvari sa upgradeom. Molio bih nekog ako poseduje
tu datoteku da mi se javi na mail. A evo i jednog korisnog dokumenta.
U fajlu se nalaze Microsoftova objasnjenja kako kreirati status bar u
aplikaciji pod Windowsima. Ince izasao je Paradox Engine 3.0. Te infor-
macije cu kasnije poslati. Jos nesto, sta bi sa grupom windows.2 nkbog
obeca nesto. Pozdrav,
Rogi
stabar.zipunknown.679rogi,
Evo i informacija o Paradox Engine 3.0 i nekim drugim novim
borlandovim proizvodima.
a.zipunknown.680garderp,
Da li si ti nešto već radio u paradox-u 2.0 ili samo nosiš vesti?
Predrag (za Arape)
unknown.681micko,
Zdravo,
Da li kosristis samo Engine ili i Paradox kao relacionu bazu?
Ajde da se dogovoriomo pa da svi oni koji koriste Pareadox u
bilo kojoj verziji ili varijanti osnujemo grupu za razmenu
svega (iskustava, znanja, softvera itd.)
Codor
unknown.682ppekovic,
>> Ajde da se dogovoriomo pa da svi oni koji koriste Pareadox u
>> bilo kojoj verziji ili varijanti osnujemo grupu za razmenu
>> svega (iskustava, znanja, softvera itd.)
Šta će vam grupa kad imate ovu konferenciju.
Paya
unknown.683ciki,
>>kakvu poziciju? čak i da sam te dobro razumeo, to nema potrebe
>>raditi....
Ovako.
Vec sam rekao da sam apsolutni pocetnik u C-u.
To bi trebalo da radi nesto slicno pctools-u(Znas ono kada gledas
mapu diska, pa ti on kaze tu i tu se nalazi taj i taj prg...)
P.S. Nisam se javljao od 31.8. pa zato izvini na sadasnjem odgovoru.
Pozdrav Ciki!
unknown.684mjova,
> To bi trebalo da radi nesto slicno pctools-u(Znas ono kada
> gledas mapu diska, pa ti on kaze tu i tu se nalazi taj i
> taj prg...)
e, to je druga priča. to bi trebalo pogledati u nekoj knjižici o dos-u
ili po helpovima. FAT bi trebalo da sadrži sve inforamcije koje te
zanimaju, pa pokušaj da proučiš njegovu strukturu. nisam nikad imao
potrebu da radim tako nešto, pa ti više ne mogu reći.
unknown.685obren,
> To bi trebalo da radi nesto slicno pctools-u(Znas ono kada gledas
> mapu diska, pa ti on kaze tu i tu se nalazi taj i taj prg...)
I meni je jednom trebao metod za nalaženje početnog klastera ali nigde
nisam mogao da nađem. Našao sam "obrazac" za putovanje, ali za njega treba
da se zna početni klaster. E, onda sam pitao na Mića BBS-u i Vasa (vasic)
mi je iskopao, valjda iz HelpPC-a da se početni klaster može naći u FCB-u
(File Control Block). E tu postoji problem, jer je taj podatak na raznim
ofsetima kod DOS-a 2.x, kod DOS-a 3.x i kod 3.x kada je startovan SHARE.
Posle sam odustao od toga, ali ako baš hoćeš probaj da se zezaš sa FCB-om.
Uostalom, ko sada koristi DOS 2.0? Ostaje ti samo da prepoznaš da li je
startovan SHARE, pa imaš samo dve varijante. Aj, pa javi šta si uradio,
detalje imaš u HelpPC-ju.
unknown.686robert,
Evo za sve one koji počinju da se bave ili koji žele da
počnu da se bave C-om nekoliko malih funkcija uklopljenih
u dva demo programa.
Kao što samo ime arhive kaže koriste se pozivi BIOS-u u
svrhu čitanja tastature i njenog statusa i u svrhu kontrole
ekrana i kursora. Sve u svemu ništa spektakularno ali kome
treba da se uči možda će dobo doći. Arhiva sadrži i jedan
PROžITAJ.ME fajl u kome sve lepo piše.
Pozdrav.
P.S. Oni iskusniji programeri ovo ne moraju da skidaju jer
sve to već odavno znaju. :))
(žisto da ne bude posle lupanja šakom o čelo... ;))
biosdemo.arjunknown.687dejanr,
NOVOSTI/bix 5.25 je zapravo prikaz (beta verzija) Microsoft C-a 7.0
koja će izaći/je izašla u septembarskom broju BYTE-a.
BTW, u sledećim "Računarima" (oktobar) takođe sledi prikaz ovoga paketa,
srećom ne kasnimo mnogo za BYTE-om :)
unknown.688zvonko,
>#
># BTW, u sledećim "Računarima" (oktobar) takođe sledi
># prikaz ovoga paketa, srećom ne kasnimo mnogo za BYTE-om
># :)
Još samo da obezbedite diskete i štampanu dokumentaciju :>>>
unknown.689dejanr,
>> > BTW, u sledećim "Računarima" (oktobar) takođe sledi
>> > prikaz ovoga paketa, srećom ne kasnimo mnogo za BYTE-om
>> > :)
>>
>> Još samo da obezbedite diskete i štampanu dokumentaciju :>>>
Nije mi baš jasno šta si ovim hteo da kažeš, ali prikaz je "naš",
tj. paket (original) je, zahvaljujući "Jogodati", obezbeđen, kao
i uvek kada se radi prikaz.
unknown.690d.petrovic,
Jel zna neko kako da pročitam serijski broj diska (adresa) ?
Ima li tako nešto matična ploča ?
unknown.691d.petrovic,
Možda je pitanje čudno, ali ja sam početnik u C-u!
Znam da to može i na lakši način, ali ja sam tvrdoglav i hoću to na kraći.
Problem je sa zastavicama u printf() i fprintf() funkcijama. Daklem kako:
fprintf(out," 1, 2,..., 9,10,11);
(Videli ste ? Bitan je razmak ispred 1-9)
da napišem u petlji, tj, kako da postavim format ispisa:
for(br=1;br<=30;++br)
fprintf(out,"%u........",br);
Ajde nek se nađe dobra duša koju ne mrzi ovo da mi napiše, ja se s tim
mlatio skoro ceo sat :((((
Hi
unknown.692ppekovic,
>> Znam da to može i na lakši način, ali ja sam tvrdoglav i
>> hoću to na kraći. Problem je sa zastavicama u printf() i
>> fprintf() funkcijama. Daklem kako: fprintf(out," 1, 2,...,
>> 9,10,11);
>> (Videli ste ? Bitan je razmak ispred 1-9)
>> da napišem u petlji, tj, kako da postavim format ispisa:
>> for(br=1;br<=30;++br)
>> fprintf(out,"%u........",br);
Uh, evo treći put čitam ovo što si napisao i nije mi baš jasno šta si želeo
da postigneš. Ajde probaj da objasniš bolje.
Paya
unknown.693prvul,
Ů>> (Videli ste ? Bitan je razmak ispred 1-9)
Ů>> da napišem u petlji, tj, kako da postavim format ispisa:
Ů Uh, evo treći put čitam ovo što si napisao i nije mi baš jasno šta si
želeo
Ů▄▄
Mislim da hoće da postigne ovo:
for(br=1;br<=30;++br)
fprintf(out,"%2u,",br);
Odn. hoće da ima brojeve ispisane tako da svaki broj zauzme isti broj
karaktera, u ovom slučaju 2.
unknown.694mjova,
> Ima li tako nešto matična ploča ?
nema, ali možeš pročitati SN biosa (nesigurno) ili chksum (još
bolje)..
unknown.695zzivotic,
> fprintf(out," 1, 2,..., 9,10,11);
> (Videli ste ? Bitan je razmak ispred 1-9)
> da napišem u petlji, tj, kako da postavim format ispisa:
> for(br=1;br<=30;++br)
> fprintf(out,"%u........",br);
fprintf(out,"%2u",br); Jel to?
Pozdrav, zz
unknown.696d.petrovic,
> Uh, evo treći put čitam ovo što si napisao i nije mi baš
> jasno šta si želeo da postigneš. Ajde probaj da objasniš
> bolje.
Odgovorio ti je i prvul, al' pošto si pokazao dobru volju da pomogneš
dužan sam i ja.
Trebalo mi je:
fprintf(out,"%2u",br);
a ja sam sve vreme pokušavao (kad kupujem loše napisane knjige ;)):
fprintf(out,"%u 2",br);
fprintf(out,"%u2",br);
fprintf(out,"%u%2",br);
i još puuuno, puno kombinacija, bolje reći sve osim prave :(((
unknown.697nboskovic,
*> Ima li tako nešto matična ploča ?
Možda ima procesor zapisano negde na nekoj adresi
u sebi?
(c) klap
nikola
unknown.698janko,
> Možda ima procesor zapisano negde na nekoj adresi
> u sebi?
Serijski broj SVAKOG mikroprocesora? To bi bilo SKUUUUPO da ne
možeš da zamisliš koliko. Naravno, ne postoji...
unknown.699glisin,
ŢŢŢAjde nek se nađe dobra duša koju ne mrzi ovo da mi napiše,
ŢŢŢja se s tim mlatio skoro ceo sat :((((
Videh da ti je Prvul odgovorio... nego, vidi se da ne koristiš prave knjige.
To tamo piše. Pišem ovu poruku da ti skrenem pažnju na nekoliko formata koji
se najčešće koriste. Neka je x = 123:
printf (" >%d< ", x); Izlaz: >123<
printf (" >%5d< ", x); Izlaz: > 123< (ono što si tražio)
printf (" >%-5d< ", x); Izlaz: >123 <
printf (" >%05d< ", x); Izlaz: >00123<
Isto važi za ostale tipove (%u, %s, %c...). Ima još mnogo kerefeka sa izlazom,
posebni za %f i %e, ali ovo je najkorisnije i najčešće. Oblik '%0nt' je
naročito zgodan kada imaš HEX brojeve. Ako ti je h = 0xE1C na primer, a hoćeš
da to liči na 32-bitni broj, dakle da ima pun format, kažeš:
printf (" %08X ", h); Izlaz: 00000E1C
printf (" %08x ", h); Izlaz: 00000e1c
Prosto k'o pasulj!
ŢŢŢIGGYŮŮŮ
unknown.700todorp,
> Jel zna neko kako da procitam serijski broj diska (adresa) ?
> Ima li tako nesto maticna ploca ?
Za serijski broj diska ti treba dos veci od 4-ke. Evo ti ovo ali neznam koliko
ce ti pomoci:
INT 21,69 - Get/Set Disk Serial Number (Undocumented DOS 4+)
AH = 69h
AL = 00 get serial number
= 01 set serial number
BL = drive (0 = default, 1=A:, 2 = B:, ... )
DS:DX = buffer to contain extended BIOS Parameter Block (BPB, AL=0)
= disk information to set of the form:
Offset Size Description
00 word info level (zero)
02 dword disk serial number (binary)
06 11bytes volume label or "NO NAME " if not present
11 8bytes filesystem type string "FAT12 " or "FAT16 "
returns:
CF = set on error
AX = error code if CF set
= 01 network drive not supported
= 05 no extended BPB found on disk
CF = clear if successful and value in AX is destroyed
AL = 00 buffer filled from Extended BPB on disk
= 01 disk Extended BPB updated from buffer
DS:DX = pointer to returned data, when AL = 0
- copies data from Extended BIOS Parameter Block to buffer
- no critical error is generated on error
- does not work on network drives (returns 01)
- returned buffer (after offset 2) is similar to offsets 27 through
3D of the Extended BPB found in the boot record
Za maticnu plocu mislim da nema resenja.
Pozdrav od Todora.
unknown.701korvin,
Gospodo, uskoro zaplovljavam u vitaminske (C ) vode, interesuje me
kakvo je vaše uvaženo, koji C da uzmem ? Vredi li preći na objektno prg. ?
unknown.702mornar,
Preporucujem ti neki od Borlandovih C kompajlere, jer su brzi i vrlo
efikasni i sa najmanje bug-ova. Sto se tice obj. prog. iako ga neces odma
koristiti ( shvatiti ), vredi imati njegovu podrsku.
Preporucujme Borland C++ v2.0 ili v3.0
pozdrav.
unknown.703d.petrovic,
Nikako da ukapiram kako C prenosi vrednosti funkcijama :((
Pitanje :
Kako da kad hoću da ispišem liniju u fajlu prenesem pokazivač na fajl, tj.
!
Na ekranu bi to bilo :
main š
lin(20);
ć
lin(du) š
int br;
for(br=1;br<=du;++br)
printf("-");
ć
ali....., sa fajlovima to ne radi jer treba preneti i pokazivač na fajl !
Ja probao, ali ovo ne ide !
main š
FILE *out;
out=fopen("PROBA.TXT","wt");
fprintf(out,"TestiranjeĐn");
lin(out,20);
fclose(out);
ć
lin(out,du) š
int br;
for(br=1;br<=du;++br)
fprintf(out,"-");
ć
Kako to u stvari treba, treba da skratim program za ¸200 linija kad
prenesem parametar drugoj funkciji !?
Hi
unknown.704ppekovic,
>> Preporucujem ti neki od Borlandovih C kompajlere, jer su brzi i vrlo
>> efikasni i sa najmanje bug-ova. Sto se tice obj. prog. iako ga neces odma
++++++++++++++++
Najmanje bug-ova u poredjenju sa kojim kompajlerima?
Pored Borlandovih kompajlera, tu su i Microsoft C 6.0 i C 7.0.
Ovaj drugi je objektno orijentisani, ali kao i noviji Borlandovi
kompajleri jede mesto na disku.
Paya
unknown.705d.petrovic,
> Možda ima procesor zapisano negde na nekoj adresi
> u sebi?
Ne verujem. Možda ima matična ploča, ali mene je u stvari interesovalo sa
koje adrese pročitati broj Hard diska.
Pozdrav, Dejan
unknown.706d.petrovic,
> Serijski broj SVAKOG mikroprocesora? To bi bilo SKUUUUPO
> da ne možeš da zamisliš koliko. Naravno, ne postoji...
E, postoje. Sad baš ne bih da dokazujem, ali pročitao sam to negde i
naravno ne odnosi se na SVAKI, ti se valjda posebno naručuju i bla,bla...
unknown.707d.petrovic,
> Prosto k'o pasulj!
Naravno da je prosto kad znaš, ali mišta se ne brini, krećem ja polako sa
komplikovanijim pitanjima.:)
Pozdrav, Dejan
unknown.708janko,
> Preporucujme Borland C++ v2.0 ili v3.0
Ako imaš velike diskove, a ovaj drugi i ako imaš bar 4M
memorije.
Ako nemaš nameru da se objektuješ, dovoljan ti je Turbo C 2.01.
Mali je, sladak, brži i od naslednika (jasno je zašto). Jedino
ima slabiji help od Borland 2.0 i 3.0. Preporučujem help iz BC
2.0.
unknown.709janko,
> main š
> FILE *out;
> lin(out,20);
>ć
> lin(out,du) š
>ć
Za početak: nabavi knjigu koja opisuje ANSI C. Ti pišeš po K&R
C-u koji može opasno da te zbunjuje i nadalje. ANSI C te tera
da daklarišeš funkcije i parametre pošteno, pa verovatno se ne
bi zbunio ovako.
Kratak odgovor:
void lin(FILE* out, du )
š
...
ć
unknown.710janko,
> E, postoje. Sad baš ne bih da dokazujem, ali pročitao sam
> to negde i naravno ne odnosi se na SVAKI, ti se valjda
> posebno naručuju i bla,bla...
Prvi put čujem. Ukratko, za svaki mp. sa različitim brojem
morale bi da se prave nove maske, prema kojima se nagriza
silicujumska podloga, rade dopiranja i ostvaruju električni
spojevi, što je skupo ne zna se.
Ako nađeš to, citiraj, da i ja nešto saznam...
unknown.711dragisha,
ű> Gospodo, uskoro zaplovljavam u vitaminske (C ) vode,
ű> interesuje me kakvo je vaše uvaženo, koji C da uzmem ? Vredi
ű> li preći na objektno prg. ?
Nisi ti toliko loš pa da zaslužiš C:). Bolje se preispitaj...
dragisha
unknown.712dragisha,
ű> Prvi put čujem. Ukratko, za svaki mp. sa različitim brojem
ű> morale bi da se prave nove maske, prema kojima se nagriza
ű> silicujumska podloga, rade dopiranja i ostvaruju električni
ű> spojevi, što je skupo ne zna se.
A može se napraviti i jedinstvenom maskom sa naknadnim
ubacivanjem ser.br. spaljivanjem visokim naponom pojedinih
veza u posebnom dijelu mp kao što se radi u PROM-ovima.
dragisha
unknown.713mjova,
> Gospodo, uskoro zaplovljavam u vitaminske (C ) vode,
> interesuje me kakvo je vaše uvaženo, koji C da uzmem ?
> Vredi li preći na objektno prg. ?
pa da bi prešao na objektno programiranje prvo bi trebalo da naučiš C.
kako je C++ zaista moćan u svim pravcima, preporučujem ti borland kao
start. ver 2.0.
unknown.714glisin,
ŢŢŢAko nemaš nameru da se objektuješ, dovoljan ti je Turbo C 2.01.
Jasno, ja radim sa 2.01. Jako solidno. TC++ su prenapučeni!
ŢŢŢPreporučujem help iz BC 2.0.
Vidi ti ovo! Nemoj reći da može da se stavi HELP iz BC2.0 u direktorijum sa
TC2.0 i da ga ovaj vidi bez problema? Jel to to?
ŢŢŢIGGYŮŮŮ
unknown.715glisin,
ŢŢŢUkratko, za svaki mp. sa različitim brojem morale bi da se prave
ŢŢŢnove maske...
He, he... pa većina mikroprocesora ima serijski broj, samo što je to BAŠ BROJ
koji je nanet u završnoj fazi kod kontaktnog sloja. Maske se ne rade ponovo
jer se za VLSI obično elektronskim snopom iscrtavju sve maske po Waferu, tako
da je ser.br. lako promeniti. Inače, on se stavlja na čip zbog vizuelne
kontrole i eventualnog odbacivanja serije, etc...
E sada C: sledi da iz C-a, pa ni iz bilo kog jezika, nije moguće takav broj
pročitati jer on veze sa elektronikom nema. Jedini način da se vidi je da
slomiš pakovanje i da ga tražiš pod lupom na samom čipu. Uostalom, pogledaj
neku sliku mikroprocesora i lako se negde uz ivicu nađe nešto poput
DXFG527365HJI... to je to.
Naravno, nije isključeno ni da se u nekim slučajevima serijski broj unosi kao
neki registar (i to je lako promeniti, opet samo završna faza), ali ja za
takve procesore nisam čuo. Ako ih ima, to bi se već dalo nekako softverski i
pročitati.
ŢŢŢIGGYŮŮŮ
unknown.716d.petrovic,
> Ako nađeš to, citiraj, da i ja nešto saznam...
Ufffffff, jedva nađoh ;(
Dr Jozo J. Dujmović
Programski jezici i metode programiranja
(zašto li sam ja ovo uopšte kupio;()
Naučna Knjiga ISBN 86-23-20169-8
Poglavlje 3.6 Pravni i ekonomski aspekti
Strana 3.102, Zadnji pasus
.....mogu neovlašteno iskopirati, proizvođači softvera redovno pokušavaju da
svoj softver zaštite od toga, pa pored pravne zaštite putem "copyright"-a
koriste i druge razne.....
.....sastoji se u tome da se serijski broj procesora koji je utisnut u
odgovarajući ROM prilikom fabrikacije procesora (i koji se može programski
očitati) dostavi proizvođaču softvera koji zatim taj broj upisuje (najčešće
kriptografisano) u program.....
E, sad, knjiga nije orijentisana na XT/AT, pa pitanje je da li to imaju
80x86 procesori, a pitanje je i odakle autoru knjige podaci;)
Pozdrav, Dejan
unknown.717d.petrovic,
> Za početak: nabavi knjigu koja opisuje ANSI C. Ti pišeš po
> K&R
Prporuči mi neku, baš počinje da me interesuje C.
> void lin(FILE* out, du )
> š
> ...
>ć
Ovo ne radi :((
Znači ja sam ga pozvao sa:
lin(out,13);
i kompajler mi nacrta kursor na ono du i kaže expected :(((
P.S. To radi TC 1.0
unknown.718dejanr,
>> E, sad, knjiga nije orijentisana na XT/AT, pa pitanje je da li to imaju
>> 80x86 procesori, a pitanje je i odakle autoru knjige podaci;)
Tvrdnja se odnosi na VAX.
unknown.719janko,
> Vidi ti ovo! Nemoj reći da može da se stavi HELP iz
> BC2.0 u direktorijum sa TC2.0 i da ga ovaj vidi bez
> problema? Jel to to?
Nisam probao da li ga razume integrisana okolina, ali ako se
instalira sa THELP-om iz 2.0 (rezidentno, daklem) naravno da
može.
Možda je neko probao i za IDE?
Inače, BC help je bolji jer ima primer programa za svaku
naredbu, za razliku od helpa za TC 2.0, koji ima samo opise.
unknown.720janko,
> koji je nanet u završnoj fazi kod kontaktnog sloja. Maske
> se ne rade ponovo jer se za VLSI obično elektronskim
> snopom iscrtavju sve maske po Waferu, tako da je
> ser.br. lako promeniti. Inače, on se stavlja na čip
> zbog vizuelne kontrole i eventualnog odbacivanja serije,
> etc...
Ne razumem se u to puno, priznajem. Sve što znam čuo sam na
nekim predmetima, koje sam već napola zaboravio... pa zato imam
još pitanja:
Kako se elektronskim snopom iscrtava nešto što se menja od čipa
do čipa? Kako se onda kontroliše taj snop? Da li su onda maske
uopšte potrebne, ako snop može da se kontroliše?
> Naravno, nije isključeno ni da se u nekim slučajevima
> serijski broj unosi kao neki registar (i to je lako
> promeniti, opet samo završna faza), ali ja za
Kako se i ovo postiže? Zar jedan registar ne čini puno puno
slojeva (svi ti tranzistori itd.)? Zar to nije malo više od
završne faze?
unknown.721janko,
> pa da bi prešao na objektno programiranje prvo bi trebalo
OOP gurui se kunu da će se na C++ lakše navići tipovi
neopterećeni predznanjem C-a. žini mi se da je to malo
ekstreman stav, ali definitivno je moguće ODMAH učiti C++, ako
ima ko da te uči!
unknown.722janko,
>> Za početak: nabavi knjigu koja opisuje ANSI C. Ti pišeš
>> po K&R
>
> Prporuči mi neku, baš počinje da me interesuje C.
Pa, referentna knjiga je Brian Kernighan, Denis Ritcie, The C
Programming Language, Second Edition (ako sam sve dobro otkucao
napamet :) Postoji i prevod na srpski, u izdanju Savremene
administracije, ali je blago rečeno odvratan, a ima i tonu
bagova i u sorsovima. Ako znaš engleski, zaobiđi prevod...
Neko, možda, zna i neku knjigu koja je pristupačnija početniku?
>> void lin(FILE* out, du )>
> Ovo ne radi :((
> i kompajler mi nacrta kursor na ono du i kaže expected
> :(((
Jeste, verovatno treba
void lin( FILE* out, int du )
Nikada dosad nisam probao da smuljam u deklaraciju i K&R i ANSI
stil, pa nisam ni znao kako se kompajler ponaša. :)
Daklem, moraš SVUDA da koristiš deklaracije.
unknown.723korvin,
>> Ako nemaš nameru da se objektuješ, dovoljan ti je Turbo C 2.01.
>> Mali je, sladak, brži i od naslednika (jasno je zašto). Jedino
>> ima slabiji help od Borland 2.0 i 3.0. Preporučujem help iz BC
>> 2.0.
Eh, pa ta me dilema i muči :) Ja u početku, dok ne savladam C neću da
radim sa objektima ali ne znam da li ću kasnije moći da se brzo
prilagodim Borlandu 2.0 /3.0 ?
Takođe, to sam zaboravio da priupitam, koju mi literaturu
preporučujete ?
unknown.724glisin,
ŢŢŢKako se elektronskim snopom iscrtava...
Pijuh, duga priča, ali nešto poput katodne cevi, lepo se crta slika koja je
projektovana u nekom paketu za izradu VLSI integrisanih kola po waferu.
ŢŢŢZar jedan registar ne čini puno puno slojeva (svi ti tranzistori itd.)?
ŢŢŢZar to nije malo više od završne faze?
Eto ti sad! Pa jeste, samo što se završnom maskom ostvare spojevi koji ti
trebaju i to je to. Sve se napravi, pa se onda ne poveže ono što nije potrebno
(to jest, poveže se tako da ne vise izlazi u prazno), ili se stvar izvede tako
što se upravlja emitorskim ulazima (TTL) ili gejtom (MOS). Recimo, tako se
rade MPROM memorije (Mask Programmable ROM). Evo jedne jako uprošćene verzije
sa običnim tranzistorima sa zajedničkim kolektorom (BTW, osetljivo je na
smetnje jer neke baze "vise" u prazno što nije baš zdravo):
E1 E2 E3 E4
█ █ █ █ ▄▄▄▄▄▄▄ C
┌────█─────────────█─────────────█─────────────█──────█──┐
│┌───█───┐ ┌───█───┐ ┌───█───┐ ┌───█───┐ ███ │
││┌──█──┐└────┐│┌──█──┐└────┐│┌──█──┐└────┐│┌──█──┐└────┐│
│││ ███ │ ███ │││ ███ │ ███ │││ ███ │ ███ │││ ███ │ ███ ││
││└─────┘ █ ││└─────┘ ││└─────┘ █ ││└─────┘ █ ││
│└─────────█──┘└────────────┘└─────────█──┘└─────────█──┘│
└──────────█───────────────────────────█─────────────█───┘
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ Ucc
Ovo je kombinacija 1011 na 4-bitnom registru. Kao što vidiš SAMO završni
aluminijumski sloj se razlikuje, sve ostalo ostaje isto. Naravno, ovo je gruba
verzija, ima tu još šta da se doradi (nulovanje slobodnih baza recimo) ali ovo
je principijelna šema.
Uf! E, sada smo DEFINITIVNO promašili temu! (cccc...) Ako moderatoru smeta,
neka poruku ćušne u 'razno'. ;-))))))))
ŢŢŢIGGYŮŮŮ
unknown.725d.petrovic,
> Pa, referentna knjiga je Brian Kernighan, Denis Ritcie,
> The C Programming Language, Second Edition (ako sam sve
> dobro otkucao
Imam to ! :))) Ali prevod, engleski i onako ne znam :(((, sad ću da je
proučavam.
> void lin( FILE* out, int du )
>
> Nikada dosad nisam probao da smuljam u deklaraciju i K&R i
> ANSI stil, pa nisam ni znao kako se kompajler ponaša. :)
>
> Daklem, moraš SVUDA da koristiš deklaracije.
Ni to ne radi !? :(((
Zanemarili smo prvi deo, kako se sad to pa poziva ?
Inače neće biti mnogo smuljano jer je to program od oko 400-500 redova sa
<15 funkcija. Samo dok još malo izbistrim literaturu i srediću i te detaljčiće.
Znači sredi mi sad kompletni problem (verovatno je problem u pozivu
funkcije) !?
void main () š /* Da li mi svud ovde treba void ? */
Obrazac();
ć
void obrazac() š
FILE *out;
out=fopen("PROBA.TXT","wt");
fprintf(out,"Testiranje");
lin(out,20); /* Verovatno je sad problem ovde */
ć
void lin(FILE *out,int du) š
int br;
for(br=0;br<=du;++br)
fprintf(out,"-")
ć
Pozdrav, Dejan
unknown.726spantic,
> Prporuči mi neku, baš počinje da me interesuje C.
Mikro knjiga je izdala sjajnu knjigu "Programiranje u Cu". Po meni je mnogo
jasnija od K&R standarda Ca koji na srpskom postoji u dva izdanja: prvim
izdanjem i drgim u kome je ANSI C. K&R je pisan bukvalno za programere koji
sada treba da pređu na C. Jedina kvaka je cena od 4500 dinara.
unknown.727prvul,
Ůlin(out,du) š
Ů▄▄▄
lin(FILE *out, int du) {
Ů int br;
Ů▄▄▄
Fuj to!
I još nešto. Ne znam u čemu radiš, ali ako je npr. turbo C ili TC++,
onda u opcijama kopajlera opciju Source treba staviti na ANSI C, ili
TC++, a nikako na K&R, ako hoćeš da ti ovo radi.
unknown.728darone,
>> Takođe, to sam zaboravio da priupitam, koju mi
>> literaturu preporučujete ?
Ovo i mene *jako* zanima. Da li čitati ZZovu školu
iz Računara? Ili, prethodno (mjovin predlog)
rlazicevu 'C sa primerima'? Uglavnom:
Q: koja knjiga je najbolja za apsolutne C početnike?
darone
unknown.729mstanic,
:: Tvrdnja se odnosi na VAX.
Ovo sve objašnjava.
VAX-ov procesor je gomila čipova na jednoj ploči (između
ostalih i rom-ovi ili eprom-i u koje je lako zapisivati
razne brojeve bez nekih komplikacija u procesu proizvodnje)
dok su mikroprocesori (oh! bože, mora li se to reći) gomila
tranzistora na pločici silicijuma, te je stoga jasno zašto
bi bilo neprikladno "utiskivanje" serijskih brojeva (mada
ne kažem nemoguće).
Pročitao sam dosta originalne dokumentacije proizvođača za
dosta mikroprocesora, ali nigde ni pomena o nekim serijskim
(internim) brojevima. Postoji način označavanja datuma
proizvodnje i to je uglavnom sve.
čao mi je ako sam zvučao kao "neki" kompjuterski stručnjak.
Znate koji.
Milan
unknown.730janko,
> Eh, pa ta me dilema i muči :) Ja u početku, dok ne
> savladam C neću da radim sa objektima ali ne znam da li ću
> kasnije moći da se brzo prilagodim Borlandu 2.0 /3.0 ?
Hoćeš. To je Borland. Njihovi programi su uvek maksimalno
elegantni. :)
unknown.731janko,
> Pa, referentna knjiga je Brian Kernighan, Denis Ritcie,
> The C Programming Language, Second Edition (ako sam sve
> dobro otkucao napamet :) Postoji i prevod na srpski, u
Dennis Ritchie je ispravno. Progutao sam jedno s i jedno h.
Sori.
Sad sam video i da je recenziju i stručnu redakciju prevoda
koji sam pomenuo radio dr. Milan Božić (milan na Sezamu! :)
Trebalo bi da sam malo umereniji u izjavama... ali prevod je
stvarno katastrofalno loš. :)
unknown.732janko,
> Uf! E, sada smo DEFINITIVNO promašili temu! (cccc...)
Nema veze, bilo je zanimljivo. :) Hvala.
unknown.733janko,
> void main () š /* Da li mi svud ovde treba void ? */
> Obrazac();
>ć
> void obrazac() š
> FILE *out;
> out=fopen("PROBA.TXT","wt");
> fprintf(out,"Testiranje");
> lin(out,20); /* Verovatno je sad problem ovde */
>ć
> void lin(FILE *out,int du) š
> int br;
> for(br=0;br<=du;++br)
> fprintf(out,"-")
>ć
Jok. Nisi deklarisao čitave procedure PRE poziva. :) U ovom
slučaju, mislim da je dovoljno da zameniš redosled f-ja, ovako:
> void lin(FILE *out,int du) š
> int br;
> for(br=0;br<=du;++br)
> fprintf(out,"-")
>ć
> void obrazac() š
> FILE *out;
> out=fopen("PROBA.TXT","wt");
> fprintf(out,"Testiranje");
> lin(out,20); /* Verovatno je sad problem ovde */
>ć
> void main () š /* Da li mi svud ovde treba void ? */
> Obrazac();
>ć
Postoji i druga fora, ali nju nađi sam u knjizi. :)
unknown.734janko,
> Q: koja knjiga je najbolja za apsolutne C početnike?
:) Zavisi od predznanja u drugim programskim jezicima.
unknown.735korvin,
>> Tvrdnja se odnosi na VAX.
Bogami, znam sigurno da iz Motorole možeš da izvučeš serijski broj.
Samo ni to ti neće puno da pomogne, pošto se takvo "čitanje" ser.
broja lako presreće, tako da od zaštite ništa ;)
P.S. D.Petroviću, mani se zaštite ;) kod nas će ti razbiti svaku
zaštitu (jako lepo objašnjeno u nekom broju Računara). Lakše ti je da
poradiš na serijskom broju, pa da ga što bolje kriptuješ :)
unknown.736korvin,
>> Nisi ti toliko loš pa da zaslužiš C:). Bolje se preispitaj...
>>
>> dragisha
:)))) Moram da priznam da sam se odlučio za C zato što mi za razliku
od Pascala (nikad nisam uspeo da utvrdim veće razlike između njega i
bejzika :)) nudi direktniji pristup mašini i samim tim veću kontrolu.
Razmišljao sam da počnem sa Pascalom, pa da kasnije pređem na C,
ali brate, mnogo zaobilazno. Uostalom, ja sam svojevremeno na C64 prvo
počeo da radim u asembleru, pa tek onda naučio Basic :)
unknown.737robert,
<:>> Prporuči mi neku, baš počinje da me interesuje C.
<:>
<:> Mikro knjiga je izdala sjajnu knjigu "Programiranje u Cu". Po meni
<:> je mnogo
Ima u Jugoslovenskoj knjizi u palati Albanije dosta knjiga koje su
namenjene za učenje osnova programiranja u C-u (i C++) pa ko hoće
da kupuje knjige može otići tamo i da vidi šta ima. Ja sam skoro
kupio onu knjigu od Bjarna Stroustrup-a C++ koju je BTW preveo Laslo
Kraus i mogu reći da nije loša i čini mi se da je to referenca za
programiranje u C++ -u. Neko je već napomenuo da ako neko hoće da
uči C++ ne počinje uopšte sa čistim C-om već da odmah pređe na C++
a ja mislim da to nije tako loš rezon i da bi zaista trebalo tako
uraditi jer se C i C++ ipak razlikuju u filozofiji pristupa i
rešavanja programerskih problema. Način razmišljanja je drugačiji
kod jednog i drugog jer na primer C zahteva da se programer sa svojim
razmišljanjem spusti blizu nivoa mašine i da radi a za C++ je potrebno
definisati određene objekte sa kojima se barata i funkcije koje
pretstavljaju ponašanje tih objekata te je rad tako premešten na
mnogo viši nivo.
Pozdrav.
unknown.738mjova,
> Q: koja knjiga je najbolja za apsolutne C početnike?
vidi, u rankovoj knjizi se nalazi LEPO (fino i krasno ;) opisan žIST
C, tamo nema opisa funkcija iz biblioteka koje su svakako sastavni deo
C-a. ako si apsolutni početnik, preporučujem ti tu knjigu jer se
(potreban deo - bez primera ;) vrlo lepo bavi svim stvarima vezanim za
ključne reči (if, while, for itd). da bi to naučio, treba (ako nemaš
pojma niočemu) da pročitaš n puta i posle toga znaš sve.
posle toga uzmeš lib ref i tamo pogledaš fn, a zzovu školu c-a
prelistaš od početka da vidiš šta ima, pa ako nešto ne znaš da
uradiš ti znaš gde je ;). meni ta škola više liči kao viša, a ne
osnovna ;).
treće, daću ti knjigu (file) K&R koju je preveo moj ortak, vrlo je
lepo prevedena (dok je učio C on je original prevodio jer je bio
nezadovoljan greškama u ovom prevodu koji je kod nas objavljen).
'programski jezik C kroz primere' je sjajan start!
unknown.739mjova,
> Sad sam video i da je recenziju i stručnu redakciju
> prevoda koji sam pomenuo radio dr. Milan Božić (milan na
> Sezamu! :) Trebalo bi da sam malo umereniji u izjavama...
> ali prevod je stvarno katastrofalno loš. :)
čuj, prevod je očajan, to stoji, ali ako te zanima, jedan moj drug
je preveo (file forma ;) tu knjižicu, pa ako ti treba mogu da je ul...
unknown.740zvonko,
># Ovaj drugi je objektno orijentisani, ali kao i noviji
># Borlandovi kompajleri jede mesto na disku.
Koliko mesta, koliko disketa i slično?...
unknown.741ilazarevic,
█ od Pascala (nikad nisam uspeo da utvrdim veće razlike između njega i
█ bejzika :)) nudi direktniji pristup mašini i samim tim veću
█ kontrolu.
Nemoj tako... Pascal je n klasa iznad bejzika, gde n teži plus beskonačno ;)
unknown.742milan,
> Sad sam video i da je recenziju i strucnu redakciju prevoda
> koji sam pomenuo radio dr. Milan Bozic (milan na Sezamu! :)
> Trebalo bi da sam malo umereniji u izjavama... ali prevod je
> stvarno katastrofalno los. :)
Sto jes' jes' prevod je los, al' Savremena administracija je
izrazila spremnost da to stampa, smatrao sam da je knjiga vazna a
nije bilo meni dato da biram prevodioce! To naravno ne smanjuje
moju odgovornost.
Pl poz M
unknown.743spantic,
> Sad sam video i da je recenziju i stručnu redakciju
> prevoda koji sam pomenuo radio dr. Milan Božić (milan na
> Sezamu! :) Trebalo bi da sam malo umereniji u izjavama...
> ali prevod je stvarno katastrofalno loš. :)
Bolje reci nepismen. Pa čak i ako ono sa bitom i bajtom zanemarimo.
unknown.744janko,
> čuj, prevod je očajan, to stoji, ali ako te zanima, jedan
> moj drug je preveo (file forma ;) tu knjižicu, pa ako ti
> treba mogu da je ul...
Eeee, da sam znao pre! Svojevremeno mi je trebao za Unix onaj
sors sa čačkanjem inode-a... i sve sam prekucavao :(
Tekst više-manje, ali svi sorsovi iz knjige u računarskom
obliku su zanimljiva stvar, pogotovu za one koji bi
eksperimentisali na mašini, dok čitaju knjigu!
Koliko je veliko sve zajedno (spakovano)? Ima li izdvojenih
sorsova, ili, da li je bar izdeljeno po glavama?
unknown.745todorp,
> cuj, prevod je ocajan, to stoji, ali ako te zanima, jedan moj drug
> je preveo (file forma ;) tu knjizicu, pa ako ti treba mogu da je
> ul...
Bilo bi lepo kad bi i ja to video...
Pozdrav od Todora.
unknown.746dejanr,
>> dok su mikroprocesori (oh! bože, mora li se to reći) gomila
>> tranzistora na pločici silicijuma, te je stoga jasno zašto
>> bi bilo neprikladno "utiskivanje" serijskih brojeva (mada
>> ne kažem nemoguće).
Ja nisam stručnjak za VLSI itd, ali se sećam da sam davno negde
čitao kako se prave memorije. Zbog prirode postupka, dosta je teško
napraviti RAM čip kome će sve lokacije biti ispravne (kad kažem
"teško", mislim "skupo", tj. procenat škarta je veliki). Zato se
neko setio da, recimo, umesto megabitnog čipa napravi čip sa
megabitom + (recimo) 100 ćelija. Onda *gotov* čip ide na testiranje,
i neka mašina proveri koje su mu ćelije ispravne. žim naiđe na
neispravnu, *spoljnim* naponom spali nekakakav osigurač (tranzistor)
i tako "preusmeri" tu adresu na neku od dodatnih ćelija. Ako baš ima
više od 100 neispravnih ćelija, čip se baci (ili proda Sinkleru da
ga ugrađuje u Spectrum ako je barem polu-ispravan ;).
Ideja je, složićete se, sjajna, a poenta je: zašto na sličan način ne bi
"spolja" mogao da se upiše i serijski broj?
unknown.747mjova,
> Eeee, da sam znao pre! Svojevremeno mi je trebao za Unix
> onaj sors sa čačkanjem inode-a... i sve sam prekucavao :(
vidi, prevod nema taj deo za unix, ima samo prvih šest poglavlja. sve
je komplet prevedeno osim primera i izvornih kodova ;)
evo, kome treba, nek zemi...
c-c2.arjunknown.748ndragan,
/ Za serijski broj diska ti treba dos veci od 4-ke. Evo ti ovo ali
Zar se taj ne menja pri formatiranju? Jača zaštita nego što treba, jer
ako korisnik uradi ono redovno šmirglanje diska i vrati sve iz bekapa,
redovno plaćen i legalno korišćen program više neće da radi (ako se
zaštita oslanja na serijski broj diska), a programer o svom trošku treba
da ga ponovo instalira.
P.S. Dos četirika? Jel' to ruska ili ukrajinska verzija?
unknown.749natila,
I mene to zanima. Pa ako nije neki mamut od fajl rado bih ga DL.
Nemeth Attila
unknown.750korvin,
Zahvaljujem se svima koji su mi svojim savetia pomogli da se
opredelim za početnu konfiguraciju C-a :) Dobićete još jednog
gnjavatora u ovoj konferenciji koji će vam s vremena na vreme
postavljati glupa pitanja :)
P.S. Reših se za Turbo C 2.01, so help me Microsoft :)
unknown.751janko,
> vidi, prevod nema taj deo za unix, ima samo prvih šest
> poglavlja. sve je komplet prevedeno osim primera i
> izvornih kodova ;)
:( A jel' ima UOPŠTE programske primere ukucane? Ili je samo
priča u tom fajlu?
unknown.752zormi,
* Zar se taj ne menja pri formatiranju?
Kod IDE diskova serijski broj se ne menja formatiranjem
i može se čitati nezavisno od DOS-a. Primer: RDIDE.
unknown.753mstanic,
:: Ideja je, složićete se, sjajna, a poenta je: zašto na
:: sličan način ne bi "spolja" mogao da se upiše i serijski
:: broj?
Ne radi se o tome da li može ili ne može. Tehnološki je to
lako izvodljivo, pogotovu ako znamo da postoje mikroprocesori
sa ROM-om, EPROM-om ili sa EEPROM-om. Štos je u tome što se
to ne radi. Razlozi nisu (meni) poznati.
Milan
unknown.754mstanic,
:: Bogami, znam sigurno da iz Motorole možeš da izvučeš
:: serijski broj. Samo ni to ti neće puno da pomogne, pošto
Ovo bih voleo da znam kako ide (bez imalo ironije, stvarno
bih voleo da znam kako se to radi). Ako možeš da objasniš,
nije baš zgodno mesto, ali možda u nekoj drugoj konferenciji.
I ako može na koje se mikroprocesore to odnosi.
Hvala. Milan
unknown.755glisin,
PITANJE:
Ima li neko neku zbirčicu rutina za rad sa pacovom? Bilo u sorsu, bilo kao OBJ
sa propratnim '.h' fajlom (linkujem u TC 2.01). Nije mi potrebno bog zna šta,
samo da se okačim na driver i da mogu da skinem pomeraj i klik. Potreban mi je
za rad u u tekst režimu, dakle nikakvi posebni zahtevi. Suštinski, treba mi
nešto poput 'read_x', 'read_y', 'read_buttons', 'pointer_on/off' i eventualno
neko prepoznavanje da li je driver tu ili nije. Ništa više.
Ako neko ima tako nešto, neka mi obesi. Može i ovde, mozda još nekome bude
interesantno da skine.
ŢŢŢIGGYŮŮŮ
unknown.756mjova,
>> poglavlja. sve je komplet prevedeno osim primera i
>> izvornih kodova ;)
> :( A jel' ima UOPŠTE programske primere ukucane? Ili je
> samo priča u tom fajlu?
pa ima prvih 6 poglavlja, i to komplet. ono kad sam reko da primeri
nisu prevedeni mislio sam na to da su ostali u C-u i na engleskom ;)
unknown.757obren,
> Ima li neko neku zbirčicu rutina za rad sa pacovom? Bilo u sorsu,
> bilo kao OBJ sa propratnim '.h' fajlom (linkujem u TC 2.01).
Evo ti one rutine iz Sveta Kompjutera, meni su lepo poslužile par puta.
mouse.cunknown.758todorp,
Mozda ti ovo pomogne. Nisam ih probao ali trebalo bi da radi.
Pozdrav od Todora.
mouse.arjunknown.759d.petrovic,
Ă> Zar se taj ne menja pri formatiranju? Jača zaštita nego što treba,
Ă> jer
To nije broj koji dos zalepi na disketu pri formatiranju već se ubacuje u
disk u fabrici i traje dok traje i disk (ili dok ga neko ne preomeni ????? Može
li se to kod NEKIH ili SVIH diskova pitam se ja).
unknown.760d.petrovic,
Ă> treće, daću ti knjigu (file) K&R koju je preveo moj ortak, vrlo je
Oću i ja, oću i ja
Jel može ?
unknown.761bearboy,
˙¨:> :)))) Moram da priznam da sam se odlučio za C zato što mi za razliku
˙¨:> od Pascala (nikad nisam uspeo da utvrdim veće razlike između njega i
˙¨:> bejzika :))
Pa nije reč o QuickPascalu :) nego o TP-u...
unknown.762mjova,
> Ă> treće, daću ti knjigu (file) K&R koju je preveo moj
> Oću i ja, oću i ja
nije mi jasno, ali knjiga je okačena uz poruku 747, možda ste
prevideli. dakle, knjiga je tu, prikačena uz poruku 747.
unknown.763dejanr,
>> Ne radi se o tome da li može ili ne može. Tehnološki je to
>> lako izvodljivo...
Pa da, to sam pokušao da objasnim, jer su neki rekli da bi za
to trebala da se formira nova maska itd.
>> Štos je u tome što se to ne radi.
Ne radi se kod Intelovih 80x86 procesora. Kod nekih drugih se
radi. Uzgred, i Intelovi industrijski procesori obezbeđuju
razne praktično neprobojne zaštite na hardverskom nivou. Ako
nekoga zanima, možemo o tome u nekoj drugoj temi.
unknown.764d.petrovic,
Ă> prevideli. dakle, knjiga je tu, prikačena uz poruku 747.
Ma vid'o sam, ali kasno, već sam poslao exec, a mrzelo me da brišem.
Pozdrav, Dejan
unknown.765glisin,
Hvala svima na poslatim rutinama. Pogledacu.
ŢŢŢIGGYŮŮŮ
unknown.766kzoran,
Ljudi,
kao da najelegantnije utvrdim da li hard disk (fizicki ili logicki) na koji
korisnik jedne aplikacije zeli da usmeri odredjenu operaciju uopste postoji?
Resio sam taj problem na nekoliko nacina koriscenjem BIOS i DOS interrupt
poziva (kombinacije INT 13h AH=01h sa INT 21h AH=1Ch, INT 21h AH=32h i sl.),
koje, testirane na 2-3 masine rade korektno, ali nisam siguran da su
primenjive na svakoj konfiguraciji i, pre svega, nisam preterano zadovoljan
elegancijom resenja.
Postoji li neka interapt funkcija koja nedvosmisleno daje odgovor na upit
da li specifirani disk ili particija postoji u konfiguraciji?
Problem resavam u C-u, pa bi trebalo izbeci provere zasnovane na statusu
carry flega.
Pozdrav,
Zoran.
unknown.767ppekovic,
>> Postoji li neka interapt funkcija koja nedvosmisleno daje
>> odgovor na upit da li specifirani disk ili particija postoji
>> u konfiguraciji? Problem resavam u C-u, pa bi trebalo izbeci
>> provere zasnovane na statusu carry flega.
INT 21H, f. 0EH
ili, pošto koristiš C
void _dos_setdrive(unsigned int disk_drive,
unsigned int *drives_avail);
Include file: <dos.h>
disk_drive je drive na koji hoćeš da predješ, a funkcija ti u drives_avail
vraca broj logickih diskova. Ako hoćeš samo da ispitaš koliko ima ogičkih
diskova, stavi tekući drajv u disk_drive promenljivu.
Paya
unknown.768kzoran,
Digao sam laznu uzbunu. Mislim da sam resio problem testiranja postojanja
izabranog diska. Trebalo je samo malo detaljnije pregledati BIOS i DOS
interrupt dokumentaciju, i sve bi mi se samo kaz'lo.
Pozdrav,
Zoran.
unknown.769kzoran,
Hvala, ppekovic-u.
Uz f. 0Eh, koja vraca broj disk drajvova prikljucenih u sistemu, treba
upotrebiti jos i f.19h, kojom proveravas da li je current drajv onaj koji si
trazio funcijom 0Eh.
Pozdrav,
Zoran.
unknown.770mstanic,
:: Ne radi se kod Intelovih 80x86 procesora. Kod nekih
:: drugih se radi. Uzgred, i Intelovi industrijski procesori
:: obezbeđuju razne praktično neprobojne zaštite na
:: hardverskom nivou. Ako nekoga zanima, možemo o tome u
:: nekoj drugoj temi.
Zanima mene. Kaži u kojoj konferenciji, zapravo samo ostavi
poruku o toj (xxx) ili u nekoj konferenciji otvori novu
temu (?ti to možeš :) ).
Milan
unknown.771mjova,
> kao da najelegantnije utvrdim da li hard disk (fizicki ili
> logicki) na koji korisnik jedne aplikacije zeli da usmeri
> odredjenu operaciju uopste postoji? Resio sam taj problem
> na nekoliko nacina koriscenjem BIOS i DOS interrupt
ako sam dobro razumeo direktan poziv biosu nije ni potreban ako radiš
u BC-u pogledaj getdfree() i one koje su u help sistemu definisane kao
'see also'.
> struct dfree {
> unsigned df_avail; /* Available clusters */
> unsigned df_total; /* Total clusters */
> unsigned df_bsec; /* Bytes per sector */
> unsigned df_sclus; /* Sectors per cluster */
> };
>
> In the event of an error, df_sclus in the
> dfree structure is set to 0xFFFF.
vrlo jednostavno...
unknown.772mjova,
pitanjce :)
kako izbeći onu poruku kojom kompajler kaže da fn treba da vrati neku
vrednost, ako je rutina pisana u asembleru cela. problem nastaje kod
C++ koji to smatra teškom greškom i nema nameru da propusti nikakvim
pragma direktivama.
znam da mogu fn da bacim u obj i posle linkujem, ali to mi se ne
dopada kao rešenje.
unknown.773dejanr,
Vidi PC.PROG/zastita.
unknown.774djelovic,
Ima li ovde neko da koristi Paradox Engine? Imam par pitanja...
unknown.775kzoran,
> ako sam dobro razumeo direktan poziv biosu nije ni potreban ako radiš
> u BC-u pogledaj getdfree() i one koje su u help sistemu definisane kao
> 'see also'
Ne radim u BC nago u MSC - i u njemu postoji par funkcija koje ispituju
parametre diska, ali tim resenjima nisam bio zadovoljan, ne znam ni sam zasto.
Te funkcije korektno rade, ali je meni bilo suprotno programerskoj logici
da trazim parametre diska za koji jos ne znam ni da li postoji, pa sam trazio
dalje.
U MSC 6.0 postoje dve funkcije _dos_getdrive i _dos_setdrive, ekvivalenti
DOS interapt funkcija 0Eh i 19h, od kojih prva postavlja trazeni drajv kao
current, a druga pribavlja podatak o current drajvu. Pozovem prvu, zatim
drugu, uporedim trazeni sa dobijenim podatkom, i ako su isti sve je OK -
- u suprotnom trazeni drajv ne postoji.
Vrlo je moguce da se i ove funkcije oslanjaju na rezultate poziva upravo
onih funkcija koje si pomenuo (a ja izbegavao), ali se to bar ne vidi - svi
mi imamo poneku svoju bolest, zar ne?
Pozdrav,
Zoran.
unknown.776dusanp,
Koristim ovu konferenciju da skrenem ljudima pažnju
na zaista sjajnu biblioteku za korisnički interfejs,
koja ide uz tekst u R84 o bazama podataka. To kažem zato
što sam je malo više ispitao i oduševio se njom...
U arhivi (u \rsoftu) se nalazi MNOGO više mogućnosti
nego što bi se po tekstu reklo (meniji,prozori i sjajno
rešeni dijalozi).
Ukratko, SVIMA PREPORUžUJEM ovu biblioteku.
Q: Jel počeo da je koristi još neko osim mene?
unknown.777ndragan,
/ nisu prevedeni mislio sam na to da su ostali u C-u i na engleskom ;)
Nekog je mrzelo da ih prevede na Ć?
unknown.778djelovic,
> Q: Jel počeo da je koristi još neko osim mene?
Nije, jer se bulaja nije javio od subote da je stavi u dir. No, pošto mi
mnogi na mail već prete (da, na tebe mislim! :), evo cele arhive ovde uz
poruku.
unknown.779bojanp,
>> Q: Jel počeo da je koristi još neko osim mene?
>
> Nije, jer se bulaja nije javio od subote da je stavi u dir. No, pošto mi
> mnogi na mail već prete (da, na tebe mislim! :), evo cele arhive ovde uz
> poruku.
Sam si kriv kada nisi poslao arhivu na pravu adresu :) Datoteka je
prebačena u dir.
Pozdrav, Bojan
unknown.780mstanic,
Kakve su i da li postoje neke bitnije razlike između
TC 2.0 i TC 2.01.
Milan
unknown.781dragisha,
ű> Ima li neko neku zbirčicu rutina za rad sa pacovom? Bilo u
ű> sorsu, bilo kao OBJ sa propratnim '.h' fajlom (linkujem u TC
ű> 2.01). Nije mi potrebno bog zna šta,
Hoćeš u Moduli-2?
unknown.782stal,
Napravih Micro Emacs for Win od lepog, ovde prilozenog koda, sa BC++ for Win.
Jedino mi nije jasno gde je MEWIN.HLP. Ili ne znam da ga napravim, ili ga
jednostavno nije moguce napraviti sa prilozenim. Manje vishe shto ga nema, ali
ima li neka fora da se generishe i mewin.hlp
Pozdrav Stal.
unknown.783bulaja,
││Nije, jer se bulaja nije javio od subote da je stavi u dir.
│└───
│Sam si kriv kada nisi poslao arhivu na pravu adresu :)
└───
Sta bre prava adresa :). Racunar mi je bio nefunkcionalan 10 dana, pa
nisam bio u mogucnosti da se bavim redovnim duznostima. Ne znas kroz
kakve sam sve teske trenutke prolazio, tresao sam se danima bez svoje
redovne Sezam-doze :), budio se u pola noci zbog fobije da ne propustim
da prebacim neki file u dir... O;>
unknown.784robert,
<:> Q: Jel počeo da je koristi još neko osim mene?
Evo ja sam u fazi razgledanja i upoznavanja funkcija iz biblioteke.
Za početak imam par (možda banalnih) pitanja:
- kako da odredim koju će boju prozori imati a da to ne bude
difolt bela na crnoj pozadini
- zašto kod iscrtavanja menija (tip submenu) kada crta onu
poprečnu liniju (<ime_menija>.line () ) meni ona na ekranu bude
inverzna a sve ostalo je u redu (BTW, imam Hercules)
Inače mi se biblioteka sviđa ali bih imao malu zamerku na tromost
crtanja prozora ali to bi moglo lako da se ispravi korišćenjem
bržih funkcija ili Asemblera kao što reče DJelović. Bilo bi lepo
kada bi gospodin Jelović ukratko opisao šta bi tačno moralo da se
izmeni i gde a da se dobije u brzini iscrtavanja prozora.
Pozdrav.
unknown.785mstanic,
>> Kakve su i da li postoje neke bitnije razlike između
>> TC 2.0 i TC 2.01.
Ima li neko da zna da odgovori na ovo pitanje?
Milan
unknown.786janko,
>>> Kakve su i da li postoje neke bitnije razlike između
>>> TC 2.0 i TC 2.01.
>
> Ima li neko da zna da odgovori na ovo pitanje?
Valjda su otkrili naki mali bag, pa izdali novu? žini mi se da
'spolja' gledano nema primetnih razlika?
unknown.787djelovic,
> - kako da odredim koju će boju prozori imati a da to ne bude
> difolt bela na crnoj pozadini
Recimo:
dialogue unos (10, 10, 70, 20, "Unos podataka");
unos.winfore = BLUE; // Plava slova
unos.winback = RED; // na crvenoj pozadini.
unos.say (...
unos.get (...
...
Konstante winfore i winback su deklarisane još u klasi win i važe za sve
prozore. Formulari, a preko njih i dijalozi, imaju još dve promenljive,
fieldfore i fieldback, koje određuju boju polja za unos.
> - zašto kod iscrtavanja menija (tip submenu) kada crta onu
> poprečnu liniju (<ime_menija>.line () ) meni ona na ekranu
> inverzna a sve ostalo je u redu (BTW, imam Hercules)
Zato što sam som :). Menjao sam nešto u klasi parentwin, i onda
sam zaboravio da će to imati uticaja na klasu submenu koja je rađena na
onaj stari način. Anyway, evo ispravljene verzije, molba bilo kom od
moderatora :) da je stavi u dir.
unknown.788glisin,
ŢŢŢHoćeš u Moduli-2?
Nema potrebe, video sam sve pozive, pa mogu sada da napišem u bilo čemu. BTW,
u onoj zbirčici rutina koju mi je neko poslao (mouse.c) ima jedna stvar koja
mi nije jasna, a koju sam promenio. U funkciji 'get_mouse' stoji:
*button = outregs.x.bx & 3;
što će ignorisati pacove sa tri tastera, jer čisti bit 2, a ostavlja samo
bitove 0 i 1. Ukoliko se stavi
*button = outregs.x.bx & 7;
ili se & operator izbaci, videće se i SREDNJI taster kao bit 2, levi je bit 0
a desni bit 1. Ovo sam probao sa mojim Genijem od miša ;-) u Mouse Systems
modu i sve je bilo kako treba, nikakvih problema.
Nije mi jasno ni zašto su maskirali ostatak kada se tamo ne pojavljuje nikakvo
đubre, samo se bit 0, 1 i 2 menjaju, ostali su uvek 0. Ima li razloga?
ŢŢŢIGGYŮŮŮ
unknown.790obren,
> ima jedna stvar koja mi nije jasna, a koju sam promenio. U funkciji
> 'get_mouse' stoji:
>
> * button = outregs.x.bx & 3;
U umetku je pisalo da su funkcije za rad sa MS mišem, a on ima samo
dva tastera, pa to objašnjava zašto su maskirani "suvišni" bitovi.
Inače, koriste se samo prva tri bita, tako da ti je svejedno stavio
masku 7 ili bez maske.
unknown.791pedjam,
Da li je neko zainteresovan da u C-u vrši reprogramiranje tel. centrala koje
se nalaze na srpskoj teritoriji u BiH ? Rad bi se obavljao u Beogradu. Ako
je neko zainteresovan nek mi se javi u mail (ja samo posredujem).
Rok je 5 dana.
Pozdrav, / /
Pedja Milicevic
unknown.792bojanp,
> Zato što sam som :). Menjao sam nešto u klasi parentwin, i onda
> sam zaboravio da će to imati uticaja na klasu submenu koja je rađena na
> onaj stari način. Anyway, evo ispravljene verzije, molba bilo kom od
> moderatora :) da je stavi u dir.
Molba ispunjena, datoteka prebačena. :)
unknown.793dusanp,
=> Molba ispunjena, datoteka prebačena. :)
Mislim da, ako već nismo došli u fazu zbunjivanja,
jako smo blizu... Ovaj program je specifičan po tome
što nije samo primer iz R, tako da će se _sigurno_
još proširivati (čim mi zatreba još nešto;)) . Ja
glasam za to da se pod hitno uvede i broj verzije u
ovu biblioteku, tako da znamo šta je poslednja verzija,
a ne da se sve zovu r084scr ili tako nešto. Takođe,
mislim da je program već sad daleko od teksta, tako da bi
bilo zgodno da se nadje u \c diru... A tako je i prirodnije
skidati upgrade...
Već sada imamo ovu biblioteku na tri mesta, a biće još
verzija. Ni sad nisam siguran dal je ona verzija iz cccca
novija od one iz \rsofta:(
Dakle, da remiziram: nek se bar zove r084scr1(ili broj
tekuće verzije).zip
unknown.794bulaja,
│Mislim da, ako vec nismo dosli u fazu zbunjivanja, jako smo blizu...
│Ovaj program je specifican po tome sto nije samo primer iz R, tako
│da ce se _sigurno_ jos prosirivati (cim mi zatreba jos nesto;)) .
└───
\RSOFT treba da sluzi iskljucivo za listinge programa koji su i
objavljeni u Racunarima, i eventualno kasnije ispravke nekih bugova u
njima. Sve sto preraste u nesto vise, po toj logici treba da ide u
odgovarajuci PC direktorijum, tj. u ovom slucaju \IBMPC\C. Dakle, sa
r084scr smo zavrsili :), sledece sto bude nek djelovic najbolje salje
kao djwin (il' kako ga vec nazove :), pa ce ici u \PC\C.
unknown.795djelovic,
> Takođe, mislim da je program već sad daleko od teksta, tako da bi bilo
> zgodno da se nadje u Đc diru...
To ipak, za sada, nema svrhe. Dodaću još podršku za grafičke
ekrane i fajl selektor, pa ću onda poslati celu takvu arhivu zajedno sa
brzim rutinama za tekst mod file moderatoru da vide da li je to za C
direktorijum. U prilog mojoj biblioteci, nju koristi bar jedan čovek
ovde, što je jedan više od broja korisnika biblioteke D-Flat :).
unknown.796robert,
<:> To ipak, za sada, nema svrhe. Dodaću još podršku za grafičke
<:> ekrane i fajl selektor, pa ću onda poslati celu takvu arhivu
^^^^^^^^^^^^^
E, toooo majstore :)) to mi treba (a mislim i ne samo meni). To
je česta potreba pri pravljenju aplikacija i zaista je zgodno to
imati u biblioteci i ne razmišljati o tome. Ako to uradiš a zajedno
sa ostatkom biblioteke koji je već gotov, završio si mi trećinu posla
oko mog diplomskog :))), hvala ti za to :).
Pozdrav.
unknown.797bojanp,
>│ Mislim da, ako vec nismo dosli u fazu zbunjivanja, jako smo blizu...
>│ Ovaj program je specifican po tome sto nije samo primer iz R, tako
>│ da ce se _sigurno_ jos prosirivati (cim mi zatreba jos nesto;)) .
>└───
> \RSOFT treba da sluzi iskljucivo za listinge programa koji su i
> objavljeni u Racunarima, i eventualno kasnije ispravke nekih bugova u
> njima. Sve sto preraste u nesto vise, po toj logici treba da ide u
> odgovarajuci PC direktorijum, tj. u ovom slucaju \IBMPC\C. Dakle, sa
> r084scr smo zavrsili :), sledece sto bude nek djelovic najbolje salje
> kao djwin (il' kako ga vec nazove :), pa ce ici u \PC\C.
Auuu, al' ste navalili. Pa lepo je Dejan rekao da je ovo ispravka
koja dovodi datoteku u stanje koje odgovara onome što je rečeno u
tekstu. Prema tome to i jeste datoteka koja treba da stoji u
rsoft-u. Sve ostalo ... :)
Pozdrav, Bojan
unknown.798andrade,
*>> Prporuci mi neku, bas pocinje da me interesuje C.
*>
*> Mikro knjiga je izdala sjajnu knjigu "Programiranje u
*> Cu". Po meni je mnogo jasnija od K&R standarda Ca koji na
*> srpskom postoji u dva izdanja: prvim izdanjem i drgim u
*> kome je ANSI C. K&R je pisan bukvalno za programere koji
*> sada treba da predu na C. Jedina kvaka je cena od 4500
*> dinara.
Izgleda da je postalo jako moderno pocinjati sa C-om. Evo, i ja sam
jedan od takvih. Ja sam, na primer, kupio knjigu Vladana Vujicica
"Uvod u C jezik" u izdanju instituta "Boris Kidric" iz Vince. Ranije
sam bio zadovoljan knjigama koje oni izdaju, a i ova mi se svidela.
U sustini, oni kroz primere nauce nekim lepim algoritamskim cakama i nas,
koji nismo bili na nekakvim programerskim smerovima niti studiramo
elektrotehniku, pa smo te stvari propustili da naucimo "na vreme".
unknown.799mstanic,
Može li da ide na TC2.0 ili mora biti objektni kompajler.
Baš ne volim objekte, a ovo toliko izgleda dobro (bar po
diskusiji) da bih rado probao (mislim na tu biblioteku).
Računare sam prestao kupovati pre dva broja (a počeo sam
od prvog) tako da tekst nisam pratio do kraja.
unknown.801djelovic,
> Može li da ide na TC2.0 ili mora biti objektni kompajler.
Obavezan je C++. Po mom iskustvu, za pravljenje korisničkih
interfejsa je C++ dušu dao, dok C taj posao pretvara u muku.
> Baš ne volim objekte...
Pravo da ti kažem, nisam ni ja voleo C dok sam radio na Pascalu.
Baš je bio rugoba. Sa onim strcpy (a, b) umesto jednostavnog a = b. Ugh!
A onda sam seo i naučio C. Sad je: "Joooj, zar moram na Pascalu?" :)
BTW, ima li interesenata za članak "Sa C-a na C++ u tri koraka"?
unknown.802zormi,
* BTW, ima li interesenata za članak "Sa C-a na C++ u tri
* koraka"?
Da.
unknown.803glisin,
ŢŢBaš je bio rugoba. Sa onim strcpy (a, b) umesto jednostavnog a = b. Ugh!
Uh, gle razlike!
Probaj da pišeš na LISP-u recimo, he, he...
ŢŢŢIGGYŮŮŮ
P.S. A da ponoviš ipak malo Pascal? (a=b vs a:=b ???). Šalim se malo... :-)
unknown.804mstanic,
>> Pravo da ti kažem, nisam ni ja voleo C dok sam radio na
>> Pascalu. Baš je bio rugoba. Sa onim strcpy (a, b) umesto
>> jednostavnog a = b. Ugh!
Ma nije da ne volim C. Baš naprotiv. A na Pascalu sam
napravio program koji napiše "Hello, world!" i to je sve.
Al' kažem da nisam nikad probao da programiram u C++ ili
bilo kom objektnom C-u, a i gde da ga nađem.
što se tiče "3 koraka od C ka C++", što da ne, već je
izgleda došlo vreme da i to počnem da (m)učim.
unknown.805garderp,
E za ovo tri koraka sa C -a do C++ -a ćete malo da izvinite.
Može možda u trideset tri koraka. To vam pričam iz iskustva.
Između ostalog se bavim i podučavanjem ljudi iz c-a i c++-a.
I znate koja su pitanja polaznika:
Rešavamo neki problem koji uopšte nije objektne prirode.
Recimo trivijalna stvar, računanje aritmetičke sredine nekog
niza. I napišem ja program u C-u kad me neko pita, dobro, a kako
ćemo sada to u C++? Ta pitanja su tipa:dobro, znam kako je to u
basicu, a sad kako to ide u pascalu. Iako sam im sto puta rekao
da je C++ nadskup C-a ljudi stalno pokušavaju paralelama nešto
da postignu. A evo još jednog argumenta zašto ne može u tri koraka.
Na sezamu u nekom direktorijumu imate fajl sa preko sto pitanja
i odgovora iz C++-a. Iako je broj novih keyword-a samo neznatno
proširen (mada u procentima jeste) potpuno novi principi usložnjavaju
stvar. Naravno ne kažem da je C++ bauk, samo mu treba malo ozbiljnije
prići.Uzgred, NEMOJTE učiti C++ iz Strustrupove knjige. Iako je on autor
tog jezika, knjiga je fatalno loša. Niti postavlja problem u obliku
formalne teorije, niti pravi recepte za C++. Rezultat je očajni konglomerat
i jednog i drugog. Jedino vredi imati referencu na kraju knjige. Preporu-
čujem neku knjigu Herberta Šilda.
Peđa
unknown.806mstanic,
>> Između ostalog se bavim i podučavanjem ljudi iz c-a i
>> c++-a.
Odlično. Ako možeš ne bi bilo loše da ukratko i po
mogućnosti jasno, objasniš osnovne razlike ili pošto
si rekao da je C++ nadskup C-a, u samoj suštini.
Mislim na razlike između objektnih jezika i klasičnih.
unknown.807mjova,
> Odlično. Ako možeš ne bi bilo loše da ukratko i po
> mogućnosti jasno, objasniš osnovne razlike ili pošto
> si rekao da je C++ nadskup C-a, u samoj suštini.
> Mislim na razlike između objektnih jezika i klasičnih.
zar očekuješ da može ukratko? čovek lepo reče ništa od samo tri
kaoraka. uzmi neku knjišku, bez nje ništa ne vredi, pa je lepo
prostudiraj. C++ je samo nadgradnja običnog c-a, ali se programi
pisani u njemu obično razlikuju po algoritmu, i to drastično od
programa pisanih u običnom c-u.
npr, naučio sam c++, ali moram priznati da mi je mnogo bliži način
pisanja i običnom c-u no u c++. iz c++ koristim samo ono što mi je
potrebno i logično (preopterećene funkcije, default parametri, pomalo
klase (grupisanje funkcija i promenljivih) i nekako je fleksibilniji
od običnog c-a). imam zamerke u vezi pisanja asm delova jer ne mogu
funkciju da završim bez return(int) (ako je tako deklarisana) pa onda
obično otpada pisanje u asembleru. (#pragma direktiva ne važi jer je u
c++ to greška a ne upozorenje kao u običnom c-u.)
inače, što se tiče onog 'c++ u tri koraka' pretpostavljam da je u
pitanju samo simbolika ;)
unknown.808dejanr,
>> inače, što se tiče onog 'c++ u tri koraka' pretpostavljam da je u
>> pitanju samo simbolika ;)
Pa da, moglo bi i u 11 koraka, to je i onako 3 napisano binarno :)
unknown.809mstanic,
>> inače, što se tiče onog 'c++ u tri koraka' pretpostavljam
>> da je u pitanju samo simbolika ;)
Ma nisam mislio da se može naučiti. Mislio sam kratko
objašnjenje u čemu je prednost i da li se zbog toga isplati
(m)učiti.
unknown.810janko,
> od običnog c-a). imam zamerke u vezi pisanja asm delova
> jer ne mogu funkciju da završim bez return(int) (ako je
> tako deklarisana) pa onda obično otpada pisanje u
> asembleru. (#pragma direktiva ne važi jer je u
???? ( <--- to se ja malo čudim) Pa funkcija i TREBA da vrati
int, ako je DEKLARISANA da vraća int. Ako je void, ne treba da
vrati ništa. U čemu je problem? Zašto ne bi deklarisao funkciju
sa void?
unknown.811d.petrovic,
Reko' ja da će uskoro opet da pitam :). DakelM :
1. Treba da očitam datum, ponodim tekući mesec, a istovremeno omogućim i
izmenu tog mu podatka. U skladu s tim, a i šire molim dopuniti sledeće :
obr() š
struct date d;
int mes;
getdate(&d);
printf("%2dĐbĐb",mes=d.da_mon);
/*
Sad ovde treba učitati mesec ( enter = prihvatanje tekućeg ) sa max dva
karaktera i smestiti ga u promenljivu mes tako da ona pokazuje mesec i samim
tim neki drugi datum.
*/
printf("%2d",mes);
ć
2. Kako izračunavam broj dana poteklih od nekog tamo datuma (npr. 01.01.1900
ili 01.06.91). Po mogućstvu ubaciti u gornji primer.
Ajd' budite dobri, uradite mi još i ovo pa neću (obećavam :)) ) da čačkam
po C-u bar 15-20 dana :)
unknown.812bearboy,
˙¨:> Ma nije da ne volim C. Baš naprotiv. A na Pascalu sam
˙¨:> napravio program koji napiše "Hello, world!" i to je sve.
Moj ekvivalent ;) U C-u "Hello, world!" i zdrawo ;)
unknown.813garderp,
Ovog puta ne bih govorio o prednostima sintaksno semantičke prirode.
Mislim da će sledeći podaci biti poprilično ilustrativni:
- U uvodima knjiga (bar onih koje sam ja čitao) kaže se da ozbiljne
aplikacije pisane u C jeziku imaju bar 100,000 linija, što je frustraciona
činjenica za mnoge. Autori tih knjiga tvrde (a ja im za sada verujem,
jer nemam još ni jedan program od 1e6 linija) da se ta količina
objektnim programirajnem može svesti na 20,000 linija. Dakle pet puta
smanjenje.
- Osim toga programiranje u C-u traži veoma veliki stepen detaljisanja.
Vi za vreme razvoja vašeg programa morate stalno da vodite računa,
rečeno programerskim žargonom, od bios-a do algoritma. Dakle, proceduralni
jezik traži takav način razmišljanja, dok osobina objektnog programiranja
koja se zove začaurivanje (encapsulatation) pravi, nešto što je u teoriji
sistema poznatno kao, crna kutija. Jednom urađen pristup hardveru, na
primer, se zatvara u klasu i dalje se samo instanciranjem te klase i
pozivanjem pripadajućih funkcija (member functions) te klase stvar rešava,
a da nije potrebno poznavanje hardvera do detalja.Jednom rečju u c-u
ste morali da znate sve o svim funkcionalnim delovima vašeg programa.
Sada je potrebno znati samo šta vam treba i kako to ostvariti, a ne
morate da se upuštate u deteljnu analizu određenog potproblema.
- Učenje ovog jezika nije neophodno, ali zato stvarno skraćuje vreme
za rešavanje mnogih standardnih problema. Naveo bih samo primer
programiranja Windows aplikacija. Najmanji program u c-u za windows-e
je barem 50-ak linija, dok je u c++ taj broj 7. Naravno da biste znali
smisao tih sedam linija morate biti upoznati sa bibliotekom objekata,
dakle hijararhijom kao i relacijama između objekata. To je upravo
i druga strana oštrice. Objekti olakšavaju rad, ali zato iziskuju
od vas neprekidno učenje novih stvari. A verujte mi, jednom kada
počnete i kada vidite kako to sve lepo štima u objektima trošićete
sve više i više i više ... svog vremena upravo za to.
unknown.814ppekovic,
>> - U uvodima knjiga (bar onih koje sam ja čitao) kaže se da
>> ozbiljne aplikacije pisane u C jeziku imaju bar 100,000
>> linija, što je frustraciona
>> činjenica za mnoge. Autori tih knjiga tvrde (a ja im za sada v
>> jer nemam još ni jedan program od 1e6 linija) da se ta
>> količina objektnim programirajnem može svesti na 20,000
>> linija. Dakle pet puta smanjenje.
Nemam ništa protiv OOP-a, čak naprotiv. Međutim, ono što mi je uvek išlo na
nerve kada se pojavi neka nova, da je uslovno nazovem, "teorija", je što
zagovornici iste, valjda da bi ubedili široki auditorijum da je ta "teorija"
"ono pravo", krenu da množe babe i žabe, tj. pokušavaju "teoriji" da pridruže
kvantitativna obeležja pa onda izvale gluposti kao što je "100.000 linija kod-a
na C-u se može svesti na 20.000 uz pomoć C++ -a". Samo čekam dan kad će da kažu
"evo vam funkciju koja zadati broj linija u C-u preslikava na odgovarajući na
C++ -u".
>> - Osim toga programiranje u C-u traži veoma veliki stepen
>> detaljisanja. Vi za vreme razvoja vašeg programa morate
>> stalno da vodite računa,
>> rečeno programerskim žargonom, od bios-a do algoritma. Dakle,
>> jezik traži takav način razmišljanja, dok osobina objektnog
>> programiranja koja se zove začaurivanje (encapsulatation)
>> pravi, nešto što je u teoriji sistema poznatno kao, crna
>> kutija. Jednom urađen pristup hardveru, na primer, se zatvara
>> u klasu i dalje se samo instanciranjem te klase i pozivanjem
>> pripadajućih funkcija (member functions) te klase stvar
>> rešava, a da nije potrebno poznavanje hardvera do
>> detalja.Jednom rečju u c-u ste morali da znate sve o svim
>> funkcionalnim delovima vašeg programa. Sada je potrebno znati
>> samo šta vam treba i kako to ostvariti, a ne morate da se
>> upuštate u deteljnu analizu određenog potproblema.
Znači kada programiram na C-u svaki put moram da pišem sve počev od
funkcija za ispis znaka na ekranu, čitanje sektora sa diska?
Šalu na stranu, predraže arapine, nisi dobro objasnio stvar. Naime, to što
si ti rekao postoji od pojave strukuiranog/modularnog programiranja. Pa šta su
ti drugo bibliotečke funkcije do čist primer "crne kutije". Ono što je trebalo
reći je da OOP donosi nove mogućnosti ideji sa "crnom kutijom", tj. sada je
moguće u crnu kutiju strpati sve i svašta od promenljivih, struktura, pa do
funkcija itd. itd.
>> - Učenje ovog jezika nije neophodno, ali zato stvarno skraćuje
>> za rešavanje mnogih standardnih problema. Naveo bih samo
>> primer programiranja Windows aplikacija. Najmanji program u
>> c-u za windows-e je barem 50-ak linija, dok je u c++ taj broj
>> 7. Naravno da biste znali smisao tih sedam linija morate biti
>> upoznati sa bibliotekom objekata, dakle hijararhijom kao i
>> relacijama između objekata. To je upravo i druga strana
>> oštrice. Objekti olakšavaju rad, ali zato iziskuju od vas
>> neprekidno učenje novih stvari. A verujte mi, jednom kada
>> počnete i kada vidite kako to sve lepo štima u objektima troši
>> sve više i više i više ... svog vremena
>> upravo za to.
Preterivanje je nazvati C++ jezikom, lepše mi zvuči OOP ekstenzija ili tako
nešto. A to da je najmanji program napisan uz pomoć C-a na windows-u dugačak 50
linija a na C++ -u 7, to je samo iz razloga što su kod C++ -a tih istih 50
linija stpali u lib, a ovamo nisu. žinjenica je da je to lepše i preglednije
kada se uradi uz pomoć OOP ekstenzija ali reći sad da je to nešto sasvim novo i
revolucionarno, eh,...
Paya
unknown.815mjova,
> vrati ništa. U čemu je problem? Zašto ne bi deklarisao
> funkciju sa void?
vrlo jednostavno, treba da mi vrati int (ili char ili bilo šta). u
običnom c-u ladno mu daš 'mov ax, (ono što treba, a rezultat je rada
asm programa)' i korišćenjem pragma direktive rešiš problem. to u ++
ne radi. ako imaš neko rešenje daj da vidimo, ali nek bude
jednostavnije od skakanja u asm pa ispravljanje greške.
unknown.816mjova,
> Sad ovde treba učitati mesec ( enter = prihvatanje tekućeg
> ) sa max dva karaktera i smestiti ga u promenljivu mes
> tako da ona pokazuje mesec i samim
najjednostavnije rešenje vidim u primeni scanf(), za malo složenije
treba sam da napišeš to za unos sa tastature. pogleah r84scr.zip, tamo
imaš (rsoft) neke primere, ali mislim da će ti to samo otežati jer je
bibloteka kompleksna. probaj sa scanf().
> 2. Kako izračunavam broj dana poteklih od nekog tamo
> datuma (npr. 01.01.1900 ili 01.06.91). Po mogućstvu
> ubaciti u gornji primer.
pa ima neke formule, ali ako ti datumi pre 01/01/70 nisu preterano
bitni možeš se poslužiti unixtodos i obratno, valjda se tako zove.
formule za davnije dane neko je ovde napisao, pa malo potraži (ne znam
u kojoj temi tačno, ali znam da je neko pisao).
unknown.817mstanic,
>> sistema poznatno kao, crna kutija. Jednom urađen pristup
>> hardveru, na primer, se zatvara u klasu i dalje se samo
>> instanciranjem te klase i pozivanjem pripadajućih
>> funkcija (member functions) te klase stvar rešava,
Izvini na nerazumevanju, ja sve mislim da se tako ponašaju
i funkcije. Naime, kad napraviš jednu funkciju sve što
treba da znaš jesu parametri koje joj prenosiš i parametre
koje ona vraća. Na kraju krajeva svako ko programira u
nekom asembleru ima biblioteku rutina koje se ponašaju na
isti način (ta filozofija postoji u većini programskih
jezika).
E sad, možeš li objasniti u čemu je razlika kod objektnog
načina programiranja u odnosu na ovo, (jer verujem da
postoji, inače ne znam zašto bi neko kupovao objektne
kompajlere a ne samo biblioteke).
unknown.818djelovic,
> običnom c-u ladno mu daš 'mov ax, (ono što treba, a rezultat je rada
> asm programa)' i korišćenjem pragma direktive rešiš problem.
int funkcija (...)
š
asm š
...
mov ax, nešto
ć
return _AX;
ć
Naravno, bolje je samo "return nešto" :). Ili, možeš:
int funkcija (...)
š
int ret;
asm š
...
mov ret, nešto
ć
return ret;
ć
U principu treba paziti kada se ubacuju asm direktive u C++
program jer je C++ skloniji korišćenju registara od C-a, pa se često
desi da se kompajler i tvoje parče u asembleru "posvađaju".
unknown.819djelovic,
> Preterivanje je nazvati C++ jezikom, lepše mi zvuči OOP ekstenzija
> ili tako nešto.
Isto tako bi asm programer mogao reći da C nije jezik, nego samo
nekakva "makro" ekstenzija :). C++, bar po meni, donosi dosta novog. Evo
gde je suština:
Klasa, sama po sebi, ne donosi ništa novo. Ona je crna kutija
kao što je jedna *.C datoteka, sa svojim privatnim promenljivima i
javnim funkcijama. (BTW, moglo bi se reći da je za ANSI *.C datoteku sve
privatno dok ga stavljanjem u *.H zaglavlje na napravimo javnim.) Možda
je klasa malo zgodnija od programskog modula, ali u osnovi, to je to.
Ono što jeste *suština* objektnih jezika je su virtuelne funkcije!
Funkcija u C++-u može da prima argumente za koje nema pojma šta su,
važno je samo da nasleđuju ono što smo deklarisali. I može da za
primljene klase poziva njihove virtuelne funkcije, a da nema pojma šta
one rade. Znači:
class pera š
virtual radi (void);
ć;
... // Ovde se deklariše funkcija "radi".
void funkcija (pera *p)
š
p->radi ();
ć
i kasnije, korisnik klase može da uradi sledeće:
class mika: public pera š
virtual radi (print);
ć;
... // Ovde se *redeklariše* funkcija "radi".
...
mika m;
funkcija (&m); // Funkcija će operisati sa novim članom "radi".
To je to. Sve ostalo, osim višestrukog nasleđivanja, jeste samo
šminka. Ali i ta šminka bitno povećava produktivnost, npr. uzmimo samo
default argumente u obzir (void funkcija (int i = 0);).
I, da završim, C++ programi u osnovi jesu kraći, ali su u
pozivanju funkcija sporiji od C-a. C++ je hibridni jezik, njemu zapravo
fali celokupna hijerarhija, kakvu recimo ima Smalltalk. Ali, baš zato
što ne nosi sav taj prtljag, on je i brži. A *classic* tradeof.
unknown.820spantic,
> na C-u se može svesti na 20.000 uz pomoć C++ -a". Samo
> čekam dan kad će da kažu "evo vam funkciju koja zadati
> broj linija u C-u preslikava na odgovarajući na C++ -u".
Desiće se to Payo, ne brini :) Ne znam da li si probao FORTAN 2 C ali radi
posao, mada sam posle morao da se ponovo pobrinem za I/O. Ali stvarno šljaka,
mada me je izuzetno nervirala ona optimizacija matrica u jednodimenzionalni
niz :)
unknown.821garderp,
Pošto sam, izgleda, bio loše shvaćen, evo da malo proširim.
Naime, sada moram da zađem malo i u sintaksne vode,
jer izgleda objašnjenje samog principa nije bilo dovoljno.
Dobro reče djelović da se c jezik može smatrati ekstenzijom
asemblera, ako se c++ ima smatrati ekstenzijom c-a. Crna
kutija: klasa u C++ je "crnja" od crne kutije obične funkcije
jezika C. Recimo da koristiš neke funkcije za manipulaciju
tabelama (probelem iz baza podataka). Potrebno je da imaš
neki "hendl" (može i Bah :)) za samu tabelu, pa razne
hendlove za rekorde i fildove. Zatim hendlove za razne
bafere, pa prateće datoteke. U C++ se sve to zatvori
u klasu. I jednom kada to uradiš potpuno možeš da zaboraviš
kako je realizovan određen kompleksan zahvat nad tabelom.
Instanciranjem neke klase ti samo navedeš ŠTA želiš, a ne moraš
da znaš KAKO se to odvija (ne treba bukvalno shvatiti). To je ono,
što sam nazvao manjim stepenom detaljisanja, odnosno C++ je na višem
nivou apstrakcije. Još jedna od lepih stvari u C++ se može videti
na sledećem primeru. Recimo da pravimo neki (vektorski) program
za crtanje. Imamo sledeće OBJEKTE krug, pravougaonik, slovo.
Geometrijski objekti su raspoređeni po ekranu (i u memoriji).
Kada treba pozvati funkciju za redraw u c-u bismo morali da pišemo
funkcije sa razlišitim imenima kojima bismo morali da naznačimo
gde su mu podaci u memoriji, kako da im pristupi. Morali bismo
da razmislimo da li ćemo da primenimo prenos parametara preko
globalnih promenljivih ili ne itd. Sve to u C++ bi se uradilo ovako
foreach->draw()
pri čemu bi se ovo foreach odnosilo na sve objekte koji bi se nalazili
u nekom nizu a draw bi bile različite funkcije koje rade različite
stvari, ali se isto zovu.
Ovo je samo jedan deo prednosti programiranja u C++. Ima još toga.
No još jednom ponavljam: nemojte učiti C++ osim ako vam baš ne treba.
Mnogo toga treba još napisati u C-u. Ni malo ne podržavam učenje pro-
gramskih jezika radi učenja. Veliku klasu problema još uvek je sasvim
prihvatljivo rešavati u C-u.
unknown.822garderp,
│ Preterivanje je nazvati C++ jezikom, lepše mi zvuči OOP
│ ekstenzija ili tako nešto. A to da je najmanji program
│ napisan uz pomoć C-a na windows-u dugačak 50
Payo, ovo mi sve više liči na raspravu da li je Windows
operativni sistem ili nije. Tako i pitanje da li je
C++ ekstenzija ili jezik za sebe ide u isti koš.
Prvo, mislim da od sada pa na dalje ne treba diskutovati
u tom smeru. Za određivanje razlika između nekoliko
entiteta potrebno je da postoje stroga pravila, na osnovu
kojih ćemo ispitujući osobine nekog objekta utrditi da
li po određenim zakonima zadovoljavaju, odnosno ne
zadovaljavaju uslove da se zovu imenom nekog entiteta.
Kada se kaže da je nešto ekstenzija nečega, misli se
na kvantitativni pomak. A pošto OOP je kvalitativno
različit način razmišljanja-programiranja onda
C++ nikako ne može biti ekstenzija. Uostalom, čak i
da jeste (što nije), znaš vrlo dobro za onaj dijalektički
zakon prelaska kvantiteta u kvalitet.
Predrag (Za Arape)
unknown.823ppekovic,
>> Payo, ovo mi sve više liči na raspravu da li je Windows
>> operativni sistem ili nije. Tako i pitanje da li je
>> C++ ekstenzija ili jezik za sebe ide u isti koš.
Možda nisi pažljivo pročitao, ali sam se baš trudio da naglasim subjektivnu
notu kada sam rekao da mi se VIŠE DOPADA da C++ zovem ekstenzijom nego jezikom.
Međutim, imam i argumenata za to. Naime, ja na OOP gledam kao na kariku u lancu
špageti_programiranje -> struktuirano_programiranje -> OOP, a ne kao na novi
programski jezik. C++ nije novi programski jezik, jer je on OOP dodatak na
programski jezik C. Ako nazovemo C++ novim programskim jezikom, ajde onda po
istoj logici da nazovemo i sve ove nove struktuirane basic-e novim programskim
jezicima, jer pomak od špageti na struktuirano programiranje je ravan, ako ne i
veći, od pomaka struktuirano-objektno. Možemo čak ići i dotle da kažemo da je
TP novi programski jezik itd. itd.
Paya
P.S. Nije valjda da imaš dilemu da li je windows OS ili ne?
unknown.824stomic,
$ veći, od pomaka struktuirano-objektno. Možemo čak ići i
$ dotle da kažemo da je TP novi programski jezik itd. itd.
Što se toga tiče TP i jeste (gotovo) novi programski
jezik :)). Koliko je ostalo stvari od Wirthovog pascala?
ST.
unknown.825garderp,
│ Možda nisi pažljivo pročitao, ali sam se baš trudio da
│ naglasim subjektivnu notu kada sam rekao da mi se VIŠE
│ DOPADA da C++ zovem ekstenzijom nego jezikom.
Što se mene tiče, ja nemam nameru više da diskutujem na temu
šta je čemu (i da li je) ekstenzija. Kod stvari koje mogu
da se kvantifikuju, dakle prebace u ekvivalentnu vrednost
izraženu u novcu, gleda se uglavnom koeficijent korisnosti.
A meni C++ stvarno puno olakšava programiranje,
a složićeš se da je ovakav način razmišljanja veoma prihvatljiv.
│ P.S. Nije valjda da imaš dilemu da li je windows OS ili
│ ne?
Što se toga tiče, ti me POZNAJEŠ i znaš MOJ (takođe subjektivan)
odgobor na to pitanje. A ne želim da kažem koji je odgovor da ne
bih pokrenuo još jednu nekorisnu diskusiju.
P.S. Samo da si ti meni živ Payo, pa makar ti pisao i u asembleru.
unknown.826dejanr,
>> Što se toga tiče TP i jeste (gotovo) novi programski
>> jezik :)). Koliko je ostalo stvari od Wirthovog pascala?
Pa, ostale su (skoro) sve, nego je dosta dodato ;)
unknown.827glisin,
He, he... lepo si to rekao: (skoro) sve...
ŢŢŢIGGYŮŮŮ
unknown.828dj.rainovic,
Imam 3 problema sa prevođenjem MS WIN EMACS-a.
1. U fajlu mswfile.c ne može da nađe _MAX_PATH vrednost. Ta oznaka je
definisana u <stdlib.h> koji uključen na početku ovog .c fajla.
2. U .mak fajlu se pojavljuju dve problematične linije
mathwl.lib+
cwl.lib
Koristim BC++ 2.0 i nisam našao ove lib-ove kod njega. Postoje
mathl.lib i cl.lib (naravno) ali nisam siguran da će to da bude OK.
3. Kad izbacim (w) u prethodom problemu a pod 1. dodam liniju
#define _MAX_PATH 80
dobijem sledeću poruku:
-------------------------------------------------------------------
tlink /v/s/c/Twe/P-/LC:\BC\LIB @MAKE0000.$$$
Turbo Link Version 4.0 Copyright (c) 1991 Borland International
Error: Undefined symbol __fullpath in module mswfile.c
Error: Undefined symbol __envSize in module PUTENV
Error: Undefined symbol __envseg in module SETENVP
Error: Undefined symbol _abort in module SETENVP
Error: Undefined symbol __C0environ in module SETENVP
** error 1 ** deleting mewin.exe
-------------------------------------------------------------------
Šta da radim ? Predlozi ?
unknown.829mjova,
> return _AX;
vidiš, čini mi se da sam ovo gledao i da mi se to nije baš dopalo iz
nekih razloga, no nema veze, rešenje jeste konkretno (i ako više volim
ono lepo asm ret).
> U principu treba paziti kada se ubacuju asm direktive u
> C++ program jer je C++ skloniji korišćenju registara od
> C-a, pa se često desi da se kompajler i tvoje parče u
> asembleru "posvađaju".
pa ne znam, ali ako pišem nešto u asm-u, to nije komplikovano, a i
nije deo nekog koda koji je rađen u C-u. naime, nikad nisam hteo da
testiram nerve i da provaljujem šta uzima C a šta mogu ja, zato ako je
išta u asm-u pisano onda je to kompletna fn. tada, može sasvim lep da
se na kraj rutine stavi jedan 'return 0;' koji samo zaluđuje
kompajler, ali to mi nekako nije elegantno rešenje...
unknown.830pbojan,
Zamolio bih nekog sefa neke grupe o C++ da me ljubazno ubaci. Stize sveza
snaga.
pBOJAN
unknown.831garderp,
Neko vreme je ovo radio Paya pa mu verovatno dosadilo, ali evo sada
ću ja. žemu ti služi grupa za C++ kad imaš temu u konferenciji.
To što se tema zove C ne znači da ne smeš da pišeš o C++. Nismo mi
baš takvi sitničari. Zato izvoli sveža snago pa se raspiši upravo
ovde.
unknown.832dragisak,
Ima li nekoga ko je radio sa ekstenderima (PharLap ili Watcom) ?
Ima li, u opšte, negde nekoga ko to ima i radi sa tim ?
Kakva su iskustva ?
unknown.833pbojan,
> cu ja. Cemu ti sluzi grupa za C++ kad imas temu u
> konferenciji. To sto se tema zove C ne znaci da ne smes da
> pises o C++. Nismo mi bas takvi sitnicari. Zato izvoli
> sveza snago pa se raspisi upravo ovde.
Lepo si to primetio, ali ono sto je problem nije naziv ove konferencije,
nego cinjenica da neki vise vole da dele softwer po grupama ( citaj: malom
broju ljudi ) nego ovde. Ono sto mene interesuje nisu tri poruke na
dvadeset o C++, a ostale o plehanoj muzici, nego nesto konkretno, *.h i
*.cpp. Apsolutno sam siguran da neki ovde imaju jako lepe biblioteke za rad
na C++ ali nekako nikako ( izes mi konstrukciju ) da ih vidim ovde.
No, sta je tu je.
Evo pitanja:
#define NESTO 123
class beta { ... };
class alfa {
alfa& operator& ( beta* );
alfa& operator+ ( int );
.
.
.
};
alfa& alfa::operator& ( beta* p1 )
{
. // <---------------------------- koliko je ovde p1?
. |
return *this; |
}; |
|
alfa& alfa::operator+ ( unsigned long u1 ) |
{ |
. |
. |
return *this; |
}; |
. |
. |
. |
|
main() |
{ |
. |
. |
betaptr=new beta; |
alfa alfaobj; |
. |
alfaobj &betaptr +NESTO; |
. |
. |
} |
|
Da li ce se betaptr lepo preneti u operator& ? >---------------------|
Ili: hoce li u alfa::operator& biti (p1==betaptr) ili ne?
pBOJAN
unknown.834bearboy,
˙¨:> Što se toga tiče TP i jeste (gotovo) novi programski
˙¨:> jezik :)). Koliko je ostalo stvari od Wirthovog pascala?
Begin i end :)
unknown.835djelovic,
> Ili: hoce li u alfa::operator& biti (p1==betaptr) ili ne?
Da. Biće preneto betaptr.
> Apsolutno sam siguran da neki ovde imaju jako lepe biblioteke za rad na
> C++ ali nekako nikako ( izes mi konstrukciju ) da ih vidim ovde.
Apsolutno grešiš. BTW, uz kompajler si dobio i deo NIH
biblioteke (classlib) sa nekim osnovnim objektima, koji su (iako možda
ne deluje tako) veoma korisni. Probaj.
unknown.836garderp,
Pa ti ovde imaš dosta sintaksnih grešaka. žak, ako pretpostavim
da neke stvari nisi kucao radi prikazivanja suštine problema
opet ostaju neke suštinske sintaksne greške. Kad njih ispraviš
onda ćemo u drugačijem svetlu da razmatramo tvoj problem.
Evo redom.
1.)Pošto si uveo klase alfa i beta službenom rečju class
znaš da je po definiciji sve unutra private.
To znači da ne možeš da ga zoveš iz main-a.
Rešenje: Ili umesto class stavi struct ili
posle class stavi public:
2.)Ne poklapaju ti se prototip i definicija funkcije
alfa::operator+. Kako misliš da proradi mehanizam
preopterećenih operatora kad pogrešno zadaješ formalne
argumente?
3.)betaptr=new beta; Ovo je možda najteža sintaksna greška
jer zadire u suštinu samog jezika. C jezik nije
kontekstno slobodan jezik dakle u konstrukcijama
aAb i bAa A ima isto sintaksno značenje. Što će reći
nije dovoljno napisati betaptr=new beta. Kompajler prvo
mora da zna kog je tipa betaptr pa mu tek kasnije
može dodeliti adresu instance klase beta koju automatski
radi operator new.Rešenje:
beta *betaptr=new beta;
Možda sam izgledao malo prestog, ali to je u interesu preciznosti
izražavanja i ozbiljnog pristupa rešavanju problema.
unknown.837garderp,
žovek je rekao da je apsolutno siguran da neki ljudi sa Sezama
imaju dobre biblioteke objekata za C++. Mene lično zanima
ko šta ima pa da menjamo. U nekom časopisu (inostranom)
čije sam ime zaboravio prilikom opisa Borlandovog C++ 3.0
navedena je lista biblioteke objekata za C++ NEborland
proizvođača. Koliko se sećam tu je bilo
C++ Views (programiranje pod Windowsima)
SQL library (selbstverstandlich)
Statistic library
3D graphics library
i još jedno desetak. Za svakog je bilo po nešto.
Inače, ako iko bilo šta čuje za Paradox Engine 3.0 (takođe biblioteka
za C++)na našim prostorima neka slobono viče ovde ili meni na mail.
unknown.838dnikolic,
>> Kakve su i da li postoje neke bitnije razlike izmedu
>> TC 2.0 i TC 2.01.
Rece mi nboskovic da postoji i Turbo C 3.0!? U cemu se on razlikuje od ova
dva.
dn
P.S. Ne radi se o Borland C++ 3.0.
unknown.839dnikolic,
>> primer, se zatvara u klasu i dalje se samo instanciranjem te klase i
>> pozivanjem pripadajucih funkcija (member functions) te klase stvar resava,
>> a da nije potrebno poznavanje hardvera do detalja.Jednom recju u c-u
Pa isto tako se radi i u C-u! Napises funkciju u kojoj radis nesto delikatno,
proveris je kako radi i kasnije ne vodis racuna o njoj. Ne vidim kakva je
prednost klasa u tom pogledu.
dn
unknown.841pbojan,
>> Ili: hoce li u alfa::operator& biti (p1==betaptr) ili ne?
>
> Da. Bice preneto betaptr.
Vidi odgovor GARDRERP-u ( ima tu dosta problema koje nisi video )
> Apsolutno gresis. BTW, uz kompajler si dobio i deo NIH
> biblioteke (classlib) sa nekim osnovnim objektima, koji su
> (iako mozda ne deluje tako) veoma korisni. Probaj.
Eh. Pa, dobio sam i TVision, RTL i jos stosta. Jel i to da pogledam? :))
Ama, mislio sam na malo drugacije biblioteke.
pBOJAN
unknown.842pbojan,
> pretpostavim da neke stvari nisi kucao radi prikazivanja
> sustine problema opet ostaju neke sustinske sintaksne
> greske. Kad njih ispravis onda cemo u drugacijem svetlu da
> razmatramo tvoj problem. Evo redom.
Idi bre. " U drugacijem svetlu "? Vidis, poenta nije bila da napisem
sintaksno ispravan funkcionalan struktuiran debagovan komentiran program,
vec da opisem ideju ( koju je, recimo, DJELOVIC sasvim lepo uhvatio ).
> Mozda sam izgledao malo prestog, ali to je u interesu
> preciznosti izrazavanja i ozbiljnog pristupa resavanju
> problema.
Ma neee. Samo spadas u one ljude koji prvo cepaju dlaku na cetiri, pa onda
gledaju sta je ostalo. A to me strasno podseca na neverovatne diskusije u
nasem parlamentu, kada je jako bitno ko je kome sta rekao nego o cemu
se raspravlja. Takodje, tu spadaju i one face koje te pazljivo slusaju
cekajuci gramaticku gresku ( odnosno citaju ):
A: " Boze, oko mene je bojni otrov! A ja neznam da koristim zastitnu
masku!"
B: " Pa ti ne znas da se 'neznam' pise odvojeno! Kad ovo ispravis onda
cemo u drugacijem svetlu da razmatramo tvoj problem. "
Elem:
Overloading je pre svega namenjen povecanju mogucnosti operatora ( u
aritmetickom smislu ) a ne kojekakvim smicalicama onog tipa koji sam
u "gornjem" primeru POKUSAO da prikazem ( DA, Garderp, znam da je moguce
overload-ovati jos po nesto ). U nekom svom programu, bas DJELOVIC je
koristio slicnu ideju ( bese li primer ED programiranja? ).
Ako u pomenutom primeru ne bi koristili pokazivac na objekte ( recimo ako bi
objekat prenosili referencom ), sve bi bilo OK. Medjutim, kako ovde zelim da
vratim ( posaljem ) pokazivac, javlja se jednostavan problem: kompajler
pri racunanju IZRAZA &betaptr +NESTO, vrednost betaptr menja tako da u
overload& stize nesto sasvim drugo. Konkrtetno, ako je betaptr, recimo,
911c:0004, t1 postaje, opet recimo, 911c:0325 ( debager ). Koji je razlog
ove anomalije? Samo za one koji nisu odmah uhvatili problem, sledi program,
a tu je i datoteka sa prevedenim primerom ( LARGE, c++ 3.0, 8086/88 code ):
#include <stdio.h>
typedef unsigned long ulong;
class alfa {
int id;
public:
alfa ( int ident ) { id=ident; };
};
class beta {
ulong id;
alfa* point;
public:
beta& operator+ ( ulong nesto ) { id=nesto; return *this; };
beta& operator& ( alfa* );
};
beta& beta::operator& ( alfa* t1 )
{
point=t1;
printf ("\n\nU overload& prenelo se %p ???",t1); // <------- ovde!!!
return *this;
}
void main()
{
alfa* alfaptr;
beta betaobj;
alfaptr=new alfa(1);
printf ("\nU overload& salje se %p ...",alfaptr);
betaobj &alfaptr +123;
delete alfaptr;
}
pBOJAN
overload.zipunknown.843mjova,
> Rece mi nboskovic da postoji i Turbo C 3.0!? U cemu se on
> razlikuje od ova dva.
pravo da ti kažem ja sam se razočarao jer je to zapravo osakaćena
borland 3.0 verzija (biblioteke nisu iste!) i ima iste prohteve kao i
pomenuta borland verzija. u turbo verziji nedostaju debuger, tasm,
tprof (i neka boranija..). ono što mi se dopalo je isto ono što ima i
u borland verziji a to su odlični objekti za c++...
elem, zahvaljujem se snowwhite-u jer mojoj radoznalosti nije bilo
kraja ;))
unknown.845mdimitrijevic,
Hi!
Zna li neko kako da graficki ekran nacrtan u C-u odstampam na stampacu.
Radim u Turbo C-u 2.0.
P.S. Da ga odstampam iz C-a a ne iz nekog rezidentnog programa i slicno.
Treba mi samo rutina za stampanje.
Pozdrav,
Marjan Dimitrijevic
unknown.846djelovic,
> betaobj &alfaptr +123;
(betaobj & alfaptr) + 123;
> Ama, mislio sam na malo drugacije biblioteke.
Ama, nema tih biblioteka. Piratski krugovi su ipak jako spori.
P.S. žini mi se da diskusija između tebe i garderp-a uzima pomalo
neprijatan tok. Profesionalna sujeta je dobra jedino kada naplaćuješ
neki posao :).
unknown.847djelovic,
> Zna li neko kako da graficki ekran nacrtan u C-u odstampampam na stampacu
Pogledaj BCHELP10 iz C direktorijuma.
unknown.848pbojan,
> P.S. Cini mi se da diskusija izmedu tebe i garderp-a uzima
> pomalo neprijatan tok. Profesionalna sujeta je dobra
> jedino kada naplacujes neki posao :).
:))))
Ipak, nije u pitanju profesionalna sujeta, vec jednostavno licni razlozi
zbog kojih ne volim ljude koji ne slusaju sta im pricas. Naravno da
nemam nista pritiv garderp-a, samo mi je nagazio na zulj, koji je
me tishti jos tamo negde od srednje skole.
>> betaobj &alfaptr +123;
>
> (betaobj & alfaptr) + 123;
Da! Naravno! Ali time se gubi "kvalitet" onog fazona:
manager &win1 +ALT_F1 -ALT_F3
&win2 +ALT_F2 -ALT_F3; // ako su win1 i win2 pokazivaci
pBOJAN
ps. Posle provere: operator+ radi u onom primeru prvo overload pa staru
operaciju. Kako ga naterati da zaboravi staru ( iliti preskoci )?
Ako obrnemo stvar: betaobj +123 &alfaptr sve radi kako treba,
sa gledista mog problema, jer prevodioc zaboravlja rezultat sabiranja,
ali se zato u overload+ ne prenosi 123 nego bog_te_pitaj_sta. Opet,
sto ti kazes, mogu da opalim zagrade, i eto resenja ( sve dok mi ne treba
vise istih poziva u toj liniji ).
Moj zakljucak je da je ova metoda koriscenja overloada nepravilna,
ili bar nepredvidjena ( mada, kazem, dobro funkcionise ako se radi
referencom ).
unknown.849pbojan,
Dobro, onda da otvorim sezonu.
Mala zgodna 'bibloteka' za XMS ( c++ ):
-------------------------------
Turbo C++ XMS Interface Library
by Richard Vuduc
Version 1.1
Copyright 1990, Richard Vuduc
-------------------------------
Well, I'm glad to see you followed directions and are now
'reading.me'. Here's a list of files included in this package
(XMSCPP11.ZIP):
- XMSCPPS.LIB // Turbo C++ linkable routines for accessing
extended memory (small model).
- XMSCPPL.LIB // Turbo C++ linkable routines for accessing
extended memory (large model).
- XMSHRW.CPP // Src for Get/Store routines (XMSHandle)
- XMS.H // Turbo C++ XMS header file
- XMSHNDL.H // XMSHandle Class Header file
- README.TXT // That would be this file
- XMSCPP.TXT // Documentation on how to use the library
- XMSDEMO.CPP // Library demonstration program source code
- XMSDEMO.EXE // Library demonstration executable
- XMSDEMO2.CPP // Demonstration file 2 (XMSHandle Class)
- XMSDEMO2.EXE // Demonstration file 2 executable
Hardware and Software Requirements:
-----------------------------------
You need a 286 or above IBM AT compatible, enough conventional memory
to run the Turbo C++ compiler, and 64k of extended memory to run the
first demonstration program (XMSDEMO.EXE). The 2nd demo program
(XMSDEMO2.EXE) has the same requirements.
You also need to install HIMEM.SYS. I haven't worked out any
distribution agreements with Microsoft, but you can get it from them
in HIMEM.ARC on MSSYS on CompuServe.
-----------------------------------
Pa, sta je, tu je.
pBOJAN
xms11.zipunknown.850ppekovic,
>>>> Kakve su i da li postoje neke bitnije razlike izmedu
>>>> TC 2.0 i TC 2.01.
>>
>> Rece mi nboskovic da postoji i Turbo C 3.0!? U cemu se on razlikuje od ova
>> dva.
>> dn
>>
>> P.S. Ne radi se o Borland C++ 3.0.
Jel bi umeo neko da napravi lepo jednu šemu razvoja
Borlandovih C komapjler-a sa razlikama, unapređenjima, itd. itd.?
Paya
unknown.851janko,
> Jel bi umeo neko da napravi lepo jednu šemu razvoja
> Borlandovih C komapjler-a sa razlikama, unapređenjima,
> itd. itd.?
Ne bih umeo šemu, ali je priča prilično jednostavna:
Turbo C 1.0 nije bio baš skroz po ANSIJU (ako se ne varam).
Turbo C 2.0 (i 2.01) su, kao, ANSI C kompajleri (sa
proširenjima, svojstvenim za MS DOS igrarije)
Borland C++ i Turbo C++ se razvijaju paralelno (ne znam da li
postoje i obični Borland C-ovi) -- razlikuju se u tome što ovi
što se zovu Borland imaju Windows igrarije, a ovi što se zovu
Turbo ne. Turbo C-ovi iste verzije se prodaju po različitim
cenama, u zavisnosti šta osim kompajlera ide uz njih. Za
'Borland' pakete je sigurno da dobijaš dibager, asembler, a
kasnije i profajler pride, ali su sorsovi RTL opcija). Ne mogu
baš da se kladim da su DOS kompajleri u oba pakete potpuno isti
(nisam imao prilike da upoređujem) ali imaju iste osobine iste
verzije.
Borland C++ 1.0 (dakle, i Turbo C++ sličnog broja? Mislim da
djelović koristi tako nešto, pa će on više reći) podržava
cfront 1.2 nivo C++-a (nivo 1st ed. Stroustrupove knjige).
Borland C++ 2.0 podržava Cfront 2.1 nivo, BC++ 3.0 podržava 2.1
nivo proširen templejtima iz 3.0 cfronta, a BC++ 3.1 podržava
puni cfront 3.0 (Za upoređenje, Microsoft u 7.0 podržava cfront
2.1, proširen nekakvim (ne znam koliko standardnim, to će ići
valjda tek u cfront 4.0) iksepšn hendlingom).
Sad što se tiče potreba u hardveru. Turbo C 2.0 je srećan već
sa 640K. Borland C++ 2.0 lepo živi sa 2MB (ali da se sve ostavi
njemu -- no cache ;) BC++ 3.0 i veći skoro da su neupotrebljivi
bez 4MB memorije, iako mogu da se staruju na 2 MB, ali se tada
događa ono što opisuje i ZZ u tekstu o MS C++-u -- često može
da upadne u ono što se stručno zove 'thrashing' (i što se
stručno prevodi 'prolupavanje' :). Tada odsvapuje na disk ono
što mu je, kao višak, a već u sledećem pozivu potprograma mu
upravo to treba -- pa ako je poziv te podrutine u petlji, nikad
kraja...
Borland C++ 3.0 prvi ima više opcija za optimizaciju, ali još
nije dostigao one sfere optimizacije koje je postizao već MSC
5.0. Ne znam kakav je tu MSC++ 7.0 (da li su nešto žrtvovali da
bi ostvarili Borlandovu brzinu prevođenja, kojom se sada
hvale). Bilo kako bilo, ako imaš dovoljno jaku mašinu, razlike
su sve manje. Generalno, MS pravi znatno tromije prevodioce,
ali koji potencijalo daju nešto kvalitetniji kod... mada se to
teško primećuje u gotovim programima... Nekako su Borlandovi
kompajleri uvek imali neku eleganciju, koju MS nisu. Otprilike
su razlike kao sportski auto i limuzina, gde oba razvijaju
skoro iste brzine, ali ne ostavljaju isti utisak... I još treba
imati u vidu da je Borland puno pre MS-a počeo da se bavi
++-om, a ovaj skoro na silu uskočio u igru... trenutno je
Borland jedno koplje ispred, jer je na cfront 3.0 nivou...
Eto, nadam se da je sad malo jasnije. :)
unknown.852mstanic,
Pa pošto ova diskusija o razlikama i sličnostima između
običnog i objektnog C-a nije baš uspela da meni razjasni
stvari, pitao bih da li postoji neka dokuntacija (knjiga,
članak, fajl itd.) koja bi mogla da mi razjasni u čemu je
razlika a u čemu sličnost.
Napomenuo bih da običan C solidno znam.
unknown.853mjova,
> Jel bi umeo neko da napravi lepo jednu šemu razvoja
> Borlandovih C komapjler-a sa razlikama, unapređenjima,
> itd. itd.?
ne znam baš tačno, ali valjda ide ovako:
C * Turbo C 2.0 (i neke pod verzije)
C++ Turbo C++ 1.0
* Turbo C++ 1.0 2nd ed PRO
* Borland C++ 2.0
* Borland C++ 3.0
* Turbo C++ 3.0
Borland C++ 3.1
eto, od svega ovoga nisam do sada video samo borland C++ 3.1. paketi
pod nazivom turbo su mogli da se nabave (valjda može još uvek) u
profesional verziji (turbo 1.0 pro) gde su bili uključeni i ostali
programi debuger, profiler, asembler... ona zvezdica znači da to
trenutno imam i mogu da ustanovim razlike, ali nemoj da me teraš da
sve instaliram posebno ;)
paketi pod nazivom turbo i borland (provereno za verzije 3.0) imaju
različite biblioteke!! i sitnije (valjda??) razlike u prevodiocima.
- primetio sam neke probleme kod verzija 3.0 sa helpom za komandnu
liniju tako da koristim onaj iz 2.0.
- ima još nekih nedostataka pa sam uzeo samo biblioteke iz bc++ 3.0 a
inače koristim bc++ 2.0.
- verzije 3.0 su zahtevnije (ješnije su ;) jer sada traže bar 1M xms
memorije (a čini mi se da tc++ 3.0 nije isključiv pa može i ems).
- u 'borland' verzije je obavezno uključen i ostatak (tasm, tprof, td)
dok u 'turbo' nije (osim ako je PRO).
- u bc++ 3.0 uključeni su i izvorni kodovi za lib pa je to zgodna
stavka. mada ima nekih #pragma direktiva koje su nove u verziji bc++
3.0, uz manje izmene u hederima može da se obavi prevođenje i na
bc++ 2.0
to bi bilo sve pa ako ti ovo nije dovoljno zovni me za preciznije
informacije ili pitaj ovdenaka ;)
inače, što se tiče MSC-a i njegovih nekoliko verzija (ono što si reko
u klubetu ;) znaš, kad je borland pravio C tada je MS radio basic ;))
unknown.854mjova,
> Mala zgodna 'bibloteka' za XMS ( c++ ):
zgodna je stvarno, pogledao sam i zanimljiva je zbog c++ rešenja i
zbog toga što su lib urađene za S i L modele (najčešće koristim ;).
istini za volju imam brdo ovakvih biblioteka, mada nisam imao nikad
potrebe za xms, ems, itd ali nikad se ne zna.
unknown.855djelovic,
> > (betaobj & alfaptr) + 123;
>
> Da! Naravno! Ali time se gubi "kvalitet" onog fazona:
>
> manager &win1 +ALT_F1 -ALT_F3
> &win2 +ALT_F2 -ALT_F3; // ako su win1 i win2 pokazivaci
Well, to je pitanje prioriteta operatora. Linija
betaobj & alfaptr + 123;
se interpretira kao
betaobj & (alfaptr + 123);
jer + vezuje jače nego &, pa u beta::operator & biva prenet pointer
alfaptr + 123 (aritmetika sa operatorima, stara poslastica C-a).
To je i glavni problem C++-a: on je još uvek samo malo bolji C! Npr.
kapica na gore koju BASIC koristi za stepenovanje *ne može* se preklopiti
tako da za neku klasu bigint radi stepenovanje jer C++ očekuje da taj
simbol izigrava unarni operator i to ti je.
No, da se vratim na tvoj problem, jedino što možeš da uradiš jeste
da promeniš operator koji koristiš. Operator / je po prioritetu jači od
+ pa bi možda mogao da koristiš njega. Ili, koristi opet operator +.
Ništa te ne sprečava da on radi i sa alfa*-ima i sa int-ovima.
unknown.856dusanp,
=> Borland C++ i Turbo C++ se razvijaju paralelno (ne znam
=> da li postoje i obični Borland C-ovi) -- razlikuju se u
=> tome što ovi što se zovu Borland imaju Windows igrarije,
=> a ovi što se zovu Turbo ne.
Ne. Uglavnom si u pravu, ali ne i u razlici izmedju Turbo
i Borland verzija C++a. Postoji, na primer, Borland C++ for
Windows 3.0, koji ima kompajler koji radi pod windowsima i
u kome se pisu samo win programi. Ima sjajne mogucnosti, lepu
bibioteku win objekata (ObjectWindows), i lak je za rad. Nema
asembler i profiler ali ima debager. Otprilike je kao BC++3.0
redukovan za dos mogucnosti.
Sta sam ono hteo da kazem ?... Turbo je a radi for win.
unknown.857janko,
> Sta sam ono hteo da kazem ?... Turbo je a radi for win.
Potpuno si pravu. I ja sam video da sam to preslobodno rekao.
Postoje i Turbo programi koji rade za Win. Znači, ne možemo
tako da ih delimo. No, meni to nije ni bio cilj, po meni je
najbitnije ono, do kog nivoa jezika je šta implementirano...
unknown.858pbojan,
> To je i glavni problem C++-a: on je jos uvek samo malo
> bolji C! Npr. kapica na gore koju BASIC koristi za
> stepenovanje *ne moze* se preklopiti
Eh, da. Ali sad imamo templates, pa se lakse dise.
> + pa bi mozda mogao da koristis njega. Ili, koristi opet
> operator +. Nista te ne sprecava da on radi i sa alfa*-ima
> i sa int-ovima.
I zasto to meni nije palo na pamet? :) ( prioritet operatora? sta je to? :)
Zapeo k'o sivonja sa &. Idiot. Djelovic, svaka cast.
unknown.859dgrbic,
:: i Borland verzija C++a. Postoji, na primer, Borland C++
:: for Windows 3.0, koji ima kompajler koji radi pod
:: windowsima i u kome se pisu samo win programi. Ima sjajne
:: mogucnosti, lepu
A koliko mesta na disku jede to cudo?
I koliko memorije mu je potrebno za rad (da li je 2M dosta ?)
unknown.860dusanp,
=> Postoji, na primer, Borland C++
=> for Windows 3.0
=> Turbo je a radi for win.
Ma lapsus... Rec je o Turbo C++ for
Windows paketu... Al svi ste to shvatili,
jel' da?
unknown.861dusanp,
=> A koliko mesta na disku jede to cudo?
=> I koliko memorije mu je potrebno za rad (da li je 2M
=> dosta ?)
Bice, bice... U sledecim (?) R... ;)
unknown.862ppekovic,
>> Pa pošto ova diskusija o razlikama i sličnostima između
>> običnog i objektnog C-a nije baš uspela da meni razjasni
>> stvari, pitao bih da li postoji neka dokuntacija (knjiga,
>> članak, fajl itd.) koja bi mogla da mi razjasni u čemu je
>> razlika a u čemu sličnost.
žlanaka imaš koliko ti duša želi po svim mogućim računarskim
časopisima (stari Moj Mikro, Račuari, SK.). U svima o OOP-u piše
Duško Savić. žini mi se da je u tekućim brojevima SK. njegova
serija tekstova.
Knjiga imaš nekoliko. Pogledaj u knjižari Jugoslovenska knjiga
u Knez Mihailovoj 1.
Paya
unknown.863mjova,
>> Borland C++ for Windows 3.0
> A koliko mesta na disku jede to cudo?
> I koliko memorije mu je potrebno za rad (da li je 2M dosta
ako je u pitanju BC++ 3.0 onda ti moram reći da mu na hardu treba za
kompletnu instalaciju oko 48Mb (po onome šta traži pri instalaciji).
za rad mu je valjda dosta 2Mb ali ako uspeš da mu daš 1M xms memorije.
ako te ne zanimaju izvorni kodovi za lib i još po nešto onda ti treba
i manje mesta.
unknown.864korvin,
Ne znam koliko ova tema odogovara, ali ajde da pitam.
Da li postoji način da se kurzor u TC 2.01 izmeni iz malog blinkujućeg u
veliki koji ne treperi ?? Probao sam sa cursor.com iz WP5.1 ali ne radi :(
Ako neko zna, molio bih ga da mi odgovori, ovo mi puno znači (alergičan sam
na male nemirne kurzore :)
unknown.865bulaja,
│Zna li neko kako da graficki ekran nacrtan u C-u odstampam na stampacu.
│Radim u Turbo C-u 2.0.
└───
Pogledaj \ibmpc\drivers\prbgi094.arj, BGI printer driver.
unknown.866mjova,
> Ako neko zna, molio bih ga da mi odgovori, ovo mi puno
> znači (alergičan sam na male nemirne kurzore :)
batali integrisanu okolinu, uzmi lepo brief, 4dos, make i rešićeš
problem. veruj mi, u početku sam radio u ide i posle par reči
iskusnijeg programera odustao sam od IDE na moju radost. činjenica je
da mi je trebalo neko vreme za navikavanje, ali sad mi ne pada na
pamet da radim u skučenom prostoru koji pruža ide. obaška što možeš
potkratiti ;) programe koje dobijaš uz prevodioc pa time olakšaš disk
nepotrebnih Mb.
bolja strana je što se lako možeš preorjentisati na novu verziju (bez
ikakvih konfiguracija, podešavanje boja itd), promena tipa jezika je
takođe lakša, a najvažnije od svega je što *uvek* koristiš *isti*
editor. brief ima neviđene mogućnosti (mada mu brzina nije jača strana
i ako je brži od ide), ali kad recimo otkucam alt-r pa dobijem spisak
svih funkcija koje mogu da editujem, pa automatsko sređivanje teksta
(izvornog koda)... uh, kako je mučna ide ;)
unknown.867mstanic,
>> žlanaka imaš koliko ti duša želi po svim mogućim
>> računarskim časopisima (stari Moj Mikro, Račuari, SK.). U
>> svima o OOP-u piše Duško Savić. žini mi se da je u
>> tekućim brojevima SK. njegova
Znam da ima članaka kojima je autor Duško Savić, ali sam
mislio da mi neko preporuči nešto iz čega je naučio.
unknown.868mstanic,
>> Da li postoji način da se kurzor u TC 2.01 izmeni iz
>> malog blinkujućeg u veliki koji ne treperi ?? Probao sam
>> sa cursor.com iz WP5.1 ali ne radi :(
Za promenu veličine možeš pozivom interapta 10h, a da ne
treperi čini mi se da neće ići bez direktnog pisanja u
registre CRTC kontrolera.
unknown.869janko,
>>> žlanaka imaš koliko ti duša želi po svim mogućim
>>> računarskim časopisima (stari Moj Mikro, Račuari, SK.).
>>> U svima o OOP-u piše Duško Savić. žini mi se da je u
>>> tekućim brojevima SK. njegova
>
> Znam da ima članaka kojima je autor Duško Savić, ali sam
> mislio da mi neko preporuči nešto iz čega je naučio.
:) Ta ti je dobra! :) :) :)
Pomenuti D.Savić se baš juče, prekjuče žalio da je u R. malo
članaka zasnovanih na ličnom iskustvu, a on ih je baš
štancovao, bez iskustva... ali može da se hvali da je bio
prvi koji je načeo neku temu...
Kada i naučiš neki prog. jezik, pa pročitaš ponovo članak D.S.
o istom, biće ti jasno do koje mere je to grozno... Evo, sad sam
skoro naišao na onaj umetak za OO na TP5. Jeza...
Ja sam učio iz Bjarne Stroustrup "The C++ Programming
Language," first ed. Postoji i second ed. pa je dobro pročitati
i obe i uporediti razlike (kada jednom uploviš u te vode). Mada
knjiga nije za svakoga. Korisno je imati i neki tzv. 'prajmer'
(uvodnu knjigu) koja ti služi samo da shvatiš početne koncepte,
a na nižem je nivou...
unknown.870garderp,
'Ajde mjovo malo se raspiši. Ja radim u IDE-u i nemam skoro
ni jednu zamerku, ali ako može bolje što da ne. Dakle zanima me:
1.)Kako se u tvom okruženju može dobiti ono elegantno kretanje po
message windowu i automatsko postavljanje kursora u edit windowu
na liniju u kojoj je data greška.
2.)Kako dobiti onaj divni ctrl F1 za help za zadatu reč na mestu
kursora, što je, priznaćeš, jako korisna stvar. Ko će da pamti
sve parametre svih funkcija iz svih hedera.
3.)Da li brief omogućava editovanje više fajlova u isto vreme
(kao qedit), a to pitam zbog projecta.
unknown.871pbojan,
> To je i glavni problem C++-a: on je jos uvek samo malo
> bolji C! Npr. kapica na gore koju BASIC koristi za
> stepenovanje *ne moze* se preklopiti
Eh, da. Ali sad imamo templates, pa se lakse dise.
> + pa bi mozda mogao da koristis njega. Ili, koristi opet
> operator +. Nista te ne sprecava da on radi i sa alfa*-ima
> i sa int-ovima.
I zasto to meni nije palo na pamet? :) ( prioritet operatora? sta je to? :)
Zapeo k'o sivonja sa &. Idiot. Djelovic, svaka cast.
unknown.872bulaja,
│2.)Kako dobiti onaj divni ctrl F1 za help za zadatu rec na mestu
│kursora, sto je, priznaces, jako korisna stvar.
└──
Preferiram papirni library refference. A nije neki problem (neki sekund
vise) naci istu funkciju u THELP-u. Inace sam svojevremno integrisanu
okolinu u BC++ 2.0 batalio jer se nije slagala ni sa jednim memory
managerom (ni QEMM ni 386MAX), npr. tastatura se cesto blokirala, a duzi
pritisci na kursorske tastere bi ispisivali brojeve za sobom. Bez mem
mng je bilo Ok.
│3.)Da li brief omogucava editovanje vise fajlova u isto vreme
│(kao qedit), a to pitam zbog projecta.
└───
Naravno, pa to valjda moze svaki editor, cak i onaj trash od NE :).
unknown.873mjova,
> Znam da ima članaka kojima je autor Duško Savić, ali sam
> mislio da mi neko preporuči nešto iz čega je naučio.
Turbo C/C++ the Complete Reference
Herbert Shildt
(Borland-Osborne/McGraw-Hill)
cifra je oko 70 Dem (bila kad sam je kupio pre godinu ipo. možeš da
potražiš ovu (ili neku drugu) u knjižari CET (valjda još postoji ;).
ne znam ni tel ni adresu (imam negde zapisano mrzi me da ne tražim
sad), ali znam da je u zgradi preko puta beograđanke (neki ulaz - prvi
sprat). ako te baš zanima fon i addr javi mi da potražim.
što se tiče knjige, moram da ti kažem da je veoma lepo napisana pa
nije neophodno poznavanje 'ne znam kakvog' engleskog jezika. ima dosta
primera i sve je izneto baš onako kako treba (logično). takođe, u toj
knjizi imaš sve o C-u i biblioteke koje se koriste u Turbo/Borland
jezicima. topla preporuka.
unknown.874mjova,
> 1.)Kako se u tvom okruženju može dobiti ono elegantno
> kretanje po message windowu i automatsko postavljanje
> kursora u edit windowu na liniju u kojoj je data greška.
pa ovako, pitanje je na mestu. u brief-u postoje makroi za prevođenje
programa pisanih u c, pas, itd. pri prevođenju se poruke sa ekrana
preusmere u neku datoteku i onda dolazi na red drugi makro koji nalazi
grešku (u toj datoteci) i pozicionira kurzor na mesto gde je grešku
detektovao prevodioc. sad, znaš i sam da ako imaš jednu grešku, često
ima bar još jedna koja je nastala zbog prethodne ;) i da mesto greške
može da bude i par redova pre detetkcije pa ja uvek ispravljam grešku
po grešku (retko više od jednom).
znači ovako: datoteku message možeš da vidiš celu (to je u stvari ono
što je vratio prevodioc) i možeš da se šetaš po njoj. možeš i da
gledaš grešku po grešku, a možeš i sam da napišeš šta ti treba - meni
je sasvim dovoljno i ovo jer iz editora prevodim samo do .obj, a onda
izađem u dos i pokrenem make (možeš i make da pokreneš iz briefa i da
nemaš potrebe da vidiš dos).
> 2.)Kako dobiti onaj divni ctrl F1 za help za zadatu reč na
> mestu kursora, što je, priznaćeš, jako korisna stvar. Ko
> će da pamti sve parametre svih funkcija iz svih hedera.
sasvim logično da nemam želju da pamtim sve (mada se osnovno nauči ;),
pa sam zbog toga instalirao thelp koji ima istu mogućnost kao onaj u
ide. dovoljno je pozicionirati kurzor na reč koja te zanim (ili samo u
red, a on će naći najbližu reč koja ima neki smisao za njega) i onda
kad pozoveš help dobićeš na ekranu ono što te zanima. takođe možeš
prebaciti primere (ili šta ti već zatreba) u editor (mark: shift+cr,
copy: ctrl-p).
> 3.)Da li brief omogućava editovanje više fajlova u isto
> vreme (kao qedit), a to pitam zbog projecta.
naravno, bez toga je glupo. najbolja fora je što možeš imati više
učitanih datoteka (buffer-a) i za svaki važe makroi dodeljeni njihovom
tipu (ekstenziji) pa onda imaš makroe za C, za paskal, asembler itd.
još nešto što nisi pitao: možeš da snimiš statusnu datoteku i da se
posle izlaska u dos vratiš na isto mesto gde si bio pre. ovo zavisi
samo od toga da li si pozvao editor bez imena datoteke ili sa.
jedina mana je što teško ide bez uputstva, pa treba dosta vremena za
provaljivanje i ako su makroi pisani u nekom Cbrief jeziku koji je
sličan C-u (male razlike).
unknown.875dgrbic,
:: 1.)Kako se u tvom okruzenju moze dobiti ono elegantno
:: kretanje po message windowu i automatsko postavljanje
:: kursora u edit windowu na liniju u kojoj je data greska.
Kad prevedes program (alt-f10) i dobijes greske, imas npr. ctrl-n za
skok na narednu gresku...
Ne znam sad napamet za ostale komande za kretanje po greskama, posto
sam tek od pre neki dan presao sa QEdita na Brief (ustvari, sad
koristim oba pomalo).
:: 2.)Kako dobiti onaj divni ctrl F1 za help za zadatu rec
:: na mestu kursora, sto je, priznaces, jako korisna stvar.
:: Ko ce da pamti sve parametre svih funkcija iz svih
:: hedera.
Eh, sad... Pa imas (uz TC) onaj rezidentni THelp, sluzi svrsi. A
mozes i HelpTSR (HelpPC) da koristis, samo za njega treba nekako
prebudziti help fajl (onaj Borlandov je nekako spakovan, cini mi se).
:: 3.)Da li brief omogucava editovanje vise fajlova u isto
:: vreme (kao qedit), a to pitam zbog projecta.
Dabogme. I prozore mozes da delis kako oces (dobro, ne kao IDE ali
fleksibilnije nego Q kod koga su prozori samo horizontalni).
unknown.876mstanic,
>> editor. brief ima neviđene mogućnosti (mada mu brzina
>> nije jača strana i ako je brži od ide), ali kad recimo
>> otkucam alt-r pa dobijem spisak svih funkcija koje mogu
>> da editujem, pa automatsko sređivanje teksta (izvornog
>> koda)... uh, kako je mučna ide ;)
Pošto si nahvalio brief da li bi mogao da kažeš jel' to
PD ili SW i ako jeste gde ima.
Ja koristim Qedit, ali ovo što si rekao gore izgleda
vredno truda i angažovanja.
unknown.877korvin,
>> Za promenu veličine možeš pozivom interapta 10h, a da ne
Izvini, ali kako to da izvedem? Pretpostavljam da na tom principu radi i
cursor.com iz WP5.1, ali ga TC nekako presreće i vraća na početak ?
unknown.878korvin,
>> 'Ajde mjovo malo se raspiši. Ja radim u IDE-u i nemam skoro
>> ni jednu zamerku, ali ako može bolje što da ne. Dakle zanima me:
>>
>> 1.)Kako se u tvom okruženju može dobiti ono elegantno kretanje po
>> message windowu i automatsko postavljanje kursora u edit windowu
>> na liniju u kojoj je data greška.
Bojim se da je ovo pod 1 stvarno neprevaziđen problem koji može da se
adekvatno reši samo korišćenjem IDE :( Ostale stvari su lakše rešive, ali
dibagiranje je stvarno smrt, bez poruke o greškama .
unknown.879ibrceski,
Zdravo,
Da bih povezao *.obj datoteke pisane uTurbo C-u i Clipper-u 5.01
sa kojim svicevima da izvrsim kompajliranje datoteka pisanih u Turbo
C-u sa TCC kompajlerom.
Hvala
Ibrceski
unknown.880glisin,
Da li za PC postoji neki običan K&R C kompatibilan sa UNIX cc kompajlerom?
Dakle, kažem recimo cc -o file file.c, a on uradi baš što treba. Ako nema
baš isti, da li postoji neki pouzdan čist K&R C koji radi iz komandne linije?
ŢŢŢIGGYŮŮŮ
unknown.881nboskovic,
*> Pošto si nahvalio brief da li bi mogao da kažeš jel' to
*> PD ili SW i ako jeste gde ima.
Nije.
(c) klap
nikola
unknown.882prvul,
ŮPomenuti D.Savić se baš juče, prekjuče žalio da je u R. malo
Ůčlanaka zasnovanih na ličnom iskustvu, a on ih je baš
Ůštancovao, bez iskustva... ali može da se hvali da je bio
Ůprvi koji je načeo neku temu...
Ů▄▄▄
I ćorava koka nađe zrno. Isti taj D. Savić je pisao o svemu
i svačemu. I sve o čemu je pisao uglavnom nikada nije dočekalo
sledeću verziju (čitaj: kao da se trudio da pohvata sve propale
trendove). Najzad je napisao nešto i o OOP koji nije propao
pa eno sada piše o tome (a po pisanju zaključujem da nije nijedan
ozbiljniji program napisao).
unknown.883.bale.,
>> 1.)Kako se u tvom okruženju može dobiti ono elegantno
>> kretanje po message windowu i automatsko postavljanje
>> kursora u edit windowu na liniju u kojoj je data greška.
>
>pa ovako, pitanje je na mestu. u brief-u postoje makroi za prevođenje
>programa pisanih u c, pas, itd. pri prevođenju se poruke sa ekrana
>preusmere u neku datoteku i onda dolazi na red drugi makro koji nalazi
Malo preciznije: Brief, u zavisnosti od ekstenzije datoteke koju
edituješ, poziva odgovarajući "kompajler". Ovo pod navodima, jer
u Brief-ovom setup-u možeš da dodaš novu ekstenziju i novi
"kompajler" koji će "prevoditi" datoteke sa tom ekstenzijom,
pritiskom na tastere <ALT + F10>. E, sad, taj program ("kompajler")
treba da obaveštava o greškama ne na ekran (stdout), nego u
stderr. Brief će stderr da presumeri pre startovanja pomenutog
programa u datoteku sa istim imenom, ali ekstenzijom ".err" i
kad program završi, namestiće kursor na mesto u editovanoj
datoteci u skladu sa greškom koju je dao program. Program
treba da štampa greške u formatu standardnih kompajlera, da
bi Brief to skontao. (Ono što je mjova rekao -- nemoj da preteruješ
sa tzv. neutralisanjem grešaka (štampanjem više grešaka odjednom,
kao pravi kompajler), nego posle svake greške program treba da
završi sa obaveštenjem o grešci.). Evo primer iz jednog mog
programa:
void error( char *s )
{
if( device == SCREEN )
restorecrtmode() ;
fprintf( stderr, "%s(%i): %s [%i]\n", filename, line_number -
( column_number == 1 ), s, column_number - 1 ) ;
exit( 1 ) ;
}
unknown.884dnikolic,
Zasto BCC iz paketa 3.0 prijavljuje greske pri kompajliranju rutina iz paketa
CBASE, dok TCC iz Turbo C 2.0 radi bez problema?
Program koji koristi CBASE sam ipak preveo sa BCC-om, ali sa bibliotekama prav-
ljenim TCC kompajlerom. Sada ne radi kako treba, tj. ne cita podatke iz naprav-
ljenih baza (!!!!).
Koliko sam video, na Sezamu samo ja koristim CBASE, ali rekoh, ipak da pitam...
dn
unknown.885dnikolic,
>> Ajde da se dogovoriomo pa da svi oni koji koriste Pareadox u
>> bilo kojoj verziji ili varijanti osnujemo grupu za razmenu
>> svega (iskustava, znanja, softvera itd.)
Ako je neko osnovao grupu, molim ga da me ima u vidu!
dn
unknown.887mjova,
> Da li za PC postoji neki običan K&R C kompatibilan sa UNIX
> cc kompajlerom? Dakle, kažem recimo cc -o file file.c, a
> on uradi baš što treba. Ako nema
probaj tcc ili bcc ima nekih tu fazona (npr sw -AK itd)
unknown.889janko,
> Ůštancovao, bez iskustva... ali može da se hvali da je bio
> Ůprvi koji je načeo neku temu...
> I ćorava koka nađe zrno. Isti taj D. Savić je pisao o
> svemu i svačemu. I sve o čemu je pisao uglavnom nikada
> nije dočekalo
I pored svih argumenata koje navodiš, ja ipak poštujem to što
je čovek bio prvi...
unknown.890janko,
> mozes i HelpTSR (HelpPC) da koristis, samo za njega treba
> nekako prebudziti help fajl (onaj Borlandov je nekako
> spakovan, cini mi se).
Aha, kad smo već tu.... Ima li neko program za prebudživanje
Borlandovih help fajlova u tekst i obratno? Jako bi mi bilo
korisno...
unknown.891janko,
>> Znam da ima članaka kojima je autor Duško Savić, ali sam
>> mislio da mi neko preporuči nešto iz čega je naučio.
>
> Turbo C/C++ the Complete Reference
Naravno, ovo je loša preporuka za nekog ko treba da uči
koncepte. Ovo je referens knjiga za određeni SW proizvod a
ne za jezik kao takav. Ne preporučujem za učenje -- za
korišćenje je OK, ali je zastarela za ove novije verzije
prevodilaca...
unknown.892janko,
> Da li za PC postoji neki običan K&R C kompatibilan sa UNIX
> cc kompajlerom? Dakle, kažem recimo cc -o file file.c, a
> on uradi baš što treba. Ako nema baš isti, da li postoji
> neki pouzdan čist K&R C koji radi iz komandne linije?
Svi (verovatno, ali MS i Borlandovi sigurno) PC kompajleri
prevode i K&R opcije. Kritična tačka su UNIX-sistemski zavisne
f-je. Neke su 'imitirane' ali neke, jednostavno, nisu, ili se
drugačije ponašaju, čak i kada se isto zovu. Pošto verovatno
imaš neki gotov sors za Unix koji hoćeš da portuješ na PC, samo
od toga kako je pisan zavisi hoćeš li uspeti. Moguće mine su:
različito ponašanje MAKE i DOS-a u odnosu na make i Unix,
različite opcije komandnih linija (najmanji problem), potreba
da za generisnje programa imaš neke programe koji ne postoje na
PC-ju, ili ih, bar, nemaš ti, (lex, yacc, diff, nroff, perl,
odgovarajući šel, itd, itd...) različito ponašanje funkcija iz
biblioteka (egzotičnije nisu implementirane na PC prevodiocima)
itd. K&R specifikacija, sama po sebi, nije ograničenje, jer ona
i ne precizira izgled standardnih biblioteka i ovih ostalih
parametara.
Inače, čak i sve što liči na Unix nije Unix :) -- ne mogu se
svi programi prevesti na svemu, a pogotovu ne bez nekih
intervencija, ali je obično znatno lakše izaći sa njima na kraj
nego na DOS-u.
unknown.893bulaja,
│mozes da potrazis ovu (ili neku drugu) u knjizari CET (valjda jos postoji ;).
│ne znam ni tel ni adresu (imam negde zapisano mrzi me da ne trazim sad), ali
│znam da je u zgradi preko puta beogradanke (neki ulaz - prvi sprat).
└───
Not any more. Sada je CET na dnu Skadarske ulice, odmah iznad ugla sa
George Washingtonom. Tel je 343-043.
unknown.896pjankovic,
> cifra je oko 70 Dem (bila kad sam je kupio pre godinu ipo.
> možeš da potražiš ovu (ili neku drugu) u knjižari CET
> (valjda još postoji ;). ne znam ni tel ni adresu (imam
> negde zapisano mrzi me da ne tražim sad), ali znam da je u
> zgradi preko puta beograđanke (neki ulaz - prvi sprat).
> ako te baš zanima fon i addr javi mi da potražim.
Da, oni su bili tamo neko vreme, ali koliko vidim iz oglasa u
"Računarima", sada su u Skadarskoj ulici.
unknown.897pjankovic,
> Da bih povezao *.obj datoteke pisane uTurbo C-u i
> Clipper-u 5.01 sa kojim svicevima da izvrsim kompajliranje
> datoteka pisanih u Turbo C-u sa TCC kompajlerom.
Treba da compajliraš u LARGE memorijskom modelu i da isključiš
STACK OVERFLOW CHECKING. Pri linkovanju treba da uključiš biblioteku CL.LIB.
unknown.898ppekovic,
>> Bojim se da je ovo pod 1 stvarno neprevaziđen problem koji može da se
>> adekvatno reši samo korišćenjem IDE :( Ostale stvari su lakše rešive, ali
>> dibagiranje je stvarno smrt, bez poruke o greškama .
Prevaziđen je problem i to odavno. Ja već više od godinu
koristim Qedit + Qcp. Stisnem Alt-F9, makro pozove komapajler,
potom se vrati au editor, podeli mi ekran na dva prozora i sa
Shift-F9 i Shift-F10 se šetam gore-dole po greškama s tim što se u
prozoru gde je listing kursor automatski postavlja na liniju
greške.
I Qedit i Qcp i Qmac imaš na sezamu sa sve uputstva, a celu
priču imaš i u jednom od ranijih brojeva Računara u članku o
Qedit-u.
Kad sam se već raspisao, evo i makroa za Qedit kojim pozivate
Microsoft-ov QuickHelp za reč na kojoj se nalazi kursor.
@h MarkWord Copy Dos 'QH ' Paste Return Return
Paya
unknown.899ppekovic,
>> Da li za PC postoji neki običan K&R C kompatibilan sa UNIX cc kompajlerom?
>> Dakle, kažem recimo cc -o file file.c, a on uradi baš što treba. Ako nema
>> baš isti, da li postoji neki pouzdan čist K&R C koji radi iz komandne
linije?
Imaš sam cc ;))). CC ima switch kojim proizvodi MS-DOS kod.
Ovo važi za XENIX.
Paya
unknown.900ppekovic,
>>> Da bih povezao *.obj datoteke pisane uTurbo C-u i
>>> Clipper-u 5.01 sa kojim svicevima da izvrsim kompajliranje
>>> datoteka pisanih u Turbo C-u sa TCC kompajlerom.
>> Treba da compajliraš u LARGE memorijskom modelu i da isključiš
>> STACK OVERFLOW CHECKING. Pri linkovanju treba da uključiš biblioteku CL.LIB.
... i da zaboraviš na bilo kakav radim sa floating point
formatom brojeva jer je nekompatibilan sa microsoft-ovim koga
koristi clipper. Nevolja je što se kompletna TC grafika oslanja na
floating point aritmetiku.
Paya
unknown.901glisin,
ŢŢprobaj tcc ili bcc ima nekih tu fazona (npr sw -AK itd)
Probao, ništa :-((( Doduše u TC2.0 (dakle ne u TC++2.0).
Varijantu:
void main (int argc, char *argv[])
{
...
}
ako kažem TCC -AK <file> prevede kako treba, a po K&R bi trebalo da se
dere zbog loše dekleracije. Tražim C koji će da prijavi GREŠKU ako
napišem onako kako sam napisao gore. Naime, hoću da me tera da pišem:
main (argc, argv)
int argc;
char **argv;
{
...
}
Da preduhitrim one koji se već pitaju: pa koji će ti to, pa uzmi
BC++56.687/Ultra Power Generation ;-), piši u C++, cepaj ikonice, IDE,
ne maši verziju za Windows i tako to... Naime, pokušajte da vaše
programe prebacite na neki zabačen UNIX a da ste ga razvili u nekom
super-extra-de-luxe kompajleru na PC-u, pa pokušajte ponovo, pa
ponovo... e, kada se vratite od psihijatra, shvatićete o čemu se
radi. O:-)))
ŢŢŢIGGYŮŮŮ
unknown.902glisin,
ŢŢPošto verovatno imaš neki gotov sors za Unix koji hoćeš da
ŢŢportuješ na PC...
Beeeeeeeeeeep! Wrong!
Radim UPRAVO obrnuto. Naime, hoću da brzo i lako uradim programe na
PC-u (ipak sam sam i radim na brzom "terminalu"), a onda da to nosim
na UNIX da pustim. Sistemski zavisne stvari izolujem i znam kako da
ih prepišem za UNIX (uglavnom terminalske zezalice iz 'termio.h'),
ostalih 90% je ok. E to je to! Tih 90% treba da bude čisto za ulaz u
UNIX-ov "cc", jer ništa gore nego kad sve leeepo radi na PC-u u nekom
TURBO-ANSI-K&R standardu (pošto kroz TC - BC može da prođe i mešavina)
a onda na UNIX-u počne povuci-potegni! Startujem 'cc' i sačeka me
greška malte ne u stilu:
PINGELE PINGELE! *&*!#^$%*&^#%$ !!!
OVO ŠTO SI MI POTURIO UOPŠTE NIJE C PROGRAM, KOJI TI JE DANAS?
PROVERI DA MI NISI SLUžAJNO POSLAO LJUBAVNO PISMO NA PREVOĐENJE!
Eeeee, onda žurka: 10-tak korisnika radi, mašina se vuuuuče terminali
4800 ili 9600 bauda, nema ništa drugo od editora, nego samo 'vi', pa
udri polako i na tenane: cc, vi, cc, vi, lint, vi, cc, vi, lint, vi,
lint, vi, cc, vi... :-((((((( Ko je probao, shvatiće.
Eto, nadam se da sam bio jasan. BTW, ja stojim na stanovištu da sve
što ne može da se prevede (bar) na dve različite mašine uz minimalne
modifikacije strogo izolovanih kritičnih delova nije program dostojan
programera (nekog hackera možda).
ŢŢŢIGGYŮŮŮ
unknown.904dusanp,
=> različito ponašanje MAKE i DOS-a u odnosu na make i Unix,
Borland se u nekoliko poslednjih verzija Ca hvali svojim
mekeom koji je "potpuno unix kompatibilan". Koliko sam ja
u toku (a kompajlirao sam razne unix programe bez menjanja
makefilea) nema problema oko kompatibilnosti.
unknown.906janko,
> ŢŢPošto verovatno imaš neki gotov sors za Unix koji hoćeš
> da ŢŢportuješ na PC...
> Radim UPRAVO obrnuto. Naime, hoću da brzo i lako uradim
> programe na PC-u (ipak sam sam i radim na brzom
(..)
> da bude čisto za ulaz u UNIX-ov "cc", jer ništa gore
> nego kad sve leeepo radi na PC-u u nekom TURBO-ANSI-K&R
> standardu (pošto kroz TC - BC može da prođe i mešavina) a
> onda na UNIX-u počne povuci-potegni! Startujem 'cc' i
> sačeka me greška malte ne u stilu:
>
> PINGELE PINGELE! *&*!#ž$%*&ž#%$ !!!
a) Proveri dokumentaciju za taj cc koji koristiš. Moguće je da
se ANSI mod posebno uključuje. Možda na toj mašini koju
koristiš postoji cc koji podržava i ANSI, a da ti to ne znaš
(tada samo treba pravi svič).
b) Prouči K&R knjigu first ed. i piši SAMO po njoj, ako nemaš
na raspolaganju ANSI kompajler na Unixu. U suprotnom, piši samo
po K&R second ed.
v) U oba slučaja u Borlandovim jezicima se mogu isključiti sve
'nestandardne specifičnosti' koje utiču na jezik (nove ključne
reči, pre svega). Da bi znao koje f-je nisu standardne (jer f-je
nisu deo jezika, pa nema sviča kojim bi ih isključio),
konsultuj library reference.
unknown.907janko,
> => različito ponašanje MAKE i DOS-a u odnosu na make i
> Unix,
>
> Borland se u nekoliko poslednjih verzija Ca hvali svojim
> mekeom koji je "potpuno unix kompatibilan". Koliko sam ja
MAKE program jeste Unix kompatibilan, ali pralja nije
princeza... DOS je onaj koji slaže frku... DOS ne razume
komande shell-a (normalno) i ne prihvata komandnu liniju dužu od
128 znakova. Vrlo često mejkfajl pisan na Unixu koristi bar
jedno od ova dva (ovo drugo jako često, jer se jako često
jednostavno nanižu imena svih datoteka od kojih se sastoji
projekat, pa ne mogu da se proslede linkeru, naprimer). Zato
Borlandov MAKE ima neke NESTANDARDNE fore kojima se omogućuje
da uopšte spisak svih datoteka za projekat može da bude veći od
128 znakova!
unknown.908ppekovic,
>> Tražim C koji će da prijavi GREŠKU ako
>> napišem onako kako sam napisao gore. Naime, hoću da me tera da pišem:
>>
>> main (argc, argv)
>> int argc;
>> char **argv;
žak i noviji UNIX C kompajleri gutaju deklaracije tipova u
listi formalnih parametara! ;)
Probaj onaj mali C, ima ga ovde na Sezamu. MC20, ili tako
nešto.
Paya
unknown.909ppekovic,
>> Borland se u nekoliko poslednjih verzija Ca hvali svojim
>> mekeom koji je "potpuno unix kompatibilan". Koliko sam ja
>> u toku (a kompajlirao sam razne unix programe bez menjanja
>> makefilea) nema problema oko kompatibilnosti.
Sa MSC-om je ista stvar. Uostalom, XENIX C je Microsoft-ov.
Paya
unknown.910mstanic,
>> Izvini, ali kako to da izvedem? Pretpostavljam da na tom
>> principu radi i cursor.com iz WP5.1, ali ga TC nekako
>> presreće i vraća na početak ?
Jel' mogu odgovor da pošaljem za nekoliko dana?
Naime, skinuo sa C sa diska jer mi treba prostor za
neka probavanja nekih programa a nemam napismeno, pa
kad instaliram napisaću, mada se nadam da će i neko
drugi dati odgovor jer je to krajnje trivijalno (preko
int86 ili tako nekako funkcija).
unknown.911mstanic,
>> Malo preciznije: Brief, u zavisnosti od ekstenzije
>> datoteke koju
Pa isto radi i Qedit stim što možeš imati i više grešaka
odjednom (najviše sam imao pet, čini mi se) i radi slično
kao IDE, (dobro već sam zaboravio kako to radi IDE) ali
sam ovim zadovoljan.
unknown.912dusanp,
=> a najvažnije od svega je što *uvek* koristiš *isti*
=> editor. brief ima neviđene mogućnosti (mada mu brzina
=> nije jača strana
Hoces da kazes da je borland nekada menjao editor
(hotkeys, nacine na koje se nesto radi...)?!?
Ni ove nove verzije IDEa (mislim da je od BC++2.0)
koje podrzavaju vise prozora na ekranu te ne sprecavaju
da radis kako si navikao u ranijima. SVE kombinacije
tastera su tu, osim sto sve moze da se uradi i preko
menija. Okini Ctrl+Q,F i naci ces se u trazenju reci, bas
kao da si u paskalu 4.0. NISTA se nije promenilo, pa me
zanima na sta se to treba navikavati???
Jos od paskala 5.0 je Ctrl+F9 run a F9 compile. Ne
razumem o kakvim izmenama izmene ako te (i sve druge)
kombinacije tastera vaze i u BCima.
unknown.913dusanp,
=> Inace sam svojevremno integrisanu okolinu u
=> BC++ 2.0 batalio jer se nije slagala ni sa
=> jednim memory managerom (ni QEMM ni 386MAX)
Ja vec dugo radim sa kombinacijom bcx (++2.0)
i Qemm 6.02 i nisam imao problema. Kakav je bio
problem? Seti se da je bcx protected (286) verzija
kompajlera i ako neko treba da pravi s**nja ona treba.
unknown.914dusanp,
=> komande shell-a (normalno) i ne prihvata komandnu liniju
=> dužu od 128 znakova. Vrlo često mejkfajl pisan na Unixu
=> koristi bar
Dal' bi koriscenje 4dosa promenilo na duzini linije?
Mislim da on dozvoljava do 255 znakova?
unknown.915bulaja,
│Da ponovim, (silom prilika, treci put) koncepti se
│NE uce iz referens menjuela za ODREDENU IMPLEMENTACIJU.
└───
Svasta! Pa koncepti i treba da se uce na primeru implementacije, a ne
na suvom teoretisanju. Nemoj mi reci da niko nije naucio C++ npr. iz
Borlandove dokumentacije? Uostalom, vecinu programera i ne interesuje
teoretisanje vec primena, a za to su najbolje knjige poput Schildt-ove.
unknown.916bulaja,
│Ja vec dugo radim sa kombinacijom bcx (++2.0) i Qemm 6.02 i nisam imao
│problema. Kakav je bio problem? Seti se da je bcx protected (286)
│verzija kompajlera i ako neko treba da pravi s**nja ona treba.
└───
Sada radi Ok (mada vise ne koristim PP :) ali sa QEMM 6.02. Ranije, sa
QEMM 6.0 i 386MAX-om (ne secam se koja verzija) nije radilo. Problem je
bio da kad legnes na kurzorski taster, npr. down, posle nekoliko
predjenih redova krenu da ispadaju brojevi i space-ovi za njim pa
napravi haos po sorsu. Takodje se cesto kocio shift tj. totalno
blokirala tastatura. I sve to na 386 cak i sa 8 Mb RAM-a tj. 7 praznih
za BCX kad iskljucim cache. A na masini je mogao da radi cak TM (mogao,
al' nije :).
unknown.917dzakic,
> 600k arhiviran (3.0 koji koristim) i disketa 1.2M (3.1 ne koristim ali
Ima li šta novo u 3.1 u odnosu na 3.0?
unknown.918mjova,
možda bi ovo trebalo da ide u pc.user.editori, ali kako se pominje C
više puta onda je bolje ovde ;)
> Hoces da kazes da je borland nekada menjao editor
> (hotkeys, nacine na koje se nesto radi...)?!?
pa neko mi reče da bc++ 3.0 (ili tc++ 3.0) ima promenjen raspored
tastera da bi imao sličan raspored kao udovice. nisam proverio, ali
deluje logično.
> menija. Okini Ctrl+Q,F i naci ces se u trazenju reci, bas
> kao da si u paskalu 4.0. NISTA se nije promenilo, pa me
ne bih da pričam previše, glavno je to da pišeš za više različitih
kompajlera. npr. voliš da radiš za borlandove kompajlere ali radiš u
timu koji zahteva rad i na msc. onda je neki editor jedino rešenje
(ili da učiš obe ide (pwb)).
kad si već pomenuo pretraživanje, brief ima tzv. regularne izraze
kojima možeš pronaći sve i svašta. npr:
while(search_fwd("<[~ \t#/\\*;\n\\{\\}(]")) {
......
loc= search_string ("[~ \t (\\*]\\c[ \t]@(", routine_name);
routine_name= substr(routine_name, 1, --loc) + "\n";
routine_name= substr(routine_name,
search_string("[~ \t\\*][~ \t\\*]@>", routine_name));
....
}
.....
}
služi za pronalaženje C funkcije, ali samo definicija (ne i
deklaracije). iza ovoga ima još neki kod za obrazovanje menija. to je
odličan fazon (iz standardnih makroa za brief) koji nisam imao prilike
da vidim u drugim editorima (za dos).
i još nešto, šema 'pritisni 5 tastera za jednu funkciju' mi se nikad
nije dopadala.
e, da, undo(/redo) je nešto sa čime sam se prvi put sreo u briefu.
glavna razlika je po tome što je ovo *pravi* undo (pamti svaku
komandu: pomeranje kurzora, markiranje, izvršene makro komande itd..).
unknown.919mjova,
> Ima li šta novo u 3.1 u odnosu na 3.0?
pa ima nekih problemčića, redo, neki makroi itd... ništa posebno.
unknown.920dusanp,
=> pa neko mi reče da bc++ 3.0 (ili tc++ 3.0) ima promenjen
=> raspored tastera da bi imao sličan raspored kao udovice.
=> nisam proverio, ali deluje logično.
Turbo C++ for Windows (opet ja o njemu) ima izbor dve
kombinacije tastera:
1.Standardni turbo (WordStar) raspored
2.Windows standard
Dal ce covek da predje na windows raspored njegova je
stvar, ali ja se nisam prilagodjavao nego sam bez raz-
misljanja radio po starom standardu. I cudo jedno: radi
covek u Windowsu, a sve je po starom :)) Ostale newindows
verzije bi trebale da rade bar isto.
=> ne bih da pričam previše, glavno je to da pišeš za više
=> različitih kompajlera. npr. voliš da radiš za borlandove
=> kompajlere ali radiš u timu koji zahteva rad i na msc.
=> onda je neki editor jedino rešenje (ili da učiš obe ide
=> (pwb)).
Ovo me je zainteresovalo za problem. Bas mi nesto pade na
pamet da isprobam (kada budem imao vremena :((). BC++2.0 ima
mogucnost starta drugog kompajlera iz samog sebe. Ne znam dal
sam jasan ali stvar je u sledecem: svi eksterni kompajleri koji
se mogu pozvati iz IDEa (tasm, resurs kompajler...) komuniciraju
sa IDEom preko C programa koji su prilozeni kao demoi. Mislim da
nije problem bilo koji kompajler nakaciti na BC po ovom sistemu,
a sve bi trebalo da komunicira kao kod recimo Qedita ili brifa.
Rad se odvija ovako: U aktivnom prozoru imam asemblerski program.
Zahtevam kompajliranje a bc startuje tasm. Ekterni exe (koji je
nastao kompajliranjem onih C programa koje sam spomenuo) kupi po-
ruke o greskama i varaca ih BCu.
Cim budem imao malo vremena pokusacu da povezem Clipper i MSC
na isti nacin (o svetogrdja:)), tako da rade iz BorlandCa.
=> e, da, undo(/redo) je nešto sa čime sam se prvi put sreo
=> u briefu. glavna razlika je po tome što je ovo *pravi*
=> undo (pamti svaku komandu: pomeranje kurzora, markiranje,
=> izvršene makro komande itd..).
Posto ja nemam brief dal te ne mrzi da isprobas jednu stvar?
Da li je undo iz BCa2.0 i+ takav? Mislim da covek moze da pise pola
sata program, a onda zgazi Alt+BS i da gleda crtani film.
unknown.921mjova,
> Posto ja nemam brief dal te ne mrzi da isprobas jednu
> stvar? Da li je undo iz BCa2.0 i+ takav? Mislim da covek
> moze da pise pola sata program, a onda zgazi Alt+BS i da
> gleda crtani film.
nema trenutno instaliran ide, ali ako te baš toliko zanima mogu da
pobam, mada mi se čini da je 'to to'. (uzmi bre brief ;)
unknown.922d.petrovic,
Ă> pobam, mada mi se čini da je 'to to'. (uzmi bre brief ;)
Imam brief i BC 1.00 na disku. E, sad jedno je što se uopšte do sad nisam
potrudio da provalim brief do kraja, pa ga koristim samo za Kliper, a sasvim
frugo što ja kao početnik u C-u nikako ne mogu da se odreknem onomg prelepog
Ctrl-F1. Najlepša stvar koju sam naučio od kad sam napisao prvi red u C-u.
Pozdrav, Dejan
unknown.923janko,
> na suvom teoretisanju. Nemoj mi reci da niko nije naucio
> C++ npr. iz Borlandove dokumentacije? Uostalom, vecinu
:) Kratko: NIJE. U Borlandovoj dokumentaciji imaš samo onaj
'C++ Primar' koji ti objašnjava ELEMENTARNE ideje, i 'Library
Reference,' koja daje podatke o implementaciji lib. rutina.
Osim toga, postoje i dokumentacije za ClassLib i TurboVision, i
njihovi sorsovi, u ovim 'bogatijim' paketima. Može da se nauči
štošta, ali čovek koji samo na tome zasniva svoje znanje ne bi
trebalo da ima smelosti da kaže da ZNA C++.
unknown.924janko,
> Dal' bi koriscenje 4dosa promenilo na duzini linije?
> Mislim da on dozvoljava do 255 znakova?
Da, ali problem je samo 'odložen' jer Unix nema ni takvo
ograničenje. Opet, dovoljno dug (ili potencijalno dug) spisak
datoteka moraš da strpaš u one konstrukte koje je Borland
izmislio.
Postoji još jedno bolno ograničenje -- veličina environment
prostora. Environment se prilično slobodno koristi na Unix-u,
ali na DOS-u je potencijalni izvor patnje -- default je toliko
mali, da ga prepuniš dok si rekao keks... A oni programi
'okoline' (NC, napr.) svaki put prave 'lokalnu' okolinu svaki
put kada aktiviraju neki program, koja ne može da se puni, niti
promenljive ostaju u glavnoj (opet, zbog osobina DOS-a).
Konkretno, u NC-u kada kažeš
SET YUKOD=C a posle
SET
vidiš da promenljiva YUKOD ne postoji. :) To isto važi i za C
programe, za MAKE, ako koristi environment itd...
Uopšte, sva ta ograničenja su čarobno čudna za današnje vreme,
ali... to je MS DOS... :)
unknown.925janko,
> Hoces da kazes da je borland nekada menjao editor
> (hotkeys, nacine na koje se nesto radi...)?!?
Nisam ja pitan, ali..
Naravno da nije. Turbo proizvodi su se UVEK oslanjali na
suženi set WordStar komandi unutar editora. Još kada su se
ljudi pitali 'PC? Šta je to?' WS raspored je bio standard --
WS je bio najpoplarniji program, a famozna trojka velikih
programa su bili WS, Turbo Pascal i dBASE, i svi su koristili
iste komande u editoru. I ti rasporedi su ostali do dana
današnjeg. (Jedan od retkih ljudi kojima to smeta je DejanR,
koji, verovatno, nikad nije koristio WS, jer u vreme kada je WS
bio jedini na PC-ju i CP/M-u sa nekim većim mogućnostima, on je
koristio BBC-jevu mašinu i neki editor za nju). Međutim, od
pojave nove IDE okoline, neki korisnici su izgubili mogućnost
da sami lako prekonfigurišu default tastere na njihove omiljene
WordPerfect konstrukcije...
Inače, pre TP 4.0 hotkeys su bili drugačiji, jer je i okolina
bila drugačija i prostija (ali i očiglednija -- manje vremena
je bilo potrebno da početniku pokažeš kako da se koristi
prevodiocem -- 'znaš WS? Znaš, dakle, 98% onoga što ti treba.'
-- sve se radilo pritiskom na slovo za akciju koju želiš, a pre
se izlazilo iz editora sa ctrlKD). žak ni F tastere nisi morao
uopšte da koristiš.
unknown.926korvin,
> Jel' mogu odgovor da pošaljem za nekoliko dana?
> Naime, skinuo sa C sa diska jer mi treba prostor za
> neka probavanja nekih programa a nemam napismeno, pa
> kad instaliram napisaću, mada se nadam da će i neko
> drugi dati odgovor jer je to krajnje trivijalno (preko
> int86 ili tako nekako funkcija).
Ma nije ovo ništa naročito hitno, hvala ti unapred. Takođe, hvala i svima
koji su se potrudili da mi odgovore, izgleda da ću ipak preći na QEDIT
unknown.927korvin,
> Prevaziđen je problem i to odavno. Ja već više od godinu
> koristim Qedit + Qcp. Stisnem Alt-F9, makro pozove komapajler,
Thanx Payo, izgleda da je ovo jedino adekvatno rešenje.
unknown.928ljubao,
Da li neko ima ideju kako da se rešim bede sa float brojevima.
Elem, program radi OK jedno vreme, a onda mi izbaci STACK FAULT i prekine
sa radom.
Drugo mučenje je što se blokira kod jedne sprintf funkcije (argument
takođe float). U stvari, ovde npr. radi OK par puta, a onda izgubi decimalni
deo, a posle toga se blokira. A što je najgore, neki put se odmah zablokira.
Ako neko može bilo šta da kaže - samo napred.
Ljuba
unknown.929bulaja,
││na suvom teoretisanju. Nemoj mi reci da niko nije naucio
││C++ npr. iz Borlandove dokumentacije? Uostalom, vecinu
│└───
│:) Kratko: NIJE. U Borlandovoj dokumentaciji imas samo onaj
│'C++ Primar' koji ti objasnjava ELEMENTARNE ideje, i 'Library
│Reference,' koja daje podatke o implementaciji lib. rutina.
└───
E pa nije tako :). Evo sta ima u BC++2.0, za v3.x mozda ima i vise.
U "Getting Started" knjizi, uz "C++ primer" (75 strana) imas i "Hands on
C++" (20 strana), a u "Programmers Guide" je vise od 50 strana posveceno
samo C++. Ja jos nisam pokusao da ucim odatle, ako uspem da naucim nesto
javicu. :)
unknown.930pbojan,
> bio da kad legnes na kurzorski taster, npr. down, posle
> nekoliko predjenih redova krenu da ispadaju brojevi i
> space-ovi za njim pa napravi haos po sorsu. Takodje se
> cesto kocio shift tj. totalno blokirala tastatura. I sve
> to na 386 cak i sa 8 Mb RAM-a tj. 7 praznih
Tacno ovo se meni sad dogadja sa BC++ 3.0 i QEMM 6.03 ???
unknown.931bulaja,
**** new file ****
\ibmpc\c
cfaq.arj (45 KB)
Pitanja i odgovori o programskom jeziku C (Internet)
Najcesce postavljana pitanja (FAQ - Frequentyl Asked Questions) o programskom
jeziku C i odgovori na njih. Izvor je konferencija comp.lang.c,news.answers
na Internet-u. Pitanja su podeljena na 15 poglavlja (oblasti). U paketu se
nalaze dve datoteke, jedna sa opsirnom odgovorima (100 KB teksta) i jedna sa
kratkim odgovorima na ista pitanja.
Istovremeno je datoteka cppfaq.arj (slicna ovoj samo se odnosi na C++)
premestena iz \ibmpc\info u \ibmpc\c direktorijum.
unknown.932ppekovic,
>> Da li neko ima ideju kako da se rešim bede sa float brojevima.
>> Elem, program radi OK jedno vreme, a onda mi izbaci STACK FAULT i
>> prekine sa radom.
Povećaj stack. Na MSC-u se to postiže uz pomoć switch-a /F.
>> Drugo mučenje je što se blokira kod jedne sprintf funkcije
>> (argument
>> takođe float). U stvari, ovde npr. radi OK par puta, a onda izgubi decima
>> deo, a posle toga se blokira. A što je najgore, neki put se odmah
>> zablokira.
Najčešće se to dešava orpilike u ovakvom slučaju:
char s1[5];
float f1;
...
...
strcpy(s1,"string duzi nego alocirani prostor za s1");
Drugi slučaj je sličan prvom i dešava se u slučaju kada je dužina stringa koja
se upisuje uz pomoć sprintf() funkcije veća od alociranog prostora za string u
koji se upisuje.
Treći ... itd. itd.
Pošalji deo koda koji te muči.
Paya
unknown.933dusanp,
=> pobam, mada mi se čini da je 'to to'. (uzmi bre brief ;)
Pa pokusaj jos malo da me ubedis. Koje kombinacije tastera
rade kod editovanja (WS?). Kako kompajliras do obj-a? Zar posle
moras u DOS? etc
unknown.934dnikolic,
>> Ctrl-F1. Najlepsa stvar koju sam naucio od kad sam napisao prvi red u C-u.
Startuj tchelp, rezidentan help program. Radi isto kao i onaj u integrisanoj
okolini. Jos bolji je Turbo C Norton Guide.
Ja ipak ostajem na ontegrisanoj okolini, jer je po mom misljenju mnogo, mnogo
bolja.
dn
unknown.935obren,
> Tacno ovo se meni sad dogadja sa BC++ 3.0 i QEMM 6.03 ???
To nema veze sa BC-om, meni se to dešava između ostalog i u Qeditu. Nađite
arhivu kbfix (ili int9fix, tako nekako). Tu je objašnjeno zbog čega se to
javlja a i dat je program koji to (valjda?) sređuje. Koliko se sećam razlog
je prevelik broj programa okačenih na devetku pa povremeno dolazi do gutanja
skan kodova koji predhode specijalnim tasterima. Ako neko ima ovu arhivu neka
je okači uz poruku pošto mi je otišla sa starim diskom, a nekako da je nađem
na disketama.
unknown.936ljubao,
** Povećaj stack. Na MSC-u se to postiže uz pomoć switch-a /F.
Koristim BC i nisam provalio kako da to uradim.
** Najčešće se to dešava orpilike u ovakvom slučaju:
**
** char s1[5];
** float f1;
** ...
** ...
** strcpy(s1,"string duzi nego alocirani prostor za s1");
**
** Drugi slučaj je sličan prvom i dešava se u slučaju kada je dužina
** stringa koja se upisuje uz pomoć sprintf() funkcije veća od alociranog
** prostora za string u koji se upisuje.
String u koji se upisuje je dugačak 150 bajta - više nego dovoljno
za jedan float "%.2f" formata.
Ljuba
unknown.937mjova,
> Da li neko ima ideju kako da se rešim bede sa float
> brojevima. Elem, program radi OK jedno vreme, a onda mi
> izbaci STACK FAULT i prekine sa radom.
iz helpa:
For example, to set a stack size of 20,000
bytes, use the following declaration:
unsigned _stklen = 20000;
unknown.938ppekovic,
>> String u koji se upisuje je dugačak 150 bajta - više nego
>> dovoljno za jedan float "%.2f" formata.
Debuger u šake ...
Paya
unknown.939janko,
>││ na suvom teoretisanju. Nemoj mi reci da niko nije naucio
>││ C++ npr. iz Borlandove dokumentacije? Uostalom, vecinu
>│ :) Kratko: NIJE. U Borlandovoj dokumentaciji imas samo
>│ onaj
> E pa nije tako :). Evo sta ima u BC++2.0, za v3.x mozda
> ima i vise. U "Getting Started" knjizi, uz "C++ primer"
> (75 strana) imas i "Hands on C++" (20 strana), a u
> "Programmers Guide" je vise od 50 strana posveceno samo
> C++. Ja jos nisam pokusao da ucim odatle, ako uspem da
> naucim nesto javicu. :)
Važi se! :)
Inače, iako se nisam sećao naslova, koliko znam, nigde nisam
pogrešio u opisima, pa ono 'e pa nije tako' ne stoji!
Pomenuti 'Primer' je, čak, po meni, sasvim DOBAR za prve korake
na C++-u, (pod uslovom da znaš elementarnu filozofiju običnog
C-a) jer imaš i sorsove u računarski upotrebljivom obliku (ne
moraš da ih kucaš), pa samo razmišljaš i eksperimentišeš.
Usto, sve je pisano prilično popularnim stilom -- ne trude se
da mistifikuju celu priču, čemu su skloni OOP
kvaziintelektualci. 'Hands on C++' je deo iste uvodne priče.
Ako se sećam, u 'Programmers Guide'-u imaš samo hijerarhije
ClassLib, (koje sam pominjao) a u 'Lib. reference'-u i iostream
hijerarhije (ili tako nešto, ne sećam se gde je šta, ali dobro
znam šta ima a šta nema) ali to su ipak samo spiskovi klasa i
f-ja članica i pokoji primer njihove upotrebe...
Ali, još uvek nisam promenio mišljenje, koje je u istoj poruci
čiji si deo citirao:
>> Može da se
>> nauči štošta, ali čovek koji samo na tome zasniva svoje
>> znanje ne bi trebalo da ima smelosti da kaže da ZNA C++.
Doduše, ako baš proučiš i ukapiraš i SORSOVE za ClassLib koje
imaš samo u računarskom obliku (ispomažući se pomenutim
hijerarhijama) i sve u vezi iostream, ono 'ŠTOŠTA' u gornjoj
rečenici sasvim mirno menjam u 'PODOSTA' -- C++ se sagledava
tek na većim programima i složenijim hijerarhijama... na malima
se ne mogu sagledati strategije...
Proučavanje već gotovih, dužih sorsova je svakako dobar put za
učenje bilo kog programskog jezika (ako su dobro pisani, još
bolji). To što Borland i njih obezbeđuje je svakako značajno.
Priznajem da je i to trebalo da pomenem pre.
Inače, Borland je, čini mi se, među prvima u DOS svetu počeo tu
politiku da obezbeđuje što više sorsova uz svoje proizvode
(iako se atraktivniji isporučuju uz posebne doplate) za razliku
od firmi koje svoje tajne ljubomorno čuvaju u .LIB datotekama.
Kao programer, ne mogu a da ne izrazim veliko zadovoljstvo
takvom Borlandovom politikom. Koliko se sećam nekih starijih
vesti, ona nije slučajnost, već svesna odluka najviših
Borlandovih krugova.
E da, dobrodošao u C++ vode!
unknown.940janko,
> Ja ipak ostajem na ontegrisanoj okolini, jer je po mom
> misljenju mnogo, mnogo bolja.
Ja koristim oba režima rada, zavisno od raspoloženja i potreba,
ali integrisana okolina je nezamenljiva kada ispravljam program
-- ugrađeni dibager i mogućnost da odmah upišem promenu i vidim
kako će onda da radi...
Sa TDom je to nemoguće -- uđi u dibager, startuj, stepuj, izađi,
menjaj, prevodi, uđi u dibager (nisu sačuvane pozicije, watch-ovi
itd, itd...)
Drugo, kada se navikneš na rezone integrisane okoline, i kada
shvatiš mogućnost da imaš ispred sebe sve datoteke koje
učestvuju u projektu (napr. njih dvadesetak) i da jednim klikom
miša edituješ onu koju želiš, a kada dibaguješ da kompajler
šeta kroz njih.... shvatiš da to ne može nijedan 'spoljni'
editor da obezbedi... TD koristim samo kad posumnjam da je
problem u mašincu koji je izgenerisan, ili programiram nešto
opasno 'nisko.'
unknown.941dusanp,
=> Koristim BC i nisam provalio kako da to uradim.
****************************************************************************
***************************
_stklen (global variable)
***************************
Stack length variable
extern unsigned _stklen;
Declared in dos.h
_stklen specifies the size of the stack. The default stack size is 4K.
_stklen is used before main() is called.
To set a different stack size, you must declare _stklen in your source file
as a global variable. (Place it outside all functions.)
For example, to set a stack size of 20,000 bytes, use the following
declaration:
unsigned _stklen = 20000 ;
****************************************************************************
****************************
_heaplen (global variable)
****************************
Initial heap size in bytes
unsigned _heaplen
Declared in dos.h
The value of _heaplen at the start of program execution determines the size
of the near heap that will be allocated. A value of 0, the default, makes a
maximum-sized heap.
_heaplen is not used in the large data models.
****************************************************************************
unknown.942bulaja,
│Nadite arhivu kbfix (ili int9fix, tako nekako).
└───
\ibmpc\utility\int9fix2.zip (14 KB)
unknown.943korvin,
> frugo što ja kao početnik u C-u nikako ne mogu da se odreknem onomg
> prelepog Ctrl-F1. Najlepša stvar koju sam naučio od kad sam napisao
> prvi red u C-u.
Da znaš, i ja sam to mislio, ali sam se popišmanio. Startuješ help,
startuješ neki editor, namestiš kursor na neku funkciju i pritisneš 5 na
numeričkoj i voila, evo ga help o toj funkciji. Tako makar radi kod TC 2.0.
Moram priznati MJovi daje u pravu, IDE ima mnooogooo ograničenja :(
unknown.945mdimitrijevic,
Hi!
Da li neko zna kako da u Turbo C-u 2.0 ulinkujem BGI ( HERC.BGI ) i CHR
( TRIP.CHR ) u EXE ali da ih taj program koristi.
Kako da moj font CHR koristim u programima. Nacrtao sam ga sa font editorom
za BGI fontove.
Unapred se zahvaljujem.
Pozdrav,
Marjan Dimitrijevic
unknown.946mjova,
> Da li neko zna kako da u Turbo C-u 2.0 ulinkujem BGI (
> HERC.BGI ) i CHR ( TRIP.CHR ) u EXE ali da ih taj program
> koristi.
ne radim sa grafikom, ali mislim da treba da uradiš sledeće (nisam
probao): uzmeš BGI2OBJ (tako nekako - ide uz tc) i prevedeš .bgi u
.obj a to zatim ulinkiješ u program.
unknown.947broker,
> 2.)Kako dobiti onaj divni ctrl F1 za help za zadatu reč na
> mestu kursora, što je, priznaćeš, jako korisna stvar. Ko
> će da pamti sve parametre svih funkcija iz svih hedera.
Uz Turbo programe dobijaš THELP.COM rezidentni help, koji
izgleda isto kao i onaj ugrađen u Turbo okruženje, ali se
pokreće sa 5 na numeričkoj tastaturi i takođe prepoznaje reč
na kojoj se nalazi kurzor.
ovo mi je upravo izdiktirao prijatelj, kome demonstriram sve
'lepote' rada sa SOR-om. (: (: (: (:
Broker> 3.)Da li brief omogućava editovanje više fajlova u isto
> vreme (kao qedit), a to pitam zbog projecta.
Može. Neograničen broj fajlova neograničene dužine. Nemoj
bukvalno da shvatiš. (: (: (:
unknown.948robert,
<:> Da li neko zna kako da u Turbo C-u 2.0 ulinkujem BGI ( HERC.BGI )
<:> i CHR
Ne znam kako u TC 2.0 ali u mom TC++ 1.01 ima BGIOBJ program koji napravi
.obj fajlove od .BGI i font fajlova tako da mogu lepo da se ulinkuju. Ako
hoćeš, javi mi se u mail pa da vidimo šta može da se uradi ;)).
unknown.949skoprivica,
╠╣ Kako da moj font CHR koristim u programima. Nacrtao sam ga sa font
╠╣ editorom za BGI fontove.
Ako se dobro secam ime mu mora biti dugo 4 slova,
Borlanda-pitaj-zasto...
unknown.950mdimitrijevic,
Hi!
Ja ga prevedem sa BGI2OBJ i ulinkujem ali ga program ne prepoznaje. Tako
da ne mogu nista da uradim. A sto se tice fontova ja sam stavljao ime vece od
cetiri slova.
Ne znam sta da mu radim !!!!
P.S. Pitanje i dalje vazi !!!
Pozdrav,
Marjan Dimitrijevic
unknown.951dtadic,
> Da li neko zna kako da u Turbo C-u 2.0 ulinkujem BGI (
> HERC.BGI ) i CHR ( TRIP.CHR ) u EXE ali da ih taj program
> koristi.
U Turbo Pascalu se to moze ovako uraditi (pretpostavljam da nema neke bitne
razlike u odnosu na TC):
Procedure HercDriver; external;
{$L HERC.OBJ}
Procedure LoadDriver(ProcPointer: pointer);
begin
if RegisterBGIDriver(ProcPointer) < 0 then Begin
Writeln('Error in graphics driver');
Halt(1);
end;
end;
...
...
Procedure Init;
var
GraphDriver, GraphMode : integer;
begin
LoadDriver(@HercDriver);
GraphDriver := HercMono;
GraphMode := HercMonoHi;
InitGraph(GraphDriver, GraphMode, '');
...
...
U ovom slucaju pri pozivu BINOBJ (ili BGIOBJ) "public name" mora biti
HercDriver. Sa fontovima nisam radio, ali je postupak slican.
DT
unknown.952dnikolic,
Borland C++ 3.0 mi ne radi kako treba. Vrlo cesto dobijam ovakvu poruku, uz
prekid rada:
EXEPTION 13:general protection fault at 055F:0B94 error code 0000
ax=0103,bx=0002,cx=133D,dx=0155,di=FF96,si=0001
ds=05BF limit=FFFF segment# 004C C:\PROGRAM\BC\BIN\BCC.EXE
es=0E5F limit=002F segment#
cs=055F limit=1EB6 segment# 0046 C:\PROGRAM\BC\BIN\BCC.EXE
ss=05BF limit=FFFF segment# 004C C:\PROGRAM\BC\BIN\BCC.EXE
error code=0000 limit INVL segment#
strike any key to continue
Unhandled exception 000D at 055F 0B94 ErrCode 0000
I tu prekida izvodjenje...
Imam 386/40, 4 MB, VGA, 1239A, QEMM 6.02, Hyperdisk(1500KB), Gmouse.sys,
Doskey.
dn
unknown.953mjova,
> EXEPTION 13:general protection fault at 055F:0B94 error
> code 0000
> Imam 386/40, 4 MB, VGA, 1239A, QEMM 6.02,
> Hyperdisk(1500KB), Gmouse.sys,
negde sam opisao šta se tačno dešava kad se javi exep 13. ukratko: kad
se koristi qemm onda se pri emuliranju 8086 javljaju problemi oko
veličine segmenta. najbolja fora je što se na XT-u takva muka nije
javljala jer 8086 nije ni umeo da provali ovaj problem, a to 386 ume.
eto, pa ti javlja tu poruku. ništa ne brini na XT-u bi taj program
100% puko.
najčešće se radi o tome da pri nekakvom pristiupu memoriji dođe do
prekoračenja dužine segmenta ili npr push/pop pretera SP preko 'ivice'
segmenta...
> ax=0103,bx=0002,cx=133D,dx=0155,di=FF96,si=0001
sudeći po vrednostima registara, pretpostavljam da je do prekoračenja
došlo kod upotrebe SI reg (opet: pretpostavljam).
unknown.954dusanp,
=> Borland C++ 3.0 mi ne radi kako treba. Vrlo cesto dobijam
=> ovakvu poruku, uz prekid rada:
Koji memory manager koristis? On ume da pravi probleme...
unknown.955mjova,
> veličine segmenta.
nije veličina (valjda je uvek ista ;) nego rada sa segmentima. sad tek
videh da sam pogrešno napisao.
unknown.957janko,
Ima li neko PC-lint ili, uopšte, neki sveži lint (za ANSI C)?
unknown.958mjova,
nije baš vezano za C, ali u neku ruku i jeste ;). uglavnom, problem je
vezan za pacova.
kako podesiti u pacovu koja je širina ekrana? naime, kad startujem
text režim 132x60 dolazi do pogrešnog računa pri kretanju miša po Y
osi. tada driver neumoljivo oduzima/dodaje po 80 znakova koliko misli
da je ekran širok...
postoji li neka fn kojom mu se može promeniti taj podatak? da nekako
setujem širinu na 132 (ili adekvatnu)?
drugo, neko je negde pitao za startovanje posebne rutine na osnovu
nekog događaja s mišem. u čemu je bio problem? sad sam to baš radio,
vrlo je jednostavno, pa ako nekom treba tu sam.
unknown.959mmihajlovic,
> Ima li neko PC-lint ili, uopste, neki svezi lint (za ANSI C)?
Imam PC-LINT 4.0 by Gimpel Software. Zaista je izvrstan, mnogo bolji
od bilo kog UNIX LINT-a koji sam video. Pitaj sta te interesuje.
MM
unknown.960mstanic,
>> text režim 132x60 dolazi do pogrešnog računa pri kretanju
>> miša po Y osi. tada driver neumoljivo oduzima/dodaje po
>> 80 znakova koliko misli da je ekran širok...
Možda će ovo pomoći:
Function 7: Set Min/Max Horizontal Cursor Position
This function sets the minimum and maximum horizontal cursor
coordinates on the screen.
■ If the minimum value is larger then the maximum value, the values are
swapped.
■ If the maximum value is larger than allowed, the value is set to the
maximum value allowed. This also applies to the minimum value.
■ If the pointer image is outside of the movement area when the call is
made, it is moved to just inside the area.
┌─────────────────────────────────────────────────────────────────────┐
│ Input Output │
│ Register Value Register Value │
│ │
│ AX 7 - - │
│ BX Maximum Position - - │
│ CX Minimum Position - - │
└─────────────────────────────────────────────────────────────────────┘
Function 8: Set Min/Max Vertical Cursor Position
This function sets the minimum and maximum vertical cursor coordinates
on the screen.
■ If the minimum value is larger then the maximum value, the values are
swapped.
■ If the maximum value is larger than allowed, the value is set to the
maximum value allowed. This also applies to the minimum value.
■ If the pointer image is outside of the movement area when the call is
made, it is moved to just inside the area.
┌─────────────────────────────────────────────────────────────────────┐
│ Input Output │
│ Register Value Register Value │
│ │
│ AX 8 - - │
│ BX Maximum Position - - │
│ CX Minimum Position - - │
└─────────────────────────────────────────────────────────────────────┘
>> drugo, neko je negde pitao za startovanje posebne rutine
>> na osnovu nekog događaja s mišem. u čemu je bio problem?
Ja sam pitao za to, ali sa rešio problem.
unknown.961mjova,
> Možda će ovo pomoći:
> Function 7: Set Min/Max Horizontal Cursor Position
> Function 8: Set Min/Max Vertical Cursor Position
to koristim jer posle određivanja veličine ekrana treba da dozvolim
pacovu da ide svuda (originalno je, bar kod mene, 80x25 - pa makar
bio i u 132x60 ;).
problem nije u tome već u vezniku za miša. probao sam logitech-ov
veznik sa sezama drvm600 (ili tako nekako) i sa njim radi u svim
rezolucijama (osim u 132x60 - nema kurzora, ali je sve ok).
e, sad, pitate se vi zašto ne promenim driver za pacova i rešim
problem? pa zato što i sa mojim driverom pacov lepo radi u svim
rešimima ako pozovem TeleMate. kako on to setuje pitam se ja ;).
pretpostavljam da malo podesi miša ili ima svoj upravljač? (nema jer
bez ikakvog ne radi ništa) možda sam računa koordinate na osnovu
event rutine? (nije baš lako, ali uradićemo i to ako treba ;)
(malo kasnije)
sad sam baš pogledao.. treba napraviti iznova rutine za štampanje
kurzora na ekran. dakle, sa tim idu još i rutine show(), hide(),
izgled_kurzora() itd.
(još malo kasnije ;)
reših problem, i sad sve lepo radi u svim tekst režimima. u okviru
mouse_event() rutine (poziva se automatski pri mrdanju pacova)
napravio sam i štampanje kurzora na ekran. ne znam da li radi brže,
ali radi bolje. imao sam neke probleme u vezi tih rutina koje se
pozivaju tako da su parametri raspoređeni po registrima.
u nekim registrima se nalaze bitni poatci, ali u DS registru se nalazi
data segment veznika za pacov. čemu li to treba? koj zna... uglavnom,
to je mali problem jer treba ekstra podešavati DS koji kompajler
podrazumeva da je očuvan. probao sam sve moguće fore i na kraju sam
morao na početak rutine da stavim jedno podešavanje tog registra.
nego, da li je neko primetio potrebu za HW kurzorom? čemu on? (nisam
probao pa zato pitam).
sad imam jedno pitanjce za one koji su se time petljali: kako
automatski podesiti DS registar ako postoje indicije da će na
ulasku u neku rutinu dotični biti poremećen? kako sam imao potrebe
samo za jednom promenljivom van CS-a onda sam uradio nešto ovako:
mov ax, seg video_mem
mov ds, ax
to rešava problem, ali nisam nekako siguran da je 'to to'. da li
upotreba prekidača (-z?name (borland)) rešava problem?
unknown.962mjova,
> to rešava problem, ali nisam nekako siguran da je 'to to'.
> da li upotreba prekidača (-z?name (borland)) rešava
> problem?
i pored duge poruke nisam sve reko ;)
rešenje za L model je
asm mov ax, seg _DATA;
asm mov ds, ax;
za H model je malo teže jer ispred _DATA treba da stoji ime modula u
kom se radnja dešava, a za ostale modele nije zanimljivo (isto kao i
za L).
unknown.963bulaja,
**** new file ****
\ibmpc\c
tc_als.arj
Izvorni kod primera iz knjige "Turbo C:..." (Al Stevens)
This diskette contains the source files for the programs in
"Turbo C: Memory-Resident Utilities, Screen I/O, and Advanced
Programming Techniques", Al Stevens, 1987, MIS:Press.
This book uses the unique features of Turbo C to implement a complete
video window package. The package includes support for context-sensitive
help, pop-down menus, data entry templates, and a window text editor.
The book also explains the concepts of Terminate-and-Stay-Resident
(TSR) utility programs under DOS. Example TSR programs are provided, and
a TSR driver program is included that allows you to build your own TSR
programs in Turbo C.
unknown.964nkbog,
Ima li neko PD source nekog GREP-alike programa?
NB.
unknown.965dragisha,
ű> Ima li neko PD source nekog GREP-alike programa?
ű>
ű> NB.
Imam ja. žak sam ga i UL svojevremeno. Program je mnogo više od
grep-a, ali ima sors tako da lako možeš izdvojiti dio sa
regularnim izrazima, koji pretpostavljam da te zanima.
Pozdrav, dd
unknown.966nkbog,
> Imam ja. žak sam ga i UL svojevremeno.
A gde se nalazi?
NB.
ps. taj GREP mislim :)
unknown.967jtitov,
Gospodo Cevasi, da li je moguce ubaciti u BC++ 3.1 da linker bude neki
drugi, a ne tlink?
unknown.968mstanic,
Poštovane kolege,
Da li biste mi mogli dati savete koji od Borlandovih C++
kompajlera da kupim.
Do sada sam koristio TC 2.0.
Radim samo aplikacije za DOS, najčešće vremenski kritične
koje upravljaju hardverom (dakle real-time).
Uz to je važan i grafički prikaz nekog procesa, a
ako je vreme kritično koristim tekst-grafiku (jel' ovo
nov termin?).
Da li mi možete još reći ko prodaje Borlandov softver.
Hvala.
p.s. Odluci je kumovala rasprava u konferenciji koju smo
vodili pre nekog vremena (ja sam uglavnom postavljao
pitanja) i tekst djelovica u novim računarima.
unknown.969jtitov,
> Da li biste mi mogli dati savete koji od Borlandovih C++
> kompajlera da kupim.
Ja licno uvek nabavljam najbolje (i najskuplje) stvari jedino iz razloga
sto sigurno ima razloga zasto su najbolje (najskuplje). Prema tome moj
savet je BC++ 3.1. Podrzan je 386 kod, itd. Jeste, malo vise arci disk, ali
to je ionako zavera Zapada protiv ove zemlje. :))
> pitanja) i tekst djelovica u novim racunarima.
Dejanu J. svaka cast na poznavanju C-a! Tako mlad, a toliko znanja, da je
svaki susret sa njim radost i osvezenje za mozak.
unknown.970robert,
<:> Radim samo aplikacije za DOS, najčešće vremenski kritične
Jtitov ti je preporučio BC++ 3.1 i tu sigurno ne bi pogrešio kad bi je
pazario ali da bi je pazario, treba ti oko $500 i to je cena u
inostranstvu. Uz BC++ dobijaš gomilu stvari koja tebi baš i ne treba koja
je vezana za rad pod Windows-ima mada su veoma korisne stvari, pogotovo za
tebe, Turbo Debugger i Turbo Profiler (naravno i Turbo Assembler) koje se
ne isporučuju u standardnim TURBO C++ paketima. Ne znam da li bilo koja od
ove tri stvari može posebno da se kupi pa bi neko ko to zna mogao da
pomogne. Ja bih uradio sledeće: kupio bih Turbo C++ 3.0 za DOS (došla mi je
pod ruke ta verzija ali nisam još stigao da se pozabavim njom ali na prvi
pogled izgleda standardno, kao i prethodne verzije, ali verovatno ima nekih
poboljšanja) a iz BC++ 3.x bih uzeo Debugger, Profiler i TASM (kao što sam i
uradio :) ). Tako uštediš pare a imaš ono što ti treba. E, sad, uputstvo za
TD i TP možeš i da kopiraš od nekoga a važno ti je da imaš original TC++ 3.0.
Pitao si i za Borlandovog dilera kod nas, pa ima u poslednjim
računarima oglas firme SOFTLAND, Skadarska 45, Tel: 8485-698 a ispod piše
još i CET, ovlašćeni diler, Tel: 343-043 pa se raspitaj kod njih šta nude.
unknown.971robert,
Znam da se nedavno vodila diskusija ovde o nekoj literaturi o C-u i C++ -u
ali nisam primetio da je istaknuta neka dobra knjiga za C++ pa sad opet
pitam da li bi neko znao da preporuči neku finu knjigu za one koji bi
hteli da počnu da uče C++ a da nije ona Stroustrup-ova. Nju imam i došao
sam do zaključka da je zaista prilično teško naučiti nešto iz nje ako ste
početnik. Nekako je sve ispretumbano i nejasno šta kad i gde treba raditi a
i primeri su ponekad teški i nerazumljivi. Izgleda da tu knjigu treba
shvatiti kao referencu i koristiti je tek kada se ovlada jezikom C++ malo
bolje. Za početnike je katastrofalna. Elem, pošto iz te knjige nisam mogao
da postanem pametniji, uzeo sam User's guide koji se dobija uz TC++ 1.01 i
pročitao deo koji se odnosi na C++ i mnoge stvari su mi postale jasnije
jer je tu lepo, natenane, opisana osnova C++ -a jednostavnim jezikom za
početnike. Međutim, to što tu piše nikako nije dovoljno da bi se lepo
ovladalo omiljenim jezikom pa zato sad pitam ono gornje pitanje: koja
knjiga? Možda bi Dejan Jelović hteo da nam otkrije tajnu odakle je on učio
C++ pošto ga je, izgleda odlično savladao :).
Ima na kraju User's guide-a neki spisak literature ali za C++ su
pomenute samo tri knjige: Pohl, Ira. C++ For Programmers,
Stroustrup, Bjarne. The C++ Programming Language i Weiner, Richard S. and
Lewis J. Pinson. An Introduction to Object-Oriented Programming and C++.
Međutim, sve te knjige su starijeg datuma (87-88) pa me interesuje da li
ima nečeg novijeg i boljeg.
Na kraju ove poruke bih postavio još jedno pitanje za iskusnije
programere: kako vežbati neki jezik koji učite, šta raditi kada se pročita
teorija? Da bi se naučio neki jezik mora i da se vežba na njemu pa kako
izmisliti sebi zadatke?
unknown.972vili,
Dosao sam u dodir sa Zortech C++ V3.0. Kakva su iskustva sa njim?
Kakav je u poredjenju sa Turbo C++?
Hteo bih da se malo vise pozabavim sa OOP, pa da li je bolje da
pocnem sa Zortech C++ ili Turbo C++?
Vili
unknown.973vilic,
#> Znam da se nedavno vodila diskusija ovde o nekoj literaturi o C-u i
#> C++ -u ali nisam primetio da je istaknuta neka dobra knjiga za C++
#> pa sad opet pitam da li bi neko znao da preporuči neku finu knjigu
#> za one koji bi hteli da počnu da uče C++ a da nije ona
#> Stroustrup-ova.
Svojevremeno sam skinuo sa Trickle-a text sa primerima za učenje C++ pa ako
ima zainteresovanih da ga ostavim. Jedino što je potrebno posle
raspakovanja arhive je da oštampaš nekih 150-180 strana i da čitaš i puštaš
primere koji su dati u svom omiljenom prevodiocu.
Tutorijal je podeljen na 12 poglavlja i polako uvodi u C++.
ps. Ako te interesuju knjige o C++ zašto ne pogledaš spisak literature koji
je dat u datoteci CPPFAQ koju imaš ovde na sezamu. Tu je lep spisak knjiga
o C++ i OOP-u pa ako možeš da naručuješ knjige iz USA (a imaš i para) svi
tvoji problemi su rešeni.
\bye
unknown.977robert,
<:> ima zainteresovanih da ga ostavim. Jedino što je potrebno posle
Eto ja sam sigurno zainteresovan za to :).
<:> je dat u datoteci CPPFAQ koju imaš ovde na sezamu. Tu je lep
<:> spisak knjiga
E hvala, za to nisam znao.
unknown.978djelovic,
> Da li biste mi mogli dati savete koji od Borlandovih C++
> kompajlera da kupim.
Nešto sam bio u gužvi zadnjih nedelju dana tako da nisam stigao
da ti ranije odgovorim (kad sam već prozvan :)), ali evo:
Na sledećoj slici imaš tabelu Borlandovih proizvoda sa cenama
(cene kod preprodavaca su najčešće nešto manje):
Windows Dos
┌──────────────────────────────────────────────────────────────┐
│ Borland C++ & Aplication Framework - $749 │
Prof. ├──────────────────────────────────────────────────────────────┤
│ Borland C++ - $495 │
├───────────────────────────────┬──────────────────────────────┤
Početnički │ Turbo C++ for Win - $149 │ Turbo C++ for DOS - $99 │
└───────────────────────────────┴──────────────────────────────┘
Kako se baviš real time aplikacijama, onda se tvoj izbor svodi
na Borland C++ ili Turbo C++ for DOS. Od ova dva, prvi brže prevodi i
ima dosta bolje alatke (make najzad počinje da liči na UNIX make), ali
zahteva nekih 2 Mb memorije i nekih 15-ak Mb na hard disku.
Što se tiče kvaliteta koda, tu i nema nekih razlika, čak ponekad
može i da se desi da Borland C++ da lošije rezultate (?) od Turbo C++
paketa. Ukratko, ukoliko si rešio da program kupiš, razlika u ceni
doneće ti veću brzinu prevođenja i veću kompatibilnost sa UNIX-om.
Ukoliko ćeš program da prekopiraš od nekoga onda je Borland C++ u svakom
slučaju bolje rešenje, pod uslovom da imaš dovoljno prostora za njega.
P.S. Hvala na velikom komplimentu koji tvoja poruka implicira.
unknown.979djelovic,
> koja knjiga? Možda bi Dejan Jelović hteo da nam otkrije tajnu odakle
> je on učio C++ pošto ga je, izgleda odlično savladao :).
Hvala, hvala. Ja sam još od ranije znao da sam genije, jedino mi
nije jasno jeste, khm khm, kako da to niste i ranije spoznali. (Brzo
prestanite, moj ego je posle vaših poruka toliko narastao da preti da
pomrači sunce. :))
Šalu na stranu, ja sam C++ učio još u doba kada se Turbo C++ još
nije ni pojavio u Jugi, tako da je moj jedini izvor bila neka trula
knjiga koja mi je ostala u sećanju samo po tome što je užasno debela i
užasno nerazumljiva :). Što se tiče literature za iskusnijeg C++
programera, tu baš i nema mnogo izbora - Stroustrup je izmislio jezik i
od njega se ne može pobeći.
Od literature za početnike, kažu da se izdvaja knjiga
"C++ Primer" - Stanley B. Lipman
Reading, Mass.: Addison-Wesley,
a za nestrpljive na Sezamu ima CPPFAQ.ZIP, datoteku sa najčešće
postavljanim C++ pitanjima, pa protrkeljišite malo po njoj.
> kako vežbati neki jezik koji učite, šta raditi kada se pročita teorija?
Well, pod uslovom da nije prevelik, sledeći program (ili neki
njegov deo) koji radiš napiši u C++-u. Ja lično nikada nisam bio za neko
silno vežbanje, a i C++ je dovoljno blizu C-a da možeš da pišeš praktično C
programe i da u njih ubacuješ neke parčiće C++ koda bez ikakvih problema.
unknown.980mrajacic,
> Svojevremeno sam skinuo sa Trickle-a text sa primerima za učenje C++ pa ako
> ima zainteresovanih da ga ostavim. Jedino što je potrebno posle
Ima zainteresovanih, pošalji, ako ti nije teško.
POZDRAV
unknown.981d.petrovic,
Frka sa 386 modom :). Ajde ovako, ja imam 286 a već 10-ak meseci
mi čuči na disketama _neki_ C kompajler koji radi i generiše 386 kod.
čalost božja, kad sam ga dobio bio je stvaaaaarno taze, VRUĆ :)). Jel
neko oće možda .doc ili demo verziju ? O:)
unknown.982mstanic,
>> Ukoliko ćeš program da prekopiraš od nekoga onda je
>> Borland C++ u svakom slučaju bolje rešenje, pod uslovom
>> da imaš dovoljno prostora za njega.
>>
>> P.S. Hvala na velikom komplimentu koji tvoja poruka
>> implicira.
Prostora ('fala bogu') imam dovoljno za jedno osam BC++.
Odlučio sam se za BC++ 3.0, a danas treba da mi padne
šaka. Nemojte mi reći da sam pogrešio, već je kasno da
menjam odluku.
Kupujem original a ne kopiram (za koga me smatraš), firma
plaća Xe Xe. (700 DEM, jel' mnogo?)
Na kupovinu sam se odlučio zbog one silne hartije koja ide
uz paket.
Hvala ti na odgovoru, a takođe i svima ostalima koji su
se potrudili da objasne stvari.
unknown.983mstanic,
>> Svojevremeno sam skinuo sa Trickle-a text sa primerima za
>> učenje C++ pa ako ima zainteresovanih da ga ostavim.
I ja sam zainteresovan.
unknown.984vilic,
#> Ima zainteresovanih, pošalji, ako ti nije teško.
Evo ga prvi deo. U njemu su primeri programa koji se obradjuju u drugom
delu.
\bye
unknown.985vilic,
Evo drugog dela tutora za CPP. Ovde je tutor za cpp podeljen po
poglavljima.
Svako poglavlje obradjuje po neki program kroz koji se objašnjava neka od
specifičnosti cpp.
A za one nestrpljive evo sadržaja.
C++ TUTORIAL - TABLE OF CONTENTS
Introduction Page I-1
Chapter 1 - Simple Things Page 1-1
CONCOM.CPP Constants and comments 1-1
SCOPEOP.CPP Scope operator 1-3
MESSAGE.CPP The stream library 1-3
FSTREAM.CPP File streams 1-5
VARDEF.CPP Variable definitions 1-6
Chapter 2 - Compound Types Page 2-1
ENUM.CPP The enumerated type 2-1
STRUCTUR.CPP The structure 2-1
CLASS1.CPP The class 2-2
UNIONEX.CPP The union 2-3
TYPECONV.CPP Type conversions 2-3
Chapter 3 - Pointers Page 3-1
POINTERS.CPP Using Pointers 3-1
NEWDEL.CPP New and delete operators 3-2
FUNCPNT.CPP Function pointers 3-4
Chapter 4 - Functions Page 4-1
PROTYPE1.CPP Using prototypes 4-1
PROTYPE2.CPP Using prototypes 4-3
PASSREF.CPP Pass by reference 4-4
DEFAULT.CPP Parameter defaults 4-5
VARARGS.CPP Variable number of arguments 4-6
OVERLOAD.CPP Overloading function names 4-7
Chapter 5 - Encapsulation Page 5-1
OPEN.CPP No information hiding 5-1
CLAS.CPP Information hiding 5-2
OPENPOLE.CPP Corruptible data 5-6
CLASPOLE.CPP Protected data 5-7
CONSPOLE.CPP Constructors and destructors 5-9
BOXES1.CPP All in one file 5-10
BOX.H Box interface 5-11
BOX.CPP Box implementation 5-11
BOXES2.CPP Using the box class 5-12
DATE.H The date class header 5-15
DATE.CPP The date implementation 5-15
USEDATE.CPP Using the date class 5-16
Chapter 6 - More encapsulation Page 6-1
OBJARRAY.CPP An Array of objects 6-1
OBJSTRNG.CPP An object with a string 6-3
OBJINTPT.CPP An object with a pointer 6-3
OBJDYNAM.CPP Dynamic allocation of objects 6-5
OBJLIST.CPP Embedded pointers 6-5
OBJLINK.CPP Linked list of objects 6-7
NESTING.CPP Nested classes 6-8
OPOVERLD.CPP Operator overloading 6-9
FUNCOVER.CPP Function name overloading 6-11
TIME.H The time class header 6-12
TIME.CPP The time implementation 6-12
USETIME.CPP Using the time class 6-12
Chapter 7 - Inheritance Page 7-1
VEHICLE.H Vehicle interface 7-1
VEHICLE.CPP Vehicle implementation 7-2
TRANSPRT.CPP Using the vehicle class 7-2
CAR.H Car interface 7-3
CAR.CPP Car implementation 7-4
TRUCK.H Truck interface 7-5
TRUCK.CPP Truck implementation 7-5
ALLVEHIC.CPP Use of car, truck, & vehicle 7-5
NEWDATE.H The newdate class header 7-7
NEWDATE.CPP The newdate implementaion 7-7
TRYNDATE.CPP Using the newdate class 7-8
Chapter 8 - More inheritance Page 8-1
INHERIT1.CPP Using public 8-1
INHERIT2.CPP Omitting public 8-2
INHERIT3.CPP Intra class messages 8-3
INHERIT4.CPP Without protected 8-4
INHERIT5.CPP Using protected 8-5
INHERIT6.CPP Using Constructors 8-5
INHERIT7.CPP Arrays and pointers 8-6
Chapter 9 - Multiple Inheritance Page 9-1
MULTINH1.CPP Multiple inheritance 9-2
MULTINH2.CPP Duplicate method names 9-3
MULTINH3.CPP Duplicate variable names 9-4
DATETIME.H Datetime class header 9-4
USEDTTM.CPP Using the datetime class 9-6
TEMPLAT1.CPP Simple template example 9-7
TEMPLAT2.CPP Strings template example 9-7
TEMPLAT3.CPP Class template example 9-8
Chapter 10 - Virtual functions Page 10-1
VIRTUAL1.CPP The starting point 10-1
VIRTUAL2.CPP Adding virtual 10-2
VIRTUAL3.CPP Using pointers to subclasses 10-3
VIRTUAL4.CPP Using virtual 10-3
VIRTUAL5.CPP Using pointers to parent class 10-4
VIRTUAL6.CPP True virtual functions 10-5
Chapter 11 - More Virtual Functions Page 11-1
PERSON.H Person header 11-1
PERSON.CPP Person implementation 11-2
SUPERVSR.H Personnel header 11-2
SUPERVSR.CPP Personnel implementation 11-2
EMPLOYEE.CPP A simple user program 11-3
ELEMLIST.H Linked list header 11-4
ELEMLIST.CPP Linked list implementation 11-5
EMPLOYE2.CPP A better user program 11-5
Chapter 12 - Flyaway adventure game Page 12-1
FLYAWAY.EXE Flyaway executable 12-1
FLYAWAY.H Global definitions 12-3
CLOCK.H Clock header 12-3
CLOCK.CPP Clock implementation 12-3
WORDS.H Command parsing header 12-4
WORDS.CPP Command parsing code 12-4
ITEMS.H Moveable items header 12-4
ITEMS.CPP Items implementation 12-4
SCHEDULE.H Scheduler header 12-5
SCHEDULE.CPP Scheduler implementation 12-5
LOCATION.H Locations header 12-6
LOCATION.CPP Locations implementation 12-6
MESSAGE.TXT String messages 12-7
FLYAWAY.CPP Main program 12-7
MAP.H Airport map header 12-8
MAP.CPP Airport map implementation 12-8
unknown.986vilic,
#> Evo drugog dela tutora za CPP. Ovde je tutor za cpp podeljen po
#> poglavljima.
Zbog male greške priložene datoteke i tekstovi koji ih opisuju su
permutovani.
CPTUT22.ZIP ----> Tutor za učenje cpp-a
CPTUTS22.ZIP ----> Programi koji idu uz njega
Izvinjavam se na grešci.
\bye