PCPROG.1

20 Sep 1991 - 03 Dec 1992

Topics

  1. ms.dos (235)
  2. cccc (0)
  3. asembler (321)
  4. pascal (896)
  5. clipper (1059)
  6. zastita (239)
  7. basic (178)
  8. baze.podataka (116)
  9. novi.fajlovi (66)
  10. algoritmi (52)
  11. razno (707)
  12. van.teme (126)
  13. unknown (986)

Messages - unknown

unknown.1 ppekovic,
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.2 djelovic,
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.3 ppekovic,
Kako da dobijem segment početka aktivne video strane??? Paya
unknown.4 igor.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.5 glisin,
-> 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.6 ljupco,
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.7 zkehler,
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.8 ppekovic,
>>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.9 bjankovic,
> 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.10 djelovic,
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.11 ppekovic,
>> 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.12 djelovic,
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.13 glisin,
-> 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.14 glisin,
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.15 mkehler,
▄▀ 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.16 aradovanovic,
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.17 djelovic,
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.18 ppekovic,
>> 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.19 igor.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.20 djelovic,
/* 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.21 bulaja,
│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.22 mirkot,
██ 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.23 ilazarevic,
█ Tata, vidi, gospodin DJELOVIC, sta mu je? :))))) Sad mu nije ništa, zgazio si ga ko zeca! :)))))))
unknown.24 dnikolic,
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.25 dnikolic,
>> 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.26 zkehler,
Ŕ 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.27 zkehler,
Ŕ PPS Borland C je bolji od Microsoft C-a ;) Slažem se ;) ZK
unknown.28 ppekovic,
>>>> 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.29 ppekovic,
>>Ŕ 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.30 mjova,
> PPS Borland C je bolji od Microsoft C-a ;) zar to treba dokazivati? :)
unknown.31 igor.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.32 igor.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.33 djelovic,
>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.34 ppekovic,
>> 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.35 nkbog,
>>> 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.36 maleksic,
>> 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.37 maleksic,
>> 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.38 igor.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.39 spantic,
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.40 maleksic,
Eh, tvom prijatelju nema pomoci! Jadnik koristi Turbo C, tu nema leka. Ustvari ima! Neka odma' predje na Microsoft C!!
unknown.41 maleksic,
>> 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.42 zkehler,
Ŕ 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.43 zkehler,
Ŕ 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.44 spantic,
>> 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.45 spantic,
>> 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.46 zkehler,
Ŕ >> 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.47 zkehler,
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.48 ppekovic,
>> 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.49 zkehler,
Hvala Payo! Nemam predrasuda prema MSC, jedino sam više koristio TC i TCPP. Javiću rezultate. ZK
unknown.50 vilic,
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.arj
unknown.51 natila,
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.52 ppekovic,
>> 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.53 mmihajlovic,
> 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, &regs, &regs); } 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.54 djelovic,
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.zip
unknown.55 drakce,
│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.56 chege,
> 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.58 igor.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.59 djelovic,
Pa shalji brate! Takodje, ako je neko pomocu toga napravio neki YU font, neka shalje i to. Sta je BGIHERC?
unknown.60 natila,
Zahvaljujem se na pomoci! Nemeth AttilaĚ╗
unknown.61 ivujanic,
╠ 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.62 drakce,
│││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.63 igor.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.64 ppekovic,
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.65 madamov,
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.66 ppekovic,
>> Hope this helps. Thanks! Paya
unknown.67 djelovic,
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.68 djelovic,
Kako da prevedem termin 'overloading'? Ono dsavic-evo 'preopterecenje' mi nesto ne lezi... P.S. Oli je to polimorfizam?
unknown.69 ppekovic,
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.70 beki,
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.73 ppekovic,
>>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.74 ppekovic,
>>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.75 miro,
■■ 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.76 alexa,
> 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.77 znevenic,
> 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.78 miro,
■■ PROCEDURE ChkBoot; ■■ VAR CP : POINTER TO CARDINAL; (* CARDINAL = unsigned int *) ■■ LP : POINTER TO LONGCARD; Koji je ovo SAVRSENI jezik ? :) O /█> Ů Ţ ▀ ▀ Dragisa.
unknown.79 miro,
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.80 miro,
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.81 spantic,
> ■■ 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.82 znevenic,
>> ■■ 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.83 ndragan,
>* 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.84 sgopcevic,
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.85 todorp,
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.86 gristic,
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.88 mmihajlovic,
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.zip
unknown.89 djelovic,
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.90 bearboy,
Pozdraw ! Jel' neko cuo nesto o High C-u ? (Koristi se u vezi AutoCAD-a) ( 11 ) Thanx ─ /\/-\/\ \| |/ |O O| / \ | /0\ | | \_/ | \_____/
unknown.91 zormi,
* Jel' neko cuo nesto o High C-u ? Ja ga koristim... Pišem u njemu module za Matlab 386. Šta te zanima?
unknown.92 gristic,
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.94 bearboy,
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.96 bojt,
>> 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.97 bearboy,
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.98 bearboy,
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.99 bearboy,
> 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.100 beki,
> 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.101 igor.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.102 bojt,
>> '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.103 gristic,
Hvala lepo. Ja sam mislio nešto selfmade... Ako baš mora i ako baš vredi možda... Pozdrav __GR__
unknown.104 fric,
> 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.105 igor.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.106 alexa,
> 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.107 beki,
Sad kada imamo LEX, logicni nastavak: Ima li neko YACC ? Beki
unknown.108 nkbog,
> 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.109 dejanr,
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.110 dlozic,
Evo jednog programcica sa sourceom u c-u. Najbolja ideja! dont.zip
unknown.111 andra,
Nisi valjda ??? :)))))))))))))))))))))
unknown.112 ppekovic,
>> 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.113 bojanp,
> Evo jednog programcica sa sourceom u c-u. Najbolja ideja! Imam ja jos bolju: Don't buy computer!
unknown.114 zocha,
Zna li neko u cemu je razlika izmedju: 1. char a; 2. char *a; 3. char * a; 4. char* a; - Zocha@Rista -
unknown.115 zocha,
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.118 dlozic,
aaaaaaaaaaaaaahaaaaaaaaaaa!
unknown.119 dlozic,
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.120 mjova,
> 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.121 ppekovic,
>> 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.122 zocha,
#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.123 zzivotic,
> 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.125 ddjj,
==> (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.arj
unknown.126 mjova,
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.127 zocha,
> 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.128 zzivotic,
> 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.129 bearboy,
> Nemam ja to, samo u principu znam kako rade kompajleri pod > Pharom. Thanx
unknown.130 vpetrovic,
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.131 mjova,
> 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.132 dlozic,
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.133 djelovic,
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.134 dlozic,
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.135 vpetrovic,
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.zip
unknown.136 dragan.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.137 mjova,
> 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.138 miljko,
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.139 mjova,
> 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.140 ndragan,
/ nisam siguran da ima neko jednostavno rešenje... motorola?
unknown.141 lazo,
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.142 ppekovic,
>> 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.143 lazo,
Hvala, DL-vaću :))))))).
unknown.144 dgrbic,
:: 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.145 bulaja,
│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.146 mjova,
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.147 nandi,
> 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.148 andra,
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.149 ppekovic,
>> 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.151 dgrbic,
::>> 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.152 lanik,
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.153 gww.,
>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.154 gww.,
Ima li preporuka za DOS-extender ?
unknown.155 djelovic,
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.156 djelovic,
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.157 bulaja,
│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.158 ppekovic,
>> 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.159 mjova,
> 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.160 miro,
■■> 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.161 gww.,
> 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.162 gww.,
> 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.163 gww.,
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.164 djelovic,
> 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.165 djelovic,
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.166 gww.,
> 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.167 gww.,
> 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.168 gww.,
> 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.169 djelovic,
> 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.170 djelovic,
> 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.171 igor.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.172 igor.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.173 igor.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.174 igor.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.175 bulaja,
│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.176 mjova,
> MJOVO hoćeš li ? moze, moze ;)
unknown.177 ppekovic,
>> 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.178 ppekovic,
>> 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.179 igor.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.zip
unknown.180 igor.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.181 ppekovic,
>> 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.182 ivujanic,
U kom časopisu je bilo poređenje C++ kompajlera za DOS? Mislim na malo ozbiljnije članke... Ivica
unknown.183 predragd,
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.184 mjova,
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.185 lazo,
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.186 ppekovic,
>>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.187 ppekovic,
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.188 ppekovic,
>>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.189 bulaja,
│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.190 ppekovic,
>> 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.191 braca,
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.192 mjova,
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.193 igor.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.194 djnsnd,
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.195 ppekovic,
>>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.196 alexa,
> / nisam siguran da ima neko jednostavno rešenje... > > motorola? 386 ? (ko je rekao DOS???)
unknown.197 alexa,
> 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.198 mjova,
> 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.199 fric,
> 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.200 nkbog,
>> 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.201 bulaja,
│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.202 ppekovic,
>>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.203 dgrbic,
:: 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.204 alexa,
> 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.205 dnikolic,
>> Postoji i Turbo Vision za Turbo C++ (i BC++). Postoji, ali jos nije stigao do nas. Ili mozda jeste? dn
unknown.207 jpiri,
>> 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.208 djnsnd,
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.209 igor.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.210 ppekovic,
>> 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.211 nandi,
> 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.212 mjova,
> 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.213 nkbog,
>> 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.214 ppekovic,
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.215 alexa,
> 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.216 alazic,
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.217 mjova,
> . 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.218 sslavko,
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.219 dzakic,
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.220 djelovic,
> 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.221 cacxa,
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.222 djelovic,
Stavi <iostream.h> umesto <stream.h>. I pisi originalnije programe :).
unknown.223 cacxa,
> 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.224 djelovic,
> 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.225 nkbog,
>> 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.227 dbojan,
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.228 mjova,
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.229 radunovic,
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.230 nkbog,
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.231 dgrbic,
:: 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.232 bojanp,
> 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.233 dbojan,
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.arj
unknown.234 radunovic,
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.235 bojt,
>> 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.236 prvul,
>> 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.237 sslavko,
>> 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.238 dnikolic,
Kako da ispisujem tekuci datum i vreme? Ali tako, da ako neko koristi pro- gram nocu, u ponoc promeni datum! dn
unknown.239 nandi,
> 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.240 ivans,
* 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.241 prvul,
>>>> ..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.242 cacxa,
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.243 alexa,
> 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.244 alexa,
... 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.245 djelovic,
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.246 igor.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.247 igor.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.248 igor.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.249 ljupco,
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.250 duduk,
> 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.251 alexa,
> 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.252 ljupco,
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.253 mjova,
> 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.254 ljupco,
> 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.255 mjova,
>> 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.256 sslavko,
Ima li ko iskustva sa Dflat-om? Interesuje me sve u vezi ove biblioteke od instalacije do koriscenja. Pozdrav Slavko.
unknown.257 dnikolic,
>> 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.258 gristic,
Š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.259 sslavko,
>> 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.260 dnikolic,
>> 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.261 sslavko,
>> .................. 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.262 dusanp,
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.263 dr.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.264 mjova,
> 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.265 dbojan,
Kako snimiti screen u datoteku (i vratiti ga nazad) sa MSC6 ???
unknown.266 bearboy,
-+={ 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.267 djelovic,
> 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.268 djelovic,
> Kako snimiti screen u datoteku (i vratiti ga nazad) sa MSC6 ??? Imaš dosta na tu temu u PC.SOFT. Potraži tamo.
unknown.269 nkbog,
> 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.270 pjankovic,
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.271 bojanp,
> 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.273 djelovic,
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.274 nesavic,
Pitanje: da li sa MSC 6 mogu da se pisu programi za WIN?
unknown.275 ivans,
Interesuje me kolike su razlike izmedu Dflat3 i Dflat9. Sta mislite? Pozdrav, Ivans.
unknown.276 djelovic,
Ne mozes bez Win SDK-a. Ako već nameravaš da pišeš Win programe, bolje pređi na BC++. Lakše je.
unknown.277 dejanr,
>> 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.278 alexa,
> 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.279 dusanp,
==> 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.280 nesavic,
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.281 dzakic,
>> 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.282 dgrbic,
:: 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.283 duduk,
> 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.284 ljupco,
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.285 nesavic,
Hvala, probacu pa cu da javim...
unknown.286 duduk,
> 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.287 ljupco,
> - 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.288 ljupco,
> - 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.289 mjova,
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.arj
unknown.290 zsavic,
Gde može da se nabavi C++ 2.0 predprocesor za MSC 6.0 ? SAVA
unknown.291 iboris,
Da li neko zna gde mogu da nabavim grafičke biblioteke za C , ZINC C-SCAPE Zahvaljujem unapred na svakoj informaciji ! Pozdrav, Boris
unknown.292 dusanp,
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.293 dejanr,
>> 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.294 vbole,
> 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.295 bulaja,
│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.296 mjova,
> 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.297 gvuckovic,
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.298 psti,
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.299 mjova,
> 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.300 vilic,
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.301 djelovic,
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.302 bulaja,
│** Uz poruku 'cppfaq.arj' (62423 bytes) └─── Prebaceno u \IBMPC\INFO. Thanks na prilogu.
unknown.303 ppekovic,
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.304 djelovic,
> 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.305 dgrbic,
:: 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.306 nkbog,
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.307 dnikolic,
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.308 nandi,
> 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.309 janko,
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.310 janko,
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.311 janko,
> 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.312 janko,
>> 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.313 alexa,
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.314 dusanp,
=> 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.315 nandi,
> ž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.316 nkbog,
>> 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.317 nkbog,
>> 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.318 janko,
> 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.319 dusanp,
=> 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.320 mjova,
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.321 nandi,
> 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.322 djelovic,
> 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.323 bulaja,
**** 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.324 igor.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.325 igor.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.326 igor.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.327 mjova,
> 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.328 dusanp,
=> 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.329 zonjic,
> 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.330 dgrbic,
:: 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.331 rcojba,
Ima li neko od korisnika sezama BC++ 3.0 ako ima nek se javi !!!!! rcojba !
unknown.332 dusanp,
=> 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.333 gvuckovic,
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.334 ndragan,
/ 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.335 dnikolic,
>> 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.336 stomic,
$ / 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.338 ndragan,
/ /* 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.340 janko,
> 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.341 duduk,
> 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.exe
unknown.342 duduk,
> ali kako se strucno zovu majmun i taraba? @ = business a # = hash
unknown.343 ljubao,
>>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.344 vbole,
> 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.345 ilazarevic,
█ # = taraba = Pound (Sign) Pound? Engleska funta? Ako je to, znak je ono L :)) █ ž = stepen(?) = Caret Ovo se u francuskom zove circumflex (nepravilno napisano)
unknown.346 ndragan,
/ 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.347 dejanr,
>> Pound? Engleska funta? Ako je to, znak je ono L :)) Jeste, ako postoji u setu znakova.Ako ne postoji, koristi se #
unknown.348 mjova,
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.349 mjova,
> 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.350 ppekovic,
>> 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.351 obren,
> 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.352 ndragan,
/ 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.353 igor.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.354 janko,
> 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.355 dzoran,
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.356 ppekovic,
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.357 mjova,
> š > 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.358 obren,
> 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.359 obren,
> 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.360 skoprivica,
>-> ako vec simuliras YUSCII ;), onda je { == S, a ne s (== [). Nije, ali nije vazno...S je na [, a s je na {...
unknown.361 mjova,
> 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.362 dnikolic,
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.363 max.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.364 ppekovic,
>> 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.366 nimi,
pocetniku u TSR programiranju potrebna informacija o interrupt handler-u. M.D.Nikolic
unknown.367 obren,
> 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.368 mjova,
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.369 dzakic,
>> 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.370 max.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.371 mjova,
> 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.372 ppekovic,
>> 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.373 prvul,
Ů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.374 max.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.375 obren,
> 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.376 obren,
> 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.377 dusanp,
=> 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.378 max.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.379 prvul,
Ů> 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.380 mjova,
> 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.381 dgrbic,
:: 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.382 ppekovic,
>> 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.383 obren,
> 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.384 mjova,
> 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.385 radunovic,
Jesi li probao funkcije signal() i raise()?
unknown.386 mjova,
> 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.387 ljubao,
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.388 mjova,
> 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.389 ljubao,
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.390 nandi,
­> 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.392 ppekovic,
>> 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.393 ljubao,
** 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.394 ljubao,
** ? 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.395 ljubao,
Kakav je ono fajl u info direktorijumu ? Običan help ili nešto drugo i da li vredi da ga DL ? Ljuba
unknown.396 mjova,
> 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.397 bulaja,
│Kakav je ono fajl u info direktorijumu ? Obican help ili nesto drugo │i da li vredi da ga DL ? └─── Koji file? BCHelp? Vredi.
unknown.398 ppekovic,
>> 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.399 nesavic,
Ako li ko ima neki lepi modul sa prozorima na Cu, neka mi posalje... Unapred zahvalan, NeŠa!
unknown.400 janko,
> //-------------------------------------------- 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.401 mjova,
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.402 wizard,
>> Rešenje: lepo uzmeš pa napišeš gets_j (...) gets_j(anko)? :) <<Nenad<<
unknown.403 ljubao,
** 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.404 janko,
>>> 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.405 amilanov,
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.406 dusanp,
=> 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.407 mjova,
> 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.408 amilanov,
>> 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.409 amilanov,
>> 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.410 janko,
> 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.411 amilanov,
>> 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.412 dusanp,
=> 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.413 pmsimic,
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.414 bambi,
Da li neko zna kako da uklonim bedni cursor u Turbo C-u?
unknown.415 dusanp,
=> 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.416 janko,
> 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.417 mjova,
> 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.418 bambi,
Hvala svima koji su mi odgovorili...
unknown.419 djelovic,
Može neko da da rutinu za ubacivanje znaka u keyb buffer. Ungetch () radi samo za jedan znak :(.
unknown.420 mjova,
> 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.421 ivan.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.arj
unknown.422 skoprivica,
-> 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.423 dusanp,
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.424 kzoran,
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.425 dnikolic,
>> 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.426 hacker,
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.427 dusanp,
=> 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.428 dvidovic,
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.c
unknown.429 hacker,
Da, znam za taj lepi primer, danke
unknown.430 prvul,
Ů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.431 mjova,
> 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.432 dvidovic,
> 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.433 dusanp,
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.arj
unknown.434 bulaja,
**** 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.435 mjova,
> 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.436 dragisha,
ű> 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.437 viktor,
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.438 drakce,
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.439 bocko,
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.440 bulaja,
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.441 madamov,
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.442 bocko,
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.443 dusanp,
=> 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.444 darone,
>> 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.445 bocko,
>> 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.446 ndragan,
/ Zna li neko gde se tako nesxto mozxe nacyi, ko ga proizvodi, prodaje, Set code maguar? Bue_ Ndragan
unknown.447 viktor,
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.448 nick,
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.449 bulaja,
││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.450 madamov,
Dugačak je, dugačak ... B((
unknown.451 madamov,
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.452 darone,
>> Zeleo bih da nisam u pravu. Molim te, demantuj >> me. U pravu si ;( Eh kad ne čitam svaku reč. Izvini. darone
unknown.454 dusanp,
=> 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.455 hacker,
HVALA...
unknown.456 ndragan,
/ 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.457 kzoran,
Koristi li neko dflat user interfejs za c? Kako se to čudo instalira? Pozdrav, Zoran.
unknown.458 ppekovic,
>> 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.459 kzoran,
>> 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.460 vilic,
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.461 spantic,
> - 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.462 kzoran,
Hi! Ima li neko Microsoft C Bible ili nešto slično KKvrlo slično za MSC 6.0? Pozdrav, Zoran.
unknown.463 djelovic,
> 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.464 nkbog,
***** 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.465 djelovic,
> 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.466 nkbog,
>> 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.467 djelovic,
> 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.468 psti,
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.469 nkbog,
> 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.470 mjova,
> 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.471 ljubao,
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.472 jtitov,
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.473 dusanp,
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.474 dnikolic,
>> "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.475 spantic,
> 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.476 mjova,
> 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.477 mjova,
> 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.478 ndragan,
/ 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.479 jtitov,
> 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.480 dusanp,
=> 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.481 mjova,
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.482 janko,
> 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.483 mjova,
> 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.484 jtitov,
> 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.485 dusanp,
=> 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.486 mjova,
> 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.487 dnikolic,
>> 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.488 jtitov,
> 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.489 jtitov,
> 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.490 jtitov,
>>> 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.491 jtitov,
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.492 dusanp,
=> 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.493 ndragan,
/ 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.494 ndragan,
/ ­:( /naježila mi se kosa na glavi/ Ovo je jedan od boljih u poslednje vreme. Svaka čast.
unknown.495 dejanr,
>> 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.496 jtitov,
:)))))))))))))))
unknown.497 jtitov,
> 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.498 janko,
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.zip
unknown.499 mjova,
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.500 kzoran,
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.501 madamov,
>>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.502 dragisha,
ű> 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.503 mjova,
> 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.504 dnikolic,
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.505 madamov,
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.506 kanda,
>> 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.507 prvul,
Kako se radi ono zaključavanje slogova u fajlu? I da li je to moguće uraditi iz standardnog C-a (da pojednostavim: jel' se tako radi i pod VMS-om i UNIX-om? ) Unapred hvala na odgovorima, Prvul
unknown.508 djelovic,
> 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.509 mjova,
> 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.510 ppekovic,
>> 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.511 ppekovic,
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.512 ppekovic,
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.513 mjova,
može li mi neko reći pouzdan način da datoteku otvorenu kao "rt" prebacim u "rb"? probao sam sa setmode(fh, _O_BINARY), ali to nije to. ne prebaci se u binarno način čitanja (nemam pojma zašto) jer i dalje CR/LF čita kao LF. ne znam da li je neki bug ili jednostavno ne može uvek da se prebaci iz t => b. možda je problem što sam u sredini datoteke? 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.514 zzivotic,
> 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.515 janko,
> 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.516 todorp,
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.517 radunovic,
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.518 mjova,
> 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.519 mjova,
> 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.520 ppekovic,
>> 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.521 todorp,
Hi! Hvala tebi i ppekovicu.Resio sam problem sa spawnl(). Pozdrav od Todora.
unknown.522 djelovic,
> 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.523 radunovic,
Pitanje sam postavio na molbu jednog druga koji bi baze koristiou okviru autocad-a pa je samim tim ogranicen na 386 kompajlere.
unknown.524 djelovic,
> > 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.525 bojt,
>> 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.526 kuzma,
HELP! Jednom kolegi su potrebna znacenja sledecih prekidaca kod Microsoft- ovog C-a: /AL /Od /c Pa ako je neko raspolozen nek napise
unknown.527 bojt,
>> 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.528 kuzma,
Hvala!
unknown.529 dnikolic,
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.530 ppekovic,
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.532 dejanr,
Ako "pristaješ" na funkciju koja radi sa racionalnim brojevima, imam ja veliki izbor. Ako mora celobrojna, nemam.
unknown.534 ppekovic,
>> 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.535 janko,
> 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.536 ppekovic,
>> 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.537 mjova,
> 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.538 mjova,
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.539 djelovic,
> 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.540 djelovic,
> 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.541 obren,
> 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.542 cacxa,
... 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.543 ljubao,
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.544 ppekovic,
>> 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.545 ppekovic,
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.546 zormi,
* 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.547 djelovic,
> 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.548 ndragan,
/ 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.549 mjova,
> 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.550 ppekovic,
>> nađoh, ali pajo, ako me ne pohvališ drž' se dobro ;) Pohvaljujem te mjovo! ;) Hvala i svima ostalima! Paya
unknown.551 robert,
<:> 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.552 janko,
># 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.553 janko,
> 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.554 janko,
> 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.555 janko,
> 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.557 djelovic,
> 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.558 sasa,
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.559 zormi,
* > 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.560 mjova,
> 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.561 robert,
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.562 mjova,
> 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.563 pjankovic,
> 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.564 ivantod,
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.568 robert,
<:> 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.569 robert,
<:> 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.570 dnikolic,
>> 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.571 tesloni,
Ajde maheri ... Ima li ko TopSpeed C++ .... ... ­Ú-> Tesloni <-Ú­
unknown.572 rogi,
Stize Micro Emacs za Windowse sa kompletnim sourceom u c Rogi mewin10.zip
unknown.573 rogi,
A evo i uputstva za Micro Emacs u Windows "WRI" formatu. Rogi mewri.arj
unknown.574 rogi,
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.575 janko,
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.576 rogi,
Novosti o Borlandovim kompajlerima. Rogi 5new.rls
unknown.577 rogi,
Novosti o beta kompajleru za WINDOWS NT od Borlanda. Rogi win32.arj
unknown.578 rogi,
Izvinjavam se nije ZIP nego ARJ. Rogi
unknown.580 jtitov,
> Izvinjavam se nije ZIP nego ARJ. Uopste se ne izvinjavaj. Samo salji. Snacicemo se.
unknown.581 rogi,
Evo i GNU-CHESS v3.21 for WINDOWS Rogi chess321.arj
unknown.582 rogi,
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.583 ppekovic,
>> 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.584 dnikolic,
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.585 dnikolic,
Ko ime CODE BASE 4.xx? dn
unknown.586 janko,
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.587 zzivotic,
> 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.588 rogi,
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.589 janko,
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.590 mdimitrijevic,
Hi! Ima li neko source za Turbo C v2.0 za grafiku, scroll, prokaz slike ili slicno. Prilicno je vazno.
unknown.591 dnikolic,
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.592 ppekovic,
>> 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.593 vitez.koja,
-> system("arj a -vva a:arhiva *.*"); :)))) system("arj a -va -jt1 -r -we:\ -i1 a:arhiva *.*"); ^^^ ram disk... ;)
unknown.594 mdimitrijevic,
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.595 mornar,
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.arj
unknown.596 pjankovic,
> 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.597 mdimitrijevic,
Hvala pogledacu pa cu se javiti. mdimitrijevic
unknown.598 mdimitrijevic,
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.599 ndragan,
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.600 bearboy,
˙¨:> -> 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.601 bojanp,
Za sve one koji koriste Borland C++ 3.0 jedno pitanje. Da li vam radi utility WinSight? Pozdrav, Bojan
unknown.602 mornar,
Radi! ,ali Windowsi moraju da 'trce' u enhanced modu! Inace efekti nisu bog zna kako vidljivi, cak se nista i ne desava.
unknown.603 tesloni,
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.604 mornar,
Dynamic linking je ugradjen u BC++ 3.0 !
unknown.605 tesloni,
­Ú-> : Dynamic linking je ugradjen u BC++ 3.0 ! TNX... ... ­Ú-> Tesloni <-Ú­
unknown.606 paris,
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.607 robert,
<:> 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.608 mjova,
> 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.609 pstojanovic,
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.610 ppekovic,
>> 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.611 ppekovic,
>> 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.612 djelovic,
> 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.613 obren,
> 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.614 robert,
<:># define MK_FP(seg,ofs) ((void far*) (((long) (seg)<<16) | (ofs))) Kod Borlanda je ovaj makro već definisan... Robert
unknown.615 janko,
> 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.616 ppekovic,
>> <:># 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.617 dnikolic,
>> podrsku dinamickom linkingu ( podataka i procedura ), ili bar Sta je to? dn
unknown.618 dnikolic,
>> ili BC++ 2.0 ili 3.0 (to je i poslednja verzija Borland C++). Poslednja je valjda, 3.1? dn
unknown.619 ppekovic,
>> >> 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.620 robert,
<:> Poslednja je valjda, 3.1? OK, može biti... Izvinjavam se ako sam pogrešio.
unknown.621 jtitov,
> Poslednja je valjda, 3.1? Tacno, a da li je neko ima?
unknown.622 pstojanovic,
Hvala svima za opsirne savete.
unknown.623 todorp,
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.624 djelovic,
> 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.625 bearboy,
˙¨:> 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.626 todorp,
> 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.627 garderp,
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.628 todorp,
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.629 mjova,
> 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.630 todorp,
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.631 mjova,
> 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.632 todorp,
> 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.634 dnikolic,
>> Tacno, a da li je neko ima? Pa valjda je jtitov ima, ko bi drugi?!?!? :)) dn
unknown.635 mornar,
Ima li u nekoj grupi za C/C++ mesta, ili bi morao da otvorim nbovu grupu ? mornar
unknown.636 jtitov,
> 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.637 robert,
<:> 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.638 todorp,
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.639 janko,
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.640 mjova,
> 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.641 floyd,
­-> 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.642 todorp,
> 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.643 mornar,
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.644 djelovic,
> 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.646 djelovic,
> 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.648 mornar,
Hvala puno ! Mornar.
unknown.649 zvonko,
># 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.650 todorp,
> 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.651 robert,
<:> 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.652 mjova,
> 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.653 k.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.654 robert,
Da... kad malo bolje pogledam, može i bolje... ;)))) Robert.
unknown.655 todorp,
Hvala na lepom resenju! Pozdrav od Todora.
unknown.656 dnikolic,
>> 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.657 bulaja,
**** 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.658 pjankovic,
>># 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.659 todorp,
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.660 mjova,
> 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.661 robert,
<:> 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.662 todorp,
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.663 todorp,
> 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.664 obren,
> 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.665 todorp,
> 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.666 obren,
> 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.667 ilazarevic,
Može jedno početničko pitanje? Može... Daklem: Koja je razlika između signed i unsigned promenljivih?
unknown.668 glisin,
ŢŢŢ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.669 janko,
> 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.670 ilazarevic,
█ 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.671 ilazarevic,
Hvala i gliši i janku na objašnjenjima.
unknown.672 rogi,
Ukoliko neko poseduje datoteku "commdlg.h" molio bih ga da mi se javi na mailH povodom iste. Rogi
unknown.673 ciki,
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.674 d.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.675 janko,
> 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.676 mjova,
> 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.677 mjova,
> 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.678 rogi,
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.zip
unknown.679 rogi,
Evo i informacija o Paradox Engine 3.0 i nekim drugim novim borlandovim proizvodima. a.zip
unknown.680 garderp,
Da li si ti nešto već radio u paradox-u 2.0 ili samo nosiš vesti? Predrag (za Arape)
unknown.681 micko,
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.682 ppekovic,
>> 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.683 ciki,
>>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.684 mjova,
> 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.685 obren,
> 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.686 robert,
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.arj
unknown.687 dejanr,
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.688 zvonko,
># ># 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.689 dejanr,
>> > 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.690 d.petrovic,
Jel zna neko kako da pročitam serijski broj diska (adresa) ? Ima li tako nešto matična ploča ?
unknown.691 d.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.692 ppekovic,
>> 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.693 prvul,
Ů>> (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.694 mjova,
> Ima li tako nešto matična ploča ? nema, ali možeš pročitati SN biosa (nesigurno) ili chksum (još bolje)..
unknown.695 zzivotic,
> 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.696 d.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.697 nboskovic,
*> Ima li tako nešto matična ploča ? Možda ima procesor zapisano negde na nekoj adresi u sebi? (c) klap nikola
unknown.698 janko,
> 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.699 glisin,
ŢŢŢ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.700 todorp,
> 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.701 korvin,
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.702 mornar,
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.703 d.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.704 ppekovic,
>> 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.705 d.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.706 d.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.707 d.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.708 janko,
> 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.709 janko,
> 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.710 janko,
> 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.711 dragisha,
ű> 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.712 dragisha,
ű> 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.713 mjova,
> 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.714 glisin,
ŢŢŢ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.715 glisin,
ŢŢŢ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.716 d.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.717 d.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.718 dejanr,
>> 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.719 janko,
> 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.720 janko,
> 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.721 janko,
> 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.722 janko,
>> 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.723 korvin,
>> 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.724 glisin,
ŢŢŢ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.725 d.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.726 spantic,
> 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.727 prvul,
Ů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.728 darone,
>> 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.729 mstanic,
:: 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.730 janko,
> 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.731 janko,
> 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.732 janko,
> Uf! E, sada smo DEFINITIVNO promašili temu! (cccc...) Nema veze, bilo je zanimljivo. :) Hvala.
unknown.733 janko,
> 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.734 janko,
> Q: koja knjiga je najbolja za apsolutne C početnike? :) Zavisi od predznanja u drugim programskim jezicima.
unknown.735 korvin,
>> 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.736 korvin,
>> 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.737 robert,
<:>> 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.738 mjova,
> 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.739 mjova,
> 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.740 zvonko,
># Ovaj drugi je objektno orijentisani, ali kao i noviji ># Borlandovi kompajleri jede mesto na disku. Koliko mesta, koliko disketa i slično?...
unknown.741 ilazarevic,
█ 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.742 milan,
> 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.743 spantic,
> 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.744 janko,
> č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.745 todorp,
> 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.746 dejanr,
>> 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.747 mjova,
> 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.arj
unknown.748 ndragan,
/ 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.749 natila,
I mene to zanima. Pa ako nije neki mamut od fajl rado bih ga DL. Nemeth Attila
unknown.750 korvin,
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.751 janko,
> 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.752 zormi,
* 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.753 mstanic,
:: 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.754 mstanic,
:: 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.755 glisin,
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.756 mjova,
>> 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.757 obren,
> 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.c
unknown.758 todorp,
Mozda ti ovo pomogne. Nisam ih probao ali trebalo bi da radi. Pozdrav od Todora. mouse.arj
unknown.759 d.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.760 d.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.761 bearboy,
˙¨:> :)))) 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.762 mjova,
> Ă> 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.763 dejanr,
>> 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.764 d.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.765 glisin,
Hvala svima na poslatim rutinama. Pogledacu. ŢŢŢIGGYŮŮŮ
unknown.766 kzoran,
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.767 ppekovic,
>> 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.768 kzoran,
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.769 kzoran,
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.770 mstanic,
:: 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.771 mjova,
> 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.772 mjova,
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.773 dejanr,
Vidi PC.PROG/zastita.
unknown.774 djelovic,
Ima li ovde neko da koristi Paradox Engine? Imam par pitanja...
unknown.775 kzoran,
> 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.776 dusanp,
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.777 ndragan,
/ nisu prevedeni mislio sam na to da su ostali u C-u i na engleskom ;) Nekog je mrzelo da ih prevede na Ć?
unknown.778 djelovic,
> 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.779 bojanp,
>> 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.780 mstanic,
Kakve su i da li postoje neke bitnije razlike između TC 2.0 i TC 2.01. Milan
unknown.781 dragisha,
ű> 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.782 stal,
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.783 bulaja,
││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.784 robert,
<:> 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.785 mstanic,
>> 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.786 janko,
>>> 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.787 djelovic,
> - 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.788 glisin,
ŢŢŢ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.790 obren,
> 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.791 pedjam,
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.792 bojanp,
> 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.793 dusanp,
=> 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.794 bulaja,
│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.795 djelovic,
> 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.796 robert,
<:> 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.797 bojanp,
>│ 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.798 andrade,
*>> 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.799 mstanic,
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.801 djelovic,
> 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.802 zormi,
* BTW, ima li interesenata za članak "Sa C-a na C++ u tri * koraka"? Da.
unknown.803 glisin,
ŢŢ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.804 mstanic,
>> 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.805 garderp,
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.806 mstanic,
>> 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.807 mjova,
> 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.808 dejanr,
>> 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.809 mstanic,
>> 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.810 janko,
> 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.811 d.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.812 bearboy,
˙¨:> 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.813 garderp,
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.814 ppekovic,
>> - 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.815 mjova,
> 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.816 mjova,
> 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.817 mstanic,
>> 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.818 djelovic,
> 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.819 djelovic,
> 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.820 spantic,
> 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.821 garderp,
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.822 garderp,
│ 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.823 ppekovic,
>> 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.824 stomic,
$ 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.825 garderp,
│ 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.826 dejanr,
>> Š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.827 glisin,
He, he... lepo si to rekao: (skoro) sve... ŢŢŢIGGYŮŮŮ
unknown.828 dj.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.829 mjova,
> 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.830 pbojan,
Zamolio bih nekog sefa neke grupe o C++ da me ljubazno ubaci. Stize sveza snaga. pBOJAN
unknown.831 garderp,
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.832 dragisak,
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.833 pbojan,
> 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.834 bearboy,
˙¨:> Što se toga tiče TP i jeste (gotovo) novi programski ˙¨:> jezik :)). Koliko je ostalo stvari od Wirthovog pascala? Begin i end :)
unknown.835 djelovic,
> 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.836 garderp,
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.837 garderp,
ž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.838 dnikolic,
>> 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.839 dnikolic,
>> 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.841 pbojan,
>> 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.842 pbojan,
> 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.zip
unknown.843 mjova,
> 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.845 mdimitrijevic,
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.846 djelovic,
> 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.847 djelovic,
> Zna li neko kako da graficki ekran nacrtan u C-u odstampampam na stampacu Pogledaj BCHELP10 iz C direktorijuma.
unknown.848 pbojan,
> 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.849 pbojan,
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.zip
unknown.850 ppekovic,
>>>> 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.851 janko,
> 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.852 mstanic,
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.853 mjova,
> 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.854 mjova,
> 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.855 djelovic,
> > (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.856 dusanp,
=> 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.857 janko,
> 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.858 pbojan,
> 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.859 dgrbic,
:: 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.860 dusanp,
=> 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.861 dusanp,
=> 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.862 ppekovic,
>> 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.863 mjova,
>> 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.864 korvin,
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.865 bulaja,
│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.866 mjova,
> 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.867 mstanic,
>> ž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.868 mstanic,
>> 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.869 janko,
>>> ž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.870 garderp,
'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.871 pbojan,
> 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.872 bulaja,
│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.873 mjova,
> 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.874 mjova,
> 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.875 dgrbic,
:: 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.876 mstanic,
>> 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.877 korvin,
>> 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.878 korvin,
>> '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.879 ibrceski,
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.880 glisin,
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.881 nboskovic,
*> 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.882 prvul,
Ů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.884 dnikolic,
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.885 dnikolic,
>> 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.887 mjova,
> 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.889 janko,
> Ůš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.890 janko,
> 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.891 janko,
>> 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.892 janko,
> 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.893 bulaja,
│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.896 pjankovic,
> 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.897 pjankovic,
> 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.898 ppekovic,
>> 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.899 ppekovic,
>> 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.900 ppekovic,
>>> 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.901 glisin,
ŢŢ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.902 glisin,
ŢŢ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.904 dusanp,
=> 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.906 janko,
> ŢŢ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.907 janko,
> => 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.908 ppekovic,
>> 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.909 ppekovic,
>> 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.910 mstanic,
>> 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.911 mstanic,
>> 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.912 dusanp,
=> 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.913 dusanp,
=> 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.914 dusanp,
=> 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.915 bulaja,
│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.916 bulaja,
│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.917 dzakic,
> 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.918 mjova,
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.919 mjova,
> 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.920 dusanp,
=> 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.921 mjova,
> 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.922 d.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.923 janko,
> 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.924 janko,
> 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.925 janko,
> 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.926 korvin,
­­­> 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.927 korvin,
­­­> 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.928 ljubao,
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.929 bulaja,
││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.930 pbojan,
> 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.931 bulaja,
**** 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.932 ppekovic,
>> 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.933 dusanp,
=> 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.934 dnikolic,
>> 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.935 obren,
> 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.936 ljubao,
** 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.937 mjova,
> 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.938 ppekovic,
>> String u koji se upisuje je dugačak 150 bajta - više nego >> dovoljno za jedan float "%.2f" formata. Debuger u šake ... Paya
unknown.939 janko,
>││ 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.940 janko,
> 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.941 dusanp,
=> 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.942 bulaja,
│Nadite arhivu kbfix (ili int9fix, tako nekako). └─── \ibmpc\utility\int9fix2.zip (14 KB)
unknown.943 korvin,
­­­> 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.945 mdimitrijevic,
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.946 mjova,
> 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.947 broker,
> 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.948 robert,
<:> 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.949 skoprivica,
╠╣ 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.950 mdimitrijevic,
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.951 dtadic,
> 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.952 dnikolic,
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.953 mjova,
> 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.954 dusanp,
=> 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.955 mjova,
> veličine segmenta. nije veličina (valjda je uvek ista ;) nego rada sa segmentima. sad tek videh da sam pogrešno napisao.
unknown.957 janko,
Ima li neko PC-lint ili, uopšte, neki sveži lint (za ANSI C)?
unknown.958 mjova,
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.959 mmihajlovic,
> 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.960 mstanic,
>> 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.961 mjova,
> 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.962 mjova,
> 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.963 bulaja,
**** 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.964 nkbog,
Ima li neko PD source nekog GREP-alike programa? NB.
unknown.965 dragisha,
ű> 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.966 nkbog,
> Imam ja. žak sam ga i UL svojevremeno. A gde se nalazi? NB. ps. taj GREP mislim :)
unknown.967 jtitov,
Gospodo Cevasi, da li je moguce ubaciti u BC++ 3.1 da linker bude neki drugi, a ne tlink?
unknown.968 mstanic,
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.969 jtitov,
> 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.970 robert,
<:> 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.971 robert,
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.972 vili,
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.973 vilic,
#> 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.977 robert,
<:> 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.978 djelovic,
> 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.979 djelovic,
> 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.980 mrajacic,
> 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.981 d.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.982 mstanic,
>> 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.983 mstanic,
>> 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.984 vilic,
#> 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.985 vilic,
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.986 vilic,
#> 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