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, -> #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... 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, -> #2, djelovic
-> 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, -> #5, glisin
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, -> #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? 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, -> #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? 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, -> #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... 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, -> #11, ppekovic
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, -> #10, djelovic
-> 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, -> #12, djelovic
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, -> #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 /* 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, -> #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. ;)))) 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, -> #15, mkehler
> /* 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, -> #18, ppekovic
/* 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, -> #18, ppekovic
│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, -> #20, djelovic
██ 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, -> #22, mirkot
█ 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, -> #2, djelovic
>> 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, -> #19, igor.mil
Ŕ 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, -> #21, bulaja
Ŕ PPS Borland C je bolji od Microsoft C-a ;) Slažem se ;) ZK
unknown.28 ppekovic, -> #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)... ?? 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, -> #27, zkehler
>>Ŕ 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, -> #21, bulaja
> PPS Borland C je bolji od Microsoft C-a ;) zar to treba dokazivati? :)
unknown.31 igor.mil, -> #26, zkehler
> 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, -> #24, dnikolic
> 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, -> #25, dnikolic
>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, -> #33, djelovic
>> 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, -> #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 > 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, -> #19, igor.mil
>> 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, -> #31, igor.mil
>> 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, -> #36, maleksic
> 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, -> #39, spantic
Eh, tvom prijatelju nema pomoci! Jadnik koristi Turbo C, tu nema leka. Ustvari ima! Neka odma' predje na Microsoft C!!
unknown.41 maleksic, -> #38, igor.mil
>> 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, -> #39, spantic
Ŕ 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, -> #40, maleksic
Ŕ 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, -> #40, maleksic
>> 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, -> #42, 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.
unknown.46 zkehler, -> #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. 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, -> #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. 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, -> #48, ppekovic
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, -> #51, natila
>> 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, -> #51, natila
> 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, -> #54, djelovic
│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, -> #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... 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, -> #51, natila
> 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, -> #55, drakce
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, -> #55, drakce
╠ 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, -> #59, djelovic
│││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, -> #51, natila
> 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, -> #64, ppekovic
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, -> #65, madamov
>> 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, -> #69, ppekovic
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, -> #70, beki
>>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, -> #72, .bale.
>>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, -> #74, ppekovic
■■ 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, -> #72, .bale.
> 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, -> #72, .bale.
> 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, -> #77, znevenic
■■ 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, -> #78, miro
> ■■ 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, -> #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. Jel' ovo kompliment? Jeste, kompliment je! E, pa hvala! BTW, ovo je tema cccc...
unknown.83 ndragan, -> #76, alexa
>* 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, -> #84, sgopcevic
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, -> #86, gristic
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, -> #90, bearboy
* 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, -> #91, zormi
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, -> #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)? 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, -> #91, zormi
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, -> #92, gristic
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, -> #96, bojt
> 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, -> #92, gristic
> 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, -> #99, bearboy
>> '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, -> #100, beki
Hvala lepo. Ja sam mislio nešto selfmade... Ako baš mora i ako baš vredi možda... Pozdrav __GR__
unknown.104 fric, -> #101, igor.mil
> 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, -> #104, fric
> 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.