PCPROG.2

06 Nov 1992 - 26 Jul 1993

Topics

  1. algoritmi (223)
  2. ms.dos (250)
  3. asembler (141)
  4. jezici (278)
  5. pascal (1307)
  6. cccc (752)
  7. cpp (91)
  8. clipper (1027)
  9. baze.podataka (229)
  10. razno (379)
  11. van.teme (189)
  12. basic (56)

Messages - cccc

cccc.1 ppekovic,
Pošto smo se oslobodili C++ okupatora ;) i dali im temu, ovo je opet ona stara dobra cccc tema. Paya
cccc.2 zsavic,
čeleo bih preko MAIL-a da kontaktiram sa osobom koja: - ima knjigu Herberta Schildta "Born to code in C"; - je voljna da pozajmi knjigu na fotokopiranje. Pozdrav, Zoran.
cccc.3 vcalic,
Zna li neko mogu li se u Borland C++ 2.0 koristiti funkcije _read i _write tako da učitavaju podatke u bafer duži od 32K, tj. mogu li raditi i sa unsigned vrednostima a ne samo sa int, a da pri tom ne dođe do pada programa. Naime, ako stavim veličinu bafera tako da bude nešto manja od 64K, s vremena na vreme dolazi do blokiranja. Nisam baš uspeo da nađem uzrok ovome, pa ako neko zna...
cccc.4 djelovic,
> Zna li neko mogu li se u Borland C++ 2.0 koristiti funk > _write tako da učitavaju podatke u bafer duži od 32K, tj. mogu > unsigned vrednostima a ne samo sa int, a da pri tom ne dođe do Ne može. Da ne pričam o situaciji u kojoj je rec_size*n > 64K koja mi je oduzela dva dana mog života. MSC sve to lepo izdeli na 32K blokove, ali Borland tu još od onog Turbo C-a pravi sranja :(.
cccc.5 amilanov,
Pitanje za ljude koji se bave C-om, vole C, žive za C, mrze C ... Sećate se starog dobrog BASIC-a. Bio je glup ko truba, ali ... bar je imao funkcije koje rade pretvaranje - ASCII vrednosti u karakter - karakter u ASCII vrednost Da se razumemo, nisu ovo funkcije "atoi" i "itoa". One rade nešto "slično" ali malo drugačije. Dakle, sreo sam se sa problemom da slovo "A" treba da pretvorim u vrednost 65, i da 65 treba da pretvorim u slovo "A". E sad naravno tu mogu da uradim f-ciju sa "switch" i raznim "case" i sličnim stvarima, ali mi je nekako, premnogo komplikovano, da ne kažem ... ;) ! Postoji li ELEGANTNIJE ( VEOMA VAčNO - ELEGANTNIJE ;) !!! ) rešenje. Dali možda čak posoji neka f-cija za koju ne znam ( ha, ima i takvih ;) ), ali mislim da ANSI i Borland do 3.0 nema nešto slično. Il se varam ;) ! MS C ? HELP ? Pozdrav Milanov
cccc.6 janko,
> Sećate se starog dobrog BASIC-a. Bio je glup ko truba, ali > ... bar je imao funkcije koje rade pretvaranje > > - ASCII vrednosti u karakter > - karakter u ASCII vrednost > HELP ? C-u ne trebaju funkcije za to. I jedno i drugo su ISTO. Probaj.
cccc.7 djelovic,
> - ASCII vrednosti u karakter > - karakter u ASCII vrednost Da bi prebacio char u int, samo ispred char vrednosti moraš da staviš (int). Npr.: int i = (int)'A' /* i = 65 */ ... char c = 'C'; printf ("%d", (int)c); Naravno, kao što si uradio ovu konverziju, tako ispred int vrednosti možeš da staviš (char), (float), ili neki drugi tip podataka. Ono što je zanimljivo primetiti jeste da C mnoge od ovih konverzija radi automatski, tako da slobodno možeš da napišeš int i = 'A'; i kompajler će 'ladno progutati celu konstrukciju i staviti 65 u i! Takođe, možeš da uradiš recimo char c = 'A'; c = c + 2; /* c = 'C' */ jer kompajler to interpretira kao c = (char)((int)c + 2); U principu, teško da će ti ove konverzije nešto mnogo zatrebati. Jedini slučaj u kome su one baš neophodne jeste onaj gornji sa printf naredbom, gde moraš da mu daš int vrednost jer printf nema proveru tipova pa onda kompajler ne može da izvrši automatsku konverziju.
cccc.8 amilanov,
> Da bi prebacio char u int, samo ispred char vrednosti > moraš da staviš (int). Npr.: > > int i = (int)'A' /* i = 65 */ Ma, radio ja to isto ali, ha, "upetljao" stvari, pa prosleđivao pogrešne stvari (parametre), i dobijao psovke na ekranu od BC-a, i tako posumnjao da postoji nešto što nisam znao, pa posumnjao u BC ;), da je nekako poblesavio ;), i na kraju shvatio da sam JA poblesavio pa pravio neoprostive početničke gluposti :)) !! Evo kako je bilo (iščupani skraćeni primer): #include <stdio.h> #include <string.h> int main(void) š char slovoŠ1Ć; char recŠ3Ć = "ABC"; strncpy(slovo, rec, 1); printf("%sĐn", slovo); printf("%dĐn", (int)slovo); return 0; ć E, ovo vraća : A -12 Daklem glupost. Ha, ha, gde je tu bila greška ? NAGRADNO PITANJE ;))) ?!! Zahvaljujem djelovicu i janko-u koji su mi pomogli da se odblesavim :))), tojest vratim onamo gde sam i mislio da je sve OK i pronađem grešku ! Hvala !!! Pozdrav (ODblesavljeni ;)) ) Milanov
cccc.9 robert,
<:> Daklem glupost. Ha, ha, gde je tu bila greška ? NAGRADNO PITANJE <:> ;))) ?!! Pa slovo[1] ti je niz a slovo ti daje ukazatelj na niz pa naravno da si dobio "\$%^%^&* kad si pokušao da štampaš vrednost ukazatelja :).
cccc.10 janko,
> char slovoŠ1Ć; > char recŠ3Ć = "ABC"; > strncpy(slovo, rec, 1); > printf("%sĐn", slovo); > printf("%dĐn", (int)slovo); U prvom slučaju očekivan je pointer na char, a dao si mu char. U drugom je očekivan int a dao si mu iskasapljeni pointer. Ukratko, da si probao još šest kombinacija ;) iscrpnim pretraživanjem došao bi do rešenja. ;) Probaj da pročitaš neku knjigu o C-u. Imam vrlo jak utisak da 'programiraš na slepo.' Usput ne 'janko-u' :( već 'Janku.'
cccc.11 amilanov,
> Pa slovoŠ1Ć ti je niz a slovo ti daje ukazatelj na niz pa > naravno da si dobio "Đ$%ž%ž&* kad si pokušao da štampaš > vrednost ukazatelja :). Znam, kasno sam uvideo "glupost prve kategorije" :))) ! Popravio se, pa neću više da davim ljude za glupost. Obećavam :))))))))) ! Pozdrav Milanov
cccc.12 amilanov,
> Ukratko, da si probao još šest kombinacija ;) iscrpnim > pretraživanjem došao bi do rešenja. ;) Umalo da se to desi ;))) ! Naravno, šalim se. Uzeo ja debugger u ruke ;), pa olovku ;), pa algebru za prvi razred ;) i našao GLUPOST. Nije bilo lako, ali borili smo se lavovski ;)) ! > Probaj da pročitaš neku knjigu o C-u. Imam vrlo jak utisak > da 'programiraš na slepo.' Ma, čitao ja njih na tone i tone :), ali nigde nisam našao o ovom mom problemu ;). Naravno šalim se. U pravu si za ono na slepo, utoliko više što mi se program sastoji od 8 modula koji su nezavisni, iako se pozivaju promenljive između, pa kad proslediš pogrešnu stvar za koju "si mislio da je onako, ali je bila ovako", pa neće, pa neće, pa posumnjaš u majku rođenu, a ne u compiler, ili znanje svoje ;)))) ! > Usput ne 'janko-u' :( već 'Janku.' Sorry, "bez teških punjenja" :). Nisam mislio ništa loše sa tim "janko-u", jel uvek polazim od toga da na SEZAM-u ;), ima bar još poneki Janko, a korisnik sa Username janko si samo ti, pa mi je bezveze da kažem Janku, pa posle ispade da sam se zahvaljivao "pogrešnom" čoveku :)) ! Ma, shvataš, ne :)) ! Pozdrav Milanov
cccc.13 glisin,
BEEP! Katastrofa! Pazi sta radis sa C-om!!! Mislim na char nesto[3] = "ABC"; Ovo ce da prodje jer se referencira adresa &nesto, odatle se smesta ABC (65, 66, 67) ali i 0 !!! Niz "ABC" je 65,66,67,0 pa treba da stoji char nesto[4] = "ABC"; da bi ono bilo korektno. Zasto? Pa evo na primer char str[3] = "ABCD"; int num; Sta je u 'num'??? Pa bajtovi 68 i 0! String se lepo tamo prelije u vecini implementacija. Neke su pametne pa se deru, neke nisu. Ovo sve i nije strasno, ali pazi !!! char str[3]; float a, b, c, d; ... strcpy (str, "Ovo je neka recenica koja ide u str..."); ce vrlo verovatno UNISTITI sadrzaj a, b, c i d varijabli, zavisno kako koji kompajler formira DSS, a bogami moze da se desi da 'spali' i malo vise ;-) Pazi na to! ŢŢŢIGGYŮŮŮ
cccc.14 wizard,
Da li postoje neke biblioteke za manipulacije slikama (bilo koji standardni format - PCX, TIFF...), po mogućstvu C/CPP sorsu? Makar za čitanje jednog od tog formata...
cccc.15 ppekovic,
>> Da li postoje neke biblioteke za manipulacije slikama (bilo koji >> standardni format - PCX, TIFF...), po mogućstvu C/CPP sorsu? Makar za >> čitanje jednog od tog formata... Imaš u sezamovim dir-ovima i po konferencijama opise nekoliko formata. Mislim da ne bi trebalo biti nikakvog problema da se na osnovu toga naprave programčići kakvi ti trebaju. Paya
cccc.16 robert,
<:> Imaš u sezamovim dir-ovima i po konferencijama opise nekoliko <:> formata. Tačno, a za PCX format ima i sorsova na C-u za prikaz slika.
cccc.17 wizard,
>> Tačno, a za PCX format ima i sorsova na C-u za prikaz slika. Gde?
cccc.18 dnikolic,
Ima li neko nekakav mali kalkulator uradjen u C-u? dn
cccc.19 mjova,
> Ima li neko nekakav mali kalkulator uradjen u C-u? ima valjda neki napisan kao primer za tekst u računarima. valjda ima to u RSOFT-u, ako ne nađeš, znam ko ima ;)
cccc.21 robert,
Imaš u direktorijumu R:\IBMPC\INFO fajl pctecref.zip ili nekako slično, uostalom, pored naziva ima opis arhive pa ćeš sigurno naći. Tu imaš opis formata i neke rutine u C-u za osnovni rad sa PCX fajlovima.
cccc.22 janko,
Nisam primetio da je iko u ovim javnim konferencijama pohvalio novi program SCD. Probao sam ga i jako mi se dopada. Ranije sam, da bih dobio takav spisak za ceo disk, morao da radim FS pa preusmeravanje u fajl pa AWKovanje, a sada samo jedan red uradi posao. žestitam mjovi na dobro urađenom poslu.
cccc.23 vukota,
>> Da li postoje neke biblioteke za manipulacije slikama (bilo koji >> standardni format - PCX, TIFF...), po mogucstvu C/CPP sorsu? Makar za >> citanje jednog od tog formata... Dobro ti je robert rekao uzmi iz R:\IBMPC\INFO\pbtecref.zip imas source na C-u rutine za enkodiranje i dekodiranje u .PCX , a vazno ti je i zaglavlje od 128 bajtova iz koga marnes sve potrebne informacije, kao i ono o paletama (ako radis sa slikama u boji). - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - A ono sto neko pomenu "ima na sezamu", pa pobogu ljudi necu valjda da citam 74 stampane strane o TIFF formatu (NIJE GRESKA:STAMPANE !!!) da bih posle mesec dana sastavljao dve rutine za citanje i upis u (iz) TIFF(-a) Prema tome molicu lepo ako ima neko vec gotove rutine za rad sa TIFF i GIF fajlovima (source na C-u ili C++),neka mi se javi , a bilo bi pozeljno kratko objasnjenje (ne vece od 5 stampanih strana).
cccc.24 mjova,
> žestitam mjovi na dobro urađenom poslu. trljam oči, ne verujem, al' ipak jeste ;) hvala ti, mada još ne mogu da poverujem ;)
cccc.25 mjova,
malopre naiđoh na jedan manji problem u vezi C-a i ASM-a, pa reko da ga pomenem ovde ako zanima nekog (a možda i neku sugestiju dobijem ;). evo o čemu se radi: ako je potrebno iz C-a napisati neku asm instrukciju, onda se koristi dobro poznata kombinacija 'asm {...}', a ako još treba neka labela da se doda, e onda treba 'seći' grupu naredbi: asm { .... } lbl:; asm { .... } što i nije neki problem jer se svodi na to da prevodilac mora nekako znati da labele postoje i da ih nekako imenuje (interno) pri prevođenju. ako labele strpamo u zagrade '{}' (ili iza 'asm') onda se one legalno prenose asembleru (lepo se vidi sa -S opcijom - borland) i C prevodilac ih *uopšte ne poznaje* - sasvim glup, ali rešiv problem. (ako već zna da se npr. iz JMP nalazi labela, i lepo je tretira, onda može da provali da se ispred ':' nalazi ime neke labele..) ovo nije predmet ove poruke, već to da se instrukcija CALL prenosi onakva kako je napisana u C-u: ; ; asm call ps_mess; ; call ps_mess dakle, ne poznaje da iza CALL ide ime (koje obično prevodi u neko ˙jedinstveno˙ ime kao: ˙@8@770˙), pa se ceo red samo prosledi asembleru. to sad ima druge posledice pa se ime labele mora napisati *IZA* 'asm', i time zaobići ispravno deklarisanje labele: ; asm { ; ps_mess:; ; ps_mess : znači da će baksuz ;) imati prilike da dâ ime labele isto kao i ono koje će C prev. smisliti, pa će u izvesnim situacijama biti problema. znam da je šansa da se tako nešto desi minimalna, ali nikad ne reci nikad ;). ovo smatram, ne bug-om, već propustom! znam da se problem može rešiti pogodnim push/jmp kombinacijama, ali neću da izigravam kompajler, dosta mi je što moram želje da prevodim u C ;). (ps. kome još može da zatreba CALL u C-u?)
cccc.26 janko,
> trljam oči, ne verujem, al' ipak jeste ;) > > hvala ti, mada još ne mogu da poverujem ;) Uvek sam primenjivao stil 'po zasluzi.' Sada si stvarno zaslužio čestitku. A stvarno nisam nigde video nikakve komentare (možda ne čitam odgovarajuće konferencije?) Samo nemoj da se uobraziš. ;)
cccc.27 mjova,
> call ps_mess najcrnje od svega je to što se u ovoj situaciji mora ručno podešavati far/near poziv jer se RET tretira ispravno i to onda dovodi do zakucavanja 100%.
cccc.28 dusanp,
Uz FLEX i BISON idu dosta dobro pisani fajlovi, spremni za štampu... Problem je u tome što su u ne_daj_bože formatu, gde se na kraju svakog reda texta nalazi <LF>, a na kraju svake strane <FF>. Ukratko, tekst fajl koji se samo može kopirati na štampač. Pošto mi je bilo potrebno, složio sam ova dva fajla u Word for Win-u, sredio pasuse, i napravio kulturne dokumente. Ako se odštampaju ovako složeni tekstovi, zauzimaju duplo manje mesta na papiru. Ako ima interesa, mogu da ih UL ovde...
cccc.29 dusanp,
Kad smo vec kod YACC-a, znam da je bilo reci o tome gde moze da se nadje, ali ne mogu sad da se setim. Da li je ostavljen negde u diru ili u konferenciji?
cccc.30 konan,
Molim sve koji imaju napisan, dobijen ili bilo kako resen problem rada sa misem u obliku neke MOUSE.LIB i sl. da mi se jave na mail ili da ostave ovde datotekicu. Mnogo se zahvaljujem. Konan Simerijanac
cccc.31 mjova,
> Molim sve koji imaju napisan, dobijen ili bilo kako resen > problem rada sa misem u obliku neke MOUSE.LIB i sl. da mi > se jave na mail ili da ostave ovde datotekicu. imaš nekoliko datoteka sa izvornim kodovima za pacova u C-u, mislim da baš ovde ima jedna datoteka koju je ostavio (a valjda i složio) obren. pogledaj malo po pc.prog i pc.soft (možda ima i tamo). ovde ti šaljem malo koda koji sam ja napisao (malo gledajući šta je obren radio) za C++. ima još nekih stvari koje bi dosta ubrzale rad, ali mrzi me da to sad diram. ako imaš pitanja, tu sam. sy_mouse.arj
cccc.32 todorp,
Da li moze neko da mi kaze zasto ovo ne radi??? Trebalo bi da bude tsr koji svakih nekoliko sekundi bipne. Uglavnom zaglavljuje :((((( Ovo ne radi i kad se int 1c zameni sa int 8. #include <dos.h> #include <stdio.h> void (interrupt far *oldtimer)( void ); void interrupt far newtimer( void ); void beep(void); int temp=0; void main(void) { oldtimer=getvect(0x1c); setvect(0x1c,newtimer); keep( 0,(_SS+(_SP/16)-_psp)); } void interrupt far newtimer(void) { (*oldtimer)(); beep(); } void beep (void) { union REGS inregs,outregs; temp++; if (temp==40) { temp=0; inregs.h.ah=0x02; inregs.h.dl=0x07; intdos(&inregs,&outregs); } }
cccc.34 fole,
Kako wÂáŤĚ╣█Ś?
cccc.35 fole,
Kako
cccc.36 djelovic,
> Da li moze neko da mi kaze zasto ovo ne radi??? Trebalo bi da bude tsr > koji svakih nekoliko sekundi bipne. Uglavnom zaglavljuje :((((( > i kad se int 1c zameni sa int 8. Mislim da u rutini beep pozivaš DOS što je nešto što tvoj TSR, ovakav kakav jeste, ne bi trebao da radi. Ubaci CONIO.H u tvoj program i koristi funkcije sound () i nosound (). Van toga, ovako na prvi pogled ne primećujem neke krupne greške, ali bi možda mogao da pogledaš primer iz helpa za komandu keep.
cccc.37 dragisha,
ű> Da li moze neko da mi kaze zasto ovo ne radi??? Trebalo bi da ű> bude tsr koji svakih nekoliko sekundi bipne. Uglavnom ű> zaglavljuje :((((( Ovo ne radi i kad se int 1c zameni sa int ű> 8. ű> inregs.h.ah=0x02; ű> inregs.h.dl=0x07; ű> intdos(&inregs,&outregs); Gnijezdiš DOS. Ovako kako si napisao ovaj beep, svaki put kad se PC nađe u DOS pozivu kad okine interrupt, imaš šanse da crkne. Izvedi beep bez DOS pozivanja. Najbolje da pri jednom interruptu uključiš zvučnik na nekoj frekvenciji, a pri sljedećem da ga isključiš. Onda sačekaš koji ciklus da ti melodija:) dobije smisao i onda jopet. Pozdrav, dd P.S. Kako uklj/isklj zvučnik je malo šira tema...
cccc.38 micko,
Zdravo, Da li mozda neko ima ili zna gde ima YACC ili neka slicna vrsta programa za generisanje pasresa u C-u. Ne interesuje me UNOX verzija vec PC varijanta. (ono gore je PARSER). Pozdrav CODOR
cccc.39 dusanp,
=> Da li mozda neko ima ili zna gde ima YACC ili neka slicna => vrsta programa za generisanje pasresa u C-u. Ne => interesuje me UNOX verzija vec PC varijanta. (ono gore je => PARSER). To sam i ja pitao pre neki dan, i niko se nije javio... A nesto ne mogu da se setim, ali mislim da je nekad bio na Sezamu YACC za PC.
cccc.40 garderp,
Pogledajte malo starije konferencije. Negde u PC.SOFT-u se nalazi berkli vezija yacc-a
cccc.41 nkbog,
> Negde u PC.SOFT-u se nalazi berkli verzija yacc-a U PC.SOFT:unix. Ne znam koja poruka. A bulaja bi mogao da je prebaci u \IBMPC\C da ne bi svaka dva meseca ovde objasnjavali gde je. NB.
cccc.42 bulaja,
│ Negde u PC.SOFT-u se nalazi berkli vezija yacc-a └─── PC.SOFT: 3.303 ->294 unix nkbog 10.09.91. 15:27 byacc.zip Da ide u dir?
cccc.43 djelovic,
> Da ide u dir? Well, svakihh mesec dana neko ga traži. Trebalo bi. (Ili: Tako treba!) Ukoliko nekome treba kompletno uputstvo za YACC, vikajte.
cccc.44 dusanp,
=> Da ide u dir? Naravno. Ali mislim da treba da bude u C diru, a ne u PROGu. Takodje i FLEX treba baciti u C...
cccc.45 garderp,
Pa ukoliko je to kompletno uputstvo za YACC kompletnije od onog koje se dobija u obliku TEXT file-a onda mi sigurno treba. Ako imas nesto opsirno i za LEX takođe sam zainteresovan.
cccc.46 ppekovic,
>> Pa ukoliko je to kompletno uputstvo za YACC kompletnije od onog >> koje se dobija u obliku TEXT file-a onda mi sigurno treba. Ako imas >> nesto opsirno i za LEX takođe sam zainteresovan. Upustvo kako za yacc tako i za lexx imaš na FON-u. Javi se pa svrati. Paya
cccc.47 zsiz,
Učim C-jezik. Probao sam da kompajliram program: /* --------------------------------------------- */ /* 1 */ /* program za izracunavanje 4 osnovne rac. oper. */ /* 2 */ /* --------------------------------------------- */ /* 3 */ #include <stdio.h> /* 4 */ #define PC '?' /* 5 */ main() /* 6 */ { /* 7 */ float (a,b); /* 8 */ char [op]; /* 9 */ float [rezultat]; /* 10 */ putchar(PC); /* 11 */ while(scanf("%f%c%f" ,&a,&op,&b)!=EOF) /* 12 */ { /* 13 */ switch (op) /* 14 */ { /* 15 */ case '+': rezultat = a + b; break; /* 16 */ case '-': rezultat = a - b; break; /* 17 */ case '*': rezultat = a*b ; break; /* 18 */ case '/': rezultat = a/b ; break; /* 19 */ default: printf("GRESKA - POGRS OPERA\n"); /* 20 */ printf("DOZVOLJENI : + - * i /\n"); /* 21 */ putchar(PC); /* 22 */ continue; /* 23 */ } /* 24 */ printf("REZULTAT JE %g\n", rezultat); /* 25 */ putchar(PC); /* 26 */ } /* 27 */ } /* 28 */ Kompajler je izbacio sledeće poruke: D:\CTUTOR\SMALL_C>cc rac.c Small-C Compiler, Version 2.1, (Rev. 75) Copyright 1982, 1983, 1985 J. E. Hendrix char [op]; /\ **** must declare first in block while(scanf("%f%c%f" ,&a,&op,&b)!=(-1)) /\ **** illegal address case '-': rezultat = a - b; break; /\ **** must be lvalue case '*': rezultat = a*b ; break; /\ **** must be lvalue case '/': rezultat = a/b ; break; /\ **** must be lvalue Da li može neko da mi kaže šta treba da ispravim da bi se program dobro kompajlirao?
cccc.48 micko,
Zdravo, Obzirom da nema uputstva za YACC u opkviru onoga sto je u PC.SOFT svakako sam zainteresovan. Kako bi mogli da se dogovorimo obzirom da sam iz NS CODOR
cccc.49 robert,
<:> main() /* 6 */ <:> { /* 7 */ <:> float (a,b); /* 8 */ <:> char [op]; /* 9 */ ===== <:> float [rezultat]; /* 10 */ =========== <:> putchar(PC); /* 11 */ Ono podvučeno su ti deklaracije za polja tj. u uglastim zagradama se nalazi veličina deklarisanog polja. Pošto kod tebe nema imena polja, u stilu: char ime [veličina], mora da dođe do greške. Ne znam kako je kod Small C kompajlera ali kod normalnih kompajlera bi moglo da stoji sledeće: ... main() { float a, b, rezultat; char op; putchar(PC) ... /* nastavak programa */
cccc.50 mjova,
ne znam šta si ovim hteo da kažeš: > float (a,b); /* 8 */ > char [op]; /* 9 */ > float [rezultat]; /* 10 */ ali tu je greška, ono bar za početak. > float (a,b); /* 8 */ ovo je trebalo da bude neka deklaracija funkcije ili šta? postoji float i zagrade, ali nema i imena fn. kad još pogledam i shvatim da nema nikakve funkcije osim main, onda bi to trebalo da ima drugi smisao: float a, b; /* 8 */ slično je i za: char op; /* 9 */ float rezultat; /* 10 */ greška je u tome što si hteo da napraviš promenljivu na sličan način koji služi za definiciju nizova: char niz[članova]; dakle pravim 'niz' char-ova, dužine 'članova'.
cccc.51 dusanp,
Ja obecah pre nekog vremena, pa nista. Ova arhiva sadrzi uputstva iz FLEX-a i BISONA (yacc za unix) slozena u W4Wu, tako da uputstvo za lex staje na 8 strana, a uputstvo za yacc na 16ak. Ukoliko bas ne koristite Word for Windows (zar ima i takvih?) vicite, pa da posaljem samo tekst slozen po pasusima. Inace je originalno uputstvo grozno prilagodjeno unixu i stampi uz pomoc obicnog kopija na stampac. lex-yacc.arj
cccc.52 zsiz,
$main() ${ $ float a, b, rezultat; $ char op; $ putchar(PC) $ ... /* nastavak programa */ Evo šta kaže kompajler na gornje redove programa : Copyright 1982, 1983, 1985 J. E. Hendrix float a,b; /\ **** no semicolon char op; /\ **** must declare first in block float rezultat; /\ **** no semicolon Ostale primedbe su, kompajleru, ostale iste kao i pre: while(scanf("%f%c%f" ,&a,&op,&b)!=(-1)) /\ **** illegal address case '-': rezultat = a - b; break; /\ **** must be lvalue case '*': rezultat = a*b ; break; /\ **** must be lvalue case '/': rezultat = a/b ; break; /\ **** must be lvalue zsiz
cccc.53 zsiz,
$ne znam šta si ovim hteo da kažeš: $> float (a,b); /* 8 */ $> char [op]; /* 9 */ $> float [rezultat]; /* 10 */ $ali tu je greška, ono bar za početak. $> float (a,b); /* 8 */ $ovo je trebalo da bude neka deklaracija funkcije ili šta? To su linije u kojima se deklarišu promenljive. Ja sam prvo napisao te linije prema onome kako mi predlažeš $ float a, b; /* 8 */ $ char op; /* 9 */ $ float rezultat; /* 10 */ ali vidi šta mi je kompajler na to progunđao: Copyright 1982, 1983, 1985 J. E. Hendrix float a,b; /\ **** no semicolon char op; /\ **** must declare first in block float rezultat; /\ **** no semicolon Ostale njegove primedbe se nisu menjale i bile su: while(scanf("%f%c%f" ,&a,&op,&b)!=(-1)) /\ **** illegal address case '-': rezultat = a - b; break; /\ **** must be lvalue case '*': rezultat = a*b ; break; /\ **** must be lvalue case '/': rezultat = a/b ; break; /\ **** must be lvalue zsiz
cccc.54 mjova,
> ali vidi šta mi je kompajler na to progunđao: menjaj kompajler, to jednostavno mora da radi!
cccc.55 robert,
<:> float a,b; <:> /\ <:> **** no semicolon E ovako, malo si čekao na odgovor ali to je zato što sam hteo da pogledam taj bajni Small C kompajler. Ustanovio sam da on, pre svega, uopšte nema floating point podršku tako da ne možeš da koristiš brojeve i aritmetiku u pokretnom zarezu i zato ti javlja sve one greške. Zato deklariši sve promenljive kao 'int' i teraj tako. Kao drugo, probao sam da napišem nešto slično kao tvoj program ali nikako nisam uspeo da ga nateram da radi kako treba !!! Prevede se ali posle ne radi ono što mu je rečeno. Zato još jedan savet: pređi pod hitno na nešto bolje, za početak ti savetujem TC 2.0. Nije velik (zauzima oko 2M sa svim drangulijama a može da se skreše i na manje) i lepo radi i jednostavan je za korišćenje i ima help i brate, kad pogrešiš, javi ti i šta i gde si pogrešio. Ovaj Small C kompajler je, po meni, samo dat kao primer pisanja kompajlera (zato je i dat sors) ali za ozbiljniji rad je suviše siromašan. Ja sam se sat vremena samo nervirao oko njega ;). Pozdrav.
cccc.56 ppekovic,
>> Evo šta kaže kompajler na gornje redove programa : >> >> Copyright 1982, 1983, 1985 J. E. Hendrix Koji to kompajler koristiš??? Ono što je robert napisao je elementarni C program! Paya
cccc.57 dzakic,
> float a,b; > /\ >**** no semicolon > char op; > /\ >**** must declare first in block A možda tvoj C (ma kako to neverovatno zvučalo) jednostavno nema tip float - seća li se još neko Amstrad/Spectrumovog Hisoft C-a? Probaj da staviš int umesto float pa vidi šta se onda dešava. Ne zaboravi da promeniš i formate u printf/scanf.
cccc.58 zsiz,
>menjaj kompajler, to jednostavno mora da radi! U pravu si.Hvala za pomoč. Pozdrav. zsiz
cccc.59 zsiz,
>treba !!! Prevede se ali posle ne radi ono što mu je rečeno. Zato još >jedan savet: pređi pod hitno na nešto bolje, za početak ti savetujem >TC 2.0. Nije velik (zauzima oko 2M sa svim drangulijama a može da se U pravu si. Da TC 2.0. Imam još od pre Tools za TC, a TC 2.0 je znatno manji od MS C-a. Hvala za pomoč. Pozdrav. zsiz
cccc.60 zsiz,
>A možda tvoj C (ma kako to neverovatno zvučalo) jednostavno nema tip >float - seća li se još neko Amstrad/Spectrumovog Hisoft C-a? Probaj >da staviš int umesto float pa vidi šta se onda dešava. Ne zaboravi da >promeniš i formate u printf/scanf. Program se kompajlirao bez greške ali kada se pokrene izbaci ? a kada ja ukucam bilo koji char (* + / ili -) on uvek izbaci poruku da sam pogrešio. Da stavio sam int umesto float. Kompajler stvarno nema floapromenljive tipa float.
cccc.61 dzakic,
Pre nekog vremena ovde je govoreno o pisanju mouse event rutine. Tada je rečeno i kako podesiti vrednost DS pri ulasku u nju: (large model) asm mov ax, seg _DATA; asm mov ds, ax; E, fora je u tome što kompajler na ovo progunđa nešto u stilu "Unknown symbol _DATA in..." Prestaje da se buni tek kad se prevođenje izvrši preko asemblera (opcija -B). Nije da mi ovo nešto previše smeta, ali ipak, ima li načina da se izbegne?
cccc.63 petrovics,
Imam jedan program sa CodeViev V3.0 koji mi je uz MS C 6.0. Naime, program lepo prevedem sa parametrima /Zi i /Od. Onda pozovem CV i u njemu ucitam sors programa kojeg debagujem. Sors se lepo pokaze ali cim startujem trejs ili step prikaze se listing u asembleru i nemoze vise da se dobije u C-u (nece sa F3). Inace na racunaru 386sx sa 2MB imam stavljen QEMM i programe iz paketa PC Kwik. Unapred hvala ! pozdrav, PACA
cccc.64 mjova,
> preko asemblera (opcija -B). Nije da mi ovo nešto previše > smeta, ali ipak, ima li načina da se izbegne? možda je lakše da napišeš jednu pragma direktivu (inline)? što se tiče drugog rešnja (nešto obuhvatnije za sve modele) mislim da nije jednostavno izvesti iz drugih razloga (ali bi valjda moglo da se sredi nekako?). svaki model ima drugačiji naziv za data segment (nper razlika postoji između L i H modela u imenu - da ne davim sad time), pa bi drugačije rešenje zahtevalo #if-ove itd. drugo, u razmim modelima pointeri imaju drugačiji izgled (S, L i H) pa se i o tome mora voditi računa. pretpostavljam da postoji neka direktiva, ali opet asembleru, koja bi podesila DS na ispravnu vrednos, ali kako sam pretrpan literaturom originalnog paketa ;), onda ništa od toga. trenutno mislim da je najbolje rešenje napisati EH u asmebleru, pa onda lepo ulinkovati u exe.
cccc.65 dzakic,
>> preko asemblera (opcija -B). Nije da mi ovo nešto previše >> smeta, ali ipak, ima li načina da se izbegne? > > možda je lakše da napišeš jednu pragma direktivu (inline)? A možda bih je i napisao kad bih bio pretrpan literaturom originalnog paketa. :) Ovako... help za #pragma inline je jaaako 'opširan', pa se verovatno nisam snašao u gomili informacija. Hvala. > što se tiče drugog rešnja (nešto obuhvatnije za sve modele) mislim da > nije jednostavno izvesti iz drugih razloga (ali bi valjda moglo da se > sredi nekako?). svaki model ima drugačiji naziv za data segment (nper > razlika postoji između L i H modela u imenu - da ne davim sad time), > pa bi drugačije rešenje zahtevalo #if-ove itd. Varijanta sa seg _DATA se OK prevodi (i čak radi:) u small, compact i large modelu. Za tiny, medium i huge nisam instalirao biblioteke pa ne mogu da probam. Ne vidim razlog zbog kog ne bi radilo i u prva dva.
cccc.66 peca.st,
Ima li neko kod za snimanje i citanje *.pcx, *.gif ili *.tif formata? Ako ima molio bih da ga posalje? CU P e C a
cccc.67 wizard,
>> Ima li neko kod za snimanje i citanje *.pcx, *.gif ili *.tif formata? Ja sam to pitao pre nekoliko nedelja, i preporučio bih ti da uzmeš fajl PBTECREF.ZIP iz \ibmpc\info direktorijuma. Odnosi se na .PCX i ima par primera u C-u.
cccc.69 peca.st,
!-> Ja sam to pitao pre nekoliko nedelja, i preporučio bih ti da !-> uzmeš fajl PBTECREF.ZIP iz ĐibmpcĐinfo direktorijuma. Odnosi !-> se na .PCX i ima par primera u C-u. Ma uzeo sam ga... I njega i opise za *.gif i *.tif al' bre ono mnogo nerazumljivo, pisano po komunistickim metodama : svasta prica a nista ne kaze. Pomogao mi je skerl, dao mi je vec gotove procedure za TP. Ipak thanks. CU P e C a
cccc.70 ppekovic,
>> se lepo pokaze ali cim startujem trejs ili step prikaze se >> listing u asembleru i nemoze vise da se dobije u C-u (nece sa >> F3). Pogledaj opctions da li ti stoji display: source, assembly ili mixed. Paya
cccc.72 djelovic,
Ima li (lakog) leka: Kada iz IDE-a startujem prekompajlirani program, on prepoznaje ALT SPACE, dok taj isti program startovan sa komandne linije ALT SPACE vidi samo kao SPACE. Da li je to neki bug Borlandove biblioteke, ili IDE krpi bios da bi ovaj prepoznavao tu kombinaciju?
cccc.73 bulaja,
│Kada iz IDE-a startujem prekompajlirani program, on prepoznaje ALT SPACE, │dok taj isti program startovan sa komandne linije ALT SPACE vidi samo kao │SPACE. Da li je to neki bug Borlandove biblioteke, ili IDE krpi bios da │bi ovaj prepoznavao tu kombinaciju? └─── Alt-Space kombinaciju standardni BIOS ne prepoznaje (znaci nije bug std lib-a), a koliko sam primetio ni IDE u BC++ verziji 2.0. Ako BC++ 3.x prepoznaje Alt-Space, onda to jedino ako zaobilazi keyboard BIOS, sto verujem i da radi.
cccc.74 mjova,
> Ima li (lakog) leka: čini mi se da sam ti dao lek za to?
cccc.75 nbatocanin,
> Imam jedan program sa CodeViev V3.0 koji mi je uz MS C > 6.0. Naime, program lepo prevedem sa parametrima /Zi i > /Od. Onda pozovem CV i u njemu ucitam sors programa kojeg > debagujem. Sors se lepo pokaze ali cim startujem trejs ili > step prikaze se listing u asembleru i nemoze vise da se > dobije u C-u (nece sa F3). Jesi li *siguran* da si dobro preveo i ulinkovao? LINK /CODEVIEW ?
cccc.76 djelovic,
> čini mi se da sam ti dao lek za to? Jes, but tvoj lek ipak zauzima nešto prostora, a ja tražim minimalističko, po memoriju jeftino, rešenje. No, kako izgleda da nema šanse da se BIOS natera da prepozna recimo SHIFT+DESNA_STRELICA, onda ću na kraju morati da popustim pred silama haosa i bezumlja :).
cccc.77 mjova,
> Jes, but tvoj lek ipak zauzima nešto prostora, a ja tražim > minimalističko, najmanje što možeš dobiti je da uzmeš zamenu za interapt 9, getkey() i možda kon/destruktor iz tehničkih razloga.
cccc.78 petrovics,
>> Jesi li *siguran* da si dobro preveo i ulinkovao? LINK /CODEVIEW ? Sad je sve u redu. Ja sam lose preceo program, umesto: cl /Zi <ime.c> ja sam kucao: cl <ime.c> /Zi
cccc.79 stanoje,
> Ima li (lakog) leka: Najprostije cega mogu da se setim je novi getch(). Otprilike bi mogao da izgleda ovako: int ds_getch(void) { int key, lo, hi,shift; key = bioskey(0); shift = bioskey(2) & 0x0003; lo = key & 0x00FF; hi = (key & 0xFF00) >> 8; if(lo) { if((lo <= 32)&&shift)return lo + 512; else return lo; } else { if(shift)hi+=512; return hi+256; } } /* ds_getkey */ Dakle ako je pritisnut shift, dobijas normalne vrednosti uvecane za 512. Dalje prosiri sam za ALT i ostalo (ako ti se resenje svidja). P.S. Prepoznaje i shift+desna strelica.
cccc.80 prvul,
Juče sam se nešto petljao sa TC++ 2.0 i nikako nisam mogao da nađem funkcije za brisanje fajla niti za postavljanje atributa. Znam da to može da se uradi kao poziv DOS-u, ali mi je nekako nelogično da su tako osnovne stvari propustili da ugrade... Pomagajte!
cccc.81 dusanp,
Da li je jos neko koristio spawn*.* biblioteke iz C direktorijuma? Svima ih preporucujem jer su jednostavne, rade bez greske, i mene su resile velike glavobolje...
cccc.82 dusanp,
=> da nađem funkcije za brisanje fajla niti za postavljanje => atributa. ▄▄▄▄▄▄▄▄ ŢunlinkŮ <DOS.H, IO.H, STDIO.H> ▀▀▀▀▀▀▀▀ Deletes a file Declaration: int unlink(const char *filename); Remarks: unlink deletes a file specified by filename. Any DOS drive, path, and file name can be used as filename. Wildcards are not allowed. Read-only files can't be deleted by this call. To remove read-only files, first use chmod or _chmod to change the read-only attribute. If your file is open, be sure to close it before unlinking it. Return Value: ■ On success, unlink returns 0. ■ On error, it returns -1 and sets errno to one of the following: ENOENT Path or file name not found EACCES Permission denied ........ Ů▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀Ţ Ů _chmod, Ţ <IO.H> <DOS.H> Ů _dos_getfileattr, _dos_setfileattr Ţ Ů▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄Ţ Gets or sets file attributes Declaration: ■ int _chmod(const char *path, int func Š , int attrib Ć ); ■ int _dos_getfileattr(const char *path, unsigned *attribp); ■ int _dos_setfileattr(const char *path, unsigned attrib); Remarks: These functions get and/or set the DOS file attributes of the file given by *path: ■ _chmod gets or sets the attributes ■ _dos_getfileattr gets the attributes ■ _dos_setfileattr sets the attributes Argument │ What It Is/Does ══════════ě════════════════════════════════════════════════════════════════ path │ Points to a string that names the file whose attributes are │ fetched or set; *path = first character of that string func │ Specifies whether _chmod gets or sets attributes of the file │ *path: │ ■ If func = 0, _chmod returns the current DOS attributes │ ■ If func = 1, _chmod sets the attributes to attrib attrib │ One of the DOS file-attribute symbolic constants defined │ in DOS.H. attribp │ Points to location where _dos_getfileattr stores attributes Return Value: ■ On success, ■ _chmod returns file attribute word ■ _dos_getfileattr and _dos_setfileattr return 0 ■ On error, ■ _chmod returns -1 and sets errno to one of the following: ENOENT (Path or file name not found) EACCES (Permission denied) ■ _dos_getfileattr returns the DOS error code and sets errno to ENOENT or EACCES ■ _dos_setfileattr returns the DOS error code and sets errno to ENOENT
cccc.84 mjova,
> Da li je jos neko koristio spawn*.* biblioteke iz ajde napiši malo o tome, imam nameru da ih probam (već duže vreme), ali baš me mrzi da čitam doc. daj kraći primer, tek za start, a posle ćemo lako. thanks in advance ;)
cccc.85 prvul,
Ů ŢunlinkŮ <DOS.H, IO.H, STDIO.H> Ů Ů Ů _chmod, Ţ <IO.H> <DOS.H> Ů Ů _dos_getfileattr, _dos_setfileattr Ţ Ů▄▄▄ Mnogo ti hvala!
cccc.86 todorp,
main () { _AH=0x02; _DL=0x07; asm int 21 } Zasto ovo ne radi? Ja nemam nigde objasnjenje za pseudo registre a help za tubo C nije nesto. Pozdrav od Todora.
cccc.87 dusanp,
=> ajde napiši malo o tome, imam nameru da ih probam (već => duže vreme), ali baš me mrzi da čitam doc. daj kraći => primer, tek za start, a posle ćemo lako. thanks in => advance ;) Biblioteka je super jednostavna za korišćenje, a arhiva je tako spakovana da uplaši čoveka. I ja sam je već jednom ranije uzeo sa sezama, a onda rekao "ko će da čita dokumen- taciju" i batalio. E tu sam pogrešio. Biblioteka dolazi u nekoliko oblika - za Borland C, MsC i TP. Nas, jelte;) zanima Borland verzija. Pošto su biblio- teke i pisane za BC, one se tako najlakše koriste. Funkcije u biblioteci su tako pisane da zamenjuju spawn* funkcije samog BCa. Da bi ih koristio, potrebno je samo bi- blioteku za mem. model u kome radiš uključiti u projekt fajl, obično na sam kraj. I POSAO JE GOTOV! Naravno, postoji i par funkcija kojima možeš da podesiš rad lib-a, ali je meni sve odgovaralo i bez toga. Znači, praktično bez ikakve izmene u programu dobijaš velike mogućnosti. Evo kako je meni ova biblioteka poslužila: Radio sam veliki program za jednu firmu. On se sastojao (zbog više razloga) iz glavnog programa (od oko 350k) i desetak manjih (od po 200k). E, sad, spawn "prvog stepena" (poziv programa iz osnovnog) je radio, ali kada je bilo potrebno pozvati treći program iz drugog, nije imalo mesta (u donjih 640k). Tada sam u .prj file dodao linkovanje sa SPAWNL.LIB (ovo je lib za large model, spawns.lib je za small itd.) i ceo problem je bio rešen in no time! Uz to sam u gornjoj memoriji (a ona je bila dodeljena keš programu) napravio rupu od 400k da bi se tu svapovao program i to je sve. Ono podešavanje načina rada se može koristit, ali i ne mora, jer program pokušava da svapuje u XMS, EMS pa tek tada na disk, što je sasvim logično i OK.
cccc.88 mjova,
> asm int 21 > Zasto ovo ne radi? Ja nemam nigde objasnjenje za pseudo > registre a help za tubo C nije nesto. verovatno si mislio na int 0x21. ono što si ti napisao je int 0x15, a to ti nije bila želja, verovatno? ;) drugo, izbegavaj popunjavanje registara preko _AX, _BX itd.., bolje otvori asm i lepo popuni sa 'mov ax, n' itd..
cccc.89 mjova,
> Biblioteka dolazi u nekoliko oblika - za Borland C, MsC > i TP. Nas, jelte;) zanima Borland verzija. Pošto su mislim da telemate koristi te rutine, i to sa velikim uspehom
cccc.90 todorp,
> verovatno si mislio na int 0x21. ono sto si ti napisao je int 0x15, > a to ti nije bila zelja, verovatno? ;) Stvarno sam teski konj ;(( Upravu si. > drugo, izbegavaj popunjavanje registara preko _AX, _BX itd.., bolje > otvori asm i lepo popuni sa 'mov ax, n' itd.. Zasto da izbegavam? asm naredbu ne volim zato sto radim u turbo C-u koji ne dozvoljava asm naredbu u IDE :(,za ++ neznam. Pozdrav od Todora.
cccc.91 garderp,
Pošto nikad nisam koristio spawn iz Sezamovog direktorijuma, već onaj koji ide uz BC, zanima u čemu je bolji onaj na Sezamu. Koliko sam ja shvatio, podržan je automatski swap u XMS,EMS,DISK memoriju. Da li je to sve?
cccc.92 tuci,
¸> Zasto da izbegavam? asm naredbu ne volim zato sto radim u turbo C-u koji ¸> ne dozvoljava asm naredbu u IDE :(,za ++ neznam. Probaj da staviš ovu liniju na početak fajla: #pragma inline U IDE TC++ pali, odnosno dozvoljava asm naredbu. Pozdrav, Zlatko
cccc.93 mjova,
jel raddio neko rutinu za sređivanje dos putanje na pravilnu vrednost? dos dozvoljava i lutanje po disku sa: c:\modem\..\command.com (c:\command.com) pa me zanima da li ne neko uradio to za sve ostale slučajeve? ja ih možda ne znam sve pa zato i pitam. ima situacija: c:file.ext c:\dir1\dir2\..\file.ext c:.\file.ext itd. ne znam da li sam nabrojao sve, ako neko zna da ima još nešto nek mi kaže, rutina nije problem... u paskalu postoji funkcija 'fexpand' koja radi baš ono što meni treba, ali za C ;), a ja trenutno ne znam kako mogu da prevedem paskal u obj ili asm (legalno, bez sorsera i ostalih pomagala).
cccc.94 todorp,
> Probaj da stavis ovu liniju na pocetak fajla: ># pragma inline Probao i ispisuje mi: in-line assembly not allowed in function main Pozdrav od Todora.
cccc.95 dusanp,
=> Koliko sam ja shvatio, podržan je automatski swap u => XMS,EMS,DISK memoriju. Da li je to sve? Da, zar je to mali pomak?
cccc.96 mjova,
> c:file.ext > c:\dir1\dir2\..\file.ext > c:.\file.ext dobro, vidim diskusija se razvila ;) pa evo i ja da dodam nešto ;) uradio sam fexpand, ako neko misli da nije komplet nek dopuni i javi! fexpand.arj
cccc.97 ppekovic,
>> dobro, vidim diskusija se razvila ;) pa evo i ja da dodam nešto ;) >> >> uradio sam fexpand, ako neko misli da nije komplet nek dopuni i javi! ;))) Kolko muke oko proste stvari. Ja sam to uradio na sledeci način: getcwd(pamti_dir,64); chdir(ona_tvoja_kobasica_mjovo); getcwd(vise_nije_kobasica,64); chdir(pamti_dir); ;) Paya
cccc.98 nkbog,
> jel raddio neko rutinu za sređivanje dos putanje na pravilnu vrednost? A šta da radimo sa _fullpath: ----------------------------------------------- Converts a path name from relative to absolute Declaration: char * _fullpath(char *buffer, const char *path, int buflen); (<STDLIB.H>) buffer │ Points to array of characters where absolute path name is stored buflen │ Maximum number of characters that can be stored at buffer path │ Relative path name to be converted to absolute _fullpath returns NULL if the buffer isn't big enough to store the absolute path name, or if the path contains an invalid drive letter. Return Value - On success, returns a pointer to the buffer containing the absolute path name - On error, returns NULL. ----------------------------------------------- NB. P.S. Ima ga BC++, a trebalo bi i MSC. P.P.S. A povodom TPascal FExpand-a evo šta piše u sorsu za _fullpath: > Note This function is a rewrite of the FExpand procedure > in the Turbo Pascal RTL, with modifications for MSC > compatibility.
cccc.99 ppekovic,
>> P.S. Ima ga BC++, a trebalo bi i MSC. Ima i MSC. Include: <stdlib.h> Syntax: char *_fullpath( char *buffer, char *pathname, size_t maxlen ); Returns: a pointer to the absolute path in <buffer>, or NULL if an error occurs. See also: getcwd, _getdcwd, _makepath, _splitpath Paya
cccc.100 d.petrovic,
Trebalo bi da je lokoćno instalirati C3.0? E, pa meni nije :(( Oslobodim > 18 MB na disku, memorije > 600 KB pa... b: install Neću da bude C:ĐBORLANDC hoću C:ĐTC, neću Huge i neću Windows disketa 1,2,...,7,8 ??? na osmoj kaže da nema fajla C:ĐTCĐBINĐUNZIP.EXE press Esc ???!!! Naravno inkriminisani fajl je tu, dotad se više puta izvršavao, i još uvek je tu, samo što install nije hteo da raspakuje par poslednjih fajlova (a ja neznam u koje direktorijume da ih stavim) Pre toga sam ga već jednom instalirao (totalno ojađena verzija, zauzela < 3 MB) pa kad sam video da ima mesta reko' ajde i ostalo, taj put je sve prošlo kako treba samo što BC nije hteo da se staruje reče nešto kao ... DPMI server initialization error->machine not in database da ne eksperimentišem ponovo, zna li neko u čemu je problem? Ostali su neraspakovani sa osme diskete (dal treba i deveta?): BC.ZIP TD.ZIP WHELP.ZIP TASM.ZIP
cccc.101 mjova,
> ;))) Kolko muke oko proste stvari. Ja sam to uradio > na sledeci način: pa jeste, takvo rešenje sam ja koristio za SCD, ali nisam bio zadovoljan jer u izvesnim situacijama ne radi kako treba, a i ne volim da menjam ono što je korisnik podesio, pa makar i vraćao kasnije ;). inače, ono za kobasicu... cccc, pajo... ;)))
cccc.102 darone,
>> chdir(ona_tvoja_kobasica_mjovo); ;))) darone
cccc.103 wizard,
>> da ne eksperimentišem ponovo, zna li neko u čemu je problem? Ja sam morao da isključim keš (hyper) da bih instalirao BC 3.0. I ne samo za BC, već i za svaki paket koji pri instalaciji brši puno dezarhiviranj, brisanja, dezarhiviranja... A hyper sam svojevremeno odabrao baš posle testa u kome su se NCACHE i PC-CACHE zaglupljivali pri intenzivnom arhiviranju, dezarhiviranju, brisanju, pa onda opet... Dakle, probaj sa isključenim kešom...
cccc.104 mjova,
> P.S. Ima ga BC++, a trebalo bi i MSC. >> in the Turbo Pascal RTL, with modifications for MSC jok, nema to u BC++ 2.0. možda ima u nekom drugom, ali ja nemogu da nađem tu fn ni u .h ni u helpu. verovatno se odnosi samo na MSC. sad sam pregledao, i u bibliotekama stvarno postoji, ali definicija nije navedene ni u jednom .h niti se pominje u helpu. svašta! verovatno je u pitanju nekakva kompatibilnost sa msc-om... thanks!
cccc.105 d.petrovic,
Ă> Dakle, probaj sa isključenim kešom... Probato poslednji put sa isključenim svim osim smartdrv iz dos-a (da bih napravio > 600 KB oosnovne memorije), sad će probam bez ništa :)
cccc.106 mjova,
> sad sam pregledao, i u bibliotekama stvarno postoji, ali > definicija nije navedene ni u jednom .h niti se pominje u > helpu. svašta! verovatno je u pitanju nekakva normalno kad su .h i help iz 2.0, a lib iz 3.0 ;)
cccc.107 mornar,
Jel bi mogao neko da napise mali listing programa u C-u koji bi prikazivao .BMP (Bitmap-Windows) ili .LBM slicice, u 256 i vise boja ? Ako neko zna, neka ga ne mrzi, moze samo i da objasÚ]ni recima. Hvala unapred. Pozdrav, Mornar.
cccc.108 garderp,
> Da, zar je to mali pomak? Nije!
cccc.109 dusanp,
=> jok, nema to u BC++ 2.0. možda ima u nekom drugom, ali ja => nemogu da Ima u 3.1.
cccc.110 todorp,
Hi Cini mi se da sam otkrio bug u turbo C-u 2.01 (za ostale neznam). Naredba fprintf(file,"%s",buffer) zakucava makinu kada je buffer veci od oko 26kb. On pocne da stampa buffer u fajl i negde oko 26-og Kb zaglavi. Sa fwrite me mrzelo da probam. Resio sam problem na sporiji nacin preko fputc ali... Pozdrav od Todora.
cccc.111 d.petrovic,
Jel može neko da mi objasni šta sam sad zabrljao? ;) Imao sam na disku TC 1.0 pa sam ga utamanio i instalirao (zbog TD-a) BC 3.0. E, sad program koji je kroz TC prošao ovde neće jerbo ovaj novi prijavljuje grešku u DOS.H ! Još mi nudi da gamenjam ;), a ja se jedva snalazim i s' ovim što sam ja napisao ;(. Ima neko ideju šta ne valja ? Error ..ĐDOS.H 305: Value of type void is not allowed 305: ) expected 315: Value of type void is not allowed 315: ) expected 343: ) expected
cccc.112 mjova,
> sad program koji je kroz TC prošao ovde neće jerbo ovaj > novi prijavljuje grešku u DOS.H ! Još mi nudi da gamenjam > ;), a ja se ima tu nekih problema, nešto slično se i meni dešavalo. nisam ustanovio problem u dos.h fajlu već u programu koji sam kompjalirao (dflat C++ 1.0). kako je dos.h bio uključen više puta (najviše mrzim kad se #include <*.h> postavi u sam "*.h" - ako ne mora). ovako ti više ništa ne mogu reći..
cccc.113 d.petrovic,
Rešio ja opet a nešto kao malo učim C i... evo rezultata. :((( Kako da ovo izvedem, hoću da na kraju promenljiva izvorni pokazuje na ime fajla koji treba da otvorim. Malo je smuljano jer sam ovo bio počeo da radim u dva fajla pa sam sad sastavljao i... jel oće neko da malkice objasni kad i zašto ovaj hoće da daje ekstenziju .c a kad .cpp, dosta vam je za jedan dan, nastavak u sledešem broju :) #include <stdio.h> #include <conio.h> ime_fajla(void); main(void) š char *izvorni,*izlazni; int ul_ras, izl_ras; printf("ĐnUnesite ime fajla : "); izvorni=&ime_fajla(); /* <- OVDE ? */ return(0); ć char *ime_fajla(void) š /* <- OVDE ? */ char fajlŠ12Ć, temp=0; int poz=0, brojac=0; while(temp!='Đr' && poz<8 && temp!='.') š temp=getch(); putch(temp); fajlŠpozĆ=temp; poz++; ć if (temp!='.' && temp!='Đr') š putch('.'); fajlŠpozĆ='.'; ć while(temp!='Đr' && brojac<3) š brojac++; temp=getch(); putch(temp); fajlŠpoz+brojacĆ=temp; ć return(fajl); /* <- OVDE ? */ ć
cccc.114 robert,
<:> char *ime_fajla(void) { /* <- OVDE ? */ <:> char fajl[12], temp=0; ... <:> return(fajl); /* <- OVDE ? */ E pa napravio si osnovnu grešku (FATAL ERROR) u programiranju. Hoćeš da vratiš iz potprograma (funkcije) promenljivu koju si deklarisao kao lokalnu za tu proceduru. To znači da promenljiva fajl postoji samo dok se izvršava procedura *ime fajla(void), posle toga je njena vrednost nedefinisana, tj. ne postoji! Možda ti i dobiješ neke suvisle rezultate ali to je samo naizgled jer se posle izvršenja procedure dealocira prostor koji je niz fajl zauzeo tako da tu u principu može da se upisuje neka druga lokalna promenljiva pa bi, da ti je program nešto veći, to i primetio u vidu brljotina u nazivu fajla koji treba da bude vraćen. Mislim da nije potrebno u glavnom programu stavljati: izvorni = &ime_fajla(); već može i izvorni = ime_fajla; ako deklarišeš char *izvorni; jer ti procedura vraća pointer pa ladno možeš da dodeljuješ pointer pointeru i izvorni će ti ukazati tamo gde treba. Onako bi bilo kao da dodeljuješ adresu pointera što je takođe nebuloza. Lek ti je u tome da deklarišeš niz fajl kao globalnu promenljivu pa će prostor za nju biti alociran dok traje program.
cccc.115 d.petrovic,
Ă> E pa napravio si osnovnu grešku (FATAL ERROR) u programiranju. Ă> Hoćeš da vratiš iz potprograma (funkcije) promenljivu koju si Ă> deklarisao kao Biće da je to, radio sam nešto slično jednom pa je nekako prošlo, ovog puta nisam mogao da se setim kako sam tada radio, ono prvo čudovište sam izbrisao sa diska da ne umrem od sramote ako ga neko vidi ;(( Ă> pointeru i izvorni će ti ukazati tamo gde treba. Onako bi bilo Ă> kao da dodeljuješ adresu pointera što je takođe nebuloza. Ma to znam, ali posle 17-og pokušaja, kad nikako nije hteo da proguta ono što sam mu servirao, menjao sam i u nebuloze, pa nisam ni video šta sam poslao... Ă> Lek ti je u tome da deklarišeš niz fajl kao globalnu promenljivu Ă> pa će Probaću čim završim sa sor-om i exec-om, ali... postoji li još neko rešenje, tj. da se možda to izvede deklaracijom funkcije ili..., pa funkcija treba da vraća neku vrednost, zašto onda ne bi mogla da vrati pointer? Ne očekujem baš preopširna objašnjenja, ako te mrzi, dovoljno je i uputiti na literaturu i poglavlje O:) Hvala, Dejan
cccc.116 zkadic,
Molio bih obaveštenje da li ima, i koje su, razlike između trećeg (1990 g.) i četvrtog (1991 g.) izdanja knjige "Uvod u C" V.Vujičića u izdanju "Borisa Kidriča". Na prvi pogled nisam uočio nikakvu razliku (osim naslovne strane). Ovo pitam pošto u knjižari PLATO ima to treće izdanje za 12.000, a nova knjiga košta preko 26.000 dinara. P.S. Ostao je samo još jedan primerak.
cccc.117 robert,
<:> pa funkcija treba da vraća neku vrednost, zašto onda ne bi mogla <:> da vrati pointer? Ne očekujem baš preopširna objašnjenja, ako te <:> mrzi, Ono u tvom primeru je OK kad ispraviš one dve greške. Naravno da f-ja može da vraća pointer i to se često koristi.
cccc.119 bulaja,
**** new files **** \IBMPC\PROGRAM\ tdqna arj 7486 Turbo Debugger pitanja i odgovori (Borland) \IBMPC\C\ bc31p1 zip 11203 Patch #1 za Borland C++ v3.1 (fix NEW operator) bc31p2 zip 52550 Patch #2 za Borland C++ v3.1 (Tlink) bc31p3 zip 8873 Patch #3 za Borland C++ v3.1 (tbrowser.dll) bc_qna arj 11737 Borland/Turbo C++ pitanja i odgovori (Borland) pxetip arj 8647 Paradox Engine 2.0 programming tips (Borland) tsr_c arj 22720 Primer (C source) rezidentnog programa (Borland)
cccc.120 miroljub,
U poddirektorijumu R:\IBMPC\C na Sezamu nalazi se datoteka DFLAT9.ZIP (biblioteka za user interface za C). Pokusao sam da je upotrebim u TURBO-C-u verzija 2.0 ali nisam uspeo. U heder datoteci DFLAT.H (linije 14 i 15) traze se INCLUDE direktivom datoteke TYPES.H i STAT.H , a njih nema u DFLAT9.ZIP . Moze li neko da pomogne? Moderator? Miroljub
cccc.121 nkbog,
> traze se INCLUDE direktivom datoteke TYPES.H i STAT.H, a njih nema u > DFLAT9.ZIP. Pogledaj u SYS\ potkatalogu INCLUDE kataloga, ako tamo nema, onda ti to fali u tvom C-u. To su dva standardna zaglavlja. NB.
cccc.122 bulaja,
│U poddirektorijumu R:\IBMPC\C na Sezamu nalazi se datoteka DFLAT9.ZIP │(biblioteka za user interface za C). Pokusao sam da je upotrebim u TURBO-C-u │verzija 2.0 ali nisam uspeo. U heder datoteci DFLAT.H (linije 14 i 15) traze │se INCLUDE direktivom datoteke TYPES.H i STAT.H , a njih nema u DFLAT9.ZIP. └─── Pogledaj u svoj (TC-ov) direktorijum \include\sys :).
cccc.123 mjova,
ima li neko možda informaciju kako se može prebaciti u običan tekst ili kakav je format help datoteke za borland c? imam strahovitu potrebu da to prebacim u *.ng, ali nemam nameru da radim cut&paste ;) nešto sam pokušavao da petljam po bazi, ali zaludan je to posao, naročito zbog nekakve interne kompresije... bljak je skroz ;)
cccc.124 vpetrovic,
Zašto mi program kompajliran sa TC 2.0 ponekad prilikom završetka programa funkcijom exit ispiše 'Null pointer assignement' (možda se ne piše baš tako). Vlada
cccc.125 ppekovic,
>> Zašto mi program kompajliran sa TC 2.0 ponekad prilikom završetka programa >> funkcijom exit ispiše 'Null pointer assignement' (možda se ne piše baš >> tako). Ova greška se javlja kada program upiše nešto van onih zona koje je sam alocirao. Da ne komplikujem, dešava se kad u neku promenljivu upišeš nešto što je duže on alociranog mesta za nju i sl. Nezgodna stvar sa ovom greškom je što se pojavljuje uvek na kraju programa a uzrok greške može biti bilo gde u programu. Paya
cccc.126 vasic,
> Zašto mi program kompajliran sa TC 2.0 ponekad prilikom završetka programa > funkcijom exit ispiše 'Null pointer assignement' (možda se ne piše baš > tako). Kao prvo, da bi se ovo desilo program mora biti preveden u nekom od near data modela. Na dnu data segmenta stoji Borlandova copyright poruka. Ako se desi da u programu imaš nešto kao char* s; // Ovo je statički podatak, po defaultu inicijalizovan na 0 int main() { *s = 'A'; // Evo, baš ovo je 'Null pointer assignment' //...ili... s[10] = 'B'; //... return 0; } poruka će biti izmenjena, a izlazni kod to proverava i izbacuje poruku o grešci. Proveri da li si inicijalizovao sve pointere koje koristiš. Ovu grešku je nemoguće dobiti u nekom od far data modela jer se tamo provera ne vrši. To naravno ne znači da program radi ispravno već samo da umesto svog data segmenta gađa tabelu interapt vektora ili nešto drugo podjednako beznačajno.
cccc.128 ppekovic,
>> Da li uvek to napiše kada postoji greška, ili ako program upisuje >> van zone koje je alocirao onda možda napiše? Ako imaš sledeću situaciju: char prvi[5], drugi[5]; strcpy(prvi,"vise od pet"); U ovom slučaju se neće pojaviti Null pointer assignment greška. Međutim, u sledećem: char *pera; strcpy(pera,"mika"); najverovatnije hoće. Evo šta piše u MSC Help-u o toj greški: Run-time error R6001 null pointer assignment The contents of the NULL segment have changed in the course of program execution. The program has written to this area, usually by an inadvertent assignment through a null pointer. The NULL segment is a location in low memory that is not normally used. The contents of the NULL segment are checked upon program termination. If a change is detected, the error message is printed and the exit code is 255. Note that the program can contain null pointers without causing this error. The error appears only when the program writes to memory through a null pointer. It reflects a potentially serious error in the program. Although a program that produces this error may appear to operate correctly, it may cause problems in the future and may fail to run in a different operating environment. Paya
cccc.129 dragisak,
MSC 6.00 mi uvek javlja sledeću poruku kada mu dam da mi prevede bilo koji program : Microsoft (R) Overlay Linker Version 3.65 Copyright (C) Microsoft Corp 1983-1988. All rights reserved. LINK : fatal error L1089: "005348LK" : cannot open response file Šta mu je ? Ranije mi je radio bez problema. Koji će mu taj 'response file' ? Komanda je najobičnija : CL /AS xxx.C
cccc.130 mjova,
mali editor linije. nije editor fajlova ;) već treba da posluži za podešavanje opcija itd. ima mali primer pa kome se čini zanimljivim nek uzme.. normalno, Borland ;) linedit2.arj
cccc.131 ppekovic,
>> LINK : fatal error L1089: "005348LK" : cannot open response file Proveri mesto na disk-u, zatim one environment promenljive. Meni se to jednom desilo ali nema šanse da se setim u čemu je tačno bio problem. Tup, Tup, Tup, seti se, seti se, seti se ... :)) Paya
cccc.132 mornar,
Moze li neko da mi objasni kako se moze odrediti velicina memorije koju treba alocirati za rezidentan program, tako da radi sasvim kako treba, a da pri tome ne od5z`ma dragicenu memoriju. Ovo sam stavio u konferenciju cccc zato sto mi je potrebna pomoc ove vrste u jednom C programu, ali ako neko ne zna kako to ide u C-u, a zna inace, molim neka objasni. Hvala. Mornar.
cccc.133 miroljub,
Ako neko ima knjigu Turbo C: Memory-Resident Utilities, Screen I/O, and Advanced Programming Techniques, Al Stevens, 1987, MIS: Press molim da mi se javi Miroljub
cccc.134 mjova,
> Microsoft (R) Overlay Linker Version 3.65 > Copyright (C) Microsoft Corp 1983-1988. All rights reserved. > LINK : fatal error L1089: "005348LK" : cannot open > response file kako vidim da ti se niko od MSC-ovaca ;) ne javlja, evo da ti ja reknem kako se rešava taj problem u borlandovim programima (tlink, tlib..) elem, u helpu linkera piše ovako: @xxxx indicates use response file xxxx u tom fajlu se nalaze opisi (da ne detaljišem ;) šta treba linkovati ili šta treba da bude uključeno u neku biblioteku. pošto je značenje reči RESPONSE jedinstveno u engleskom jeziku, kontam da je u pitanju ista stvar i za msc (možda druge strukture, ali to je to). e sad, kako rešiti problem? nemam pojma jer ne koristim ništa od microsoft-a. mislim da bi mogao neko i da ti pomogne oko toga, jer sam sigurand a postoje oni koji ga koriste samo su lenji u pisanju poruka... pretpostavljam da treba da pogledaš komandnu liniju ili ako si u PWB (lupam - nikad video) da pretreseš sve podešene stvari oko linkovanja (borland ima projektni fajl - nešto slično ima valjda i msc?).
cccc.135 mjova,
> a da pri tome ne od5z`ma dragicenu memoriju. Ovo sam > stavio u konferenciju cccc zato sto mi je potrebna pomoc > ove vrste u jednom C programu, ali ako neko ne zna kako to > ide u C-u, a zna inace, molim neka objasni. Hvala. pogledaj primere napravljene za TSR programe u arhivi amisl???.* (ili tako nekako ;) na sezamu. tamo je sve napravljeno (i unload) potrebno je smao da upišeš svoj program.
cccc.136 todorp,
> Moze li neko da mi objasni kako se moze odrediti velicina memorije > koju treba alocirati za rezidentan program, tako da radi sasvim kako Pazi 'vako ;) ja sam se dosta (cuj dosta) gnjavio sa tsr-ovima u C-u i dosao do zakljucka da je to sranje a evo i zasto: 1. Uzima mnogo mesta u memoriji 2. Rutine koje treba da su brze treba pisati u asm i jos neke sitnice 3. Nemogucnost (ili treba zongliranje) da se iskoristi int 27h vec se koristi funkcija 31h koja ostavlja sve u memoriji (keep(),_dos_keep()). 4. mrzi me dalje da pisem E sad da ne bude da samo se*em, evo da ti odgovorim: Za pocetak moras da znas kako izgleda memorija po startovanju programa (gde ti je heap, data code,stack itd jer mi se cini da nije isti raspored kod msc-a i tc-a) i sta dos radi (ono otvaranje psp-a, registri ss i sp itd). Ako koristis tc++ imas lep primer u helpu za keep naredbu a i u racunarima je bio zz-ov clanak. E sad meso: Kad iskopajliras program u tiny modelu i startujes ga on ti pojede 64k. E sad ako program nije veliki onda je najveci deo otpao na heap i stack. E njih mozes da skreses sa _heaplen i _stklen (tc). Znaci napisi recimo _heaplen=1024 i _sklen=512 i imaces samo par kilobajta u memoriji, ali zato pazi na komande koje rade sa heapom. Za keep (vazi za tc za msc mislim da ne vazi) napises keep(0,(_ss+(_sp/16)-_psp)); _ss i _sp ti oznacavaju gornju granicu a _psp donju. Mozes da se zamajavas sa char huge *progbeg i *end ali ti to ne preporucujem. Ufff sad tek vidim da udavih, so necu vise :))) a i konfuzan sam :( Ako ti nije jasno pitaj konkretno ali ti savetujem da nabavis neku stvarno dobru knjigu i pogledas primere uz bc++ i iz helpa za tc++. Pozdrav od Todora.
cccc.137 todorp,
> Ako neko ima knjigu > Turbo C: Memory-Resident Utilities, Screen I/O, and Advanced Programming > Techniques, Al Stevens, 1987, MIS: Press Ovo bi i mene zanimalo ;) Pozdrav od Todora.
cccc.138 bulaja,
│Ako neko ima knjigu Turbo C: Memory-Resident Utilities, Screen I/O, │and Advanced Programming Techniques, Al Stevens, 1987, MIS: Press └─── Ne znam da li si vec pogledao (mozda jesi pa bas zato trazis knjigu :), ali imas u C direktorijumu (r:\ibmpc\c) datoteku tc_als.arj (76 KB) u kojoj se nalazi source svih primera iz te knjige.
cccc.139 ladislavs,
Preporučite mi nešto od literature za C/C++ na srpskom. Naravno nešto što neće da me baci u tešku depresiju (nabadam nešto Pascala :). Pa da kupim ili ako je rasprodato/papreno da fotokopiram (mada je, čujem i fotokopiranje papreno ;). ciLa.
cccc.140 miko,
Da li neko zna sta znaci i kako se otklanja greska "LINK: error L2029: Unresolved externals" ? Posto sam relatvno novi u C programiranju,ranije se nisam susretao sa ovom greskom,a mislim da je vazno napomenuti da se javlja pri koriscenju odredjenih funkcija potrebnih za programiranje raznih BIOS,COMM...orjentisanih programa. Kompajliranje takvih programa tece bez problema,medjutim po zavrsetku kompajler mi izdaje doslovno ovakvu poruku: "LINK: error L2029: Unresolved externals: _comm_send in file(s): COMM.OBJ (comm.c) _comm_receive in file(s): COMM.OBJ (comm.c) _comm_init in file(s): COMM.OBJ (comm.c) " Za potrebe programa (nazvanog comm.c i koji bi trebalo da bude comm-program) koristio sam gore navedene (COMM_INIT, COMM_SEND, COMM_RECIEVE) funkcije. Mislim da je vazno napomenuti jos i to da koristim MICROSOFT C. Unapred zahvalan, Miko
cccc.141 spantic,
> Preporučite mi nešto od literature za C/C++ na srpskom. Ako je do Ca imaš originalnu knjigu Kernigena i Ričia "Programski jezik C". Svako bi pomislio da je originl najbolji, pošto su navedeni tvorci jezika. E nije ;) Nedavno je Mikro knjiga izdala knjigu Lasla Krausa "Programiranje u jeziku C i primeri" ili tako nešto :) žovek je pojam pedantnosti i njegovu knjigu najtoplije preporučujem. Što se C++ tiče izbora i nemaš. Postoji samo prevod ( opet Lasla ) na srpski tvorca C++ B. Stroustrupa.
cccc.142 dejanr,
>> "LINK: error L2029: Unresolved externals" ? Verovatno postoje neki potprogrami koje si zvao, ali ih nisi napisao ili pri linkovanju nisi naveo datoteku u kojoj se nalaze. Ili nisi tu datoteku preveo.
cccc.144 ppekovic,
>> Ako je do Ca imaš originalnu knjigu Kernigena i Ričia "Programski jezik C". >> Svako bi pomislio da je originl najbolji, pošto su navedeni tvorci jezika. >> E nije ;) Tu si zaista u pravu. Baš sam ovih dana imao prilike da pratim nekoliko ljudi koji uče C (ozbiljni, 25-27 god.). Ja sam im preporučio gore pomenutu knjigu. Međutim, rezultati su više nego loši. Naime, prvi problem je bio prevod i greške u knjizi, a grešaka ima toliko da ovu knjigu (YU prevod) mogu slobodno nazvati rekorderom po tom pitanju. Drugi problem je da izgleda nečin na koji autori izlažu celu materiju je isuviše komplikovan za početnike. Premalo je crteža i skica. Jedna druga knjiga kod početnika (a i onih malo naprednijih) daje mnogo bolje rezultate. To je knjiga "Tips tricks & solutions" autor: Cris Jamsa, izdanje Microsoft. >> Nedavno je Mikro knjiga izdala knjigu Lasla Krausa "Programiranje u jeziku C >> i primeri" ili tako nešto :) žovek je pojam pedantnosti i njegovu knjigu >> najtoplije preporučujem. Ovu knjigu sam kupio jednoj gospođici koja ovih dana treba da sprema ispit iz C-a (čitaj da uči C). Javiću rezultate. Na prvi pogled izgleda jako lepo, puno je crteža, tempo je uravnotežen. Još jednom, videćemo rezultate. Paya
cccc.145 dragisak,
║> Microsoft (R) Overlay Linker Version 3.65 ║> Copyright (C) Microsoft Corp 1983-1988. All rights reserved. ║> LINK : fatal error L1089: "005348LK" : cannot open ║> response file ║ ║ u tom fajlu se nalaze opisi (da ne detaljišem ;) šta treba ║ linkovati ili šta treba da bude uključeno u neku biblioteku. pošto ║ je značenje reči RESPONSE jedinstveno u engleskom jeziku, kontam da ║ je u pitanju ista stvar i za msc (možda druge strukture, ali to je ║ to). Pa gde nađe onaj 005348LK !? Ja mu nisam ništa zadao. Na drugim mašinama radi bez problema. Ja sam onda, iznerviran, ponovo instalirao MSC6.0 ali opet javlja istu grešku. :( E sad, ne znam zašto, ali na ovoj mašini imam steker i čim mi se nešto nepredviđeno desi ja posumnjam na njega. ;) Koliko se sećam nekada mi je sve dobro radilo. Ima li ko neki predlog ? ║ pretpostavljam da treba da pogledaš komandnu liniju ili ako si u ║ PWB (lupam - nikad video) da pretreseš sve podešene stvari oko ║ linkovanja (borland ima projektni fajl - nešto slično ima valjda i ║ msc?). Ne. Radi se o najobičnijoj komandnoj liniji. Dakle, na DOS prompt ja otkucam CL /AS xxx.C , a on me pozdravi sa onom porukom. :(( Radi se o najjednostavnijim programima tipa 'Hello world'.
cccc.146 pyramid,
Da li neko zna zasto se pojavljuje greska "Allocation fail\nCould not load COMMAND" na kraju programa. Sva memorija je uredno oslobodjena, koristim BC++ 3.1, huge model, farmalloc i farfree. Inace dogadja se i da nece da izvrsi alokaciju iako farcoreleft vraca cifru od 600000 byte-ova... Wot je problem? Nebojsa P.S. Kada se program debug-uje sa TurboDebugerom sve lepo prodje, ali kada izadjem iz BC IDE-a, opet ista greska....
cccc.147 dgrbic,
:: mali editor linije. nije editor fajlova ;) već treba Ali uz njegovu pomoć se može napisati i pravi linijski editor ;>
cccc.148 djelovic,
> Da li neko zna zasto se pojavljuje greska "Allocation failĐnCould not > load COMMAND" na kraju programa. Sva memorija je uredno oslobodjena... Postoji mnogo uzroka za ovakvo ponašanje, ali su najverovatniji: a) Ipak ne oslobađaš svu memoriju tj. imaš "curenje" ili b) Neki od blokova koji alociraš nije dovoljno velik, tj. recimo alocirao si 500 bajtova a pisao si po bajtovima 501, 502, ...
cccc.149 mjova,
probam baš ovih dana bcc 3.1
cccc.150 mjova,
> Pa gde nađe onaj 005348LK !? Ja mu nisam ništa zadao. Na > drugim mašinama radi bez problema. Ja sam onda, > iznerviran, ponovo instalirao MSC6.0 ali rado bih ti pomogao, ali ne koristim MSC nikako. ko zna šta mu je - baš me čudi da ti niko ne odgovara... možda bi trebalo da pređeš na borlandov c, mislim da je on mnogo više prilagođen korisnicima, a od verzije 3.0 (c++) ima i mogućnost prevođenja i programa pisanih za MSC biblioteke. ovo ti je najbolje rešenje.
cccc.151 mjova,
> :: mali editor linije. nije editor fajlova ;) već treba > Ali uz njegovu pomoć se može napisati i pravi linijski > editor ;> pa može, ali šta ima da se piše kad je EDLIN *tako* dobar ;)
cccc.152 mjova,
> probam baš ovih dana bcc 3.1 k`o što rekoh, probam ;) elem, čini mi se da je malo bolje sređen rad sa memorijom (nemam problema sa qemm-om) i ispravljeno par bugića u radu sa (iz?) komandne linije (thelp). ima tu dosta toga što zapravo i nije novo od prošle verzije (3.0), ali meni jeste od 2.0... prevođenje je zaista kraće (na potpuno istom primeru), a što se tiče brzine dobijenog koda (u istim uslovima) nije mi poznata jer nisam probao - sasvim logično ;). definitivno prelazim na 3.1 jer mi se čini boljom, a ima dovoljno prednosti (moram da probam prenos parametara u registrima _fastcall - deluje mi moćno mada to nije jednima novost) koje 'brane' nešto veću potrebu za diskom. do sada sam radio sa 2.0 jer me je iritiralo loše rešeno pitanje helpa koji je radio samo po svom nahođenju... nego, i onaj IDE mi izgleda šareeenooo ;), rekoh mnogo lepo, i posle 10 minuta rekoh 'daj bre brief' ;). džaba šminke.
cccc.153 ppekovic,
>> Ne. Radi se o najobičnijoj komandnoj liniji. Dakle, na DOS prompt ja >> otkucam CL /AS xxx.C , a on me pozdravi sa onom porukom. :(( >> Radi se o najjednostavnijim programima tipa 'Hello world'. Ne znam da li sam poslao tu poruku jer mi se često desi da zaboravim da pošaljem exec O:) ali meni se dešavalo isto i ne sećam se kako sam sredio, ali mislim da je bila neka banalna stvar, mesto na disku, environment promenljive ili tako nešto. Paya
cccc.154 ppekovic,
>> elem, čini mi se da je malo bolje sređen rad sa memorijom (nemam >> problema sa qemm-om) i ispravljeno par bugića u radu sa (iz?) komandne >> linije (thelp). Šta je ovo mjovo? Pre par poruka preporučiš čoveku da pređe na Borland, pominješ verziju 3.0, pa onda kako su više prilagođene korisniku od MSC-a (šta li ovo znači?), a onda pominješ neke probleme koji nisu baš zanemarljivi (kao ni oni problemi sa qemm-ovima, max-ovima i turbo debug-erom). Pošto, koliko se sećam, imaš nameru da se pozabaviš i sa UNIX-om, da ti posavetujem da pređeš na MSC, jer te na SCO UNIX-u (XENIX-u) čeka niko drugi do MSC, CV i druge lepe MIcrosoft stvarčice ;)) Paya P.S. :)
cccc.155 korvin,
­­>> radi bez problema. Ja sam onda, iznerviran, ponovo instalirao MSC6.0 ­­>> ali opet ja┌──────┐u grešku. :( E sad, ne znam zašto, ali na ovoj ­­>> mašini imam│steker│i čim mi se nešto nepredviđeno desi ja posumnjam na └──────┘ ­­>> njega. ;) Koliko se sećam nekada mi je sve dobro radilo. Ima li ko ­­>> neki predlog ? Tu leži odgovor ... Ja sam instalirao MSC 6.0 pod stekerom 2.0 i u jednom trenutku mučenja sa pwb, ovaj se jadnik zbunio i oborio mi šteker :(( Od tada je šteker non-stop proglašavao sebe read-only. Posle sam prešao na BC3.0 i Šteker 3.0 i nije bilo problema. P1redlažem ti da nađeš Šteker 3.0...
cccc.156 zolika,
>> Preporučite mi nešto od literature za C/C++ na srpskom. >> Naravno nešto što neće da me baci u tešku depresiju (nabadam nešto >> Pascala :). Preporučio bih da, ako već nabadaš nešto Pascala, da počneš da učiš Modulu-2, više se isplati... :-))))
cccc.157 vpetrovic,
Da li postoji način da vidim količinu alocirane memorije funkcijom malloc tokom debagiranja programa? Vlada
cccc.158 bulaja,
│ Jedna druga knjiga kod pocetnika (a i onih malo naprednijih) │daje mnogo bolje rezultate. To je knjiga "Tips tricks & solutions" │autor: Cris Jamsa, izdanje Microsoft. └─── Osim K&R, od stranih knjiga kod nas je jos prevedena "Programiranje na jeziku C", autor je Augie Hansen, izdavac Mikrpo Knjiga. Nije losa, sigurno je laksa za ucenje od K&R ali je sve nekako suvise nagurano (nedovoljno deskriptivno) posto knjiga ima svega nekih 230 strana (bez dodataka).
cccc.159 ladislavs,
> Nedavno je Mikro knjiga izdala knjigu Lasla Krausa > "Programiranje u jeziku C i primeri" ili tako nešto :) > Što se C++ tiče izbora i nemaš. Postoji samo prevod ( opet > Lasla ) na srpski tvorca C++ B. Stroustrupa. Ima li neko neku od ove dve, a voljan je da je donese u klub, ekspresno brzo je vraćam :). ciLa.
cccc.160 bulaja,
**** new file **** R:\IBMPC\C\*.* ---------------------- bcti1 arj 156418 Borland/Turbo C/C++ Technical Informations #1 bcti2 arj 158572 Borland/Turbo C/C++ Technical Informations #2 U prvom delu se nalazi oko 60% informacija koje su ranije bile na Sezamu u datoteci \ibmpc\info\bchelp10.arj (ostalo je novo), dok su u drugom delu sve nove (sveze) TI. U novonabavljenim TI naslo se i ponesto vezano za Borland-ov Turbo Basic, pa je to stavljeno u posebnu arhivu (za istoriju :), \ibmpc\program\tbas_ti.arj.
cccc.161 peca.st,
!-> daje mnogo bolje rezultate. To je knjiga !-> "Tips tricks & solutions" autor: Cris !-> Jamsa, izdanje Microsoft. Imade li gde to u našim knjižarama? Pošto nema, imade li neka dobra duša koja bi to priložila na kopiranje? Zavaljujem. ;) P e C a P.S. Ima li Norton Guide za C?
cccc.162 mjova,
> Šta je ovo mjovo? Pre par poruka preporučiš čoveku da > pređe na Borland, pominješ verziju 3.0, pa onda kako su > više prilagođene korisniku od MSC-a (šta li ovo > znači?), a onda pominješ neke probleme koji nisu baš > zanemarljivi (kao ni oni problemi sa qemm-ovima, > max-ovima i turbo debug-erom). nisi ti mene baš najbolje razumeo ;) radi se o sledećem: do verzije 3.0 pisao sam samo uz upotrebu 'normalnih' imena fn() iz std lib. od te verzije postoje i 'msc' imena tipa _dos_trtemrte. dakle, sad mogu da prevedem i program koji si ti pisao za msc i onaj koji ja pišem za bcc i to bez ikakve pripreme (valjda ;). to mi znači jer tako mogu da ispravljam bugove onih koji pišu na msc-u - doboljno je samo kucati BCC umesto CL O;> (joooj kako nisko ;)). nije neka mudrost, radi se samo o tome da fn tipa allocmem() (prva mi u helpu) sad ima i naziv _dos_allocmem() itd. drugo, što se tiče helpa, mislim da je moćan jer ima stvarno brdo stvari, a i lepo je sređen. tako uz svaku fn imaš i malu tbl u kojoj je opisano da li postoji u DOS, UNIX, Windows, ANSI C ili C++ Only. što se tiče problema sa memorijom (qemm) to je sada prošlost. kako rekoh imao sam izvesnih problema oko rezidentnog helpa i memorije. javljao mi se nekakv FATAL ERROR: GP FAULT (nemam pojma šta znači jer mi je dokumentacija ostala poršeu kad sam isprobavao katapult ;). ni jednog problema iz 3.0 više nema, bar ih ja nisam imao! > Pošto, koliko se sećam, imaš nameru da se pozabaviš i > sa UNIX-om, da ti posavetujem da pređeš na MSC, jer te na > SCO UNIX-u (XENIX-u) čeka niko drugi do MSC, CV i > druge lepe MIcrosoft stvarčice ;)) pa jeste, to mu je stvarno prednost, ali preživeću i to ako budem morao... za sada ostajem uz BCC 3.1, stvarno je moćan.
cccc.163 mjova,
> Da li postoji način da vidim količinu alocirane memorije > funkcijom malloc tokom debagiranja programa? pa zar sintaksa malloc-a nije baš takva da prosleđuješ parametar koliko ti mesta treba?
cccc.164 ematic,
> P.S. Ima li Norton Guide za C? Ima. Ma se ja :)
cccc.165 zsiz,
> Preporučite mi nešto od literature za C/C++ na srpskom. > Naravno nešto što neće da me baci u tešku depresiju (nabadam nešto Ima jedna knjiga za C dobra za početnike. Zove se UVOD U PROGRAMSKI JEZIK C. Autora neznam jer imam fotokopiju te knjige. Tu knjigu sam video u Jugoslovenskoj Knjizi u Palati Albanija. Ima bele korice i oko 200 strana. P.S. Ovo ti piše početnik u C-u. Pozdrav. zsiz
cccc.166 wizard,
>> U prvom delu se nalazi oko 60% informacija koje su ranije bile na Sezamu >> u datoteci \ibmpc\info\bchelp10.arj (ostalo je novo), dok su u drugom >> delu sve nove (sveze) TI. Da li su sve info koje su bile na Sezamu sadržane u novim arhivama, ili zbog 40% i njih treba čuvati? Nisi se baš najjasnije izrazio. :)
cccc.168 ladislavs,
Recite mi da li vredi Petkovićeva knjiga o C-u (ona sa belim koricama i velikim C preko cele prednje korice). U odnosu na ostale knjige je neuporedivo najjeftinija. ciLa.
cccc.170 pbojan,
Pazite sad ovaj problem ( znam da znam resenje, samo ne mogu da se setim :): Radim neku aplikaciju u HUGE modelu, ciji je, izmedju ostalog, zadatak da na heap-u popamti veliki broj stringova nedefinisane duzine. Ocigledno, sve sto je potrebno od funkcija je malloc ( farmalloc ) i strcpy ( _fstrcpy ) da bi sve to radilo kako treba. Medjutim, posle nekih 50KB unesenih stringova, aplikacija se zakuca, potpuno poremetivsi memorijske blokove u DOS-u, sto rezultira zakucavanjem celog sistema. Iz toga sam zakljucio da alokacija memorije ne radi kako treba, ali nemam pojma zasto!! Naime, do pre dva dana, taj deo aplikacije ( koja, uzgred, ima oko 7000 linija koda ) je radio savrseno! Naravno, moguce je da ni tada sve to nije radilo, samo se nije greska manifestovala kada sam je trazio. Ima li neko ideju, dakle, zasto se aplikacija u HUGE modelu, zakuca posle popunjenih ( grubo ) 60KB?? Stepovanje debagerom tvrdi da je apsolutno sve u redu, sve do trenutka kada se program zakuca ( mislim, povezana lista koja pamti stringove je OK ).
cccc.171 bulaja,
│Da li su sve info koje su bile na Sezamu sadrzane u novim arhivama, ili │zbog 40% i njih treba cuvati? Nisi se bas najjasnije izrazio. :) └─── Sve sto je bilo u starom bchelp10 ima i u novom bcti1, a ima i dodatak :).
cccc.172 zsiz,
> Recite mi da li vredi Petkovićeva knjiga o C-u (ona sa belim koricama i > velikim C preko cele prednje korice). > U odnosu na ostale knjige je neuporedivo najjeftinija. Ja učim C iz nje i mogu da ti kažem da je dobra. Knjiga je napisana kao univerzitetski uđbenik. Naravno da bi više voleo da učim C iz knjige na primer Schilda C++ The Complete Reference (Osborne McGraw Hill) (jedno 600-700 strana) ali nemogu da dam jednu/dve plate za knjigu. Pozdrav. zsiz
cccc.173 mjova,
> Ima li neko ideju, dakle, zasto se aplikacija u HUGE > modelu, zakuca posle popunjenih ( grubo ) 60KB?? > Stepovanje debagerom tvrdi da je apsolutno pa pre izvesnog vremena ovde je bilo diskusije o problemu fn iz std lib koje se bave alokacijom memorije. ti problemi su bili vezani za biblioteke starijih verzija, ali valjda to nije slučaj sa 3.1 (baš ću da probam). drugo, ne vidim potrebu za H modelom jer se aritmetika H pointera može negde zablesaviti, a poreba za njima se može rešiti prostom deklaracijom pojedinijh ukazivača. probaj da samo potrebne vektore prekrstiš u huge, a prevodi u L modelu. nakon dužeg vremena došao sam do zaključka da je to najoptimalniji model (za ono što meni treba). što se tiče funkcija: > malloc ( farmalloc ) i strcpy ( _fstrcpy ) o njima nema potrebe da vodiš računa jer sami modeli L i H po definiciji uzimaj ono što im treba. prevedi ovo što kačim uz poruku u H modelu pa javi šta si uradio. (tamo se pominju i far i near haep, ali to je za velike modele isto.. kod mene radi ok i za L i za H. BCC 3.1 mem.cpp
cccc.174 todorp,
> biblioteke starijih verzija, ali valjda to nije slucaj sa 3.1 (bas cu > da probam). Ja sam imao isti problem sa farmalloc dok nisam digao ruke ;)) Probaj, ali sumnjam da je u pitanju verzija jer mene zeza i turbo C 2.0 i BCC++ 2.0. Nije mi jasno zasto ne radi, jer farmalloc odvoji onoliko koliko mu trazim. I isto kao pbojanu negde kod 60000-tog karaktera zakuca makinu :(( Razume se kad mu dam npr. farmalloc(5000) radi odlicno ;) > prevedi ovo sto kacim uz poruku u H modelu pa javi sta si uradio. > (tamo se pominju i far i near haep, ali to je za velike modele isto.. > kod mene radi ok i za L i za H. BCC 3.1 Ja probao i u svim modelima radi osim u H. Tad zakuca masinu. Pozdrav od Todora.
cccc.175 dnikolic,
>>> P.S. Ima li Norton Guide za C? Za koji C? :) dn
cccc.176 ematic,
> Za koji C? :) MSC i TC :)
cccc.177 peca.st,
!-> Za koji C? :) Pa šta ja znam, za bilo koji... može za BC++ 3 ili 2, a može i za Turbo C. Ja još ne radim sa Com, mada imam dvojku na disku jer nemam vremena. :) Možda ću prvo početi sa Turbo Com, jer manje zauzima i valjda je lakši, a posle je lako preći na MSC ili BC... Ajde da me malo posavetujete! P e C a
cccc.178 vpetrovic,
>>> Da li postoji način da vidim količinu alocirane memorije >>> funkcijom malloc tokom debagiranja programa? >> >> pa zar sintaksa malloc-a nije baš takva da prosleđuješ parametar >> koliko ti mesta treba? Jeste, ali meni treba da u nekom trenutku vidim koliko je memorije ukupno mallocirano (od početka programa).
cccc.179 tomae,
>>>> P.S. Ima li Norton Guide za C? Ima na Rhinoceros BBS-u (i za TC, i za MSC) možda ima još negde:)
cccc.180 pbojan,
> probaj da samo potrebne vektore prekrstis u huge, a > prevodi u L modelu. nakon duzeg vremena dosao sam do > zakljucka da je to najoptimalniji model (za ono sto meni > treba). Jeste, tako nekako i ja obicno radim, medjutim, ovaj put sam bas hteo da predjem potpuno na Huge model ( da sad ne davim zasto ). Naravno da bih, uz neke promene algoritma, mogao da se 'vratim' na L, ali zasto da vozim trotinet, samo zato sto mi negde curi ulje na kolima? > sto se tice funkcija: > >> malloc ( farmalloc ) i strcpy ( _fstrcpy ) > > o njima nema potrebe da vodis racuna jer sami modeli L i H > po definiciji uzimaj ono sto im treba. Pa i ne vodim :). Samo sam se pitao da nije neki bag u Huge modelu, koji bi se eliminisao paznjom tipa malloc ili farmalloc. Naravno, nije bilo to. E, sta se zapravo desilo: alokacija se vrsila iz neke zestoko komplikovane rekurzije, koja je i sama vrsila neke svoje alokacije. Izgleda da fragmentacija memorije koja pri svemu tome nastane, potpuno sludi BC, tako da negde zaboravi sta mu je tacno slobodno za alokaciju ( i koliko ). Kao resenje problema, a to sam vec jednom uradio, pa zaboravio, pustio sam rekurziju da zavrsi posao, pa tek onda krenuo sa alokacijom monstruoznog tipa. I sad sve radi kako treba... ( i dalje HUGE model, i dalje jako mnogo podataka na heap-u, isti algoritam ).
cccc.181 pbojan,
> kao pbojanu negde kod 60000-tog karaktera zakuca makinu > :(( Razume se kad mu dam npr. farmalloc(5000) radi odlicno > ;) Eto, a ja sam mislio da sam poludeo :). Da nisi negde imao rekurzije u tom dogadjaju?
cccc.182 todorp,
> Eto, a ja sam mislio da sam poludeo :). Da nisi negde imao rekurzije > u tom dogadjaju? Ma kakve rekurzije ;), obicno citanje iz fajla sa fgetc() i smestanje u buffer koji je bio pogadjas pravljen sa farmalloc :) Nego rece mjova da su ispravili bugove u BC-u pa cu ovih dana da instaliram biblioteke od 3.0 ili 3.1 Pozdrav od Todora.
cccc.183 pyramid,
Proveri jos jednom da li si alocirao dovoljno velike kolicine (mozda si zaboravio na \0 sa kraja stringa?) Meni se isto desavalo (po izlasku mi napise "Memory allocation error") zato sto sam alocirajuci mem. zaboravio na to da je niz unsigned int * (jednostavno je trebalo pomnoziti sa 2).... Nebojsa
cccc.184 ppekovic,
Pogledajte sledeću strukturu: typedef struct { char ArcMark; char HeaderVersion; char Name[13]; unsigned long Size; DOS_FILE_DATE Date; /* 2 bytes */ DOS_FILE_TIME Time; /* 2 bytes */ unsigned Crc; unsigned long Length; } ARCHIVE_HEADER; Da izmerim dužinu: 1+1+13+4+2+2+2+4 = 29 Međutim, sizeof(ARCHIVE_HEADER) daje 30. Ako promenim Name[13] u Name[12], sizeof(...) daje 28. Jel ima neko objašnjenje? Paya
cccc.185 dejanr,
>> Međutim, sizeof(ARCHIVE_HEADER) daje 30. Ako promenim >> Name[13] u Name[12], sizeof(...) daje 28. >> Jel ima neko objašnjenje? Možda je kompajler "pametan" pa doda jedan bajt da bi produžio NAME tako da sledeći podatak padne na parnu adresu što bi ubrzalo pristup podacima, i to ne samo na 80x86 procesorima? Nisi rekao koji je kompajler i koja platforma. Ako je to, trebalo bi da postoji neki način da se (za tu strukturu ili bar za ceo program) to "uravnavanje podataka" opozove.
cccc.186 ppekovic,
>> Jeste, ali meni treba da u nekom trenutku vidim koliko je memorije ukupno >> mallocirano (od početka programa). Pogledaj na početku programa koliko imaš slobodne memorije, a onda na mestu gde želiš da vidiš razliku, pa oduzmi te dve vrednosti i eto. Paya
cccc.187 ppekovic,
>> Možda je kompajler "pametan" pa doda jedan bajt da bi produžio >> NAME tako da sledeći podatak padne na parnu adresu što bi ubrzalo >> pristup podacima, i to ne samo na 80x86 procesorima? Nisi rekao >> koji je kompajler i koja platforma. Pogledaću da nema neki switch za to. Inače compiler je MSC 6.0. Javiću rezultate. Paya
cccc.188 pbojan,
> Proveri jos jednom da li si alocirao dovoljno velike > kolicine (mozda si zaboravio na \0 sa kraja stringa?) E, kad bi ti samo znao sta sam sve proveravao... :) Kao sto vec napisah, problem je, bar kod mene, u velikoj fragmentaciji memorije. A zasto je fragmentacija problem ispitacu prvi sledeci put kada ne budem imao sta da radim par nedelja :).
cccc.189 pbojan,
> Da izmerim duzinu: 1+1+13+4+2+2+2+4 = 29 > > Medutim, sizeof(ARCHIVE_HEADER) daje 30. Ako promenim Da nisi naredio smestanje na parne adrese?
cccc.190 ppekovic,
>> Da nisi naredio smestanje na parne adrese? Da, upravo je u tome problem. Međutim, čudi me da je po default-u stavljen pack na 2 bajta a ne na jedan. Sve u svemu, posle konsultovanja uputstva stavio sam /Zp switch i sve je ok. Inače, granicu je moguće postaviti na 1, 2 i 4 bajta, s tim što je to moguće uraditi switch-om /Zp<1|2|4> ili pragma direktivom #pragma pack ( 1|2|4 ). Paya
cccc.191 zvonko,
># ># Međutim, sizeof(ARCHIVE_HEADER) daje 30. Ako promenim ># sizeof(...) daje 28. ># ># Jel ima neko objašnjenje? BYTE i WORD align! Ima neki switch prilikom kompajliranja pa će biti OK! MSC fo default-u radi WORD align! Provereno na najnezgodniji mogući način :< ! P.S. SWITCH je: /Zp => BYTE align, instead of WORD.
cccc.193 madamov,
****** Međutim, sizeof(ARCHIVE_HEADER) daje 30. Ako promenim Name[13] u Name[12], sizeof(...) daje 28. Jel ima neko objašnjenje? ****** Imao sam nedavno sličan problem, ali na Mac-u, tj. hoću da naglasim na Motoroli gde se zna da neka adresiranja uvek moraju da idu na parne adrese, u protivnom dobijaš Bus Error. Ako toga ima i kod Intel procesora, to ti je odgovor. U tvom primeru, kompajler je lepo rasporedio ona char polja (njima i onako pristupa sporije zbog same definicije char-a kao jednobajtne vrednosti), zeza ga unsigned long (4 bajta) koji mora da ide na sledeću parnu adresu, tako da ti je praktično Name ispalo char Name[14], to je taj bajt viška. Ako struktura mora baš tako da izgleda, tj. Name mora da bude baš 13 bajtova dugo, posle toga sve longove deklariši kao char Size[4], a integere sa char a[2], pa funkcijama memmove ili memcpy puni ta polja umesto prostim dodeljivanjem. Malo više kucanja i poziva funkcija, ali to je jedino rešenje. P.S. I kod mene se radilo o nekoj vrsti arhivera. B))) >>> Modes are most confusing when you're in wrong one.
cccc.194 ppekovic,
Svi oni koji su pisali programe na UNIX-u i koristili curses biblioteku, znaju kakva je muka sve to preraditi za dos. Zato evo skupa curses rutina za DOS. Paya curses.zip
cccc.195 akojovic,
Treba da napravim kratku interapt rutinu koja bi se izvrsavala svake milisekunde (eventualno na 10 milisekundi). Koliko sam mogao iz dosad proučene literature da zakljucim moraću da se zakačim na INT08 i da petljam sa kolom 8254 (ako neko zna lakši način ...). Problem je što na isti INT može da bude nakačen neki drugi program, npr. smartdrv koji će očekivati prekid 18.2 puta u sekundi. Ukoliko koristim interapt funkciju svi registri će biti sačuvani na steku, ali onda ne mogu vršiti preusmeranje na stari interapt vektor. Da li neko zna sta se dešava sa vrednostima registara pri pozivu neke funkcije (pokušao bi da na početku f-je pomoću par redova u asembleru sačuvam vrednosti registara, a da ih vratim pre preusmerenja na stari int. vektor).
cccc.196 todorp,
> da petljam sa kolom 8254 (ako neko zna laksi nacin ...). Problem je sto > na isti INT moze da bude nakacen neki drugi program, npr. smartdrv koji > ce ocekivati prekid 18.2 puta u sekundi. A sta tebe briga za drugi program ;)? Ti mozes da nakacis nekoliko programa na isti int i ako se ne izivlavas sve ima da fercera. Ako ti je bas zapelo da nebude int 8 okaci se na int 1c. Sto se tice ovog laksi nacin, mislim da ga nema. Mozes da gadjas neku adfresu (mrzime da trazim koju a i pisem on_lajn) ali to ti je isto. > Ukoliko koristim interapt funkciju svi registri ce biti sacuvani > na steku, ali onda ne mogu vrsiti preusmeranje na stari interapt vektor. Pogledaj primer keep naredbe ili interrupt u bc helpu. Mnogo to ga ce ti biti jasnije ;). BTW. to sto ti hoces se radi ovako: void (interrupt far *oldtimer)(void); void interrupt far newtimer(void); . . . main() { oldtimer=getvect(0x1c); setvect(0x1c,newtimer); . . . } void interrupt far newtimer(void) { *(oldtimer)(); . . . } Pozdrav od Todora. ps. Mislim da ti nije jasno i da sam konfuzan ;( pa zato uzmi neku knjigu ili racunare br. sedamdeset i nesto i zz je tamo opisao tsr-ove i prica vazi i za tebe. pps. Vidim da sam zaboravio da napisem da ti ono *(oldtimer)(); izvrsava stari i int a to je valjda ono sto tebe buni.
cccc.197 vasic,
> Treba da napravim kratku interapt rutinu koja bi se izvrsavala > svake milisekunde (eventualno na 10 milisekundi). Koliko sam mogao iz > dosad proučene literature da zakljucim moraću da se zakačim na INT08 i > da petljam sa kolom 8254 (ako neko zna lakši način ...). Problem je što > na isti INT može da bude nakačen neki drugi program, npr. smartdrv koji > će očekivati prekid 18.2 puta u sekundi. Programiraj 8254 da generiše INT 8 recimo sa 182Hz umesto standardnih 18.2 pa onda zovi stari handler tek pri svakom desetom intu. Ako tvoj program nije rezidentan, tj. garantovano je da će ostati zadnji u lancu, ovo bi trebalo da bude sasvim OK. U suprotnom možeš da koristiš foru koju je prvi koristio (čini mi se) Sidekick: nakačiš se na DOS-ovu fj-u za postavljanje interapt vektora (ne znam napamet koja je) pa kada ti neki program zatraži da se nakači na osmicu, ti prvo otkačiš sebe, onda pozoveš DOS da obavi posao i na kraju se ponovo nakačiš ti, ostajući tako i dalje zadnji u lancu, odnosno prvi koji dobija kontrolu kad se desi INT 8. Ako ti nije bitno da program radi na XT-u, možeš da se poštediš svih ovih muka i iskoristiš INT 70h. O tome je već bilo reči u PC.PROG.*, ako neko zna tačno broj konferencije i poruke(a), neka ti javi.
cccc.198 zsiz,
Imam jedan problem. Problem se odaziva na ime direktore. Firma u kojoj radi (oko 100 ljudi) ima sada 4 računara. Moj direktor bi hteo da mu ja napravim programe za: 1) plate 2) finansijsko poslovanje 3) knjigovodstvo 4) što god se seti. Po njemu radi se o trivijalnim programima koje bi ja mogao da uradim u pauzama između redovnih poslova koje radim. Radim u mašinskom razvoju kao vođa grupe za spec.podsklopove (št.ploče i kablovi) a radim i na razvoju mehanike umesto kolege koji se posvađao sa našim neposrednim rukovodiocem. Pored toga sam nešto kao SysAdm za gore pomenuta 4 računara. U m.razvoju ima jedno 10-tak ljudi koji uče da rade na računara i njima pomažem kada im zapne nešto. Na fakultetu sam, davne 1976, učio FORTRAN bez da sam video računar na kome bi se ti programi izvršavali. Posle nisam programirao osim nešto malo u BASIC-u. Učim C i voleo bi da ovladam njime. Ljudi s kojima sam se konsultovao, a koje cenim kao programere (u C-u i Clipper-u) kažu da gore pomenuti programi nisu nimalo jednostavni ni za napraviti ni za održavanje s obzirom na stalne promene propisa. Ako bi radio nešto voleo bi to da radim u C-u a ne u Clipper-u jer ne želim da učim Clipper (ma koliko on bio pogodan za ovakve programe). Nisam rekao da moj direktor nema blage veze sa računarima ni sa programiranjem i da se nije usudio da priđe računaru da nauči nešto. Šta kažete? Pozdrav. zsiz
cccc.199 ppekovic,
>> Ako bi radio nešto voleo bi to da radim u C-u a ne u >> Clipper-u jer ne želim da učim Clipper (ma koliko on >> bio pogodan za ovakve programe). >> Šta kažete? Kažem da je tužno videti ljude sa predrasudama o jednom zaista sjajnom programskom jeziku kao što je clipper. Kao rešenje tvog problema, svrati u par firmi i pokupi cenovnike za takve programe i pokaži svom direktoru. Paya
cccc.200 zsiz,
> Kažem da je tužno videti ljude sa predrasudama o jednom > zaista sjajnom programskom jeziku kao što je clipper. > Kao rešenje tvog problema, svrati u par firmi i pokupi > cenovnike za takve programe i pokaži svom direktoru. Dobra ideja. Pozdrav. zsiz
cccc.201 draganm,
*> Sta kazete? Menjaj firmu :)
cccc.202 zsiz,
> *> Sta kazete? > Menjaj firmu :) Radije bi promenio direktora :) Pozdrav zsiz
cccc.203 cubro,
Evo saljem NG za PXEngine 3.0 za C++ i za C skinuto sa BORLAND BBS -a. pxng3.zip
cccc.204 cubro,
A ovo je primer za objektno programiranje u PXEngine file menageru. Napisane klase (objekti za read, search ,itd...) za C++ tpxcla.zip
cccc.205 mjova,
> Evo saljem NG za PXEngine 3.0 za C++ i za C skinuto > sa BORLAND BBS -a. e, hvala ti ko bratu! ;) bar da vidim šta ima novo ;) ako imaš još nešto, šalji bez ustručavanja!
cccc.206 bulaja,
│Evo saljem NG za PXEngine 3.0 za C++ └─── Hvala, bice valjda u dir-u kad ga pogledam! Nego, jel ti nije problem da opet posaljes onaj prg za rad sa Paradox bazama (ako se ne varam, ti si ga poslao) posto prosli put nije uspeo file transfer.
cccc.207 ndragan,
/*> Sta kazete? / Menjaj firmu :) Problematična stvar. Kao klinac sam tačno znao da ako dam dva plastikanca dobijam jednog gvozdenca - kod razmene klikera se _znalo_ šta je šta. Kad menjaš firmu, nikad ne znaš da li išta možeš da dobiješ.
cccc.208 ljubao,
Napravio sam program da mi štampanje ide u pozadini i to je ok. Međutim, taj kod je unutar glavnog programa, tako da ne mogu da napuštam program sve dok se posao ne završi, što mi se ni malo ne sviđa. Razmišljao sam da se kačim na interapte iz programčeta iz kog se se startuju svi ostali programi, ali ne znam kako da u child programu saznam gde su mi potrebni podaci oko štampanja. Jedino mi je došlo u glavu (nisam probao), je da prosledim kao argument child programu adresu strukture gde bih potrpao sve što mi treba. Sve što znate je dobrodošlo - dolazi u obzir i pisanje TSR-a, ali ni tu ne znam kako da razmenjujem podatke. Ljuba
cccc.209 dmiladinovic,
>> rukovodiocem. Pored toga sam nesto kao SysAdm za gore >> pomenuta 4 racunara. >> U m.razvoju ima jedno 10-tak ljudi koji uce da rade na >> racunara i njima pomazem kada im zapne nesto. A ko ti kriv kad se pravis da sve znas !!! :) Treba mudro cutati i praviti se prostodusno glup, pogotovu kad imas direktore slicnih ambicija. Najbolje prodju oni sto nista ne znaju, a ponajbolje oni koji nista ne znaju, ali samo u radno vreme. :) Sto se paketa tice, batali se corava posla. Bez strucnog znanja i visegodisnjeg programiranja u nekom jeziku/generatoru za takvu namenu, nema sanse ni adresar da napises, a da bude upotrebljiv. Cisto da se razumemo, da bude upotrebljiv za neku babu pred penzijom, koja je uz to jos i sef racunovodstva. Sve u svemu, batal' se corava posla, promeni posao ili kao zadnju verziju kupi pistolj... Pa dal' prvo sebe il' babu, il obrnuto, e ... :)
cccc.210 dcolak,
BTW people, Jel ima neko NG za MS C6.0 ? Ja evo konačno izađoh iz očajnog PWB-a. No, QH je mnogo nepraktičan da ga stalno potežem iz QEdit-a. Idealno bi bilo nešto ko NG za Clipper... SLEDGE DAMMIR!
cccc.211 zsiz,
> Cisto da se razumemo, da bude upotrebljiv za neku babu pred penzijom, > koja je uz to jos i sef racunovodstva. Kako si pogodio za babu? Vava nije ništa prema tebi :) > Sve u svemu, batal' se corava posla, promeni posao ili kao zadnju verziju > kupi pistolj... Pa dal' prvo sebe il' babu, il obrnuto, e ... :) Ma direktora a ne babu, nije ona kriva. Krv mi pije 11 i kusur godina. Prvo kao rukovodilac a posle (pošto se na svim funkcijama pokazao nesposobnim - sve org.jedinice gde je imao neku funkciju su rasturene) kao direktor. Pozdrav. zsiz
cccc.212 ppekovic,
>> Jel ima neko NG za MS C6.0 ? >> Ja evo konačno izađoh iz očajnog PWB-a. No, QH je mnogo nepraktičan >> da ga stalno potežem iz QEdit-a. Idealno bi bilo nešto ko NG za Napravi mali makro (ostavio sam jedan takav ovde u conf.) kojim ćeš da pozivaš qh iz qedit-a. Poziv je bukvalno trenutan. Paya
cccc.213 cubro,
Evo jos jednog utilityja sa BORLAND BBS-a. Za recovery Paradox format datoteka. tutil40.zip
cccc.214 dcolak,
│ Napravi mali makro (ostavio sam jedan takav ovde u │ conf.) kojim ćeš da pozivaš qh iz qedit-a. Poziv je │ bukvalno trenutan. │ │ Paya Možda (sigurno) sam se loše odrazio. Dakle, treba mi nešto ko NG za Clipper jer se može u isto vreme imati Help i videti program. A uz sve to, QH je stvarno shitast, so, again help me if you can.... SLEDGE DAMMIR!
cccc.215 dusanp,
=> A uz sve to, QH je stvarno shitast, so, again help Zasto insistiras na MSCu? Nadam se da znas kako izgleda Borlandov help.
cccc.217 akojovic,
Pre otprilike nedelju dana sam postavio pitanje u vezi pisanja interapt rutine koja se kači na INT 8. Dobio sam neke odgovore (hvala na njima) ali su se pojavili dodatni problemi. Pre pozivanja rutine učestanost generisanja interapt signala menjam na 1000 Hz podešavanjem vrednosti registara čipa 8254. Pošto se ovaj interapt normalno pojavljuje na svakih 55ms ubacio sam brojač koji svaki 55-ti put poziva stari interapt vektor. Medjutim to dovodi do blokranja rada računara. Ukoliko se izbaci brojač i pozivanje starog vektora vrši svaki put rutina lepo radi ali dovodi do divljanja sata (radi 55 puta brže) što bi želeo da izbegnem. Radi ispitivanja sam napisao kratku TSR rutinu koju prilažem, pa ako neko zna u žemu može da bude problem... #include <stdio.h> #include <dos.h> #include <conio.h> #define INTR 0x08 #ifdef __cplusplus #define __CPPARGS ... #else #define __CPPARGS #endif static int count=0; /* smanjivanje veličine heap-a i steka */ extern unsigned _heaplen = 1024; extern unsigned _stklen = 512; void interrupt ( *oldhandler)(__CPPARGS); void interrupt handler(__CPPARGS) š /* program koji treba da se izvrši */ if (count<55) /* pošto se interapt generiše */ count++; /* svake milisekunde stara */ else /* interapt rutina se poziva */ š /* svaki 55-ti put */ count=0; oldhandler(); /* ukoliko se ostavi samo ovaj red rutina radi */ ć ć int main(void) š oldhandler = _dos_getvect(INTR); /* očitavanje starog interapt */ /* vektora */ asm š mov al,54 /* podešavanje čipa 8254 da */ out 0x43,al /* generiše interapt na 1ms */ mov ax,1193 out 0x40,al mov al,ah out 0x40,al ć count =0; /* instalacija novog interapt vektora */ _dos_setvect(INTR, handler); /* instalacija programa kao TSR rutine */ _dos_keep(0, (_SS + ((_SP+64)/16) - _psp)); return 0; ć
cccc.218 ppekovic,
>> Možda (sigurno) sam se loše odrazio. Dakle, treba >> mi nešto ko NG za Clipper jer se može u isto vreme >> imati Help i videti program. Ok. ok. :) NG za MSC, koliko ja znam, a znam ;) ima mjova. Javi mu se. Tip: Pored VGA, kupi i monohrom monitor i karticu. Ne samo što će debug-iranje postati pesma, nego ćeš u isto vreme moći da vidiš i tvoj listing i qh ;) Paya (nepopravljivi ljubitelj microsoft-a) :))
cccc.219 ppekovic,
>> Zasto insistiras na MSCu? Nadam se da znas kako >> izgleda Borlandov help. Pravi razlog prelaska na novi kompajler je help :)))))) Paya
cccc.221 zsiz,
> >> Jel ima neko NG za MS C6.0 ? > >> Ja evo konačno izađoh iz očajnog PWB-a. No, QH je mnogo nepraktičan > >> da ga stalno potežem iz QEdit-a. Idealno bi bilo nešto ko NG za > Napravi mali makro (ostavio sam jedan takav ovde u conf.) > kojim ćeš da pozivaš qh iz qedit-a. Poziv je bukvalno trenutan. Šta su PWB i QH? Pozdrav. zsiz
cccc.222 dcolak,
│ Zasto insistiras na MSCu? Nadam se da znas kako │ izgleda Borlandov help. Znam. No, ja strašno mrzim Borland. Ko će ga znati zašto. Verovatno zbog njegovog editora, koji nikako ne mogu da zavolim, opet, ko će ga znati zašto... P.S. :))))) SLEDGE DAMMIR!
cccc.223 dusanp,
=> Pravi razlog prelaska na novi kompajler je help :)))))) ┌─────────────────┴────────────┐ izmedju svih ostalih razloga i
cccc.224 dcolak,
│ Paya (nepopravljivi ljubitelj microsoft-a) :)) Ex, i ja spadam u njih, no bog će ga znati zašto. Thanx for the information. P.S. Mail is walking to mjova SLEDGE DAMMIR!
cccc.225 dcolak,
│ Šta su PWB i QH? PWB je integrisana programerska okolina ;) Tj. to ti je k'o u turbo paskalu, kad imaš i editor, i compiler i linker, help, sve zbudženo u jednu celinu. QH je Quick Help. Ono što u PWB dobijaš kad pritisneš F1. P.S. Kakav full justify ;) SLEDGE DAMMIR!
cccc.226 todorp,
> Znam. No, ja strasno mrzim Borland. Ko ce ga znati zasto. > Verovatno zbog njegovog editora, koji nikako ne mogu da > zavolim, opet, ko ce ga znati zasto... A da promenis samo editor? ;) Pozdrav od Todora. ps. Zar nije brief sad borlandov? ;))
cccc.227 todorp,
> PWB je integrisana programerska okolina ;) Aj' mi reci od cega je to skracenica? Kod Borlanda je logicno IDE od Integrated Development Enviroment. Pozdrav od Todora.
cccc.228 todorp,
> Programiraj 8254 da generise INT 8 recimo sa 182Hz umesto standardnih > 18.2 pa onda zovi stari handler tek pri svakom desetom intu. Ako tvoj Jesi li ti ovo probao? Pozdrav od Todora.
cccc.229 mjova,
> Znam. No, ja strašno mrzim Borland. Ko će ga znati zašto. > Verovatno zbog njegovog editora, koji nikako ne mogu da > zavolim, opet, ko će ga znati zašto... mržnja je uvek išla na štetu onoga koji mrzi, a naročito ako ne zna zašto. što se mene tiče ja znam zašto ne koristim msc, ali ga nikako ne "mrzim". zašto ne pokušaš da koristiš neki editor (bilo koji je bolji od ide||pwb). sad, ako si navikao na interni debuger i ostale mogućnosti onda ništa, živi u mraku ;)
cccc.230 vasic,
> void interrupt handler(__CPPARGS) > { > /* program koji treba da se izvrši */ > > if (count<55) /* pošto se interapt generiše */ > count++; /* svake milisekunde stara */ > else /* interapt rutina se poziva */ > { /* svaki 55-ti put */ > count=0; > oldhandler(); /* ukoliko se ostavi samo ovaj > red rutina radi */ > } > } Uh. :( Zaboravih prošli put da ti kažem da kad ne zoveš stari int handler, onda moraš svojeručno interapt kontroleru da signaliziraš kraj obrade prekida. Znači, handler() treba da izgleda kao dole. Sorry za izgubljeno vreme. void interrupt handler(__CPPARGS) { if (count<55) { count++; outp(0x20,0x20); /* Evo sve razlike */ } else { count=0; oldhandler(); } }
cccc.231 bulaja,
│> PWB je integrisana programerska okolina ;) │Aj' mi reci od cega je to skracenica? └─── Programmer's WorkBench.
cccc.232 spantic,
>> PWB je integrisana programerska okolina ;) > Aj' mi reci od cega je to skracenica? Kod Borlanda je > logicno IDE od Integrated Development Enviroment. Pa čovek ti je lepo rekao: Programming Work Bench.
cccc.233 ppekovic,
>> => Pravi razlog prelaska na novi kompajler je help :)))))) >> ┌─────────────────┴────────────┐ >> izmedju svih ostalih razloga i Jasno, ali svakako ne samo help :))), pogotovu imajući u vidu kvalitet MS QH-a. Pri tom da naglasim da QH ima mogućnosti koje imaju i drugi, samo to radi na drugačiji način, a da li se to nekome dopada ili ne, je njegova subjektivna stvar o kojoj ne vredi diskutovati. Paya
cccc.234 paki,
­> Aj' mi reci od cega je to skracenica? Kod Borlanda je logicno ­> IDE od Integrated Development Enviroment. Programmer's Work Bench. Ni manje, ni više logično :))
cccc.235 vasic,
>> Programiraj 8254 da generise INT 8 recimo sa 182Hz umesto standardnih >> 18.2 pa onda zovi stari handler tek pri svakom desetom intu. Ako tvoj > > Jesi li ti ovo probao? Eh, :) pa naravno. U asembleru, doduše, ali to ništa ne menja stvar. Što se C-a tiče, akojovic je upravo ostavio programče koje uz minimalne izmene (a i one su tu) radi OK.
cccc.237 dcolak,
│ ne "mrzim". zašto ne pokušaš da koristiš neki editor (bilo │ koji je bolji od ide||pwb). sad, ako si navikao na interni │ debuger i ostale mogućnosti onda ništa, živi u mraku ;) Pa koristim ga, zato mi je i trebao MSC.NG koji sam nabavio zahvaljujući predusretljivom mjovi. Sad mogu lepo, k'o u Clipperu da imam helpić ;) Sledge DAMMIR!
cccc.239 vasic,
Ako je nekome potrebna veća tačnost u merenju vremena od one koju mu daju DOS i BIOS (do 1/18.2sec), možda će mu biti od pomoći sledeća funkcija. Ona vraća trenutno vreme dana u jedincama od po približno 214 mikrosekundi. A najlepše je to što radi čak i ako ne verujete. :) Pažljiviji čitalac će sigurno primetiti da je promenljiva temp nepotrebna. Ona je tu samo da bi se zadovoljili lavovi - tj. prevodilac koji ne dozvoljava jednostavno jer može komplikovano. Znam i za #pragma warn -rvl, al' pragma je pragma, nemamo svi Borlanda. unsigned long timer214(void) // (C) by ja { unsigned long temp; asm { push ds xor ax,ax mov ds,ax out 0x43,al // latch 8253 timer 0 (clock) jmp label1 } label1: asm { in al,0x40 // read LO(8253 timer 0) jmp label2 } label2: asm { in al,0x40 // read HI(8253 timer 0) neg al // Brojač je dekrementirajući. mov ah,byte ptr ds:0x46C // bios timer mov dx,word ptr ds:0x46D mov word ptr temp,ax mov word ptr temp+2,dx pop ds } return temp; }
cccc.240 pedjak,
> na njima) ali su se pojavili dodatni problemi. Pre pozivanja rutine > učestanost generisanja interapt signala menjam na 1000 Hz podešavanjem > vrednosti registara čipa 8254. Pošto se ovaj interapt normalno Izvini, jel' možeš nešto više da napišeš o programiranju 8254. pedja
cccc.241 todorp,
> Pa covek ti je lepo rekao: Programming Work Bench. A bas me zanima gde mi je rakao. Pozdrav od Todora. ps.Ne mislim da bulaju.
cccc.242 todorp,
> Eh, :) pa naravno. U asembleru, doduse, ali to nista ne menja stvar. Sto > se C-a tice, akojovic je upravo ostavio programce koje uz minimalne Ok! Procitao sam poruku 7.230 i sad mi je jasno zasto je zaglavljivalo. Pitao sam zato sto sam negde procitao da je int 8 osetljiv i da recimo nesmes da ga cisto odseces (izmedju ostalog i zbog poziva int 1c i da ima neka fora sa iret) ali izgleda da sam zaboravio sta sam procitao ;)) Pozdrav od Todora. ps. No hard feelings ;)
cccc.243 zzivotic,
Jugodata nudi STALNI posao programeru sa znanjem C-a i baza podataka, spremnom za timski rad. Jugodata - Beograd, B.Revolucije 326, Tel/Fax: (011) 418-326, 419-768
cccc.244 skerl,
Using Microsoft Foundation Classes with Borland C++ 3.1 Prepared by: Language Business Unit Borland International 1800 Green Hills Road PO Box 660001 Scotts Valley, CA 95067-0001 Overview This document describes how to build and use Microsoft Foundation Class (MFC) programs with Borland C++ 3.1. This document is divided into several sections. The first describes changes to make to the MFC source files; the second, changes and suggestions for the build process; and the final section explores compiling an example providing with Microsoft C/C++ 7.0. The changes described in this document are necessary for several reasons. Some relate to non-standard syntax that Microsoft uses in their C++ compiler, while others relate to differences in assembly language extensions and makefile conventions. Pozdrav, Skerl. mfc-bc.zip
cccc.245 zolika,
Molio me je jedan kolega sa fakulteta da se raspitam: Da li neko od cenjene gospode sezamovaca koristi (tako mi je rečeno) C ISAM (Index Sequential Access Method)? Reč je o nekim rutinama pisanim u C-u za indeks-sekvencijalne datoteke. Ako neko zna nešto više o nekom takvom softverskom paketu molio bih ga da to napiše ovde ili da me obavesti privatnom poštom.
cccc.246 akojovic,
>Izvini jel' možeš nešto više da napišeš o programiranju 8254 Pošto odgovaram sa par dana zakašnjenja (nažalost imao sam puno posla) trudiću se da bar budem opširan. žip 8254 (ili 8253 na XT-u) ima tri identična, nezavisna kanala koji su programabilni. Rad je nezavistan od CPU. Po tri registra kontrolišu rad svakog kanala. Svakoj grupi od tri registra se pristupa roz jedan U/I port 40H-42H za kanale 0-2. Sva tri kanala su uvek aktivna. Kanalima su dodeljene po dve ulazne i jedna izlazna linija. Pri programiranju kanala, nakon komandnog bajta, šalje se dvobajtna vrednodst (prvo niži bajt) koja se smešta u 16-bitni leč registar, a odatle smešta u 16-bitni brojač. Brojačkom registru se pri svakom impulsu sistemskog sata vrednost smanjuje za jedan. Kada odbroji do nule na izlazu kanala se generiše impuls, a iz leč registra se vrši novo kopiranje 16-bitne vrednosti. Što je manja vrednost u brojačkom registru impulsi su učestaliji. Trenutna vrednost bilo kog brojačkog registra može biti očitana u svakom trenutku bez ometanja odbrojavanja. - Kanal 0 koristi sistemski sat. Generiše impulse približno 18.2 puta u sekundi. Linija je hardverski povezana na INT 8 (tajmer interapt). Izlazna linija kanala 0 se takodje koristi za kontrolu operacija sa diskom tako da u slučaju da nešto petljaš sa njom moraš obnoviti originalne vrednosti pre pristupa disku. -Kanal 1 kontroliše osvežavanje memorije (osim na PCjr) i ne treba ga dirati (povezan je na DMA). -Kanal 2 je povezan na zvučnik. Medjutim tu vezu je moguće prekinuti i koristiti ovaj kanal za tajming. Vezu sa zvučnikom kontroliše prvi bit porta B čipa 8255 (adresa 61H). 0-ti bit ovog čipa kontroliše klok signal kanala 2. Da budem malo jasniji: Dve ulazne linije svakog kanala su 'clock' linija koju kontroliše sistemski sat i 'gate' linija koja uključuje i isključuje klok signal. Za linije 0 i 1 'gate' linija je uvek na visokom logičkom nivou (odbrojavanje se ne može zaustaviti) dok kanal 2 kontroliše navedeni najniži bit porta 61H. Frekvencija klok signala je 1193180 Hz (na svim mašinama). Pošto je najveći broj u 16-bitnom registru 65535 maksimalni razmak izmedju impulsa koji se može dobiti iznosi oko 55ms. žip 8254 nudi 6 modova rada za svaki kanal (uglavnom se koristi samo mod 3 koji generiše pravougaone impulse). 8-bitni komandni registar kontroliše upis u leč registre. Nalazi se na adresi 43H. Komandna reč ima sledeći oblik: bit 0 ako je 0 podatak je binarni, inače BCD 3-1 broj moda, 0-5 (000-101) 5-4 vrsta operacije 00 = upisuje vrednost iz brojačkog registra u leč 01 = čita/zapisuje samo viši bajt 10 = čita/zapisuje samo niži bajt 11 = čita/zapisuje niži bajt, zatim viši bajt 7-6 broj kanala koji se programira, 0-2 (00-10) Ukoliko te još nešto interesuje (ili nisam bio dovoljno jasan) pitaj. Usput da se zahvalim todorp-u i vasicu na njihovim odgovorima. Pozdrav, Koja
cccc.247 mbacic,
Da li neko zna kako napraviti senku u tekstualnom modu u C-u,ne racunajuci ZZ-ov meni interfejs jer ta funkcija nece da radi kada se kompajlira sa TC++ 1.0
cccc.248 bulaja,
Evo diskusije o stilu programiranja u C++. Izvodi su sa nekog USA BBS-a, pojma nemam kog :), al' izgleda zanimljivo :). cppstyle.arj
cccc.249 ppekovic,
>> Da li neko zna kako napraviti senku u tekstualnom modu u C-u,ne racunajuci >> ZZ-ov meni interfejs jer ta funkcija nece da radi kada se kompajlira sa TC++ >> 1.0 Evo ti box i shadow funkcije. Pišu direktno u video memoriju. Ne znam da li će raditi na TC-u jer kosritsim _segment i _based, a nisam siguran da to TC ima. Međutim, zaista je jednostavno to prepraviti. BTW. funkcija shadow omogućuje 9 vrsti senki (iz svih uglova). Paya shadow.c
cccc.250 vasic,
> -Kanal 1 kontroliše osvežavanje memorije (osim na PCjr) i ne treba > ga dirati (povezan je na DMA). Imam (imao sam?) neko programče - boost.com koje baš menjajući učestanost osvežavanja memorije ubrzava računar. Autor tvrdi da je to njegovom XT-u dalo krila, ubrzalo ga ne znam koliko posto, omogućilo mu da interliv diska smanji sa 1:1e10 na neku normalniju vrednost i slično. Kod mene (12MHz AT) ubrzanje je svega par procenata. Ako ga nađem, baciću ga ovamo.
cccc.251 pstojanovic,
Nisam dosada nesto mnogo pisao u c-u, pa imam jedan problem : asm š ... ... jnc ok ... ... ok: ... ... ć u BC 2.00. (inline assembler) javlja gresku tipa Undefined label 'ok'. Medjutim kada uradim asm š ... ... jnc ok ... ... ć ok: asm š ... ... ... ć radi bez problema. U TP 6.00 to se resavalo stavljanjem znaka 'č' ispred labele, medjutim, sada ne pomaze. Problem je kada trebam pisati duze sekvence u asembleru, sto bi me teralo da stalno zatvaram i otvaram asm š blokove. Da li postoji bolje resenje ? Hvala na pomoci.
cccc.252 mbacic,
Hvala ppekovicu!!!
cccc.253 akojovic,
Nabavio sam neki program koji koristi čip 8254 za merenje trajanja izvršenja neke procedure. Priložen je izvorni kod u asembleru C-u i CPP-u. Evo šta kače autor: The Zen Timer Library ===================== Version 1.1 This is a 'C' callable library for timing code fragments with an accuracy of better than 10 microseconds (less when using the long period zen timer). The code was originally written by Michael Abrash for his book "Zen of Assembly language - Volume I, Knowledge". I modified the code and made it into a 'C' callable library and added the utility routines LZTimerCount() and PZTimerCount() to return an unsigned long integer representing the timed count in microseconds, and a set of C++ wrapper classes. This new version include a new Ultra Long Period timer that can be used to time code that takes up to 24 hours to execute with an accuracy of 1/10th of a second. I have fixed the long period Zen Timer so that you can now time across a midnight boundary correctly, and I have added a number of C++ classes that provided a common interface to the timing routines. Pozdrav, Koja interapt.zip
cccc.254 mjova,
> Nabavio sam neki program koji koristi čip 8254 za merenje > trajanja izvršenja neke procedure. Priložen je izvorni kod > u asembleru C-u i CPP-u. Evo šta kače autor: verovatno da je lepo pogledati kako radi program, ali za merenja svih vrsta preporučujem turbo profiler. u mnogim slučajevima mi je olakšao izbor koda.
cccc.255 mjova,
> Problem je kada trebam pisati duze sekvence u asembleru, > sto bi me teralo da stalno zatvaram i otvaram asm š > blokove. Da li postoji bolje resenje ? mislim da nema :( osim da napišeš dotičnu rutinu u posebnom modulu i da je prevedeš čistim tasm-om. vrlo jednostavne primere možeš naći u uputstvu.
cccc.256 pbojan,
>> Da izmerim duzinu: 1+1+13+4+2+2+2+4 = 29 >> >> Medutim, sizeof(ARCHIVE_HEADER) daje 30. Ako promenim > > Da nisi naredio smestanje na parne adrese? Seca li se ovog neko? A secate li se kada sam prijavio zaglavljivanje jedne aplikacije u HUGE modelu posle cirka 60K na heap-u? Tada sam izjavio, bog me ubio, da cu prvom prilikom naci vremena i isceprkati gde je to Borland napravio bag sa alokacijom memorije. E, nadjoh vremena, pa da se pospem pepelom: ja se gore pravim pametan, kao znam ja sta su parne adrese, a upravo to mi je rusilo aplikaciju svih 2348 puta. Naime, odvojio sam memoriju za tamo neki bafer, cija je duzina bila "nemam_pojam_ali_zato_sizeof_zna"... A ja promenio i algoritam, i jos 20% koda okolo, onako u zaletu. :(( Covek se uci dok je ziv, a narocito tada.
cccc.257 dekiper,
Svi znamo da u C-u postoje tri bitwise operatora AND - &, OR - đ i XOR - ž. Međutim, u C-u postoje samo dva logička operatora AND - && i OR - đđ dok ekvivalenta operatoru XOR nema. Da li neko ima ideju kako bi se ovaj operator mogao realizovati ili barem simulirati i u C-u. Dakle, da li je moguće napraviti logički XOR (žž)?
cccc.258 pedjak,
> Pošto odgovaram sa par dana zakašnjenja (nažalost imao sam puno > posla) trudiću se da bar budem opširan. Hvala ! pedja
cccc.259 akojovic,
Evo jednog SW programčeta koji radi baš to što si naveo, smanjuje učestanost osvežavanja i time ubrzava rad. mhz.zip
cccc.260 peca.st,
!-> ekvivalenta operatoru XOR nema. Da li !-> neko ima ideju kako bi se ovaj operator !-> mogao realizovati ili barem simulirati i !-> u C-u. Dakle, da li je moguće napraviti !-> logički XOR (žž)? Pa XOR je vrlo lako simulirati sa OR i AND. (ne znam o C-u, pa pišem čisto logičkim izrazom) A XOR B <=> ((A=true) and (B=false)) or ((A=false) and (B=true)) ili ti A XOR B <=> A<>B (u smislu da su logičke vrednosti A i B različite) Peđa.
cccc.261 pstojanovic,
>> mislim da nema Baš tužno. >> osim da napišeš dotičnu rutinu u posebnom >> modulu i da je prevedeš čistim tasm-om. To je ok., mada ću nastaviti sa pisanjem u samom editoru. Zgodnije mi je da radim u integrisanoj okolini pa makar kod izgledao malo ružno. Doduše, i to se može rešiti preko pretprocesora sa #define ASML(Arg) ć Arg: asm š Interesantna je nedoslednost paketa; ako se već goto labele mogu postavljati u okviru bilo kog bloka ograničenog sa šć, zašto to nije uradjeno na neki način i za ASM šć blok ? Postavio sam ovo pitanje u okviru pogrešne teme. Nisam video da je otvorena tema cpp. :)
cccc.262 robert,
>> ekvivalenta operatoru XOR nema. Da li neko ima ideju kako bi se >> ovaj operator mogao realizovati ili barem simulirati i u C-u. >> Dakle, da li je moguće napraviti logički XOR (žž)? Pa iz logike znaš da je x XOR y = (x && y) || (!x && !y) i eto ti rešenja.
cccc.263 djelovic,
>> ekvivalenta operatoru XOR nema. Da li neko ima ideju kako bi se >> ovaj operator mogao realizovati ili barem simulirati i u C-u. >> Dakle, da li je moguće napraviti logički XOR (žž)? !x ž !y
cccc.264 dnikolic,
>> verovatno da je lepo pogledati kako radi program, ali za merenja svih >> vrsta preporucujem turbo profiler. u mnogim slucajevima mi je olaksao >> izbor koda. Meni nikako da proradi Profajler! :((( Sve (?) sam pokusao, i stalno prijavljuje gresku Loading Error. Treba li mozda neka specijalna instalacija za TP. Inace, ja ga uvek pozivam iz integrisane okoline. dn
cccc.265 vasic,
> Evo jednog SW programčeta koji radi baš to što si naveo, smanjuje > učestanost osvežavanja i time ubrzava rad. Mali (MHZ+) se pravi previše pametan sa svojim određivanjem optimalnog osvežavanja. Svaki put dobijem "On board parity error at ..." Ali zato evo Boost-a. Dovoljno je sitan da nije nikakav problem izvući iz njega deo koji radi posao. Eksperimentisao sam malo sa promenom osvežavanja, ali bolje od Boost-ovog podrazumevanog nisam uspeo da dobijem. I još nešto: program se MORA startovati sa "BOOST 1" jer je samo "BOOST" isto što i "BOOST 0", tj. vraća osvežavanje memorije na normalno (i sporo). boost.arj
cccc.266 peca.st,
!-> Pa iz logike znaš da je x XOR y = (x && !-> y) đđ (!x && !y) i eto ti rešenja. Robert, ovo je, meni se čini, netačno. XOR daje true kada su x i y različiti, kod tebe daje kada su isti... Time se postiže ono čuveno: (X XOR Y) XOR Y = X Peđa.
cccc.267 robert,
>> Robert, ovo je, meni se čini, netačno. XOR daje true kada su x i y >> različiti, Da... (stidim se ;). Treba: x XOR y = (!x && y) || (x && !y) a ono prethodno bi značilo u stvari: !(x XOR y).
cccc.268 dnikolic,
Moze li neko malo detaljnije da objasni kako se preuzima od DOS-a kontrola gresaka prilikom kopiranja fajlova na diskete (treba mi u jednom programcetu)? Posto se, predpostavljam, radi o preuzimanju nekog interapta, ima li neko primercic kako se na ekran "montira" sat? Kad sam se ces raskukao, treba mi i kalkulator i kalendar. Ko ce sve to da programira! :) Hvala, dn
cccc.269 ndragan,
/ napraviti logički XOR (žž)? Može na najbanalniji način - != (nije jednako - nisam siguran u C sintaksu). a b a=b a!=b a xor b 0 0 1 0 0 0 1 0 1 1 1 0 0 1 1 1 1 1 0 0
cccc.270 dekiper,
Zahvaljujem svima koji su odgovorili na moje pitanje o XOR operatoru. Ideje su odlične i nadam se da ću uz pomoć njih uspeti da rešim problem. Naime radi se o zbirci nekih paskalskih programa u kojoj sam našao jednu interesantnu proceduru koja bi mi dobro došla u C-u. Iskaz je glasio ovako: if(((a!=b SHL 3) XOR (a SHR 3) AND (a>b)) XOR (b+sqrt(c) SHL 4) AND (c XOR a)) Pretpostavljam da bez celog programa nećete skontati šta ovo znači, (radi se o nekim vrlo primitivnim operacijama sa dužima), ali se ipak nadam da ću uspeti da rešim problem. Hvala, dekiper.
cccc.271 dnikolic,
Postoji li nesto cime se mogu kreirati maske za unos podataka, pa da se kasnije ta maska koristi u programu? Ubih se ovako! :( dn
cccc.273 ljubao,
** Moze li neko malo detaljnije da objasni kako se preuzima od DOS-a ** kontrola gresaka prilikom kopiranja fajlova na diskete (treba mi u Pogledaj funkciju harderr. ** jednom programcetu)? Posto se, predpostavljam, radi o preuzimanju nekog ** interapta, ima li neko primercic kako se na ekran "montira" sat? Imaš u C direktorijumu primer (čini mi se SNIP* arhiva). ** Kad sam se ces raskukao, treba mi i kalkulator i kalendar. Ko ce sve to ** da programira! :) Za 50 DEM - ja. ;) Ljuba
cccc.274 bulaja,
**** new file **** R:\IBMPC\C\*.* ---------------------- snip1292 arj 153308 C-snippets 12/92, zbirka raznih C funkcija (source) #1 snip1292 a01 152091 C-snippets 12/92, zbirka raznih C funkcija (source) #2 Odlicna zbirka, sadrzi oko 280 (!) C funkcija raznih namena, sve je dato u izvornom (source) kodu. Uz poruku je prikacen indeks svih funkcija. snippets.arj
cccc.275 pyramid,
Evo jednog velikog problema: Interapt 08h proverava da li se dogodio neki event (tastatura, mis i sl.), pa ako jeste da zameni ss:sp za moj stek. Sve to u principu radi, ali... Koliko sam ja ukapirao, int 08h je nemaskirajuci, sto ce reci, dogadja se uvek bez obzira na IF. To bi trebalo da znaci da moze prekinuti izvrsavanje neke int xx komande. Izgleda da zbog toga program i puca. Ako zabranim zamenu stekova pre izvrsenja bilo koje funkcije iz stdlib-a (printf, puts, pa cak i kbhit) sve radi kako treba, ali neverovatno usporava stvari... Kako to moze da se sredi i da li je uopste u tome problem? Kada postavim breakpoint na delu za zamenu stekova, trenutna vrednost ss:sp je 0116:0840 sto je totalna nebuloza (niti je to neki od mojih stekova, niti je to uopste neki stek)... Da li neko ima iskustva sa ovim? Program je inace pisan u BC3.1 huge model. Ako treba malo da pojasnim stvar napisacu primer programcic... Nebojsa
cccc.276 mjova,
> Interapt 08h proverava da li se dogodio neki event > (tastatura, mis i sl.), pa ako jeste da zameni ss:sp za > moj stek. Sve to u principu radi, ali... int 08 se generiše posle određenog vremenskog intervala. nije mi baš jasno kako si hteo da izvedeš da se on startuje u svim uslovima? int 9 se generiše radi obrade tastature, a int (8+3,4) se generiše ako je došlo do mrdanja pacova (zavisi na kom com portu je). što se tiče ostalog, nisam primetio da imam problema, i ako sam petljao sa sva tri inta koja pominješ. da li si ti pisao rutinu za int 8?
cccc.277 pyramid,
>> da li si ti pisao rutinu zaint 8? Da... Ali cini mi se da me nisi najbolje razumeo. Mis je hendlovan preko rutine int 33/0c tako da se pri svakom pokretu pozi´kva moja rutina. Ona samo upise na odredjeno mesto da je mis pomeren/pritisnuto dugme. E, onda int 8 proverava to mesto da li je nesto upisano, pa ako jeste zameni stek... Moj problem je u tome sto se int 8 generise UVEK posle odredjenog vremenskog intervala (u mom slucaju 200Hz), pa cak i kada je IF=0, sto ce reci, int 8 je NMI... Kada se izvrsava odredjena funkcija dos-a (znaci int 21 ili slicni) i int 8 se generise stek je potpuno se sludi (dobija stalno istu vrednost 0116:08xx). Zasto? S obzirom da EventHandler (koji se dogadja po pritsku na neko dugme misa/dastature) nije jedini task, int 8 ce prvo spremiti vrednost steka u Task strukturu programa koji se trenutno izvrsava. Kako je stek potpuno druga vrednost, kada EventHandler vrati stek tog taska (koji ustvari i nije stek - F,CS,IP koje IRET skine sa njega su potpuno nebulozni), ode sve tamo daleko.... Kada bih mogao da zabranim generisanje int-a 8 dok se izvrsava npr. int 21 i slicni mislim da bi problem bio resen (sve lepo shljacka kada pred izvrsavanje puts, kbhit-a koje trenutno za testiranje koristim, stavim zabranu promene taska, ali s obzirom da program uglavnom izvrsava ove instrukcije to znatno usporava reagovanje na pritisak tastera)... Pokusavao sam razne nacine pa i skidanje sa steka Flag registra i testiranje IF-a, pa ako je 0 promena taska je zabranjena, ali nece. Kada ga u TD-u zaustavim na tom delu, Flag registar je takodje potpuno sludjen (neki od onih 'nedokumentovanih' bitova je setovan npr., IF jednom jeste jednom nije itd.). Ako se stek tada ne promeni sve radi i dalje normalno.... Kako? Zasto??? Nebojsa
cccc.278 djelovic,
> Moj problem je u tome > sto se int 8 generise UVEK posle odredjenog vremenskog interva > 200Hz), pa cak i kada je IF=0, sto ce reci, int 8 je NMI... Uzmi neki drugi interapt. Pogledaj malo unazad, dal' vasa dal dzakic su pisali o nekom zgodnom. Ili testiraj INDOS fleg, kao što se to radi za TSR programe.
cccc.279 nkbog,
> Koliko sam ja ukapirao, int 08h je nemaskirajuci, sto ce reci, dogadja > se uvek bez obzira na IF. Ajoj. Teško. To bi značilo da x86 prvo skoči na int 2, pa na int 8. (int 2 je NMI). Tajmer stalno generiše prekide, ali kada prekide onemogućiš, oni se jednostavno ne prepoznaju. Jednostavno: napravi program koji uradi CLI, i vrti se u petlji, a int 8 nešto piše na ekran, videćeš da ništa ne radi. > To bi trebalo da znaci da moze prekinuti izvrsavanje neke int xx komande. Uvek se može desiti prekidanje nekog interapta. DOS, Mpx, Video svi oni mogu imati pozive duže od 55 ms, pa samim tim mogu biti prekinuti od strane tajmera. A svi oni obično imaju na početku naredbi STI, upravo da ne bi zbunjivali tajmer, COM port et al. Da bi to sigurno radilo testiraj da nisi možda u okviru DOS (InDOS), Keyboard, COM, ili Video prekida (preuzmeš ih i ažururaš brojač svaki put kad se pozovu, odnosno završe). Izgleda da zbog toga program i puca. > Ako zabranim zamenu stekova pre izvrsenja bilo koje funkcije iz > stdlib-a (printf, puts, pa cak i kbhit) sve radi kako treba, ali > neverovatno usporava stvari... Možda radi, al' neće uvek: ako je stek nekog programa skoro pun, pa ga prekine tajmer, a ti pozoveš printf ima da se nakupiš ihaha stvari na steku i da šlogiraš sistem. Logično je da jako usporava, jer te funkcije rade preko DOS-a. NB. p.s. IMHO BC, MSC et al nisu zgodni za kritične delove TSR.
cccc.281 wizard,
U svakom izvršnom fajlu generisanim BC-om figuriše Borland-ovo ime i kopirajt poruka. Predpostavljam da je krivac za nju TLINK, a pošto bih želeo da je izbegnem, da li je to moguće ili da menjam linker?
cccc.282 djelovic,
> Predpostavljam da je krivac za nju TLINK, a pošto bih želeo da > izbegnem, da li je to moguće ili da menjam linker? Uzmi lepo PC TOOLS ili Nortona u ruke i sredi stvar. Ili ako ti treba često, napravi mali programčić. BTW, postoji masa programa koja traže određeni string u nekom fajlu. Postoji li neki koji radi search&replace? Nešto kao grep-with-replace.
cccc.283 .obj,
> U svakom izvršnom fajlu generisanim BC-om figuriše Borland-ovo ime i > kopirajt poruka. > > Predpostavljam da je krivac za nju TLINK, a pošto bih želeo da je > izbegnem, da li je to moguće ili da menjam linker? Nema veze TLINK sa time. Borland copyright se nalazi u startup-kodu, tj. onome što se izvrši pre main() (inicijalizacije, obrada kom. linije itd). Dakle, u datoteci CRT0.ASM (ili kako se već zove kod BC, valjda C0.ASM) promeniš taj copyright i asembliraš ponovo CRT0.ASM. Trebalo bi da za to asembliranje postoji nekakav BAT (MAKECRT.BAT ili nešto slično). E, da. Ne smeš 'tek tako' da promeniš taj copyright jer se provarava njegov checksum (zbog kontrole da li je nešto upisivano u početak DATA segmenta, gde se taj Copyright nalazi). Najbolje pogledaj gde je taj CMP AX, Checksum, pa sledeću instrukciju prepravi da checksum uvek bude OK (ako ti je baš toliko važan taj (C)). Inače (ako ne prepraviš tu proveru) će te tvoj program na kraju uvek pozdravljati sa 'Null pointer assignment'.
cccc.284 pyramid,
Da li neko zna kako TurboVision reaguje na pritisak tastera, ili pomeranje misa (i uopste sve event-e koji mogu da se dogode, npr. pritisak dugmeta misijeg dok je pointer na vrhu prozora sto rezultira njegovim pomeranjem) i koje sve interapte menja i zasto?? Nebojsa P.S. Veoma mi je vazno, zaglavio sam se u sred programa... :(
cccc.285 nkbog,
> Uzmi lepo PC TOOLS ili Nortona u ruke i sredi stvar. Ili ako ti treba > često, napravi mali programčić. Samo ako je program u LARGE modelu ili ako je za Windows, inače imamo "null-pointer assignement"... Najbolje rešenje je preko prerade C0?.ASM za BC odnosno CRT* za MSC. Treba pre promene kopirajta izmeniti proveru null-pointer assignementa (proveru kontrolne sume kopirajta). NB. p.s. Nemojte misliti da Borland ili Microsoft onda neće znati da ste koristili njihove kompajlera i run-time biblioteke...
cccc.286 mrmf,
> Ima li neko "Trilogiju o Zemljomorju" Ursule Legvin? Imam. Reci, kazi. Brada
cccc.287 ematic,
> U svakom izvršnom fajlu generisanim BC-om figuriše Borland-ovo > ime i kopirajt poruka. > > Predpostavljam da je krivac za nju TLINK, a pošto bih želeo da > je izbegnem, da li je to moguće ili da menjam linker? Jok, nije linker zapalio seno. Moraš da menjaš c0.asm, gde se nalazi start-up koji se obavezno linkuje. Samo, moraš malko da pripaziš, jer nije dovoljno promeniti samo poruke, nego mora još malo da se čačne po programu, piše_tamo_gde :))). Posle toga, build-c0.bat i gotovo.
cccc.288 wizard,
> imamo "null-pointer assignement"... Najbolje rešenje je preko > prerade C0?.ASM za BC odnosno CRT* za MSC. Hvala na odgovoru tebi, .obj-u i ematic-u. A što se tiče pc-tools-a ((c) djelovic :) - da je to radilo, ne bih ni pitao. :) > p.s. Nemojte misliti da Borland ili Microsoft onda neće znati > da ste koristili njihove kompajlera i run-time biblioteke... Neka znaju, ali ne mogu da dokažu ;) (tako je najslađe :).
cccc.289 wizard,
> E, da. Ne smeš 'tek tako' da promeniš taj copyright jer se provarava > njegov checksum (zbog kontrole da li je nešto upisivano u početak DATA > segmenta, gde se taj Copyright nalazi). Da li tako trivijalna promena (eliminisanje kontrole) može da ima i neke negativne posledice? Vrlo se slabo razumem u same procese link-ovanja, kompajliranja i generisanja .EXE fajlova, pa ne zamerite što davim. :)
cccc.290 janko,
>> Predpostavljam da je krivac za nju TLINK, a pošto bih >> želeo da izbegnem, da li je to moguće ili da menjam > linker? > > Uzmi lepo PC TOOLS ili Nortona u ruke i sredi stvar. Ili > ako ti treba često, napravi mali programčić. No chance! Slučajno, poruka je nameštena tako da ako je menjaš dobijaš NULL ASIGNMENT. ;) Moguće je je izbeći, malo suptilnijim metodima, ali nije u redu... sve dok ne napišete sopstveni ran tajm.
cccc.291 nkbog,
> Neka znaju, ali ne mogu da dokažu ;) (tako je najslađe :). Na žalost, ili njihovu sreću, mogu. Naime koristiš njihov kod koji ostavlja trag (na primer svaka firma ima neki svoj način za strcpy - razlike su trivijalne, ali postoje), i mogu da te tuže za ilegalno korišćenje softvera, naravno u Americi i naravno ukoliko im se to isplati (a čisto sumnjam). NB.
cccc.292 nkbog,
> Da li tako trivijalna promena (eliminisanje kontrole) može da ima i neke > negativne posledice? U toku debagovanja programa nema smisla to raditi, jer je to pomoć razvoju programa. U distribuciji ukoliko je program sigurno tačan (sic!) taj deo je suvišan i može se izbaciti. Ima i drugi način: uzmeš NU ili PCT promeniš kopirajt, nađeš poruku koja se ispisuje kao NULL pointer assignement i staviš 0 na njen početak (ili je pormeniš u May the farce be with you...). NB.
cccc.293 djelovic,
> Hvala na odgovoru tebi, .obj-u i ematic-u. A što se tiče pc-to > ((c) djelovic :) - da je to radilo, ne bih ni pitao. :) Borland C++ kpoirajt poruku upisuje na dno data segmenta. E sad, ovo se koristi u malomemorijskim :) modelima da se proveri da li je došlo do NULL pointer asajnmenta :), ali u velikomemorijskim :) modelima ona nema funkciju. Tj., PCT tehnika radi za program pisan u, recimo, large modelu. Ozbiljno pitanje: Da li ima iko ko u ozbiljnim programima (linija > 100) koristi neki drugi model osim large? :)
cccc.294 akojovic,
Ne znam šta ti konkretno treba, ali Turbo Vision upravo služi da se izbegne petljanje sa kontrolom miša i tastature. Prevešću ti nekoliko rečenica iz uputstva za TV pa ako te nešto konkretnije zanima pitaj. Postoji četiri tipa dogadjaja MOUSE EVENTS - postoje četiri vrste dogadjaja vezane za miša: pritisak i otpuštanje bilo kog tastera, promena položaja i "auto" dogadjaj. Pritisak tastera generiše evMouseDown, otpuštanje evMouseUp a pomeranje evMouseMove. Ukoliko se neki taster drži pritisnut periodično će biti generisan evMouseAuto. KEYBOARD EVENTS - oni su najjednostavniji, pritisak tastera generiše evKeyDown. MESSAGE EVENTS - oni dolaze u tri oblika: komande, emitovanja i korisničke poruke. Razlike su u načinu obrade. (Da ne objašnjavam mnogo emitovanje se koristi za komunikaciju. Recimo kada klikneš na skrol bar pri pregledu fajla funkcija koja prikazuje tekst mora dobiti komandu koja će dovesti do prikazivanja drugog dela teksta)... NOTHING EVENT - ako se ništa nije dogodilo TEvent struktura je definisana u system.h i ima oblik struct TEvent š ushort what; union š MouseEventType mouse; KeyDownEvent keyDown; MessageEvent message; ć; void getMouseEvent(); void getKeyEvent(); ć getMouseEvent postavlja odgovarajuću evMousexxx vrednost ili ako nije diran miš evNothing dok getKeyEvent poziva BIOS INT 16 rutinu da proveri da li je bilo pritisaka na tastaturu MessageEvent ima posebnu strukturu, ali to je mnogo duga priča. Zato ako te još nešto interesuje pitaj konkretnije, ne mogu da prekucavam celu knjigu. Pozdrav, Koja
cccc.295 dcolak,
Ne znam dal pogotih conf. no evo problema.. Kako da u MSC6.0 primim RING signal sa modema na COM3 ? Tj. šta se dešava kada modem dobije RING? Tj. hteo bih da napravim nešto kao TSR winfax, tj. da mi ekran "zasvetli" ;) kad pozvoni telefon. Tj. kako da pokupim bilo kakav signal sa COM3 iz mog programa. Preko kog interapta? Glavni mi je problem da znam na koji interapt treba da se nakačim. Mada mi i nije najjasnije kako ću pristupiti COM3 dok je sa _bios_serialcom lako pristupiti COM2 i 1 :(( So, na koji interapt da se prikačim, odakle da čitam primljen signal? Tj, kako da proverim sa kog COM-a stiže signal? Sledge DAMMIR!
cccc.297 mihajl,
Na VAX-u ( BUEF78:: ) je otvorena nova konferencija USENET koja prenosi poruke sa istoimene mreze sa trulog zapada. Trenutno su najvise prenesene poruke za C++, ali kazu da ce biti i ostalih konferencija. Uz poruku je prikacen fajl sa nazivima rasprava. Notes> dir USENET Created: 23-MAR-1993 13:16 4 topics Updated: 2-APR-1993 12:59 Topic Author Date Repl Title 1 BUEF78::DRAGANSR 23-MAR-1993 1 Introduction 2 UBBG::EMALENOV 24-MAR-1993 11 USEnet dokumentacija 3 UBBG::EMALENOV 24-MAR-1993 20 FAQ comp.lang.c++ 4 UBBG::EMALENOV 24-MAR-1993 663 comp.lang.c++ [ End of requested listing ] cvax.arj
cccc.298 .obj,
> Da li tako trivijalna promena (eliminisanje kontrole) može da ima i neke > negativne posledice? Teoretski da, praktično ne. Osim te 'Null pointer assignment' greške koja se, kao, na taj način kontroliše, postoji barem 431 milion načina da program ne radi zbog greške pri operacijama sa pokazivačima... Slobodno menjaj :)
cccc.299 .obj,
> So, na koji interapt da se prikačim, odakle > da čitam primljen signal? Tj, kako da proverim > sa kog COM-a stiže signal? Računari 57, tekst Zorana čivotića. Tamo piše sve što si tražio.
cccc.300 wizard,
> Ima i drugi način: uzmeš NU ili PCT promeniš kopirajt, nađeš > poruku koja se ispisuje kao NULL pointer assignement i staviš > 0 na njen početak (ili je pormeniš u May the farce be with > you...). Mislim da ću usvojiti ovo rešenje. Hvala, trebalo se setiti. :)
cccc.301 dgrbic,
:: Da li tako trivijalna promena (eliminisanje kontrole) :: može da ima i neke negativne posledice? Vrlo se slabo :: razumem u same procese link-ovanja, Ne može ako tvoj program inače ne izleće sa ranije pomenutom porukom o null pointerima :) Znači, prvo očistiš program od insekata, pa onda promeniš c0.asm i nema frke.
cccc.302 dgrbic,
:: Neka znaju, ali ne mogu da dokažu ;) (tako je najslađe :: :). Mogu, kako ne bi mogli :) Dovoljno je da pronađu npr. printf kod i pošto je on identičan u njihovoj biblioteci i kod tebe...
cccc.303 dcolak,
│ Računari 57, tekst Zorana čivotića. Tamo piše sve što si │ tražio. Ali ne kaže mi na koji interapt da se nakačim, kako bih napravio TSR, koji će se aktivirati na RING... Sledge DAMMIR!
cccc.304 pyramid,
Sve mi je to jasno, ali KAKO TO RADI??? Koje on interapte postavlja da bi dobio poruku od misa i kada je ta poruka dobivena kako postupa (npr. promeni INT 33/0c - pokazivac na user interrupt handler za misa i kad se dogodi klick na okvir prozora on mora startovati svoju rutinu koja ce taj prozor pomeriti/rasiriti/ugasiti... Kako to izvodi?) Ovo mi je potrebno jer sam napravio svoj sistem prozora za odredjeni programcic... Nebojsa
cccc.305 djelovic,
> Sve mi je to jasno, ali KAKO TO RADI??? Koje on interapte post > poruku od misa i kada je ta poruka dobivena kako postupa (npr. > 33/0c - pokazivac na user interrupt handler za misa i kad se d > okvir prozora on mora startovati svoju rutinu koja ce taj proz > pomeriti/rasiriti/ugasiti... Kako to izvodi?) Hoćeš da ti pošaljem klasu za miša koja sve to radi?
cccc.306 pyramid,
>> Hoces da ti posaljem klasu za misa koja sve to radi? Moze... Hvala unapred... Nebojsa
cccc.307 dcolak,
Evo ja opet. Dakle, kako da pristupim COM4 iz MSC6.0 ? Svi programi iz Racunara su za COM1 i 2. Sto je veoma prosto posto ih podrzava MSC, ali kako da dodjem do COM3 i COM4 ?! Sledge DAMMIR!
cccc.308 dekiper,
Molim te, ako možeš pošalji i meni. Puno puno zahvalan, dekiper.
cccc.309 akojovic,
Evo ti nekih rutina za rad sa COM portom. Objašnjenja su prilično detaljna (a i prevedena su pošto je mojoj drugarici trebalo za diplomski). Podržan je rad sa COM 1 - COM 4. Ako bude bilo problema pitaj. Pozdrav, Koja ibmcom.zip
cccc.310 akojovic,
> Sve mi je to jasno, ali KAKO TO RADI??? ... U okviru TEvent objekta se nalazi ushort član 'what'. Brojna vrednost ovog člana opisuje vrstu dogadjaja koji se pojavio, a ostatak strukture sadrži specifičnu informaciju o dogadjaju: kod pritisnutog tastera u slučaju pritiska na tastaturu, informaciju o poziciji miša i stanju tastera (da li su pritisnuti ili ne)... Tačan oblik možeš pronaći u header fajlovima. Bitovi u ushort promenljivoj what su rasporedjeni na sledeći način ┌───┬───┬───┬───┬───┬───┬───┬────────────────────────────────evMessage │ │ │ │ │ │ │ │ ┌────────────────evKeyboard │ │ │ │ │ │ │ │ │ ┌───┬───┬───┬evMouse ╔═¤═Đ═¤═Đ═¤═Đ═¤═Đ═¤═Đ═¤═Đ═¤═Đ═¤═Đ═══Đ═══Đ═══Đ═¤═Đ═¤═Đ═¤═Đ═¤═Đ═¤═╗ ║msb│ │ │ │ │ │ │ │ │ │ │ │ │ │ │lsb║ ╚═══¤═══¤═══¤═══¤═══¤═══¤═Đ═¤═Đ═¤═══¤═══¤═══¤═Đ═¤═Đ═¤═Đ═¤═Đ═¤═Đ═╝ │ │ │ │ │ │ └evMouseDown │ │ │ │ │ └────evMouseUp │ │ │ │ └────────evMouseMove │ │ │ └────────────evMouseAuto │ │ └────────────────evKeyDown │ └────────────────────────────────evCommand └────────────────────────────────────evBroadcast Ako želiš da ispitaš da li se desio neki od dogadjaja vezanih za miša umesto TEvent event; ... if (event.what & (evMouseDown đ evMouseUp...))!=0 ... možeš da koristiš if (event.what & evMouse) !=0 ... Funkcija handleEvent obavlja ono što tebe interesuje. Ako želiš u svojoj aplikaciji da uradiš nešto specifično treba da preradiš ovu f-ju i naučiš novi handleEvent dve stvari: kako da reaguje na nove komande koje si definisao i kako da reaguje na dogadadjaje izazvane tastaturom ili mišem. Evo šta piše u knjizi: virtual void TNewView::handleEvent (TEvent event) š // code to change or eliminate base view behavior TBaseView::handleEvent(event); // code to perform aditional functions ć Drugim rečima ako želiš da tvoja nova klasa obradjuje dogadjaje drukčije nego bazna klasa obradićeš te dogadjaje pre nego što proslediš dogadjaj baznoj handleEvent funkciji (Ona obradjuje one dogadjaje koje si naveo: povećava/smanjuje prozore pomera ih i sl.) Nadam se da će ti ovo pomoći. Pozdrav, Koja
cccc.311 djelovic,
Evo klase za baratanje sa mišem. Za razliku od drugih biblioteka pomoću kojih možete da saznate samo poziciju miša i status dugmadi, ova klasa vam daje jednu od sledećih informacija: LCLICK - pritisnuto levo dugme RCLICK - pritisnuto desno dugme LDOUBLE - dupli klik levog dugmeta RDOUBLE - dupli klik desnog dugmeta DRAGON - korisnik je pritisnuo levo dugme i drži ga (koristi se za vučenje objekta po ekranu) DRAGGING - korisnik još uvek drži pritisnuto dugme DRAGOFF - korisnik je otpustio levo dugme Kako to sve radi? Pa lepo, samo deklarišete primerak klase Mouse i konstruktor će sve da sredi: Mouse pacov; Sada možete da proverite da li je miš instaliran: if (pacov.Installed ()) ... Mišiji kursor se skida i stavlja na ekran sa pacov.hide () i pacov.show (). Pri tom ne treba zaboraviti da je mišiji kursor zapravo softverski kursor (pravi ga drajver za miša - MOUSE.SYS), pa miša treba isključiti pre svakog štampanja pa ga onda opet uključiti. Funkcija get vraća status miša - tj. status pritisnutih dugmadi. Takođe, ona postavlja koordinate x i y koje predstavljaju poziciju miša. Mali primer: #include <stdio.h> #include <conio.h> #include "mouse.hpp" main () š Mouse mis; int dugme; if (!mis.Installed ()) š printf ("Drajver za miša nije instaliran.Đn"); return 1; ć mis.show (); // Prikazi misiji kursor while (!kbhit ()) š // Dok ne pritisnes tastaturu dugme = mis.get (); if (dugme) š mouse.hide (); // Sakri misa zbog ispisa na ekran switch (dugme) š case LCLICK: printf ("Levo dugme"); break; case RCLICK: printf ("Desno dugme"); break; case LDOUBLE: printf ("Levi dupli klik"); break; case RDOUBLE: printf ("Desni dupli klik"); break; case DRAGON: printf ("Pocetak vucenja"); break; case DRAGGING: printf ("Vucenje"); break; case DRAGOFF: printf ("Pustio dugme"); break; ć printf (" na poziciji %d, %d", mis.x / 8, mis.y / 8); mouse.show (); // Vrati misiji kursor na ekran ć ć mis.hide (); // Sakrij misiji kursor return 0; ć --> Ovaj primer isecite i stavite na disk jer ga nema u arhivi <-- BTW, primetite da sam pri ispisu koordinata x i y njih delio sa osam. To je zato što mišiji kursor vraća koordinate za grafički ekran, a nas zanima tekstualni. Na raspolaganju vam je i konstanta CLICKWAIT kojom se definiše koliko mišonja posle prvog klika treba da čeka da bi video da li će da bude dupli klik. Kod mene je postavljena na 200 milisekundi jer je jedna sekretarica imala reflekse ko mrtav konj :), ali vi je možete bezbedno smanjiti na recimo 150. mouse.zip
cccc.312 dcolak,
│ Evo ti nekih rutina za rad sa COM portom. Objašnjenja su │ prilično detaljna (a i prevedena su pošto je mojoj │ drugarici trebalo za diplomski). Podržan je rad sa COM 1 - │ COM 4. Ako bude bilo problema pitaj. Hvala! Sad ću moći da slušam glasno muziku a da mi ekran prosvetli tako da znam kad zvoni telefon :)) Sledge DAMMIR!
cccc.313 dcolak,
│ Evo ti nekih rutina za rad sa COM portom. Objašnjenja su │ prilično detaljna (a i prevedena su pošto je mojoj │ drugarici trebalo za diplomski). Podržan je rad sa COM 1 - │ COM 4. Ako bude bilo problema pitaj. Ipak ima problema, rađen je za Turbo C a ja koristim MSC6.0... So, prebacih što mogadoh, no DTRBio ili tako nekako nema MSC so, piši propalo :(( void interrupt (*old_vect)(); Ovde Compiler prijavljuje: Syntax Error: '(' ??? prepravih u void (_interrupt *old_vect)(void) i CL je prošo.. Ex.... Znači još uvek ništa.... P.S. Možda nabavim TC samo zbog ovoga :((( Sledge DAMMIR!
cccc.314 pedjak,
> Tj. šta se dešava kada modem dobije RING? > Tj. hteo bih da napravim nešto kao TSR > winfax, tj. da mi ekran "zasvetli" ;) > kad pozvoni telefon. Imam jedan program koji radi to što ti treba + .ASM sors. Ako ti treba, reci.
cccc.315 djelovic,
> Ipak ima problema, rađen je za Turbo C a ja koristim > MSC6.0... So, prebacih što mogadoh, no DTRBio ili > tako nekako nema MSC so, piši propalo :(( Imaš u staroj PC.SOFT ili PC.PROG biblioteku lcomm (mislim) Vlade Kostića, a onda imaš negde kasnije tu istu biblioteku koju je neko modifikovao da radi i sa COMM 3 i COMM 4, plus je "dobila" i veći bafer. Potraži.
cccc.316 mdimitrijevic,
Zdravo! Da li ima neko neki source u C-u koji moze da cita DBF datoteke iz DBASE IV i FOX-a. Ili ako bar ima njihovu strukturu. Pozdrav, Marjan Dimitrijevic
cccc.317 bulaja,
│Da li ima neko neki source u C-u koji moze da cita DBF datoteke │iz DBASE IV i FOX-a. Ili ako bar ima njihovu strukturu. └─── Evo ti struktura (preuzeto iz R.Spence "Clipper Programming Guide"): typedef struct { char dbf_id; char last_update[3]; long last_rec; unsigned data_offset; unsigned rec_size; char filler[20]; } DBF_HEAD; typedef struct { char field_name[11]; char field_type; char dummy[4]; union { unsigned char_len; struct { char len; char dec; } num_size; } len_info; char filler[14]; } FIELD_REC;
cccc.318 skerl,
Mouse++ Version 4.0 Copyright (c)1992 by Carl Moreland 10/06/92 ----------------------------------------------------------------------- Using the Mouse Class To incorporate the mouse routines in your program, simply add mouse.lib to your project or make file and #include mouse.h in any mo- dule that calls a mouse function. mouse.lib contains all the functions in mouse.cpp and cgc.cpp, but the functions are separated into differ- ent object modules for greater efficiency. Note that mouse.lib is com- piled for the large memory model. Pozdrav, Skerl. moupp400.zip
cccc.319 skerl,
(********************************************************************* * MouseLib * * mouseLib for TC2.0, TC++ and BC++ * **********************************************************************) Pozdrav, Skerl. mouclib5.zip
cccc.320 mjova,
> Da li ima neko neki source u C-u koji moze da cita DBF > datoteke iz DBASE IV i FOX-a. Ili ako bar ima njihovu > strukturu. imam ja. sve radi super. probao i ostavio ;) db.arj
cccc.321 dcolak,
│ Imam jedan program koji radi to što ti treba + .ASM sors. │ Ako ti treba, reci. Naravno!! Šteta što nije C, no nema veze, samo nek radi! So, ne budite zamoljeni... Sledge DAMMIR!
cccc.322 mdimitrijevic,
Hvala za opis DBF i za source. Pozdrav, Marjan Dimitrijevic
cccc.323 pyramid,
Hvala na objasnjenju... Nebojsa P.S. Je l' znas ko poziva handleEvent?
cccc.324 pyramid,
Hvala... Nadam se da ce mi ovo pomoci... Nebojsa
cccc.325 dcolak,
│ Imaš u staroj PC.SOFT ili PC.PROG biblioteku lcomm │ (mislim) Vlade Kostića, a onda imaš negde kasnije tu istu │ biblioteku koju je neko modifikovao da radi i sa COMM 3 i │ COMM 4, plus je "dobila" i veći bafer. Potraži. Bacam se na mukotrpni posao traženja, hvala :) Sledge DAMMIR!
cccc.326 bdm.,
Hi, za sve programere u C-u i još zainteresovane za konferenciju sa UseNeta-a comp.lang.c++, malo obaveštenje, počeo je njen automatski prenos na Hobbiton (u konferenciju UseNet), poruke stižu nešto ranije nego na UBBG, plus što se mogu propustiti kroz off-line reader (HOR). BDM.
cccc.327 dusanp,
Pre nekog vremena mi je bio potreban program koji odredjuje tip procesora (286,386,...). Posto sam dobio program u asembleru prepravio sam ga u pa sad lici na c proceduru. Da ne zaboravim - posto se koristi inline asembler za njegovo koriscenje mora da se koristi c kompajler koji ima ovu mogucnost. Evo njega ;) (exe i sors), mozda jos nekom zatreba. cputest.arj
cccc.328 djelovic,
Kojom #ifdef direktivom mogu da proverim da li je kompajler kojim prevodim MSC? Primera radi, TC ima definisano __TURBOC__
cccc.329 ilotina,
HI! Pošto su neki ljudi tražili F(x) za rad sa Sound Blaster-om , evo ih:). Fajl je skinut još u doba kad nam je Trickle bio dostupan, pa ako neko ima noviju verziju nek je upl. Ivan blast13.arj
cccc.330 pedjak,
> Naravno!! Šteta što nije C, no nema veze, samo > nek radi! Eve ga... pa ga budži po svojoj volji :) phonring.zip
cccc.331 bstevan,
Zdravo ! Ja, testirao BOOST i MHZ+ rade i jedan i drugi kod mene. BOOST mi ubrzava AT 286 12 Mhz za 10%, a MHZ+ nijednom nije prijavio poruku kao kod tebe, ali je ipak bolji od BOOST-a, jer mi je ubrzao AT za 14%, ovih 4% je ipak prednost u odnosu na BOOST. ---POZDRAV--- ---BSTEVAN---
cccc.332 akojovic,
>PS. Je l' znaš ko poziva handleEvent? Glavna petlja funkcije run, člana klase TApplication, poziva funkciju TGroup::execute koja u osnovi izgleda ovako: TEvent event; event.what=evNothing; do š if (event.what !=evNothing) eventError(event); getEvent(event); handleEvent(event); ć while (endstate==continue); // dok se ne postavi 'quit' fleg Pozdrav, Koja
cccc.333 dcolak,
│ Eve ga... pa ga budži po svojoj volji :) Evo, zahvaljujem se unapred. No kad pogledam, dobićete što ste zaslužili ;)) Sledge DAMMIR!
cccc.334 dekiper,
Pišem neki programčić za crtanje i između ostalog trebalo bi zna koliko video memorije ima kartica na dotičnom kompjuteru. Da li je to nekako moguće iz Borland C++ 3.1. Puno hvala, dekiper
cccc.335 dekiper,
// __TURBOC__ Mislim da sam negde u literaturi video da postoji konstanta _MSC_(broj verzije) ovde broj verzije je zapisan u obliku: verzija 5.1 broj verzije=510 verzija 6.0 broj verzije=600 verzija 7.0 broj verzije=700 itd... tako da ćeš sa #ifdef _MSC_600 dobiti istinito ako se radi o MSC-u 6.0.
cccc.336 mjova,
> Pišem neki programčić za crtanje i između ostalog trebalo > bi zna koliko video memorije ima kartica na dotičnom > kompjuteru. Da li je to nekako moguće iz Borland C++ 3.1. nisam ništa radio u grafici, ali mi se čini da ću uskoro početi ;). pogledaj u diru negde na sezamu ima svga bgi veznik, možda u njemu piše nešto o tome. generalno, što se tiče toga koliko kartica imam memorije, mora da postoji neki int koji daje taj podatak - prolutaj po helpovima. (int 10h/1bh)
cccc.337 skerl,
SOUNDBLASTER FREEDOM PROJECT The aim of the Soundblaster Freedom Project is to provide a cheap source of programming information for the Soundblaster and other sound cards. Previously, programming a sound card has required a not inconsiderable investment in a developer's kit for each sound card. These developer's kits have been known to be terse and not well written. Our aim is to provide enough information to the general programmer to allow them to add sound card support to their software at minimal cost. environ.c 1228 4-05-92 17:23 sbp.asm 655 3-08-92 0:04 readme.txt 2131 2-12-92 11:45 driver.c 3045 4-05-92 17:23 dacdir.c 1267 4-05-92 17:23 sb.h 4342 4-05-92 19:43 getvol.c 1282 4-05-92 17:23 mixed1.sam 27508 4-05-92 23:31 hitit.sam 4100 1-31-92 1:43 getvol.exe 10910 4-05-92 17:26 sbdac.c 2179 4-09-92 3:00 sbfm.c 3574 4-05-92 17:23 sbfm.exe 18751 2-15-92 0:53 dacdma.exe 29882 4-09-92 3:00 organ.sam 23612 1-31-92 1:45 play_cmf.exe 34174 4-09-92 3:00 brasshit.sam 14318 1-28-92 18:00 lowbrass.sam 12380 1-28-92 18:00 brass2.sam 13754 2-01-92 0:00 sbmidi.c 298 4-05-92 17:23 sbf.lib 12288 4-09-92 3:00 fmtest.c 919 4-05-92 17:23 fmtest.exe 19002 4-09-92 3:00 sbp_chk.asm 1047 3-08-92 0:02 getopt.c 4215 4-09-92 2:53 play_cmf.c 8056 4-05-92 17:23 driver.exe 18387 4-05-92 19:45 vochdr.h 478 4-05-92 17:23 sbf.txt 543 4-13-93 14:30 dma_code.asm 14943 4-05-92 19:27 dacdir.exe 24206 4-09-92 3:00 mixed.sam 8200 4-05-92 20:13 mult.sam 18339 4-05-92 23:42 m1.sam 32093 4-05-92 23:43 dacdma.c 2518 4-09-92 2:56 makefile 1110 11-10-92 15:14 Pozdrav, Skerl. sbf2.zip
cccc.338 pyramid,
Imam problema sa patchovanjem int-a 21. Evo primercica: #include <dos.h> void far interrupt (*old)(); void interrupt Int21() { asm { pop bp pop di pop si pop ds pop es pop dx pop cx pop bx pop ax } old(); asm { push ax push bx push cx push dx push es push ds push si push di push bp } } void main() { old=getvect(0x21); setvect( 0x21, Int21 ); puts( "Ovo je sa promenjenim dvajeskecom" ); setvect( 0x21, old ); } Program bi trebalo da patchuje int 21 i jednostavno skoci na stari vektor. Oni push-ovi i pop-ovi su tu zato sto kompajler (BC++3.1 huge model) pri definisanju rutine sa interrupt sve registre push-uje na stek, a pri izlasku ih vrati... Sta je problem? Nebojsa
cccc.339 zorans,
Upomoc ! Trazim C ili C++ biblioteku za serial comm ( int driven ). Na primer GreenLeaf++ ili nesto slicnoH Paradox Engine i odgovarajuci Paradox. TurboVision ili ObjectVision ili nesto slicno za menu+dataentry sistem. Sve ovo moram da strpam u jednu near real-time app, te je pozeljno da se ove komponente "vole". Naravno, pozeljno je da se ovo sve vidi u grafickom modu na ekranu. Imam, ( pokusavao sam ) sa C-scape-om + C-Isamom, ali ovo trazi suvise rintanja ( programiranja). Zahvalan svima koji pomognu. pozdrav ZORANS.
cccc.340 mjova,
> old(); (*old)();
cccc.341 ppekovic,
>> Trazim C ili C++ biblioteku za serial comm ( int driven ). Na primer >> GreenLeaf++ ili nesto slicnoH Na FFS-u (a biće na sezamu čim bulaja nađe vremena) ima jedna lepa C/C++ biblioteka za rad sa com portovima. Pogledaj u /msdos/prog/c dir-u. >> Paradox Engine i odgovarajuci Paradox. >> TurboVision ili ObjectVision ili nesto slicno za menu+dataentry sistem. U Beogradu postoji nekoliko firmi koje prodaju software, nazovi ih i pitaj. Paya
cccc.342 dzakic,
>> Oni push-ovi i pop-ovi su tu zato sto kompajler (BC++3.1 huge model) pri >> definisanju rutine sa interrupt sve registre push-uje na stek, a pri >> izlasku ih vrati... Sta je problem? Mjova ti reče da je problem u pozivu stare rutine, a mislim da ti nije potrebno sklanjanje vrednosti sa steka i ponovno vraćanje po povratku. Ako ih je C već sačuvao, ostavi ih tako... sigurno nije bez razloga.
cccc.344 pyramid,
>> ti nije potrebno sklanjanje vrednosti sa steka i ponovno vracanje Potrebno je zbog toga sto kompajler odmah po inicijalizaciji unisti BP, DS i eventualno AX koji su mi neophodni pri pozivu neke dos funkcije... Kada bih ostavio na kraju da vrati sacuvane vrednosti sa pocetka nikada ne bi mogla ni jedna funkcija da mi vrati rezultat... Nebojsa
cccc.345 pyramid,
>> > out(); >> (*out)(); Probah... Nije... Nebojsa
cccc.346 mjova,
> Program bi trebalo da patchuje int 21 i jednostavno skoci > na stari vektor. Oni push-ovi i pop-ovi su tu zato sto > kompajler (BC++3.1 huge model) pri definisanju rutine sa > interrupt sve registre push-uje na stek, a pri izlasku ih > vrati... Sta je problem? pre svega da ti preporučim da izbegavaš huge model, osim ako ti je *baš* potreban (spor i dug kod). pored onoga što ti već rekoh, pogledah kakav se asm dobijq za old() i za (*old)()... ono što sam primetio je da NEMA RAZLIKE u kodu ;). bio sam ubeđen da je potrebno startovati program od adrese koja je ubeležena u promenljivu old (koja je tipa interrupt fn). elem, malore (posle zakove poruke) sam tek pročitao celu tvoj poruku (i ceo kod ;). prekid (int) se, generalno, može desiti BILO GDE i s tog stanovišta treba čuvati sve registre. međutim, prekidi poput 8, (9... i drugi koji se izazivaju posebnim H/W zahtevima - IRQ) MORAJU žUVATI REGISTRE, u suprotnom to, jednostavno, neće raditi ni trena. drugo, što se tiče ostalih interapta (kao npr 0x10, 0x21...), oni su zapravo funkcije ili čisti vektori (samo nešto pokazuju). ovde i leži problem koji tebe zbunjuje. ti treba od te funkcije da dobiješ neki rezultat, a on zapravo neće biti vraćen jer sama direktiva ˙interrupt˙ čuva/vraća sve registre. moram priznati da ovo nisam radio iz C-a jer smatram da nema osnova - zašto bih filtrirao dosove funkcije (a i ostale) kad samo moj program može da poziva te fn? ovo bih radio za neki TSR, ali TSR bih pisao u ASM. e, sad, pošto tvoja fn mora da se vraća sa IRET onda fn treba deklarisati kao interrupt, ali to zeza registre... šta sad? ;) e, tu dolazi asm koji ima više stepeni slobode. mali primer tek da počneš: //--------------------------------------------- // mojint21.asm //--------------------------------------------- .model large PUBLIC C _int21 ; da C primeti ovu fn EXTRN C mojint21:FAR ; deklaracija C fn-a .code _int21 PROC far call FAR PTR mojint21 ; poziv C funkcije iret ENDP _int21 end //--------------------------------------------- // mojint21.c //--------------------------------------------- typedef void interrupt (*new_fn)(); // ovo zbog C++ extern void far _int21(void); void interrupt (*old21)(); //----------------------------------------------------------- // ovde obrati pažnju na DS registar (a i ostale ;) void far mojint21(void) { // ovde brljaj po int 0x21 (*old21)(); // šta da radim, navika... ;) } //----------------------------------------------------------- int main (void) { old21= getvect(0x21); setvect(0x21, (new_fn)_int21); // // tvoj program. // setvect(0x21, old21); return(0); } eto, to bi bilo to, valjda će raditi odmah - nisam probao, ali ono što sigurno radi šaljem ti uzporuku. to je obrada dosove kritične greške i može se lepo primeniti u programima. radi se o suvom rešenju za zamenu dosove poruke abort/retry/... pozdrav, SY. critical.arj
cccc.347 zorans,
Hvala Paya. No, Nemam pojma sta je to FFS. Drugo,ono za kupovinu sw-a, znam samo za CET, ali mi se ne daju tri plate za jedan lib. Please, posavetuj dalje pozdrav zorans.
cccc.348 nkbog,
>> old(); >(*old)(); To je isto to. I jedno i drugo bi podržavaju i MSC i BC (čini mi se i da su obe forme deo ANSI sintakse C-a). NB.
cccc.349 dzakic,
>> ostavio na kraju da vrati sacuvane vrednosti sa pocetka nikada ne bi >> mogla ni jedna funkcija da mi vrati rezultat... Da... izgubio sam iz vida da se radi o int 21h (još mi u glavi osmica, od ztime-a :). Poznat mi je problem, isto se dešava i kad pokušaš da preuzmeš int 16h, recimo. Znaš šta je mene tad mučilo: što interapt treba da postavi neke flegove (Z, C i sl.) a oni se skupe sa steka tek po izlasku iz TVOJE int rutine naredbom IRET! iako ih je originalni interapt uredno postavio. Onda sam morao da pucam na stek, sa "ss:[sp+6]" ili neku sličnu adresu, da ga napunim vrednostima flag registra. Tu adresu moraš da izračunarš - koliko imaš registara gurnutih na stek, pa 4 bajta za return adresu pa su 2 sa flegovima. Mislim da je isti problem i sa dosovim interaptom. Mnoge funkcije vraćaju grešku u C flagu pa se mašina zbog toga blokira. (?)
cccc.350 dejanr,
>> No, Nemam pojma sta je to FFS. FFS = Fon File Server. Domaći Trickle. Pogledaj SRBBS.TXT u direktorijumu NOVOSTI.
cccc.351 ppekovic,
>> Drugo,ono za kupovinu sw-a, znam samo za CET, ali mi se ne daju tri plate za >> jedan lib. Ako ne želiš da kupuješ, ostaju ti PD i SW biblioteke, ali ne brini i njih ima podosta. Reci tačno šta te zanima pa da te uputim na neke fajlove, ili da ih potražim. Paya
cccc.352 mjova,
> Potrebno je zbog toga sto kompajler odmah po > inicijalizaciji unisti BP, DS i ovo možeš srediti preko _loadds. inače, ne uniši ih već se njihove vrednosti izgube tokom rada, naročito ako je u pitanju huge model koji ima za svaki modul po jedan DS.
cccc.353 zorans,
Hvala!
cccc.354 pyramid,
ů>> ovo nisam radio iz C-a jer smatram da nema osnova - zasto bih >> filtrirao dosove funkcije (a i ostale) kad samo moj program moze >> da poziva te fn? ovo bih radio za neki TSR, ali TSR bih pisao u Zato sto je potrebno da dosove funkcije moze da poziva VISE tvojih programa, a kako dos nije bas pisan u skladu sa par osn. pravila multitaskinga mora se zabraniti promena taska dok se dos fn-ija ne izvrsi do kraja... >> e, sad, posto tvoja fn mora da se vraca sa IRET onda fn treba >> deklarisati kao interrupt, ali to zeza registre... sta sad? ;) e, >> tu dolazi asm koji ima vise stepeni slobode. mali primer tek da Cini mi se da je bolja ona moja rutinica u C-u sto cuva registre, a uostalom isto rade. Problem je u Flag registru (ko sto rece dzakic).... Nebojsa
cccc.355 pyramid,
>> Znas sta je mene tad mucilo: sto interapt treba da postavi neke >> flegove (Z, C i sl.) a oni se skupe sa steka tek po izlasku iz TVOJE >> int rutine naredbom IRET! iako ih je originalni interapt uredno >> bajta za return adresu pa su 2 sa flegovima. Mislim da je isti >> problem i sa dosovim interaptom. Mnoge funkcije vracaju gresku u C >> flagu pa se masina zbog toga blokira. (?) Izgleda da je to... Evo prilazem i ispravljenu verziju (dodato je: pushf pop ax mov bp,sp mov [bp+22],ax ), ali ni ovako promenjen ne radi... :( Nebojsa tst.c
cccc.356 duduk.,
Da li neko ima uputstvo za dflat9 ?
cccc.357 skerl,
Personal Communications Library For the C Language (PCL4C) Version 3.4 Jan 4, 1992 1.0 Introduction The Personal Communications Library for the C Language (PCL4C) is an asynchronous communications library designed for experienced software developers programming in C. Four compilers are supported: Microsoft Optimizing C, Microsoft Quick C, Borland Turbo C, and MIX Power C. An IBM PC/XT/AT or compatible is required. The PCL features: o SMALL, COMPACT, MEDIUM & LARGE memory models. o 32 communications and support functions. o Support for the high performance INS16550 UART. o Supports hardware (RTS/CTS) flow control. o Interrupt driven receiver. o Supports 300 baud to 115,200 baud. o Supports COM1, COM2, COM3, and COM4. o Adjustable receive queues from 8 bytes to 32 KB. o Control-BREAK error exit. o 17 communications error conditions trapped. o Allows 4 ports to run concurrently. o Complete modem control & status. o Written in assembly language for small size & high speed. o Terminal program featuring XMODEM, YMODEM, & YMODEM-G. Pozdrav, Skerl. p.s. Bulaja, mogao bi i ovu i onu biblioteku iz pascal teme da prebacis u odgovarajuce direktorijume. pcl4c34.zip
cccc.358 pmijat,
Narode, imam jednu molbu za vlasnike MS C-a : Treba mi jedna funkcija (samo OBJ) koja ocitava broj slobodnih bajta na disku po zelji (0=A,1=B...). Naime, radi se o sledecem : radim u MS COBOL-u (4.5), a doticni nema (ili ja ne znam za nju) funkciju koja mi vraca slobodan prostor na disku. Kod kuce imam i Turbo C++, sa kojim nazalost gorenavedeni Microsoftov proizvod nije kompatibilan (mrze Borland, pa to ti je) po pitanju .OBJ-a. Napominjem da za sada tek pomalo ceprkam po C-u, pa se unapred izvinjavam ako odvalim neku glupost. Doticna f-ja bi trebalo da izgleda ovako : #include <dos.h> long int GET_DSK_SIZE(unsigned char drive) š struct dfree dinfo; long int freesp; getdfree(drive,&dinfo); freesp = dinfo.df_avail * dinfo.df_sclus * dinfo.df_bsec; if (dinfo.df_sclus == -1) freesp = 0; /* u slucaju greske freesp = 0 */ return(freesp); ć Ovako mislim da bi to izgledalo u Borland Turbo C-u, a ako MS C ima neku drugu f-ju od getdfree... Ukoliko to ima nekog uticaja pri prevodjenju samo u OBJect, trebalo bi je prevesti u HUGE model (sam COBOL po definiciji radi u HUGE modelu, pa nekako mislim da to ima veze i sa tim u kom modelu se prevode funkcije za linkovanje sa istim. Da li sam u pravu ?). Molim neku dobru dusu koja gaji neki od Microsoft C-ova ( MS C 4.0, 5.0, ili 6.0 - ne MS C 7.0, jer ne znam slaze li se ovaj COBOL sa njim) da mi gorenavedenu f-ju iskompajlira u OBJ i da mi je mail-ne (ma wr pmijat). Unapred hvala Pozdrav Predrag(pmijat)
cccc.359 dnikolic,
>> Da li neko ima uputstvo za dflat9 ? Uh, mnogo je komplikovano, i ja se ovih dana bakcem sa njim. Jedva kompajlirah primer dat uz DFLAT. Ukoliko se jos neko zanima sa istim da osnujemo grupu, stvar je, verujem, dosadna za one koji se njom ne bave. :) Jedino je sigurno da je mocno! dn
cccc.360 djelovic,
> Da li neko ima uputstvo za dflat9 ? A da ti predložim bolju alternativu :) ? Koristiš li C++ ili si samo C-man?
cccc.361 nkbog,
>> Da li neko ima uputstvo za dflat9 ? Pročitaj neki tekst o programiranju pod Windowsima. DFlat je samo text-mode implementacija SAA standarda (Windows i PM iz OS/2). Jako slično i nešto malo lakše za programiranje (i puno lošije od uzora). NB.
cccc.362 robert,
>> primer dat uz DFLAT. Ukoliko se jos neko zanima sa istim da >> osnujemo grupu, stvar je, verujem, dosadna za one koji se njom ne >> bave. :) Jedino je sigurno da je mocno! Eh, ja sam digo ruke od tog Dflat-a čim sam video dokumentaciju i rečenicu da treba pogledati DDJ iz godina: 18xx-199X ;(. Da bi iole uspešno koristio Dflat, trebaju ti svi ti brojevi DDJ jer je autor to objavljivao kao Dinastiju ;(. Moćno možda jeste, ali je užasno komplikovano. BTW, ako te interesuje rad sa prozorima i ekranom u C-u, dođi u klub večeras, donosim jednu disketlu za jednog ortaka pa ako te zanima... :)).
cccc.363 robert,
>> A da ti predložim bolju alternativu :) ? Koristiš li C++ ili si >> samo C-man? Ehej, Deki, polako, prvo da istrebimo gamad i da napišemo uputstvo pa onda.... ;))))). (Just kidding ;)
cccc.364 mjova,
gde grešim? opet imam problema oko findfirst/findnext. ili meni nije jasan princip rada ili to nije ispravno. malo sam preuredio osnovni primer za ove dve fn i to ne radi kako treba! /* findfirst and findnext example */ #include <stdio.h> #include <string.h> #include <dir.h> #include <dos.h> int main(int argc, char *argv[]) { struct ffblk ffblk; int done; char *find= "*.*"; if(argc > 1 && strlen(argv[1]) < 66) find= argv[1]; printf("Directory listing of %s\n", find); done = findfirst(find, &ffblk, FA_DIREC); while (!done) { printf("%s %s\n", (ffblk.ff_attrib & FA_DIREC ? "Dir:" : " "), ffblk.ff_name); done= findnext(&ffblk); } return 0; } dakle, ovo bi trebalo da traži samo imena direktorijuma (zadato FA_DIREC), što kod mene nije slučaj - pretraži sve što postoji u tom direktorijumu. ove dve funkcije pozivaju dosovu 0x4E, tako da i svako iskustvo oko rada iste je dobro došlo. inače, ovaj problem sam imao još tokom pisanja scd-a, međutim tamo mi je bio potreban i spisak fajlova tako da se sve drugačije manifestovalo.
cccc.365 dejanr,
>> dakle, ovo bi trebalo da traži samo imena direktorijuma (zadato FA_DIREC), >> što kod mene nije slučaj - pretraži sve što postoji u tom direktorijumu. Koliko se sećam, FA_itd je *maska* kojom se neke stvari *uključuju*. Mogu da se uključe direktorijumi i skriveni fajlovi itd, ali obični fajlovi ne mogu da se isključe. Moraš da prođeš i kroz njih pa da "odbacuješ" šta ti ne treba.
cccc.366 stomic,
-------------------------------------------------------------------------- The case against C P.J. Moylan Department of Electrical and Computer Engineering The University of Newcastle N.S.W. 2308, Australia ... The goal of this paper is to argue that it is time to retire C in favour of a more modern language. .... In what follows, I shall be using Modula-2 as an example of a modern programming language. This is simply because it is a language about which I can talk intelligently. I am not suggesting that Modula-2 is perfect; but it at least serves to illustrate that there are languages which do not have the failings of C. ... Do these reasons look familiar? Yes, they are almost identical to the arguments which were being trotted out a few years ago in favour of BASIC. Could it be that the current crop of C programmers are the same people who were playing with toy computers as adolescents? We said at the time that using BASIC as a first language would create bad habits which would be very difficult to eradicate. Now we're seeing the evidence of that. ... Now, where does C fit into this picture? The answer is that C is built around lessons which were learnt from Algol 60 and its early successors, and that it does not incorporate much that has been learnt since then. We have learnt some new things about language design in the last 20 years, and we do know that some of the things that seemed like a good idea at the time are in fact not such good ideas. Is it not time to move on to D, or even E? ... -------------------------------------------------------------------------- Ništa lično ;). Ako ste i izrazito za C, obavezno pročitajte tekst. žovek je totalni genije :). Ceo tekst ide uz poruku. Source: tesla.newcastle.edu.au Hobbiton, i:\info\c-case.zip Pozdrav, stomic@hobbiton. c-case.zip
cccc.367 madamov,
****** The answer is that C is built around lessons which were learnt from Algol 60 ****** A paskal kao nije baziran na principima iz Algola? B) Nemam ništa protiv Module 2, čak sam prvo u njoj i radio pre prelaska na C, ali ovo mu i nije neki argument. B)
cccc.368 skerl,
ASYNCHRONOUS FUNCTIONS FOR MICROSOFT, TURBO, OR ZORTECH C The LIB(s) on the included disk are libraries of serial communications functions designed specifically for use with Microsoft C, Turbo C / C++, and Zortech C / C++. The regis- tered version has LIBs for all memory models. The shareware version is small model only. --- Features of the library functions --- o Support for 16550 UART's FIFO mode of operation o Fully interrupt driven o Baud rates up to 115,200 baud o User defined transmit and receive ring buffer sizes. o Ring buffers may be in placed in FAR memory even in small and medium model programs. o User defined port addresses, IRQ use, and interrupt vector numbers. o Support for simultaneous operation of 2 ports. o Built in support for XON/XOFF and hardware flow control o Block transmit and receive functions o Receive buffer look ahead function o 100% assembler code for maximum speed o Totally compatible with Microsoft C, Turbo C, Zortech C, and other C compilers that use standard Microsoft high level language calling conventions. --------------------------------------------------------------- Mike Dumdei, 6 Holly Lane, Texarkana TX 75503 MCOMM5 (c) 1989, 1990, 1991 All Rights Reserv --------------------------------------------------------------- Pozdrav, Skerl. mcomm552.zip
cccc.369 ematic,
> A paskal kao nije baziran na principima iz Algola? B) Nemam > ništa protiv Module 2, čak sam prvo u njoj i radio pre prelaska > na C, ali ovo mu i nije neki argument. B) C nije jezik, C je religija :)))))))). Mada, čovek je napisao i ponešto što vredi, npr kaže da je C macho jezik :))))))).
cccc.370 stomic,
$ A paskal kao nije baziran na principima iz Algola? B) Nemam Pascal niko ne bi više koristio da nije bilo Borlanda ;). Šta više, TP je najmanje Pascal ;). $ ništa protiv Module 2, čak sam prvo u njoj i radio pre prelaska $ na C, ali ovo mu i nije neki argument. B) Interesujeme šta ti se svidelo na C-u što te je nateralno da ostaviš Modulu-2. Ja nisam pisao onaj tekst i nemam nameru da ga branim :), ipak čovek programira od 70tih i verovatno zna malo više od tebe i mene ;). Nemam nameru da započnem još jednu diskusiju, npr. Modula-2 protiv ostalih, ili tako nešto (mada i nije loše u ovim dosadnim danima :), čisto me interesuje tvoje mišljenje. Pozdrav, stomic@hobbiton.
cccc.371 stomic,
$ C nije jezik, C je religija :)))))))). Mada, čovek je napisao i He, he.. Ovo si 100% upravu. C JESTE religija koju su nam nametnuli ameri (kao i milion drugih stvari, kao njihovo 'mezimče'). Pogledajte realno, svi normalni i dobri jezici su nastali u Evropi :). $ ponešto što vredi, npr kaže da je C macho jezik :))))))). Drago mi je da si pročitao :). Pozdrav, stomic@hobbiton.
cccc.372 .obj,
> The goal of this paper is to argue that it is time to retire C in favour > of a more modern language. Smatram da je "ubeđivanje" programera da je neki jezik bolji od drugog čisto gubljenje vremena. Ali to opet ne smeta da se malo "posvađamo" :) IMHO, Modula-2 nema ama baš ništa bolje "projektovano" nego ANSI C. Ako neko hoće da piše macho-kod on to može da uradi i u Moduli, ali ima da se odere. Međutim, ako neko ima živaca (i mozga) da disciplinovano piše neki program, ja bih mu UVEK pre preporučio C nego Modulu. A još kada ustanovim da je sa C-a lako preći na C++, tu za mene uopšte nema dileme :)
cccc.373 mnikolic,
Jedno pitanje za poznavaoce TC 2.0. Da li je preddefinisani stream 'stdprn' vezan jedino za LPT1 ili se preko njega može pristupiti i ostalim LPT izlazima? Ako može, da li se izbor možda vrši preko funkcije 'biosprint', komanda '1 - Initializes the printer port'? Imam samo jedan paralelni port pa ne mogu da eksperimentišem :(. Možda na Sezamu u nekoj od SW/PD biblioteka ima primera za rad sa paralelnim portovima? m.
cccc.374 madamov,
****** C nije jezik, C je religija ****** Malo ga pretera. B)
cccc.375 madamov,
****** Pascal niko ne bi više koristio da nije bilo Borlanda ;). ****** Znam. B) žesto sam svojim kolegama AtariSTima na pitanje zašto mnogo vlasnika PC-a koristi TP odgovarao da je TP na PC-u nešto kao GFA Basic na Atariju: možeš vrlo brzo i vrlo lako da uradiš neke stvari. ****** Interesujeme šta ti se svidelo na C-u što te je nateralno da ostaviš Modulu-2. ****** Razlozi su čisto praktične prirode. Ma koliko bio dobar TDI Modula-2 kompajler na Atariju, Turbo C je bio bolji i više mi je odgovarao. Napominjem da sam paralelno radio u oba jezika, tako da mi izbor jezika nije bio mnogo važan, mnogo mi je važnije bilo koji je paket bolji. Iako imam nekih zamerki Moduli-2 (a ono što joj zameram Wirth vuče još iz paskala, one čuvene petljancije oko pointera) u njoj sam uradio nekoliko onih programa koje bi mogli nazvati sistemskim, na primer program za menjanje aktivne tastaturne tabele i slično, tako da, što se funkcionalnosti jezika tiče, nisam pravio razliku između njih. Tu i leži moj glavni razlog za napuštanje Module 2, otkrio sam par bagova u nekim pozivima funkcija operativnog sistema, pa da bi to ispravio morao sam da vežbam i pisanje inline asemblerskih poziva na Modulin način: CODE(FFFFH);. Kad mi se smučilo prešao sam na C. ****** Nemam nameru da započnem još jednu diskusiju, npr. Modula-2 protiv ostalih ****** Nemam ni ja tu nameru, pogotovo što cenim ama baš svaki jezik. žesto sam svojim drugarima koji spremaju ispit iz nekog programerskog predmeta objašnjavao da prvo treba da shvate suštinu problema i da ga algoritamski reše, a kasnije se lako izabere jezik koji takav problem može najefikasnije da reši. Uglavnom su to bili ljudi koji su ispit iz programiranja shvatili kao i svaki drugi, pa uzmu zbirku nekih zadataka i vežbaju zadatke. Nemaš pojma koliko sam muke imao da takvima objasnim da to nije isto. Na njih sam i mislio kad kažem da zameram Moduli (i paskalu) na petljancijama sa pointerima. Iz iskustva sa takvima koji na taj način uče programiranje znam da im je C-ovski princip da je pointer jednostavno nekakva adresa mnogo bliži, pa im prvo na taj način objasnim šta su to pointeri, a onda lagano objašnjavam šta je pisac (Wirth) hteo da kaže kod paskala i Module.
cccc.377 djelovic,
> Da li je preddefinisani stream 'stdprn' vezan jedino za LPT1 > ili se preko njega može pristupiti i ostalim LPT izlazima? Stream stdprn je vezan isključivo za LPT1. Pri tom te, naravno, ništa ne sprečava da kažeš nešto kao: stdprn = fopen ("LPT2", "w"); i da ga time presumeriš na LPT2. No, van toga, moj savet ti je da se ostaviš štampanja kroz stdprn jer je to štapanje kroz DOS, koji će ti, u slučaju greške (recimo ako je štampač isključen) javiti čuvenu "Abor, Retry, ignore" grešku. Zato sva štampanja treba da vršiš kroz biosprint funkciju, i to: 1. Pre svakog znaka proveriš da li štampač spreman (to je neka kobinacija flegova koju vraća biosprint). 2. Tek onda štampaš znak. 3. Incijalizaciju štampača nemoj da koristiš jer ona ume da ubrlja DL-ovana YU slova i slične stvari koje su u ramu štampača. Hoćeš jednu C++ klasu za rad sa štampačem? (Ko o čemu, ja o klasama :).)
cccc.378 zorans,
Ziveo SKERL !!!!! ps: Gde li samo dolazi do finih stvari koje nesebicno deli sa nama?
cccc.379 janko,
> The case against C > Ako ste i izrazito za C, obavezno pročitajte. I ja ga preporučujem za čitanje. Iako ima bombast naslov, članak je OK. Prvo, autor koristi C. ;)) Prava stvar. Da bi o nečemu raspravljao, moraš to nešto da poznaješ. Drugo, autor je primetio tipične greške loših programera u C-u. čeleći da pokaže slabost jezika, više je pokazao da neki koji pišu na njemu nisu ukapirali ideje, pogotovu ANSI standarda. C stvarno dozvoljava svašta, ali dobro školovan programer znaće šta da koristi a šta ne... Tvrdim da otkako znam C++ bolje pišem i programe na običnom C-u. (Inače, C++, po meni, definitivno JESTE novi jezik. To što možete da koristite i prljave C trikove u njemu, ne znači da je zato to "prošireni C.") Inače, autor posmatra problem iz ugla koji nije naglasio, ali ja hoću, jer je to isti ugao iz kog i ja pišem u ovoj poruci: Reč je o tome koliko je kompleksan program koji se piše... SVAKI jezik je jednako dobar kada broj linija programa mali. Kada je program veliki, više uopšte nije isto šta se koristi! Klase i moduli su pravljeni da olakšaju konzistenciju VELIKIH programa. Ko piše programe od stranu-dve, stvarno nikad neće primetiti potrebu za takvim sredstvima (Digresija: Iako je na C-u napisan juniks, i C je zamišljen kao jezik za MALE programe, pa su njegove slabosti u velikim programima sasvim logične. Zanimljivo, i Paskal je zamišljan kao je jezik za male programe, ali se na C-u mogu simulirati moduli, a na Paskalu ne). Evo nekih citata, koji kao da su stvoreni, u stvari, za "Školu C-a -- kako pisati veće programe na C-u)" a ne za 'članak protiv C-a' (!) > Now, modular programming is POSSIBLE (naglasio J.S. ;) in C, > but only if the programmer sticks to some fairly rigid rules: > > - Exactly one header file per module. The header should > contain the function prototypes and typedef declarations > to be exported, and nothing else (except comments). Ovo "nothing else" je ovde višak. Još neke stvari (npr. razni enum) su potpuno prirodne da se tu nalaze. U C++-u je to pristojno rešeno. > - The comments in a header file should be all that an > external caller needs to know about the module. There > should never be any need for writers to know anything > about the module except what is contained in the header > file. > > - Every module must import its own header file, as a > consistency check. Naravno. > - Each module should contain #include lines for anything > being imported from another module, together with comments > showing what is being imported. The comments should be > kept up-to-date. There should be no reliance on hidden > imports which occur as a consequence of the nested > #include lines which typically occur when a header file > needs to import a type definition or a constant from > elsewhere. Ovo je preoptimistično -- opšte je poznato da čim nešto nije direktno u jeziku, nema šanse da se održi konzistentno komentarima. Ne preporučujem. > - Function prototypes should not be used except in header > files. (This rule is needed because C has no mechanism for > checking that a function is implemented in the same module > as its prototype; so that the use of a prototype can mask > a "missing function" error.) > > - Every global variable in a module, and every function > other than the functions exported via the header file, > should be declared static. Ovo sam primetio da malo programera praktikuje, a trebalo bi... > - The compiler warning "function call without prototype" > should be enabled, and any warning should be treated as an > error. > > - For each prototype given in a header file, the > programmer should check that a non-private (i.e. > non-static, in the usual C terminology) function with > precisely the same name has its implementation in the same > module. (Unfortunately, the nature of the C language makes > an automatic check impossible.) -- Slažem se sa autorom da je C zastareo. Ali, autor tvrdi da C++ "nije pravo rešenje." Međutim, autor nema dovoljno jake argumente za to. žinjenica je da C++ otklanja puno slabosti C-a, i vuče jezik prema jačoj proveri tipova, čistijoj modularnosti itd. Po meni ono što bi trebalo zvati "modernim jezikom" nije nikako Modula-2, već, naprotiv, C++. Jer, preveliko insistiranje na formalizmu kakvo je svojstvano Paskalu, Adi i Moduli definitivno nije od neke posebne koristi. Odrađena sloboda u korišćenju pointera je praktično neophodna. Implicitno pretvaranje jednog numeričkog tipa u drugi pri pozivima funkcija i unutar aritmetičkih izraza je daleko prirodnije od strogosti Paskala, Ade i Module. I, naravno, Modulini moduli su, ipak, samo specijalni slučaj C++ klasa. A C++ klase su korak dalje u shvatanju programiranja -- ideja da podaci moraju da imaju odgovorne procedure za njih, a da ne 'vise u vazduhu' kao kod Paskala je pomak jednaka "strukturnom programiranju" za koje su se izborili sredinom sedamdesetih. (Istorijski gledano, već tada su već postojali jezici sa klasama, (Simula) ali su, očigledno, u tom trenutku bili isuviše ispred svog vremena!) Priznajem da loš programer može da napiše svašta ružno u C++-u, ali ne verujem da je moguće dizjnirati jezik tako da te zaštiti od loših programera. Oni su tako inventivni. :) Zanimljivo je da je Ada dizajnirana sa tim ciljem, ali da su i sami autori, u kasnijim tekstovima, otkrivali "rupe u zakonima." Ubeđen sam da će za neku godinu programiranje na jezicima sa klasama biti jednako stvar dobrog programiranja koliko je već danas ono što su pročetkom sedamdesetih zvali "structured programming." Danas, više niko ne piše WHILE petlje kao komplet od dva GOTO i dve labele, jednostavno zato što to više nije potrebno. Isto će biti i sa klasama. Naravno, isto kao što postojanje pametnijih jezika nije izbacilo iz upotrebe Bejzik, to ne znači da će svi pisati tako. Recimo, DejanR tvrdi da on neće. ;) čivi bili pa videli...
cccc.380 ppekovic,
>> He, he.. Ovo si 100% upravu. C JESTE religija koju su nam nametnuli >> ameri (kao i milion drugih stvari, kao njihovo 'mezimče'). Pogledajte >> realno, svi normalni i dobri jezici su nastali u Evropi :). Sa C-om ti je ista stvar kao i sa MS-DOS-om, (gotovo) svi ga kritikuju, (gotovo) svi ga koriste. Paya
cccc.381 mjova,
> Ja nisam pisao onaj tekst i nemam nameru da ga branim :), > ipak čovek programira od 70tih i verovatno zna malo više > od tebe i mene ;). jeste, da znaš! sad ću da pitam ćaleta zašto mu se sviđa PL/I! to mora da je dobar jezik, jer on programira još od 60-ih. ;)
cccc.382 dejanr,
>> Ziveo SKERL !!!!! >> ps: Gde li samo dolazi do finih stvari koje nesebicno deli sa nama? Programi su većinom sa trickle-a :)
cccc.383 robert,
>> YU slova i slične stvari koje su u ramu štampača. Hoćeš jednu C++ >> klasu za rad sa štampačem? E pa neće samo on... oće i drugi ;)).
cccc.384 ematic,
> Malo ga pretera. B) Malko šale nikad nije na odmet :))). Mada ima tu i zbilje ;). Ne bih da ulazim u raspravu koji jezik je pogodniji za šta, samo da objasnim praktičnu stranu rada u C-u ;) Da preciziram, činjenica je da za veliki broj ovdašnjih korisnika računara C predstavlja zonu sumraka. Kaži nekom da radiš u npr. Pascalu, samo će da slegne ramenima i pogleda te 'onako', međutim C... vof :)))). Onda, da zasladiš stvar, pokažeš mu neki svoj 'boza' listing tipa 'hello world' (samo ti znaš da je jednostavan, on ne zna ;). E, tu već počinje sladostrašće ;). Posle treće vitičaste zagrade vraća ti dotičnoga ;) i počinje da te gleda pogledom rezervisanim samo za vrhovnog sveštenika Boga Bajta ;)))). Gde ćeš lepše hrane za svoje samoljublje ;). Da ne pominjem situaciju kad pronađem neki svoj stariji (slabo komentarisan, podrazumeva se ;) sors. Tu se zapada u ekstazu divljenja samome sebi ('au, šta ja ovo napisah, na šta samo liči, a još i radi, joj što sam ja pametan ';)). Da, ako želiš da obožavaš sebe nema ničeg korisnijeg od programiranja u C-u :)))))) p.s. Ja se malko raspis'o, ne zamerite mi :)))))
cccc.385 ematic,
> Drago mi je da si pročitao :). Naći će se valjda još 'škakljivih' tekstova, nadam se ? :)
cccc.386 skerl,
│ ps: Gde li samo dolazi do finih stvari koje nesebicno deli sa nama? └──── Vecinom ih skidam sa trickle-a i cica-e. Pozdrav, Skerl.
cccc.387 stomic,
$ Znam. B) žesto sam svojim kolegama AtariSTima na pitanje zašto $ mnogo vlasnika PC-a koristi TP odgovarao da je TP na PC-u nešto $ kao GFA Basic na Atariju: možeš vrlo brzo i vrlo lako da uradiš $ neke stvari. OK. Nisam znao da radiš na AtariST-u. Da ne citiram ostalo, slažem se sa tobom, ipak koliko god da je dobar jezik nema nište bez dobre implementacije. Jedino da sedneš i ti napišeš kompajler za Modulu-2 ;). Pozdrav, stomic@hobbiton.
cccc.388 stomic,
$ jeste, da znaš! sad ću da pitam ćaleta zašto mu se sviđa PL/I! $ to mora da je dobar jezik, jer on programira još od 60-ih. ;) Pa možda i ne bi da je nastavio da prati razvoj programa :))). Šala, naravno :). Pozdrav, stomic@hobbiton.
cccc.389 stomic,
$ Smatram da je "ubeđivanje" programera da je neki jezik bolji od $ drugog Da se odmah ogradim ;), nisam imao, niti imam nameru da ubeđujem nekoga da pređe na neki drugi jezik. Na neki način izbor jezika je stvar ukusa :). Bio bih lud, kada bi i pokušao da ubedim nekoga, pogotovo u cccc topic-u :). $ "posvađamo" :) IMHO, Modula-2 nema ama baš ništa bolje $ "projektovano" nego ANSI C. Ako neko hoće da piše macho-kod on $ to može da uradi i u Moduli, ali ima da se odere. Međutim, ako $ neko ima živaca (i mozga) da disciplinovano piše neki program, $ ja bih mu UVEK pre preporučio C nego Modulu. A još kada $ ustanovim da je sa C-a lako preći na C++, tu za mene uopšte $ nema dileme :) Da, tu se slažem. U C-u možeš 'kulturnije' pisati nego u Moduli-2, naravno :). Ali pri učenji programiranja (a svi mi učimo još uvek, možda ne naredbe, ali principe), ako smeš da radiš sve i svašta posle će biti mnogo teže da 'kulturno' pišeš program. Jedan od razloga zašto mi se sviđa M2, i koristim je, je baš to, što ne moram da trošim energiju (relativno) da bi lepo pisao program. Dalje, većina stvari može da se uradi u C-u (kao u M2), npr. moduli, ali opet mora da poštuješ neke principe, koje ako omaneš niko živi te neće ni upozoriti :))). Jedno 'lično' pitanje... Zar ti (gotovo) isključivo ne programiraš u asembleru :))). Pozdravi brata i nek mi javi na mail njegovu adresu na UNSIM-u (ili gde već ima) :). Pozdrav, stomic@hobbiton.
cccc.390 stomic,
$ I ja ga preporučujem za čitanje. Iako ima bombast naslov, $ članak je OK. Da... Još od UKRASa mi nikako nije bilo jasno zašto programiraš u C-u. Suviše ti je kod i način bio lep za (tipičnog) C programera :))). $ Modulini moduli su, ipak, samo specijalni slučaj C++ klasa. A $ C++ klase su korak dalje u shvatanju programiranja -- ideja da $ podaci moraju da imaju odgovorne procedure za njih, a da ne $ 'vise u vazduhu' kao kod Paskala je pomak jednaka "strukturnom Abstraktno programiranje? Trivialno se izvodi u M2. Naravno klase imaju mnogo prednosti koje se ne mogu (ili teže mogu) izvesti u npr. M2. IMHO, C++ ima izuzetno moćan OOP, jedini problem (što je meni najviše zasmetala) je što je (ipak) baziran na C-u ;). Ostatak teksta nisam citirao jer se u veći stvari slažem sa tobom :). Ako te interesuje razvoj jezika, poslaću ti isečak o Modula-3 jeziku, koga je možda bolje porediti sa C++ . Svrati na Hobbiton, postoji rasprava u UseNet/Modula-3 -- 'M3 vs C++ :)'. Pozdrav, stomic@hobbiton.
cccc.391 mnikolic,
> YU slova i slične stvari koje su u ramu štampača. Hoćeš jednu C++ klasu za > rad sa štampačem? Rado, samo kad (i ako) budem prešao na C++ :))) Koliko vidim, ima zainteresovanih pa šalji za njih. Hvala na savetima, m.
cccc.392 dr.grba,
>> C nije jezik, C je religija :)))))))). Mada, covek je napisao i >> ponesto sto vredi, npr kaze da je C macho jezik :))))))). Macho, mislis da je to kompliment? Macho je ipak asocijacija na coveka koji je ogroman, snazan, glup i beskoristan. Prema tome, pobornice C-a, bila je to uvreda (; Pozdrav, dr ÔpŰa
cccc.393 prvul,
Ů> - Exactly one header file per module. The header should Ů> contain the function prototypes and typedef declarations Ů> to be exported, and nothing else (except comments). Ů▄▄ E meni se kod C-a ne sviđa to što moram da strukture koje se koriste u procedurama deklarišem u heder fajlu. Nekako mi se čini da bi bilo poželjno da u heder fajlu pišu samo "javne" informacije. Npr. u C++ bi se public: deo klase deklarisao u heder fajlu, ali kompletna struktura samo u cpp fajlu, nikako ne bi trebalo da se vidi u .h fajlu. Ja skoro sve procedure pišem tako da primaju pointere na strukture, a ne same strukture kao parametre... u .h fajlu deklarišem tipove tih pointera kao void pointere samo zato da ne bih napisao kako struktura izgleda, ali time gubim više stvari: prvo, provera tipa... dobro, to mi ne smeta, navikao sam da pazim pa ne grešim po tom pitanju... e, ali druga mana je malo gora... naime, u .c fajlu koji implementira procedure moram da cast-ujem non-stop pointere koje sam dobio kao argumente... ta petljancija oko cast-ova naravno ne uvećava kod koji se dobije, ali je ipak neprijatna. E sada, znam da kompajler da bi koristio neku klasu ili strukturu mora da zna njenu veličinu, a za to mu služi njena definicija u .h fajlu, ali mislim da bi bilo lepše da, ako baš kompajler mora da zna više nego što bih voleo da se o strukturi zna, pri kompajliranju .c fajla generiše neki pomoćni fajl koji bi sadržao takve informacije, a da se .h fajl ostavi da sadrži striktno informacije koje su javne. Prvul P.S. I ja sam prešao sa M2 na C posle skoro dve godine "moduliranja". Zašto? Zato što C kod odgovara realnoj situaciji... pointeri su baš ono što treba da budu... ime niza je pointer baš kao što jeste.. >> i << se daju lako isprogramirati u moduli, ali volim da za često korišćene operacije kao što su operacije na bitovima imam operatore jer su izrazi sa operatorima pregledniji nego oni sa pozivima funkcija... Pa onda blokovi u moduli, koji se završavaju sa END. Zar nije lepše sa vitičastim zagradama... to me podseti na moju glavnu zamerku fortranu: tip sa duplom preciznošću se deklariše kao DOUBLE PRECISION... kao da nemam druga posla nego ću da kucam toliku deklaraciju... fuj... Doduše, nedostaje mi ono modulino FROM modul IMPORT bla, bla Tj. da u neku oblast važenja prenesem samo određene identifikatore iz druge oblasti važenja...
cccc.394 duduk.,
Koristim iskljucivo C.Sto?
cccc.395 duduk.,
Komplikovano jeste. Takodje i mocno jeste (bar tako izgleda onaj demo primer). Medjutimkopajuci po sorsu, nisam uspeo da nadjem funkciju kojom se kreiraju ske za unos podataka (to meni najvise treba). Usput, da li neko mozda ima Vermont Views ili C-Worthy lib.
cccc.396 paki,
­> implementacije. Jedino da sedneš i ti napišeš kompajler za ­> Modulu-2 ;). A napisao bi ga na C-u :))
cccc.397 stomic,
$ A napisao bi ga na C-u :)) Naravno, tako teče evolucija. Sa nižeg na više, sa prostijeg na složenije ;). Pozdrav, stomic@hobbiton.
cccc.398 stomic,
$ Pa onda blokovi u moduli, koji se završavaju sa END. Zar nije $ lepše sa vitičastim zagradama... to me podseti na moju glavnu $ zamerku fortranu: tip sa duplom preciznošću se deklariše kao $ DOUBLE PRECISION... kao da nemam druga posla nego ću da kucam $ toliku deklaraciju... fuj... Ipak smo ljudi :). Zar nije lepše kada čitaš program kao knjigu, tj. delovi liče na rečenice :). Šta bi rekao za IMPLEMENTATION MODULE ;). Ipak, programi se ne pišu svaki dan. Npr. sedneš i kažeš sada ću nešto da kucam, bla, bla... Planiranje programa može prilično da traje i posle toga ti nije teško da kucaš mnogo slova. Na kraju, krajeva C kod mi nikada ne može biti lep, baš zbog tih skraćivanja, lenjosti... :). Mogli smo i for da nazovemo - f i while - w, tada bi najmanje kucali. Ali ipak... :). Pozdrav, stomic@hobbiton.
cccc.399 korvin,
­­>> Macho, mislis da je to kompliment? Macho je ipak asocijacija na coveka ­­>> koji je ogroman, snazan, glup i beskoristan. Prema tome, pobornice ­­>> C-a, bila je to uvreda (; Šešelj programira u C-u ? :))
cccc.400 janko,
> Da... Još od UKRASa mi nikako nije bilo jasno zašto > programiraš u C-u. Suviše ti je kod i način bio lep za > (tipičnog) C programera :))). Joj, onaj Ukras sors i nije bio baš reprezentativan -- bar iz mog ugla, kada sam ga "širio" za podršku za nivo 2 (ćirilicu). Baš mi je smetalo što je pravljen "samo da proradi." Ako hoćeš da nešto što nisi pre pisao stvarno izgleda savršeno, izgleda da moraš da pišeš ispočetka pošto već jednom napišeš. :( Moram li da kažem da nikad nisam za to skupio vremena, u ovom slučaju... Možda ti je bilo zanimljivije to što sam ja kao pisao C a komentarisao tvoje Paskal i Modula programe? Da živiš u Bgd-u već bi ti naveliko pisao C++ ;)
cccc.401 madamov,
Janko, care! Odlična analiza, mislim da ne bih mogao bolje od tebe napisati ovo što si rekao, a sa čime se slažem.
cccc.402 madamov,
****** Ja se malko raspis'o, ne zamerite mi ****** Nema veze, tačno je to što si napisao, mada ja sve ređe srećem takve ljude. B)
cccc.403 madamov,
****** Nisam znao da radiš na AtariST-u ****** Da, i na Atariju i na Meku. S tim što je na Meku paskal nekako prirodan jezik kao što je C za Atari, ali ja i dalje koristim C na, što bi se reklo, obe platforme. Naime, do System 7 Mekovi operativni sistemi su pisani u paskalu i asembleru, a System 7 i kasniji su napisani korišćenjem C++. Atarijev GEM je kompletno napisan u C-u. ****** Jedino da sedneš i ti napišeš kompajler za Modulu-2 ****** Pa, nije to bila jedina Modula 2 za Atari, ali sam do drugih došao tek kad sam definitivno prešao na Turbo C. Sad imam problem i sa Atarijem i Mekom što ne mogu da dođem do dobrog C++ kompajlera za njih. Taman kad sam se rešio da skinem sa ftp servera GNU C++ za Atari prošle godine, Austrijanci nam secnuše vezu. B(
cccc.404 madamov,
****** Naravno, tako teče evolucija. Sa nižeg na više, sa prostijeg na složenije ;). ****** B) Nego, da se nadovežem na ovo. Svojevremeno sam uploadovao PD C kompajler za Atari na Sezam. I sećam se da sam u njegovoj dokumentaciji pročitao da su kompajler testirali tako što su ga pustili da kompajlira sam sebe. B) Interesantno, zar ne?
cccc.405 tuci,
Da li neko ima biblioteku funkcija za rad sa IEEE-488 protokolom, bilo bi dobro za TurboC ali prihvatamo sve :) Pozdrav, Zlatko
cccc.406 zormi,
* 4.1406 NOVOSTI:microb * * TITLE: Visual C++ * * In March, Microsoft (Redmond, WA, (206) 882-8080) planned to release * Visual C++, a full-fledged professional development language with a * Visual Basic-like front end. Imam to od pre mesec dana pa ako nekog zanimaju utisci: Dolazi na 20 (!) malih disketa po 1.44 MB. Jako moćna stvar, ima sve i svašta i pojede diska - ne pitaj. Ukratko, za pola sata zezanja može da se kreira Windows prozor sa sve ikonama, menijima, toolbar-om (!), dijalog prozorima, tasterima... i to sve bez ijedne napisane linije u C-u. Takav "program" ima EXE od preko 1 MB. Da bi program nešto korisno i radio treba dopisati event-e, odnosno reakcije na izbore iz menija, tastera... itd. Dakle, jako lepo i glomazno. Iz navike i dalje koristim Borland C++ 3.1.
cccc.407 drmarke,
Jedan moj ortak moli za jednu biblioteku na C-u. Biblioteka bi trebala da se zove "COGO.*" i da se bavi problemima koordinatne geometrije. Biblioteka mu je potrebna radi diplomskog. Ako neko ima neku ideju (mislim ovu ili ma koju sličnu biblioteku) neka se javi. Stvar je relativno hitna. Unapred hvala. Pozdrav DrMarke
cccc.408 dgrbic,
:: lenjosti... :). Mogli smo i for da nazovemo - f i while - :: w, tada bi najmanje kucali. Ali ipak... :). Zato poneki ovde koriste Brief ;>
cccc.409 bulaja,
│** Uz poruku 'pcl4p30.zip' (48837 bytes) │** Uz poruku 'pcl4c34.zip' (71564 bytes) └─── Prebaceno u C i PASCAL direktorijume, thanks again.
cccc.410 prvul,
Ů Ipak smo ljudi :) Ů▄▄ Podsetio si me na Srđana Janeva i njegovu čuvenu izjavu "Ja nisam čovek, ja sam programer!" :)) ŮZar nije lepše kada čitaš program kao knjigu, tj. delovi liče Ůna rečenice :). Šta bi rekao za IMPLEMENTATION MODULE ;). Ů▄▄ Ma pusti, imao sam svuda po tastaturi definisane makroe za te i takve konstrukcije... :) Imao sam i jedan makro za FROM InOut IMPORT WriteLn,WriteString... :) ŮMogli smo i for da nazovemo - f i while - w, tada Ůbi najmanje kucali. Ali ipak... :) Ů▄▄ E, pa ako ćemo tako ;) mogli smo u moduli da uvedemo NOT_EQUAL operator pa ipak imamo tarabu (joooj što mi to fali u C-u :) Neke kriptične oznake za stvari koje se stvarno jako često koriste su po meni opravdane... za for i ostalo je ok, jer nekako imamo prirodnupredstavu šta to radi... ali blok_naredbi nije nešto što postoji u prirodi, pa je potpuno pitanje konvencije šta će ga obeležavati, a vitičaste zagrade su prilično dobar izbor... inače, mogli smo i komentare da "deklarišemo" sa COMMENT ;)
cccc.411 dr.grba,
>> Pa mozda i ne bi da je nastavio da prati razvoj programa :))). Pa mozda i bi da su mu kupili nesto drugo da radi na tome. Ovako covek skoluje svog sina radeci na PDP kanti ): Pozdrav, dr ÔpŰa
cccc.412 dr.grba,
>> Seselj programira u C-u ? :)) Sumnjam. On bi eventualno mogao da pvogvamiva.
cccc.413 janko,
> Ja skoro sve procedure pišem tako da primaju pointere na > strukture, a ne same strukture kao parametre... u .h fajlu > deklarišem tipove I o ovome sam hteo da pišem: Iako ZZ u nekom skorašnjem članku tvrdi da je SPORO kopirati strukturu umesto samo pointera na nju, i da se to u C-u NE RADI, ja tvrdim suprotno! Običaj prenosa pointera i kada treba i kada ne treba ostao je kao posledica K&R first ed. u kome tvrde da se strukture ne mogu prenositi cele, nego samo pointeri na njih. Međutim! Autori su malo bili rezervisaniji nego što je trebalo -- po sopstvenom priznanju (ako se dobro sećam) kompajler na kome su oni pisali već je dozvoljavao prenos struktura. Od usvajanja ANSI specifikacije više nema dileme -- kopiranje čitavih struktura je legalno. Tvrdnja da je TO sporije, ne može da se izrekne generalno! Ako elementima strukture često pristupamo u toku izvršavanja procedure, i ukoliko struktura nije veća od neke određene veličine, moguće je da vreme potrošeno za jedno kopiranje bude daleko manje od vremena potrebnog za referenciranje elemenata preko pointera sa steka, umesto direktnog referenciranja steka. (Na žalost, neke RISC arhitekture su projektovane sa idejom da stek malo raste -- očigledno su programi iz kojih su skidali statistike iz "stare garde." Ali, na sreću, ko kaže da u takvim slučajevima stvarno mora da se struktura nalazi na istom steku na kome se nalaze i jednorečni parametri?) Osim toga, programi koji prenose cele strukture umesto pointera (gde je to korisno, bar, a ima gde jeste) daleko elegantnije izgledaju, lakši su za proširivanje i održavanje. Lično, držim se principa -- za sve što nije deo kritične petlje, neću da se opterećujem da štedim poneki ciklušćić. Ako još time izbegnem eksplicitno pisanje nekih malloc konstrukcija i obaveze da pazim da posle čudo dealociram, sa zadovoljstbom ću preneti celu strukturu umesto njenog pointera. I još, ako budem te procedure kasnije koristio i u C++ programima, lako ću dodati samo & ako bi bilo bolje da se ne kopira cela struktura... I još -- sve ovo -- samo kad moram (npr. za jedan projekat profesor mi je eksplicitno tražio da ga pišem u C-u). Do sada nisam napisao nijedan program sa nekom ultrasloženom hijerarhijom klasa na C++-u, ali već samo sve pogodnosti postojanja klasa, konstruktora i destruktora (___ čitko dodati još po izboru ;) koji ne moraju da se pozivaju "peške" (kao u Turbo Paskalu, zgroz) toliko razmazi čoveka da ga mrrrrzi da piše na suvom C-u osim ako je program manji od 100 linija ili ako mora. Ono što je značajnije je to što mi se u načinu razmišljanja, otkako znam C++, dogodio pomak -- više ne razmišljam "statički" -- sve može da ima više svojih pojava, jednostavno zato što to bezbolno realizujem. (A nekad je bilo "jao, sada ovo moram da generalizujem... ma mrzi me, dosta je jedna!") Zato sam rekao da mislim da sada pišem i bolje C programe... > E meni se kod C-a ne sviđa to što moram da strukture koje > se koriste u procedurama deklarišem u heder fajlu. Nekako > mi se čini da bi bilo poželjno da u heder fajlu pišu samo > "javne" informacije. Npr. u C++ bi se public: deo klase > deklarisao u heder fajlu, ali kompletna struktura samo u > cpp fajlu, nikako ne bi trebalo da se vidi u .h fajlu. Da. To jeste više zamerka C++-u, nego C-u, jer kod C-a skoro NIŠTA NIGDE ne moraš da deklarišeš, ako pišeš prljavo. ;) Postojanje PRIVATE dela tako izloženog jeste malo nedosledno, ali, izgleda, prilično potrebno kompajlerima -- ni u Adi nisu mogli to da izbegnu. Lično, meni to nije nikada zasmetalo. Nikad nisam nešto pisao i pomislio "e sad bi mi program bio bolji/lakši_za_pisanje da ovo ne moram ovde da pišem."
cccc.414 janko,
> $ Pa onda blokovi u moduli, koji se završavaju sa END. Zar nije > $ lepše sa vitičastim zagradama... to me podseti na > lenjosti... :). Mogli smo i for da nazovemo - f i while - > w, tada bi najmanje kucali. Ali ipak... :). Nekad sam i ja mislio da je lepše BEGIN .. END. Samo zato što sam čitao samo K&R, a oni, stare cicije, ;) su štedeli i na linijama sorsa (K&R su inicijalno dizajnirali C, između ostalog, sa idejom da sors fajlovi budu što kraći(!)) pa je to izgledalo ovako: for (a=1;a<=10;a++) ( telo11; telo12: ) if (uslov) ( for ( ) ( blabla1; blabla2; ) d++; ) else ( teloels1; teloels2; ) (zamislite vitičaste zagrade umesto nekih običnih) E, sad, ovako pisan program je prilično (ćuj, bolan, prilićno, skroz, ba!) nečitljiv čim se konstrukcije malo rastegnu u više linija i još malo ugnezde... Zato je glavna fora editora za C bila "nađi zagradu koja se slaže sa ovom") ;) U poređenju s tim, ono for a:=1 to 10 do begin trala; lala; end; je lepše... (osim što treba da se navikneš da prvu i poslednju liniju u bloku preskačeš kada čitaš). Međutim! Jednostavno dovođenje zagrada gde im je mesto (da parovi budu u istoj koloni), daje C sors čitljiviji od ekvivalentnog paskalskog ili modulskog jednostavno zato što umesto silnih REžI BEGIN .. END imamo po jedan SIMBOL. (Nije to ništa novo -- matematičari to rade vekovima -- uvode simbole za sve ono što mora često da se piše.) žini mi se da takav način pisanja (zagrade u istim kolonama) ima i svoje ime, ali ga ja nisam zapamtio. for (a=1;a<=10;a++) ( telo11; telo12; ) if (uslov) ( for ( ) ( blabla1; blabla2; ) d++; ) else ( teloels1; teloels2; ) Ovo je vizuleno daleko lepše -- skoro kao da je algoritam nacrtan a ne napisan (tj. lako bi od ovoga docrtavanjem dobio i pravi dijagram)... svaka struktura se vidi "iz aviona." (Ako i ne delite moje mišljenje, onda morate da priznate da je lakše za kasnije editovanje...) Još jedan argument u korist C-a: zbog toga što se neumereno koriste ključne reči, u paskaloidnim jezicima je uobičajeno da se ljudi dodatno trude da označavaju ključne reči na jedan način a ostatak teksta na drugi (npr. velikim slovima u programima ili podebljanim slovima kada se publikuju programi) samo da bi se unapredila faktički loša čitljivost teksta programa. U C-u takav problem praktično ne postoji. BTW, po meni su lepše konstrukcije FOR .. ENDFOR, WHILE .. ENDWHILE i slične, jer se tako najbolje, ipak, izbegavaju traženja "od čega je ovo end" i "od čega je ovo zagrada" a u ove jezike (i Paskal i C) nisu ušle samo zato da bi mogli da napišu ovo for ... a(i)=b(i)+1 tj. zbog specijalnog slučaja kada se blok svodi na jednu naredbu, zeznuli su sve ostalo... krajevi struktura se teško prepoznaju. Da ne govorimo o tome da onda mora posebno da se pazi šta se radi u onim višestrukim ifovima -- tj. uz šta će da dođe ELSE. Zato ja, kao što u Paskalu pišem tačku-zarez i pred END-om, da bi mi dodavanje eventualne sledeće naredbe bilo bezbolnije, često smestim eksplicitne oznake bloka i oko jedne naredbe, ako je ona u telu programske strukture... posle me manje boli glava... Zanimljivo da ni ADA nije početke i krajeve struktura najsrećnije rešila, iako su razmišljali u tom pravcu. Neke konstrukcije se završavaju sa ENDpočetak ali neke i samo sa END, pa nikad ne znaš šta gde da staviš. Još su uveli da iza END možeš da staviš identifikator, ali ne i prozvoljan komentar (što bi dalo mogućnost da ipak pišeš sve konstrukcije sa ENDpočetak). Inače, lično bih bio srećniji da C ne koristi uglaste i vitičaste zagrade -- jer koristim juski, pa ni primere na mogu da napišem a da se neki ne zgroze... ali ipak mislim da je jedan simbol zgodniji od čitave reči u ovom slučaju... Ipak, postoji jedna stvar koja ne izgleda nimalo lepo u C-u -- a to nije to što nema BEGIN END -- deklaracije funkcija. Naći (pogotovu programski) definiciju funkcije u Paskal sorsu je trivijalno, ali u C-u... čak ni na gledanje (tj. kada je ativna i ljudska intuicija), ako sors nije čitljivo pisan -- ne znaš gde je počela nova procedura! > Ipak smo ljudi :). Zar nije lepše kada čitaš program kao > knjigu, tj. delovi liče na rečenice :). Šta bi rekao za > IMPLEMENTATION MODULE ;). Onda pređi na Kobol. Tamo čak i na kraj svakog reda staviš tačku. ;> Btw. Kobol sam učio tek na petoj godini faksa (!) a pre ga nisam znao. Kobol ima jednu lepu stvar, koja definitivno JAKO fali dibejz-lajk jezicima -- struktururanje zapisa -- proizvoljan broj polja, kada se strukturira, se može kopirati odjednom. A na Kliperu moram da se patim -- ili da navodim sva imena, ili da kopiram i ono što ne bih, ali je tako lakše da se nparavi petlja sa makroima...
cccc.415 miro,
ű> Smatram da je "ubeđivanje" programera da je neki jezik bolji ű> od drugog čisto gubljenje vremena. Ali to opet ne smeta da se ű> malo "posvađamo" :) IMHO, Modula-2 nema ama baš ništa bolje ű> "projektovano" nego ANSI C. Ako Hops. Ovdje postaje zabavno. :) C-Case nije nikakvo ubjeđivanje. Tu je čovjek od zanata, koji je 70tih godina i sam projektovao jezike, bez upotrebe pljuvačnih žlijezda objasnio neke stvari. Pogledaj malo šta piše o header fajlovima u c-case pa reci kako to rješava ANSI C. Ovo samo kao blic primjer stvari za koju C prosto nije. Pozdrav.
cccc.416 miro,
Koristiću, kao i autor c-case, Modulu-2 kao primjer modernog jezika:). ű> for a:=1 to 10 do ű> begin ű> trala; ű> lala; ű> end; FOR a:=1 TO 10 DO trala; lala; END; Ovo je adekvatan Modula-2 kod. Napomenuo bih i jednu (jedinu?!) prednost C-a, a to je da je njemu semicolon statement terminator a ne delimiter kao u 'paskaloidnim' jezicima; ű> Međutim! Jednostavno dovođenje zagrada gde im je mesto (da ű> parovi budu u istoj koloni), daje C sors čitljiviji od ű> ekvivalentnog paskalskog ili modulskog jednostavno zato što ű> umesto silnih REžI BEGIN .. END imamo po jedan SIMBOL. (Nije ű> to Taj jedan simbol je onaj END jer za razliku od Pascala u Moduli-2 blokovi podrazumijevaju BEGIN. BEGINom samo počinju tijela procedura i samih MODULE-a. I nemaš jedan nego dva simbola, jednim počinješ, drugim završavaš. U Moduli 2 imaš JEDAN SIMBOL, tj END i njime završavaš. ű> Još jedan argument u korist C-a: zbog toga što se neumereno ű> koriste ključne reči, u paskaloidnim jezicima je uobičajeno da ű> [stuff deleted:)] ű> programa. U C-u takav problem praktično ne postoji. Još jedan dokaz da, za razliku od autorâ s 'druge strane', ne poznaješ 'neprijatelja':). Modula-2 (kako rekoh primjer modernog jezika) je case sensitive. ű> BTW, po meni su lepše konstrukcije FOR .. ENDFOR, WHILE .. ű> ENDWHILE i slične, jer se tako najbolje, ipak, izbegavaju ű> traženja "od čega je ovo end" i "od čega je ovo zagrada" a u Vjerovatno, ali sam si rekao da pravilnom identacijom to može efikasno da se prevaziđe. Ja imam običaj da iza ENDa koji završava blok duži od ekrana stavim u (* *) i tip bloka. ű> Da ne govorimo o tome da onda mora posebno da se pazi šta se ű> radi u onim višestrukim ifovima -- tj. uz šta će da dođe ELSE. ű> Zato ja, kao što u Paskalu pišem tačku-zarez i pred END-om, da ű> bi mi dodavanje eventualne sledeće naredbe bilo bezbolnije, ű> često smestim eksplicitne oznake bloka i oko jedne naredbe, ű> ako je ona u telu programske strukture... posle me manje boli ű> glava... Opet nepoznavanje 'neprijatelja'. Sintaksa Module-2 nije kao kod paskala već IF uslov THEN statements {ELSIF uslov THEN statements} [ELSE statements] END; Dalje, već sam rekao šta mislim o karakteru ';'. Što se tiče 'eksplicitne oznake bloka' i to spada u nepoznavanje a gore sam napisao šta je to u M2. ű> da napišem a da se neki ne zgroze... ali ipak mislim da je ű> jedan simbol zgodniji od čitave reči u ovom slučaju... Ja ne. Mislim da je END dovoljno prosto a mnogo više doprinosi čitljivosti koda. ű> fali dibejz-lajk jezicima -- struktururanje zapisa -- ű> proizvoljan broj polja, kada se strukturira, se može kopirati ű> odjednom. A na Kliperu moram da se patim -- ili da navodim sva C i Clipper... Ti si stvarno nesretnik:)). Ljudi koje znam da pišu u Moduli-2, SVE završavaju u Moduli-2!
cccc.417 miro,
ű> Prvo, autor koristi C. ;)) Prava stvar. Da bi o nečemu ű> raspravljao, moraš to nešto da poznaješ. Za neke projekte, zaboravi ti da kažeš. On je i rekao da ne poriče upotrebljivost Cu, ali preporučuje upotrebu razuma pri izboru jezika za buduće projekte. O poznavanju subjekta raspravljanja imaš u mojoj drugoj replici:). Napomenuću da je moj redoslijed bio Pascal-Basic-C-Modula2 + neki manje važni jezici (Cobol, Fortran, Forth, Asembler...) između. ű> Drugo, autor je primetio tipične greške loših programera u ű> C-u. čeleći da pokaže slabost jezika, više je pokazao da neki ű> koji pišu na njemu nisu ukapirali ideje, pogotovu ANSI ű> standarda. C žini mi se da tamo piše da svaki tim ima bar jednog lošeg programera. Jedan je više nego dovoljan da zagorča život ostatku tima. ű> C-a, i vuče jezik prema jačoj proveri tipova, čistijoj ű> modularnosti itd. Po meni ono što bi trebalo zvati "modernim Vuče, ali ne odvlači. Kako autor reče, C++ rješava neke probleme Ca (prototipi i slično) ali unosi i neke nove, a sve probleme NE rješava. ű> preveliko insistiranje na formalizmu kakvo je svojstvano ű> Paskalu, Adi i Moduli definitivno nije od neke posebne ű> koristi. Odrađena sloboda u korišćenju pointera je praktično ű> neophodna. Aman, sloboda u korišćenju pointera... Znaš li možda za tipove ADDRESS BYTE WORD u Moduli-2? Znaš li za deklaraciju varijable na apsolutnim pozicijama koja je dio standarda u M2? SYSTEM modul, takođe dio standarda? NE, ne znaš! ű> postojanje pametnijih jezika nije izbacilo iz upotrebe Bejzik, Piše tamo... Možda je bolje da su ljudi ostajali na BASICu:))
cccc.418 miro,
ű> Razlozi su čisto praktične prirode. Ma koliko bio dobar TDI ű> Modula-2 kompajler na Atariju, Turbo C je bio bolji i više mi ű> je odgovarao. Napominjem ű> važan, mnogo mi je važnije bilo koji je paket bolji. Iako imam ű> nekih zamerki ű> razliku između njih. Tu i leži moj glavni razlog za napuštanje ű> Module 2, otkrio sam par bagova u nekim pozivima funkcija ű> operativnog sistema, pa da bi to ispravio morao sam da vežbam ű> i pisanje inline asemblerskih poziva na Modulin način: ű> CODE(FFFFH);. Kad mi se smučilo prešao sam na C. Ovo je ista argumentacija kojom DejanR kruniše svoje rasprave na relaciji Pascal-Modula2. Jedan kolega, npr., smatra da je Borland što se tiče uspotrebljivosti paketa apsolutno najbolji. A piše u TopSpeed M2:)
cccc.419 miro,
ű> B) Nego, da se nadovežem na ovo. Svojevremeno sam uploadovao ű> PD C kompajler za Atari na Sezam. I sećam se da sam u njegovoj ű> dokumentaciji pročitao da su kompajler testirali tako što su ű> ga pustili da kompajlira sam sebe. B) Interesantno, zar ne? Da. Ako nisi znao to je završna faza vjerovatno svakog kompajlera. Što bi rekli, krunski test. E sad, ako ja nemam jezik X na platformi za koju radim, ja ću da radim o onome šta imam (tj. Y). Kad napravim upotrebljiv alat, sve prepišem u jezik X i gotovo. U početku Y je bio asembler. Sad je uglavnom C, kao najrašireniji.
cccc.420 dejanr,
>> Modula-2 (kako rekoh primjer modernog jezika) je case sensitive. ... što je, po meni, jedna od njenih mana. Istina, i C je case sensitive, ali to nekako kod njega "manje boli", jer su uglavnom sva imena funkcija (MS C) pisana malim slovima, konstante velikim, a kod Module su "mešali", i to kod raznih verzija Module na razne načine, pa treba za svaku funkciju pamtiti kakvim se slovima piše. >> C i Clipper... Ti si stvarno nesretnik:)). Eh... od Clipper-a i C-a se živi :)
cccc.421 dejanr,
>> Ovo je ista argumentacija kojom DejanR kruniše svoje rasprave >> na relaciji Pascal-Modula2. Pa da, ne programira neko na paskalu, fortranu, c-u, moduli 2 nego na Turbo Pascalu, MS Fortran-u, MS C-u, JPI Moduli 2 (ili već nekoj drugoj varijanti), dakle uz jezik mora se gledati i konkretna stvar koja je čoveku na raspolaganju, jer to je ono od čega se živi. Šta vredi dobar jezik ako nema dobre implementacije? Ono, uvek postoji nada da će se jednog dana pojaviti dobra implementacija, ali zar se do tada treba mučiti ako ima drugi jezik koji je dobro napravljen? >> Jedan kolega, npr., smatra da je Borland što se tiče >> uspotrebljivosti paketa apsolutno najbolji. A piše u TopSpeed >> M2:) Interesantno, ja ne znam nikoga ko programira u Moduli 2 (ako izuzmemo ove diskusije na Sezamu, naravno). Znam da su u Lola Institutu jednom hteli da pređu na taj jezik zbog nekog projekta sa engleskim institutom, kupili originalni softver, organizovali ljudima kurseve, mučili se neko vreme... i najzad digli ruke. Ispalo da se na "prastarom i bednom" PL/M-u mnogo lakše programira to što njima treba. Po meni, argumentacija između Module 2 i C-a ide u prilog C-u. Autor nedavnog manifesta je uradio dobar posao, ali imam utisak da je čitavu stvar zasnovao na poređenju lošeg C programera i dobrog programera na nekom drugom jeziku. Što rekli u jednom mnogo starijem manifestu, "pravi programer (?) može da piše fortran (bejzik, nestrukturirane, špageti... ;) programe na bilo kom jeziku" ;)
cccc.422 ematic,
> ­­>> Macho, mislis da je to kompliment? Macho je ipak > asocijacija na coveka ­­>> koji je ogroman, snazan, glup i > beskoristan. Prema tome, pobornice ­­>> C-a, bila je to uvreda > (; > > Šešelj programira u C-u ? :)) Pvavi pvogvamevi movaju da pvogvamivaju u C-u, ko neće taj je izdajica vaskolikog pvogvamevstva i tveba da se pvikolje ;)
cccc.423 prvul,
Ů> Ja skoro sve procedure pišem tako da primaju pointere na Ů> strukture, a ne same strukture kao parametre... ŮIako ZZ u nekom skorašnjem članku tvrdi da je SPORO kopirati Ůstrukturu umesto samo pointera na nju, i da se to u C-u NE ŮRADI, ja tvrdim suprotno! Ů▄▄ Tvrdiš suprotno? Znači li to da tvrdiš da nije sporo ili da se to u C-u radi? Ako tvrdiš ovo drugo, to valjda svi znaju da sme da se uradi... oko sporosti treba malo prodiskutovati... ŮTvrdnja da je TO sporije, ne može da se izrekne generalno! Ako Ůelementima strukture često pristupamo u toku izvršavanja Ůprocedure, i ukoliko struktura nije veća od neke određene Ůveličine, moguće je da vreme potrošeno za jedno kopiranje bude Ůdaleko manje od vremena potrebnog za referenciranje elemenata Ůpreko pointera sa steka, umesto direktnog referenciranja steka. Ů▄▄ Tako je to kada kompajler ne optimizuje kod. Kada se prenese pointer koji se često referencira u proceduri, sve su šanse da će ga kompajler pokupiti sa steka u registar i onda raditi referencirajući elemente preko pointera u registru, što je isto tako brzo ili brže nego direktno referenciranje steka (na većini arhitektura). Na 80x86 je možda problem to smeštanje u registar jer ima malo registara, ali na svim savremenijim procesorima se uvek nađe pokoji slobodan registar za pointer. A nekako više volim da kompajler uradi optimizaciju registara nego da sam razmišljam da li je brže referencirati strukturu po steku ili preko pointera. Sa C++ i "upućivanjem" ili kako se to već prevodi nestaje i problem preglednosti. Ůotkako znam C++, dogodio pomak -- više ne razmišljam "statički" Ů-- sve može da ima više svojih pojava, jednostavno zato što to Ůbezbolno realizujem. (A nekad je bilo "jao, sada ovo moram da Ůgeneralizujem... ma mrzi me, dosta je jedna!") Zato sam rekao Ůda mislim da sada pišem i bolje C programe... Ů▄▄ :) Nisi jedini... ja patim od toga da sve bude generalizovano, pa ne pamtim kada sam poslednji put deklarisao bilo globalnu bilo static promenljivu... a nešto se ne sećam ni da sam deklarisao strukturu kao lokalnu promenljivu (mada je toga bilo). Sve strukture imaju svoje funkcije za alokaciju i dealokaciju, a deklarišu se samo pointeri na iste. Da ne pričam koliko je lako posle sve ovo preneti na C++ i dobiti klasu sa sve konstruktorima i destruktorima za 2-3 minuta. ŮLično, meni to nije nikada zasmetalo. Nikad nisam nešto pisao i Ůpomislio "e sad bi mi program bio bolji/lakši_za_pisanje da ovo Ůne moram ovde da pišem." Ů▄▄ Pa ne verujem da bilo kome smeta u nekom tehničkom smislu, samo je pitanje principa... ako već imamo princip sakrivanja onoga što nije programeru potrebno da zna o klasi, zašto to ne izvesti do kraja nego stati na pola puta? Jeste da je za kompajler jednostavnije, ali mogli su da se izvuku... uostalom, kompajler treba da služi onome ko programira, a ne obratno ;)
cccc.424 prvul,
Ůtraženja "od čega je ovo end" i "od čega je ovo zagrada" a u Ůove jezike (i Paskal i C) nisu ušle samo zato da bi mogli da Ůnapišu ovo Ů for ... a(i)=b(i)+1 Ů▄▄ Pa eno u moduli FOR, WHILE i ostale strukture automatski otvaraju blok, ali se on opet zatvara sa END. Možda ENDFOR, ENDWHILE, ENDIF i ostalo ne postoje jer bi to uvelo gomilu (nepotrebnih?) ključnih reči u jezik. Ůako sors nije čitljivo pisan -- ne znaš Ůgde je počela nova procedura! Ů▄▄ Zavisi od stila pisanja... kod mene su jedine zagrade koje su na samom početku reda baš te zagrade koje označavaju početak i kraj funkcije. Dobro, de... ima i onih koje označavaju početke i krajeve deklaracija struktura, ali te su uvek na samom početku fajla, a funkcije slede, pa se ne može pogrešiti.
cccc.425 .obj,
> C-Case nije nikakvo ubjeđivanje. Ja nisam ni rekao da je C-CASE.TXT ubeđivanje. Ubeđivanje je ono što je taj tip pokušao a nije uspeo. > Pogledaj malo šta piše o header fajlovima u c-case... Piše da ostavljaju programeru preveliku slobodu, da je sistem podložan greškama u slučaju nepažnje, da je #include/prototipi mehanizam jednostavan i zastareo. Ništa od toga ne smatram manama C/C++ već odličnim rešenjima (nasuprot Moduli-2 gde se toliko preteralo u simetriji da je dobijen jezik koga, objektivno, ljudi jednostavno ne žele da koriste). > ...pa reci kako to rješava ANSI C. Perfektno.
cccc.426 prvul,
Ů Hops. Ovdje postaje zabavno. :) Ů▄▄ Ů Još jedan dokaz da, za razliku od autorâ s 'druge strane', Ůne poznaješ 'neprijatelja':). Modula-2 (kako rekoh primjer Ůmodernog jezika) je case sensitive. Ů▄▄ Ů Aman, sloboda u korišćenju pointera... Znaš li možda za tipove ŮADDRESS BYTE WORD u Moduli-2? Znaš li za deklaraciju varijable na Ůapsolutnim pozicijama koja je dio standarda u M2? SYSTEM modul, Ůtakođe dio standarda? Ů NE, ne znaš! Ů▄▄ Imam utisak da ti je iz poruke u poruku postajalo sve manje zabavno... mnogo si se emotivno vezao za tu modulu ;) Modula se može koristiti kao primer modernog jezika za struktuirano programiranje. Kao što može i bilo koji drugi struktuirani jezik (Pascal, C, neke verzije BASIC-a). Međutim, sa C++ nije je za porediti. Razlika između M2 i C-a se na kraju svodi na notacione pogodnosti, a tu moraš priznati da je C u prednosti. Jeste, C ti DOZVOLjAVA da napišeš mnogo gori program nego što bi ikada u moduli uspeo da napišeš, ali kada se program piše planski praktično je pitnaje ukusa u kome jeziku će se realizovati algoritam. E, a onda C ima sažetiju sintaksu, operatore nad bitovima (uvek se lepim za njih ali šta da radim kada ih koristim tako često) i najzad ima ga svuda. Da ne zaboravimo, to je jedini uspešan jezik koji je doživeo uspešno unapređenje u OOL. Za nekoga ko je malo pisao u C-u programi deluju kriptično i nečitljivo. Međutim sa iskustvom ti isti programi postaju čitljiviji nego u drugim jezicima... nekima je smetalo što zagrade označavaju blokove... međutim, ako se lepo indentira to omogućava da se strukture vide kao da su nacrtane, smo treba imati "šmek" za to... isto tako u matematici bi se neko bunio što lepo prirodno ne piše INTEGRAL(f) ali posle dužeg bavljenja znak za integral baš onakav kakav je omogućava da izrazi sa integralima budu pregledni... slično je i sa sumama i matricama... Meni je prvi jezik koji sam stvarno naučio bio C. Posle toga sam naučio modulu i u njoj radio oko dve godine i najzad se prebacio na C. Naravno, forth, fortran, pascal i ostalo samu međuvremenu uzgred učio, ali nikada stvarno koristio. Moram priznati da mi neke stvari iz M2 nedostaju, ali se sada sa C-a i C++ ne bih vraćao na M2 ako baš ne moram.
cccc.427 pmijat,
>> ű> for a:=1 to 10 do >> ű> begin >> ű> trala; >> ű> lala; >> ű> end; >> >> FOR a:=1 TO 10 DO >> trala; >> lala; >> END; >> >> Ovo je adekvatan Modula-2 kod. Nisam mogao da odolim, iako ne spada ni u temu ni u raspravu : PERFORM WITH TEST AFTER VARYING a FROM 1 BY 1 UNTIL a = 10 trala lala END-PERFORM. Ovo je odgovarajuca COBOL sintaksa za isto. Jos jednom, sorry zbog upadanja u diskusiju Pozdrav Predrag(pmijat)
cccc.428 spantic,
> kompajler testirali tako što su ga pustili da kompajlira > sam sebe. B) Interesantno, zar ne? Ima i bolja priča. Svojevremeno je za QLa postojao SuperBASIC prevodilac, koji je napisan, verovali ili ne, u SuperBASICu a testiran je tako što je preveo prvo sebe :)
cccc.429 stomic,
$ odličnim rešenjima (nasuprot Moduli-2 gde se toliko preteralo u $ simetriji da je dobijen jezik koga, objektivno, ljudi $ jednostavno ne žele da koriste). Izuzimajući pola Evrope (npr. gotovo cela Nemačka) ;). Pa i nije to mnogo ;). Pozdrav, stomic@hobbiton.
cccc.430 stomic,
$ Možda ti je bilo zanimljivije to što sam ja kao pisao C a $ komentarisao tvoje Paskal i Modula programe? Da živiš u Bgd-u $ već bi ti naveliko pisao C++ ;) Sada teško ;). Pre još nisam bio 'siguran'. Sada nema šanse :). Pozdrav, stomic@hobbiton.
cccc.431 stomic,
$ Podsetio si me na Srđana Janeva i njegovu čuvenu izjavu "Ja $ nisam čovek, ja sam programer!" :)) Koliko mi se čini, on programira u Moduli-2 ;). $ E, pa ako ćemo tako ;) mogli smo u moduli da uvedemo $ NOT_EQUAL operator pa ipak imamo tarabu (joooj što mi to fali $ u C-u :) Neke kriptične oznake za stvari koje se stvarno jako Taraba, npr. strašno podseća na precrtan znak jednakosti (tj. ne jednako) i samim tim njeno korišćenje je sasvim logično i opravdano. Pozdrav, stomic@hobbiton.
cccc.432 stomic,
$ a kod Module su "mešali", i to kod raznih verzija Module na $ razne načine, pa treba za svaku funkciju pamtiti kakvim se $ slovima piše. Mešali? Šta? Svaka procedura (funkcija) počinje velikim slovom, ako ima druga reč unutar imena, ona je opet velikim slovom... A i ko je još video da neko programira na dva različita kompajlera za isti jezik ;>. Kada pređeš na nešto i to ćeš koristiti duže vreme, nije ti teško naučiti ta imena (uglavnom, učenje ide spontano). Kolika je sličnost između MS C i BC-a? Kada dobijaš poseban make file za jedan i za drugi, a još rade na istim mašinama pod istim OSom. Pozdrav, stomic@hobbiton.
cccc.433 stomic,
$ Pa da, ne programira neko na paskalu, fortranu, c-u, moduli 2 $ nego na Turbo Pascalu, MS Fortran-u, MS C-u, JPI Moduli 2 (ili $ već nekoj drugoj varijanti), dakle uz jezik mora se gledati i $ konkretna stvar koja je čoveku na raspolaganju, jer to je ono $ od čega se živi. Šta vredi dobar jezik ako nema dobre $ implementacije? Ono, uvek postoji Ne znam koliko ceniš I.S. Petnicu, ali tamo se isključivo rade projekti u JPI TopSpeed v3.02 radnoj okolini. I prilično su hvalili Modulu-2. $ kupili originalni softver, organizovali ljudima kurseve, mučili $ se neko vreme... i najzad digli ruke. Ispalo da se na $ "prastarom i bednom" PL/M-u mnogo lakše programira to što njima $ treba. Dejane, jel' ti menjaš jezik zavisno šta treba da uradiš? Nikada (a programiraš dugo, koliko znam) nisi seo i napisao svoju bibliteku, i baci (npr.) Clipper zauvek. OK, da se ponekad spustimo na ASM, ali sa jednog na drugi viši jezik... Argument da je u Clipperu nešto brže uraditi, ne stoji, ako iole dobro napišeš svoje module. Pozdrav, stomic@hobbiton.
cccc.434 stomic,
$ Imam utisak da ti je iz poruke u poruku postajalo sve manje $ zabavno... mnogo si se emotivno vezao za tu modulu ;) Modula se $ može koristiti kao primer modernog jezika za struktuirano $ programiranje. Kao što može i bilo koji drugi struktuirani $ jezik (Pascal, C, neke verzije BASIC-a). Nije mu. Veruj mi ;). Drugo, da ne iznosim argumente i ne širim raspravu, Modula-2 je nastala početkom '80tih, znači nekih 10-15 godina kasnije od gore nabrojanih. Ako ništa drugo, N. Wirth barem nije kreten da ne uradi ništa pametno za ovo vreme. Module će preuzeti i C++ kad tad ;). U nekoj svojoj cfront x.y.z verziji ;). Pozdrav, stomic@hobbiton.
cccc.435 janko,
> Janko, care! Odlična analiza, mislim da ne bih mogao bolje > od tebe napisati ovo što si rekao, a sa čime se slažem. Zahvaljujem. :) Baš sam se pitao, da li zalud pišem ovakav tekst na Sezamu... da li će ostati neprimećen bilo zbog dužine bilo zbog širine... :)
cccc.436 ppekovic,
>> B) Nego, da se nadovežem na ovo. Svojevremeno sam uploadovao PD C kompajler >> za Atari na Sezam. I sećam se da sam u njegovoj dokumentaciji pročitao da su >> kompajler testirali tako što su ga pustili da kompajlira sam sebe. B) >> Interesantno, zar ne? :) To radi i GNU C pri instalciji. Pošto dolazi u source-u, prvo ga iskompajliraš sa postojećim C komapjlerom, a zatim tako dobijeni kompajler iskompajlira ponovo ceo source u finalnu verziju. Paya
cccc.437 madamov,
****** Modula-2 (kako rekoh primjer modernog jezika) je case sensitive. ****** I ANSI C je case sensitive. A kompajleri uglavnom imaju switch da uključiš ili isključiš razlikovanje velikih i malih slova. Ako me sećanje ne vara i ona moja TDI Modula 2 na Atariju je imala switch za tako nešto, mada ne bih mogao da stavim ruku u vatru za to. Doduše, čini mi se da vas dvojica mislite na ključne reči, pa ovo i nema mnogo veze.
cccc.438 madamov,
****** Ovo je ista argumentacija kojom DejanR kruniše svoje rasprave na relaciji Pascal-Modula2. ****** žuo sam za taj tekst (ili možda tekstove?), ali ih nisam čitao tako da ne znam da li nam je ista argumentacija. Takođe ne znam šta je Dejan i kako radio, ali ja sam prvo radio u Moduli, pa onda dosta dugo paralelno i u Moduli i C-u (čak sam išao dotle da neke sitne programe napišem i u jednom i u drugom jeziku da bi ih uporedio), a onda definitivno prešao na C. Da opet ponovim, samo iz praktičnih razloga, nikako zato što smatram jedan jezik boljim od drugog. ****** Jedan kolega, npr., smatra da je Borland što se tiče uspotrebljivosti paketa apsolutno najbolji. A piše u TopSpeed M2:) ****** B) Sada znatno manje programiram na Atariju, uglavnom radim na Meku, a za njega još nisam nabavio Modula 2 kompajler. I mogu ti obećati da kad (i ako) ga nađem, pa on bude bolji od THINK C-a koga sada koristim, preći ću opet na Modulu. Mada čujem da je THINK Pascal skoro kao Modula, ali tu opet dolazimo do slične priče kao ukod upoređivanja Turbo Pascal-a i Module 2.
cccc.439 madamov,
****** Ako nisi znao to je završna faza vjerovatno svakog kompajlera. ****** Tada nisam znao pa mi je bilo interesantno. A i kompajler je sam po sebi interesantan, tj. to je kompletan paket za pisanje programa u C-u, a čak nije ni PD, tj. autori eksplicitno u dokumentaciji navode da im niko nikako ne šalje ni jedan cent, jer su sve to uradili za svoju dušu. Kako se to obično zove, freeware?
cccc.440 madamov,
****** pa treba za svaku funkciju pamtiti kakvim se slovima piše. ****** Na ovo sam se navikao u poslednje vreme, jer su sve funkcije Mekovog operativnog sistema nazivane na ovaj način (nije ni čudo, OS je prvobitno napisan u paskalu). Postoje i tu određena pravila kod davanja naziva, vrlo brzo se uhvati ta logika, pa nije veliki problem. Pretpostavljam da slična nepisana pravila postoje i za Modulu.
cccc.441 dejanr,
>> > odličnim rešenjima (nasuprot Moduli-2 gde se toliko preteralo u >> > simetriji da je dobijen jezik koga, objektivno, ljudi >> > jednostavno ne žele da koriste). >> >> Izuzimajući pola Evrope (npr. gotovo cela Nemačka) ;). Pa i nije to >> mnogo ;). Eh, Nemci su poznati kao država u kojoj se mnogo koristio čak i Atari ST, dakle skloni su raznim vrstama devijantnog ponašanja ;)))))
cccc.442 dr.grba,
>> Pa mozda i bi da su mu kupili nesto drugo da radi na tome. Ovako covek >> skoluje svog sina radeci na PDP kanti ): Htedoh reci UNIVAC ):, al' jednako mladoliko...
cccc.443 dejanr,
>> > a kod Module su "mešali", i to kod raznih verzija Module na >> > razne načine, pa treba za svaku funkciju pamtiti kakvim se >> > slovima piše. >> >> Mešali? Šta? Svaka procedura (funkcija) počinje velikim slovom, >> ako ima druga reč unutar imena, ona je opet velikim slovom... Lepo i logično zvuči. Ali, kako je onda, primenjujući takvu logiku, Logitech nazvao funkciju sqrt a JPI istu funkciju Sqrt? Zašto se (JPI) kaže LONGREAL a ne LongReal? >> Kada pređeš na nešto i to ćeš koristiti duže vreme, >> nije ti teško naučiti ta imena (uglavnom, učenje ide spontano). Nema sumnje, ali samo kažem da je čitava ta filozofija "velika/mala slova su različita" nešto teža za učenje od koncepcije starog dobrog FORTRAN-a koja kaže "piši slova kako ti drago". Doduše, neki kažu da je posle preglednije, a sve ima svoju cenu. A kad mora, navikne se čovek i na gore stvari, ne bi da opet pominjem vi ;))) >> Kolika je sličnost između MS C i BC-a? Sličnost je mala, u pravu si. Ja sam samo "pričao" o različitom tretmanu velika/mala slova u smislu da ako dva kompajlera iste funkcije različito zovu (po pitanju velika/mala slova), onda tu nešto sa logikom davanja imena nije u redu.
cccc.444 dejanr,
>> Ne znam koliko ceniš I.S. Petnicu, ali tamo se isključivo rade >> projekti u JPI TopSpeed v3.02 radnoj okolini. I prilično su hvalili >> Modulu-2. Veoma cenim I.S. Petnica kao u našim uslovima jedinstvan projekat koji već godinama postiže zbilja izuzetne rezultate. Ali, IS Petnica je baš to što joj i ime kaže - omladinska istraživačka stanica. Kao takva, ona ne mora da ispoljava neki previsok stepen veza sa "realnošću", može (i treba!) da se bavi raznim interesantnim projektima koji obuhvataju paralelno procesiranje, nove arhitekture, RISC, egzotične jezike itd. Većina tih projekata završava baš tamo gde je i rađena, i kao rezultat da jedino to da su učesnici u projektu nešto naučili. Neki projekat će možda na duži rok rezultirati i raznim drugim stvarima. Sasvim je prirodno da takve istraživačke stanice propagiraju razne jezike, i zapravo bi u tome trebale da budu što raznovrsnije. Mene lično više zanimaju jezici, a naročito njihove implementacije, od kojih se živi. >> Dejane, jel' ti menjaš jezik zavisno šta treba da uradiš? Pa, naravno. Ne znam koliko si se bavio pitanjima projektovanja softvera, ja jesam uglavnom onoliko koliko se to izučavalo kod prof. J. Dujmovića (u okviru predmeta "Metode programiranja", ETF) jer kod nas, na žalost, ima jako malo softverskih firmi i većih softverskih projekata koji bi uopšte zahtevali "pravo" projektovanje :( Međutim, ovako čisto teorijski, jedna od značajnih faza projektovanja jednog sistema je izbor jezika. Kada se sagledaju problemi i skicira moguće rešenje, pristupa se pregledu raspoloživih jezika i alata kako bi se odabrao onaj pomoću koga će se problem najefikasnije rešiti. Jedan od značajnih parametara pri tom izboru jeste znanje i iskustvo raspoloživog programerskog tima - dakle, ako se više prethodnih projekata radilo na C-u, ima smisla pre svega razmotriti C. Prelazak na neki drugi jezik razmatra se sa četiri aspekta, i sva četiri se "vulgarno" izraze u dolarima: (1) koliko će koštati da se programeri obuče da rade na drugom jeziku; (2) koliko koštaju novi alati; (3) koliko će jednostavniji (=jeftiniji) biti razvoj programa na novoj platformi i (4) koliko će u budućnosti biti prilike da se novi alati koriste. Naravno, najteže je odrediti poslednji aspekt, jer treba predvideti buduća kretanja na tržištu i poslovnu politiku firme. Dakle, ako se ispostavi da će ubuduće na tržištu biti sve više poslova koji se mogu kvalitetnije i efikasnije raditi na nekom drugom jeziku, postepeno se programeri obučavaju da rade na njemu ili se deo postojećih programera otpušta a angažuju se novi koji poseduju odgovarajuća znanja (to je ono kad u NOVOSTI/microb čitamo o "reorganizaciji i otpuštanjima" u nekoj firmi, recimo trenutno Quaterdeck izgleda planira da se pomalo orijentiše na druge platforme, dakle otpušta programere koji su uglavnom radili na asembleru). Inercija softverske industrije je prilična tj. potrebni su dosta jaki argumenti (u vidu $$$) da bi se menjali neki od bazičnih programerskih alata sa kojima se u okviru jedne firme radi. žak i prelazak sa verzije na verziju nije lako prihvatljiv, recimo silne (čak i vrlo ozbiljne!) softverske firme i dalje koriste MS C 5.1. Ali, ako se uoči dovoljno jasna računica, nema "milosti". Primenjeno na naše "male" uslove, naravno da ne radim sve na istom jeziku. Razni tipovi poslova rade se mnogo lakše na raznim jezicima. Moj lični izbor je Clipper kada se pišu baze podataka, Turbo Pascal kada se pišu "mali" uslužni programi, FORTRAN kada se piše za VAX-a, PL/M kada se radi mikroprocesorski softver za razne Intelove kontrolere i C kada ništa od toga nije raspoloživo i/ili ne može da zadovolji potrebe. Plus asembler, kad baš mora. Nikada nisam osećao preterane probleme od istovremenog korišćenja svih ovih jezika, jer svaki koristim za razne stvari. Jedini problem je što treba odvojiti 100+ mega na disku za razne kompajlere ;( >> i baci (npr.) Clipper zauvek. Baci ga ti, ako želiš, ja sam na njemu tako lepo zaradio (i zarađujem) da ga mnooogo poštujem :) Clipper ima svoje mane i svoja ograničenja, ali dobro radi posao za koji je namenjen. Video sam svašta drugo, i Force, i razne Paradox Engine, i CISAM-e/DISAME-e, i ModBase/Repertoire, i druge biblioteke i, po meni, ništa od toga nije konkurencija Clipper-u. Konkurencija Clipper-u su jedino jezici "njegovog nivoa" kao što su Fox i slični. Neki su, možda, i bolji od njega. Ali baze podataka na C-u ili (pogotovu) Moduli 2... hvala lepo :( Što se tiče Module 2, moram da kažem da sam negde 1988/1989. bio spreman da je jako ozbiljno razmotrim kao mogući univerzalni alat za razne poslove. Bio sam na neki način "zaveden" time što su u mnogim prikazima isticane razne biblioteke za nju, hvaljene performanse, univerzalnost, prenosivost itd. Pomišljao sam da bi se možda sve stvari koje radim, dakle i mikroprocesorski softver, i baze podataka, i "mali uslužni programi", moglo raditi na jednom jeziku (Moduli) što bi bio solidan dobitak. Odvojio sam prilično vreme a bogami i novac (nabavka kompajlera, biblioteka (ModBase itd) i svega i svačega... nešto je moglo da se dobije na prikaz ali nešto je i moralo da se plati :( ) za taj eksperiment. Završio sam potpuno razočaran u Modulu 2, vreme i novac otpisani kao gubitak. Razočaran sam ponajmanje Modulom kao jezikom, poprilično njenim PC implementacijama i totalno tim bibliotekama (neozbiljno pisano) i performansama koje čitav sistem postiže. Odluka da Modulu (do daljeg, ne treba biti isključiv) potpuno otpišem kao jezik mi se u današnje vreme čini još opravdanijom, jer vidim da je praktično jedini jezik za razvoj softvera na novim platformama (Windows, OS/2...) upravo C (i sve više C++), dok sve drugo stigne mnogo kasnije (pri čemu prvo stiže paskal, hvala Borlandu :) uz vrlo sumnjive karakteristike. Pri svemu tome, imam utisak da kod mnogih mlađih programera postoji prevelika fasciniranost programskim jezikom. Ja programski jezik prevashodno gledam kao sredstvo pomoću koga se ostvaruje neka zamisao, smatrajući zamisao za ono bitno a alat za nešto mnogo manje važno. Dobro programiranje ne prodaje program. žak ni performanse ne prodaju program (normalno, ako je sve u nekim granicama, katastrofalno loše performanse su svakako loša karakteristika programa). Korisnički interfejs može da zainteresuje kupca i može da proda program, ali ga ni on ne prodaje na duži rok. Ono što prodaje program je sagledavanje problema koji se rešava i projektovanje rešenja koje će omogućiti korisniku da racionalno primeni kompjuter. To je ono što je teško i zapravo jedna od dve stvari od stvarnog značaja. Druga stvar koja je od velikog značaja, naročito na duži rok, je pouzdanost softvera. Meni se jednom desilo da sam gotovo izgubio jednu inače dobru mušteriju zato što sam, k'o neki žutokljunac, kada je izašao Clipper 5.0 uzeo programe koji su dobro radili i preveo ih njime i takve instalirao :( Posle je sve počelo tako da puca da mi je izgledalo da me ni Sava i Dunav neće oprati :((( Posle sam sa Clipper-om 5.01 nekom čoveku napravio maltene džabe program s tim da ne odgovaram za pouzdanost, jer se kod njega taj program zbilja vrteo po 24 sata dnevno a primena je bila takva da, sve i da totalno pukne, nema štete koja se neće opraviti jednim kopiranjem sa diskete. Tek kad se tamo 4 meseca program vrteo bez problema počeo sam da verujem u Clipper 5. Baš zbog te pouzdanosti skloniji sam "proverenim" i mnogo prodavanim jezicima poput Clipper-a, MSC-a itd, nego raznim "super proizvodima" malih firmica.
cccc.445 dejanr,
>> Modula-2 je nastala početkom '80tih, znači nekih 10-15 >> godina kasnije od gore nabrojanih. Ako ništa drugo, N. Wirth barem >> nije kreten da ne uradi ništa pametno za ovo vreme. Iskreno rečeno, meni se čini da se praktična upotrebljivost Virtovih jezika kreće silaznom linijom - paskal, pa modula, pa najzad oberon kao najmanje upotrebljiv. Zapravo, kako neko reče, i paskal bi bio mnogo manje upotrebljiv da nije raznih ekstenzija kao što su vax pascal ili turbo pascal. Mislim da Virtu i nije cilj da projektuje "praktično upotrebljive" jezike, njega više zanimaju neki teorijski i naučni aspekti programiranja. A ako neko od nekog njegovog jezika napravi nešto upotrebljivo... nije on kriv :)
cccc.446 janko,
Ah, počela je polemika... :) > Koristiću, kao i autor c-case, Modulu-2 kao primjer > modernog jezika:). > FOR a:=1 TO 10 DO > trala; > lala; > END; Već sam napisao u prethodnoj poruci, da smatram da bi idealno bilo FOR ... ENDFOR, (tj. za svaki konstrukt odgovarajući kraj, koji se uvek gradi na isti način) još sa mogućnošću da se iza tog ENDFOR nalazi čak i opis početka petlje... Npr. for a=1 to 10 step 0.1 (uvek sam mrzeo Paskal i slične što trala; ( nema ovaj step ;) for b=3 to 11 opaopa; endfor b; lala; endfor a; Priznajem, ovako opet imamo puno ključnih reči i dosta "ključnog" teksta, a zaključili smo da C može da bude čitljiviji baš zato što ih nema takve. Ali, kada bih mogao da biram između različitih ne-C-lajk jezika, odabrao bih ovakav (a nema ga!) > ű> Međutim! Jednostavno dovođenje zagrada gde im je mesto > (da ű> parovi budu u istoj koloni), daje C sors čitljiviji > od ű> ekvivalentnog paskalskog ili modulskog jednostavno > zato što ű> umesto silnih REžI BEGIN .. END imamo po jedan > SIMBOL. (Nije ű> to > > Taj jedan simbol je onaj END jer za razliku od Pascala u > Moduli-2 blokovi podrazumijevaju BEGIN. BEGINom samo > počinju tijela procedura i samih MODULE-a. I nemaš jedan > nego dva simbola, jednim počinješ, drugim završavaš. U > Moduli 2 imaš JEDAN SIMBOL, tj END i njime završavaš. END nikako nije JEDAN simbol. ;) Osim ako postoji neki font u kome su ta tri slova spojena u jedan znak. ;) > ű> Još jedan argument u korist C-a: zbog toga što se > neumereno ű> koriste ključne reči, u paskaloidnim jezicima > je uobičajeno da ű> Šstuff deleted:)Ć > ű> programa. U C-u takav problem praktično ne postoji. > > Još jedan dokaz da, za razliku od autorâ s 'druge strane', > ne poznaješ 'neprijatelja':). Modula-2 (kako rekoh primjer > modernog jezika) je case sensitive. 1) Kakav neprijatelj, molim te! Programiraću ja na svakom jeziku, za koji mi se plati! ;) Ako mi neko plati za Modulu, dobiće Modulu.;) 2) Argument ti je skroz OFF. To što je Modula kejs senzitiv nije pohvalno, čak! Zbog pomenutog problema nečitljivosti, tvorci Module su, onda, propisali da se ključne reči moraju pisati velikim slovima. Moje mišljenje je da je rezultat grozan! Takav listing me asocira na kompjutersku praistoriju, kada nisu ni postojala mala slova -- Fortran i Kobol su tada tako izgledali. Moram li da kažem da na modernim Kobol i Fortran kompajlerima mogu da pišem i malim slovima, a na Moduli ne? ;) > ű> BTW, po meni su lepše konstrukcije FOR .. ENDFOR, WHILE > .. ű> ENDWHILE i slične, jer se tako najbolje, ipak, > izbegavaju ű> traženja "od čega je ovo end" i "od čega je > ovo zagrada" a u > > Vjerovatno, ali sam si rekao da pravilnom identacijom to > može efikasno da se prevaziđe. Ja imam običaj da iza ENDa > koji završava blok duži od ekrana stavim u (* *) i tip > bloka. I time ono što bi trebalo da proverava kompajler (ej, a Modula se kao diči time da je striktnija ;) svodiš na čisto pisanje običnog teksta koga kompajler ne vidi, te ne mora ni da bude konzistentan! ;) > ű> Da ne govorimo o tome da onda mora posebno da se pazi > šta se ű> radi u onim višestrukim ifovima -- tj. uz šta će > da dođe ELSE. ű> Zato ja, kao što u Paskalu pišem > tačku-zarez i pred END-om, da ű> bi mi dodavanje > eventualne sledeće naredbe bilo bezbolnije, ű> često > smestim eksplicitne oznake bloka i oko jedne naredbe, ű> > ako je ona u telu programske strukture... posle me manje > boli ű> glava... > > Opet nepoznavanje 'neprijatelja'. Sintaksa Module-2 nije > kao kod paskala već > > IF uslov THEN > statements > šELSIF uslov THEN > statementsć > ŠELSE > statementsĆ > END; > > Dalje, već sam rekao šta mislim o karakteru ';'. Što se > tiče 'eksplicitne oznake bloka' i to spada u nepoznavanje > a gore sam napisao šta je to u M2. 1) Ja i nisam pisao o Moduli 2, ako nisi primetio, te tvrdnja da je ne poznajem ne stoji. Ovo je čisto podmetanje. Pisao sam o klasičnom problemu kod C-a, pre svega, i da ga rešavam suprotno rudimentnom C običaju da se ništa suvišno ne piše, na isti način na koji pišem i suvišne tačke zareze, jer su korisni, u Paskalu. 2) IF .. ELSIF .. konstrukcije su mi vrlo dobro poznate. 3) Nepoznavanje čega je "eksplicitna oznaka bloka?" Module 2? Pa ja nisam ni pisao o njoj! Primeti da je ovo cccc tema. ;) > ű> fali dibejz-lajk jezicima -- struktururanje zapisa -- > ű> proizvoljan broj polja, kada se strukturira, se može > kopirati ű> odjednom. A na Kliperu moram da se patim -- > ili da navodim sva > > C i Clipper... Ti si stvarno nesretnik:)). > > Ljudi koje znam da pišu u Moduli-2, SVE završavaju u > Moduli-2! Zavisi šta rade. ;) I ja bih mogao da sve završavam u Moduli dva, ako bih se bavio samo određenim akademskim radom... npr. da radim u "Institutu za istraživanje ruda i Modulu dva" ;) Ovako, ne gledam usko -- sve što mi završi posao ću da upotrebim. Pa čak i Modulu 2. Do sada mi ona nije ponudila da ijedan posao uradim lakše -- tj. da treba da uradim nešto i pomislim "e, ovo bi sada najlakše realizovao u Moduli dva." Za razliku od toga, "ovo je najlakše u C++-u," pomislim mnogo češće. ;))
cccc.447 janko,
> Nisam mogao da odolim, iako ne spada ni u temu ni u > raspravu : > > PERFORM WITH TEST AFTER VARYING a FROM 1 BY 1 UNTIL a = 10 > trala > lala > END-PERFORM. > > Ovo je odgovarajuca COBOL sintaksa za isto. > > Jos jednom, sorry zbog upadanja u diskusiju Nije striktno vezano za temu, ali spada u raspravu. :) Hvala. Strogo gledano, čak ni celoj rapravi nije mesto u PC temi. Lično bih bio srećniji da tema za svaki programski jezik ne bude vezana za određeni operativni sistem! Npr. da je konferencija samo PROGRAMIRANJE, a ne PC.PROG.
cccc.448 janko,
> Ů for ... a(i)=b(i)+1 > Pa eno u moduli FOR, WHILE i ostale strukture automatski > otvaraju blok, ali se on opet zatvara sa END. Možda > ENDFOR, ENDWHILE, ENDIF i ostalo ne postoje jer bi to > uvelo gomilu (nepotrebnih?) ključnih reči u jezik. Jeste. I Modula je dizajnirana kada su memorije bile mnogo manje -- i oni su se brinuli da će biti teže napraviti kompajler sa pokojom ključnom reči više. Fortran nema ključne reči, a opet, novije verzije jezika izlaze na kraj i sa takvim konstrukcijama -- toliko o modernosti Module. ;) > Ůako sors nije čitljivo pisan -- ne znaš > Ůgde je počela nova procedura! > Ů▄▄ > > Zavisi od stila pisanja... kod mene su jedine zagrade koje > su na samom početku reda baš te zagrade koje označavaju > početak i kraj funkcije. Dobro, de... ima i onih koje > označavaju početke i krajeve deklaracija struktura, ali te > su uvek na samom početku fajla, a funkcije slede, pa se ne > može pogrešiti. Vidiš, nije baš... Ostaje primer koji sam već naveo: napiši program koji nalazi imena svih procedura u Paskal sorsu. Trivijalno. Napiši program koji nalazi imena svih procedura u C sorsu. Treba ti pozamašan deo gramatike C-a i LEX i YACC.
cccc.449 janko,
> ű> preveliko insistiranje na formalizmu kakvo je > svojstvano ű> Paskalu, Adi i Moduli definitivno nije od > neke posebne ű> koristi. Odrađena sloboda u korišćenju > pointera je praktično ű> neophodna. > > Aman, sloboda u korišćenju pointera... Znaš li možda za > tipove ADDRESS BYTE WORD u Moduli-2? Znaš li za > deklaraciju varijable na apsolutnim pozicijama koja je dio > standarda u M2? SYSTEM modul, takođe dio standarda? > > NE, ne znaš! Ton ti je takav da skoro ne zavređuje ni odgovor. Poslednji put, molim te da čitaš ono na šta odgovaraš. Idući put ti neću odgovoriti.
cccc.450 janko,
> OK, da se ponekad spustimo > na ASM, ali sa jednog na drugi viši jezik... Zašto ne bismo koristili ono što najbolje odgovara problemu koji rešavamo? Insistiranje na JEDNOM jeziku za SVE je glupo. > ali sa jednog na drugi viši jezik... Argument da je u > Clipperu nešto brže uraditi, ne stoji, ako iole dobro > napišeš svoje module. Nema nameru da IKAD pišem SVOJE module za B+ stabla, .DBF kompatibilnost, i za interaktivnu obradu kakvu mi pružaju Dibejz ili Foks. Kad bi to bilo lako, svi bi pisali Dibejzove i Foksove.
cccc.451 janko,
> ne pamtim kada sam poslednji put > deklarisao bilo globalnu bilo static promenljivu... a > nešto se ne sećam ni da sam deklarisao strukturu kao > lokalnu promenljivu (mada je toga bilo). Sve strukture > imaju svoje Joj! Šta fali globalnim promenljivama? Šta fali strukturi kao lokalnoj promenljivoj? žini mi se da stvarno preteruješ... S druge strane, na osnovu izjave da te ne mrzi da sve generalizuješ, verujem da bi mi bilo zadovoljstvo da radim u istom timu s tobom. :)
cccc.452 prvul,
Ů$ Podsetio si me na Srđana Janeva i njegovu čuvenu izjavu "Ja Ů$ nisam čovek, ja sam programer!" :)) Ů Koliko mi se čini, on programira u Moduli-2 ;). Ů▄▄ Jeste, izmeđuostalog i u M2. Kao što i ja između ostalog koristim FORTH za ono za šta ga treba koristiti: za programiranje HP48SX (dobro, nije baš FORTH ;) Koristiš jednostavno onaj jezik koji dobro znaš, a koji omogućava lako rešavanje problema. Njegove probleme rešava M2, moje ne rešava (nema operatore za rad sa bitovima, pa mi kod koji treba da uradi aritmetičko kodiranje izgleda jaaako nepregledno i ružno). Ů$ NOT_EQUAL operator pa ipak imamo tarabu (joooj što mi to fali Ů Taraba, npr. strašno podseća na precrtan znak jednakosti Ů▄▄ Pa znam... i baš nešto razmišljam... taraba se može ubaciti u C standard bez problema, jer se inače koristi samo za pretprocesorske direktive, pa bi se dvosmislenost lako dala razrešiti... hoću tarabuuuu.. ;)
cccc.453 prvul,
Ů Ne znam koliko ceniš I.S. Petnicu, ali tamo se isključivo rade Ůprojekti u JPI TopSpeed v3.02 radnoj okolini. I prilično su hvalili ŮModulu-2. Ů▄▄ Evo ja izuzetno cenim Petnicu, ali ona ima svoje razloge za prelazak na TS okolinu, a koja obuhvata i C++ koji rado koristim. Naravno, jako mi prija mogućnost da fragmente koda pišem u M2.
cccc.454 prvul,
ŮModule će preuzeti i C++ kad tad ;) Ů▄▄ I mislim da bi se to većini jako svidelo. Naročito ako se snađu sa onim problemom sakrivanja privatnih delova klasa. Samo, verujem da će, kao i sve ostalo u C-u, i sintaksa za "moduliranje" biti mnogo sažetija nego ona u M2. U stvari, svi Wirth-ovi jezici su fini kada u njima treba pisati male programčiće i primere baš zato što su "opširni". Ali za malo duži kod počinje da ide na živce prevelika strogost. Mislim da treba od svih jezika pokupiti najbolje osobine... nije to ništa loše... čaksm jedno vreme razmišljao o mutabilnim jezicima, kod kojih postoji metajezik, a strukture koje želite da imate definišete sami. I onda neka svako napravi sebi jezik kakav mu odgovara, a sav kod bio bi međusobno kompatibilan zbog svođenja na metajezik. Jedini problem je što ako neko treba damenja tuđ kod ima da crkne...
cccc.455 dusanp,
=> Kolika je sličnost između MS C i BC-a? Kada dobijaš => poseban make file za jedan i za drugi, a još rade na => istim mašinama pod istim OSom. Da li te zanima kakva je slicnost na nivou make-a ili na nivou sorsa? To su razlicite stvari. BC u verziji 3.1 potpuno podrzava MSC deklaracije (osim svojih), pa mozes da kazes da je slicnost potpuna. I da ne zaboravim, na oba mesta seint kaze bas tako, a ne Int i INT.
cccc.456 prvul,
ŮLepo i logično zvuči. Ali, kako je onda, primenjujući takvu logiku, ŮLogitech nazvao funkciju sqrt a JPI istu funkciju Sqrt? Zašto se Ů(JPI) kaže LONGREAL a ne LongReal? Ů▄▄ Ma za sqrt manje-više, ali zašto se kod jednog zove InOut, WriteLn, WriteString, a kod drugog IO, WrLn... Za LONGREAL je logično, naime imena svih ugrađenih tipova se pišu velikim slovima (CARDINAL, LONGCARD).
cccc.457 prvul,
Ů> ne pamtim kada sam poslednji put Ů> deklarisao bilo globalnu bilo static promenljivu... a Ů> nešto se ne sećam ni da sam deklarisao strukturu kao ŮJoj! Šta fali globalnim promenljivama? Šta fali strukturi kao Ůlokalnoj promenljivoj? žini mi se da stvarno preteruješ... Ů▄▄ Heh... ali da si morao nekada da uopštavaš tuđi kod... brrrr... Npr. imaš sors od ZMODEM-a, i kada ga izkompajliraš radi. Onda rešiš da napraviš od toga biblioteku. E, ona mora biti reentrant. Što znači nix globalne promenljive, a mora podržavati i više "instanci" transfera odjednom. Onda nastaje ludnica... autor, naravno pravio funkcije za transfer tako da podržavaju samo jedan u isto vreme... Naravno, ZMODEM nisam prepravljao. Ali slične module čiji autor je mislio da će samo jedna instanca da bude u igri jesam na svoju opštu ;) žalost. E, da ne bih kada dođe vreme da svoje module tako krpim mislio o sebi ono što sam tada mislio o njima, lepo uvek sve pišem da bude reentrant, tj. sve je lokalno, sve na steku, sve može da ima proizvoljan broj instanci. Navikneš se da tako razmišljaš i nemaš više problema...
cccc.458 nbatocanin,
> I sećam se da sam u njegovoj dokumentaciji pročitao da su kompajler > testirali tako što su ga pustili da kompajlira sam sebe. B) > Interesantno, zar ne? Jeste, interesantno je. To je klasika, bilo je reči u jednom od starijih brojeva "Računara".
cccc.459 stomic,
$ Baci ga ti, ako želiš, ja sam na njemu tako lepo zaradio (i $ zarađujem) da ga mnooogo poštujem :) Clipper ima svoje mane i $ svoja ograničenja, ali dobro radi posao za koji je namenjen. $ Video sam svašta drugo, i Force, Hvala na savetu, bacio sam ga odavno (posle par poslova koji su mi se smučili). Stvar je što je kliper na višem nivou od viših programskih jezika ;). Tj. na neki način skup rutina za rad sa bazama. E to ne volim. To je lepo, rešava trenutan problem, ali ako ja baš budem srećnik da naletim na neki bug u tim rutinama mogu da se slikam. Volim da imam veću kontrolu nad onim što se dešava u mom programu. $ softvera. Meni se jednom desilo da sam gotovo izgubio jednu $ inače dobru mušteriju zato što sam, k'o neki žutokljunac, kada $ je izašao Clipper 5.0 uzeo programe koji su dobro radili i $ preveo ih njime i takve instalirao :( Posle Baš kao što sam rekao ;). Pozdrav, stomic@hobbiton.
cccc.460 stomic,
$ Zašto ne bismo koristili ono što najbolje odgovara problemu $ koji rešavamo? Insistiranje na JEDNOM jeziku za SVE je glupo. Postoje jezici opšte namene (general purpose languages, ako sam dobro napisao), kao što su C, Modula-2, Pascal, ... Prelazak među njima mi je glup (ok, možda grešim). Prelazak na neki jezik koji se bavi specifičnim problemom mi je opravdan ako se ne isplati (vreme/novac) pisanje baš tih specifičnih rutina. $ Nema nameru da IKAD pišem SVOJE module za B+ stabla, .DBF $ kompatibilnost, i za interaktivnu obradu kakvu mi pružaju Zar nije lepše kada napišeš svoje module i posle tačno znaš kako šta radi. BTW, ako te već interesuju B+ stabla (doduše u M2) javi se :). Naravno ako je Dragisha razpoložen pošto ih je on napisao.
cccc.461 stomic,
$ Eh, Nemci su poznati kao država u kojoj se mnogo koristio čak i $ Atari ST, dakle skloni su raznim vrstama devijantnog ponašanja $ ;))))) Ako gledamo na tu stranu, i amerikance smatramo za prilično glupu naciju, a oni sami forsiraju C/C++ ;))). Pozdrav, stomic@hobbiton.
cccc.462 stomic,
$ Iskreno rečeno, meni se čini da se praktična upotrebljivost $ Virtovih jezika kreće silaznom linijom - paskal, pa modula, pa $ najzad oberon kao najmanje upotrebljiv. Toliko silaznom putanjom da je Borland uspeo da izvuče Pascal baš novitetom iz Module-2 -- Unitima, tj. Modulima ;))). Što se tiče Oberona-2, kažu da ima trenutno najjači OOP. Mada još ne postoji dovoljno jaka implementacija ovog jezika. Pozdrav, stomic@hobbiton.
cccc.463 stomic,
$ Logitech nazvao funkciju sqrt a JPI istu funkciju Sqrt? Zašto $ se (JPI) kaže LONGREAL a ne LongReal? Zato što se standardni tipovi pišu velikim slovima. $ velika/mala slova u smislu da ako dva kompajlera iste funkcije $ različito zovu (po pitanju velika/mala slova), onda tu nešto sa $ logikom davanja imena nije u redu. Stvar navike. Modula-2 te kao jezik ne tera da tačno po nekim pravilima daješ procedurama, tipovima, ... imena (velika/mala slova). Već da ih koristiš baš onako kako si naveo, što je sasvim logično i čini program mnogo preglednijim. Za nekompatibilnost između Logitech i JPI, ne možemo kriviti ni Wirtha niti jednu od ove dve firme. Kao ni Borland ni Microsoft zbog BC i MSC. Pozdrav, stomic@hobbiton.
cccc.464 stomic,
$ nije pohvalno, čak! Zbog pomenutog problema nečitljivosti, $ tvorci Module su, onda, propisali da se ključne reči moraju $ pisati velikim slovima. Moje mišljenje je da je rezultat $ grozan! Takav listing me asocira na kompjutersku Moje lično mišljenje je da je rezultat odličan :). Na ovaj način se ističnu neke granice npr. BEGIN WHILE <uslov> DO REPEAT ... ... ... ... ... ... ... ... ... END; END; UNTIL <uslov>; Baš ono što nam treba. Kada se analizira program prvo ove oblasti treba da se primete (jer su na neki način istaknute), pa tek onda ono između. Odlično rešenje. $ Zavisi šta rade. ;) I ja bih mogao da sve završavam u Moduli $ dva, ako bih se bavio samo određenim akademskim radom... npr. $ da radim u "Institutu za istraživanje ruda i Modulu dva" ;) Pa ako tu spada i knjigovodstva ('korisna' primena M2 :) i gomila drugih stvari (npr. ceo Hobbiton BBS je napisan u M2, ah, da... tek sada shvatam zašto DejanR ne voli M2 ;>>>), onda stvarno ne znam šta je korisno. Ovde da zastanemo. Lično smatram da je M2 dobar jezik, ali ni jedan jezik (mislim na ove jezike opšte namene) ti ne može drastično pomoći, možda samo olakšati neke delove. Ako imaš (napišeš, nabaviš, ...) dobru biblioteku zaista nećeš imati potrebe za bilo čim drugim. Pozdrav, stomic@hobbiton.
cccc.465 stomic,
$ > neke posebne ű> koristi. Odrađena sloboda u korišćenju $ > pointera je praktično ű> neophodna. $ > Aman, sloboda u korišćenju pointera... Znaš li možda za $ > tipove ADDRESS BYTE WORD u Moduli-2? Znaš li za $ Ton ti je takav da skoro ne zavređuje ni odgovor. Poslednji $ put, molim te da čitaš ono na šta odgovaraš. Idući put ti neću $ odgovoriti. Za ton vas dvojica raspravite ;). Što se tiče odgovora mislim da je OK. Pričalo se o slobodi korišćenja pointera. ADDRESS ti daje potpunu slobodu. Pozdrav, stomic@hobbiton.
cccc.466 ppekovic,
>> Toliko silaznom putanjom da je Borland uspeo da izvuče Pascal >> baš novitetom iz Module-2 -- Unitima, tj. Modulima ;))). Ali je i dalje pascal. Kad je M2 toliko dobar, zašto ne uzeše sve? >> Što se >> tiče Oberona-2, kažu da ima trenutno najjači OOP. Ko? >> Mada još ne >> postoji dovoljno jaka implementacija ovog jezika. Kad bude bilo javi da probam. Nemam predrasude ni prema jednom programskom jeziku. Paya
cccc.467 ppekovic,
>> To je lepo, rešava trenutan problem, ali ako >> ja baš budem srećnik da naletim na neki bug u tim rutinama mogu >> da se slikam. Volim da imam veću kontrolu nad onim što se dešava >> u mom programu. Šta ako naletiš na bug u tvom M2 komapjleru. Da li si razmišljao da sve pišeš u assembler-u, mada, kad bolje razmislim, šta ako naletiš na bug na mikroprocesoru, hm, najbolje je napraviti svoj, ... :) Kako si tako siguran da tvoje funkcije i procesure nemaju bug-ova. Clipper programi se teraju na hiljadama računara u najrazličitijim uslovima, te se sa velikim stepenom sigurnosti može reći da pouzdano radi. Manji bug-ovi su poznati a samim tim ih nije problem izbeći. Dakle, sigurnije je koristiti proverene alate nego izmišljati rupu na saksiji. Paya
cccc.468 ppekovic,
>> Postoje jezici opšte namene (general purpose languages, ako sam >> dobro napisao), kao što su C, Modula-2, Pascal, ... Prelazak >> među njima mi je glup (ok, možda grešim). Dobro i kažeš. Zato je najbolje koristiti onaj koji ima najbolje implementacije, podršku u obliku knjiga, biblioteka, gomile korisnika, zatim onaj koji je standard na operativnom sistemu sadašnjosti i budućnosti, unix-u. Paya
cccc.469 dejanr,
>> > Nema nameru da IKAD pišem SVOJE module za B+ stabla, .DBF >> > kompatibilnost, i za interaktivnu obradu kakvu mi pružaju >> >> Zar nije lepše kada napišeš svoje module i posle tačno znaš kako >> šta radi. A da napišeš i svoj kompajler, pa onda znaš tačno šta će kako prevesti? Pa onda svoj operativni sistem, pa nema više nedokumentovanih poziva? ;)) Zašto da ja radim ono što su već drugi ljudi uradili, i to ulažući u to i dosta rada i dosta para, tako da su te rutine verovatno bolje uradili nego što bih ja mogao? Bolje da im platim sitnu lovu za te rutine, i da ih ubuduće koristim.
cccc.470 dejanr,
>> > Iskreno rečeno, meni se čini da se praktična upotrebljivost >> > Virtovih jezika kreće silaznom linijom - paskal, pa modula, pa >> > najzad oberon kao najmanje upotrebljiv. >> >> Toliko silaznom putanjom da je Borland uspeo da izvuče Pascal >> baš novitetom iz Module-2 -- Unitima, tj. Modulima ;))). Niko nije rekao da u sledećim jezicima nema i dobrih stvari. Zapravo, u svakom jeziku ima dobrih ideja. Ali, jezik se ipak posmatra kao celina. Da je Borland, recimo, smatrao da je Modula 2 dobra i praktična kao jezik, ne bi pravio paskal nego bi pravio Turbo Modulu 2 (koja je, doduše, kratko vreme i postojala pre nego što su videli da od toga nema 'leba). Oni su uzeli dobre ideje iz Module i odbacili celinu, koja je slaba. A to za module... nije baš novitet Module 2, postojalo je još u starom dobrom fortranu, jedino što je ovom prilikom izdvojen opis funkcija u poseban modul, koji je kod Module 2 baš dibiduz poseban, a kod Turbo Pascala je samo stavljeno na vrh unit-a, u INTERFACE sekciju. Lično smatram da je Turbo Pascal rešenje praktičnije. >> Što se tiče Oberona-2, kažu da ima trenutno najjači OOP. Mada još >> ne postoji dovoljno jaka implementacija ovog jezika. To je baš to što kažem - Virt se bavi teorijom programiranja i smišlja jezike sa nekim novim elementima, a praktična realizacija toga mu nije prvenstveni cilj. Drugi posle iz njegovih jezika crpe razne ideje i ugrađuju ih u jezike koji idu na tržište. No imam utisak da Virt, kako je slavniji, ulaže sve manje truda u to da jezici koje pravi uopšte i mogu racionalno da se implementiraju. Što je, kad se bolje razmisli, i logično.
cccc.471 darone,
>> Ima i bolja priča. Svojevremeno je za QLa >> postojao SuperBASIC prevodilac, koji je napisan, >> verovali ili ne, u SuperBASICu a testiran je >> tako što je preveo prvo sebe :) žekaj, na koju foru? Pa morao je prvo da bude iskompajliran (ili interpretiran, svejedno) na nečem drugom... Ili na prethodnoj verziji samog sebe... Ali od sorsa do izvršnog programa mora da postoji još nešto. darone
cccc.472 bdm.,
## Lepo i logično zvuči. Ali, kako je onda, primenjujući takvu logiku, ## Logitech nazvao funkciju sqrt a JPI istu funkciju Sqrt? Zašto se ## (JPI) kaže LONGREAL a ne LongReal? A zašto to treba da bude veliki problem, sigurno nećeš istovremeno koristiti oba kompajlera? ## FORTRAN-a koja kaže "piši slova kako ti drago". Doduše, neki kažu da Ovo mi se kosi sa preglednim programiranjem, i ti si to napomenuo dalje u tvojoj poruci. Meni je baš case sensitive velika prednost, čak i dok sam radio u TP-u pisao sam rezervisane reči krupnim, WriteLn i ostale procedure upravo onako kako su bile napisane u help-u i tek tada mi je kod delovao koliko-toliko dobar na izgled... Tebi je TP ok zbog svoje brzine i okoline, meni je JPI M2 sporija (mada brzina i nije problem ako se dobro organizuju moduli) ali mi je zato okolina jedno 5-6 puta bolja, jezik moćniji i još kad tu dodam Dragišinu biblioteku teško da ću ponovo ozbiljno koristiti TP i Clipper ili vratiti na učenje C-a. Ipak svi imamo neke lične sklonosti, navike i bubice... :) BDM.
cccc.473 bulaja,
│Toliko silaznom putanjom da je Borland uspeo da izvuce Pascal │bas novitetom iz Module-2 -- Unitima, tj. Modulima ;))). └─── Ti Turbo Pascal juniti su samo najgora moguca zakrpa da bi TP bio upotrebljiv kompajler s obzirom da nema obj & lib.
cccc.474 pusa,
> Ako gledamo na tu stranu, i amerikance smatramo za prilično glupu > naciju, a oni sami forsiraju C/C++ ;))). Pa to je bas dokaz da nisu glupa nacija, gledaju sta je prakticno da se najbolje pasao uradi.
cccc.475 pusa,
> npr. ceo Hobbiton BBS je napisan u M2 Eto, jos jedan dokaz koliko je Modula 2 inferiorna u odnosu na C :>> Da manem zezanje, kakva Modula 2, kakav Pascal, Pascal je mozda dobar za ucenje programiranja a Modula 2 ni za to, C je jedini jezik opste namene sa kojim se radi posao. Izuzimam CLIPPER itd koji smatram za generator aplikacija a ne za pravi jezik. Pitajte me u cemu su pisani cak i Turbo Pascal, Modula 2 i ostali slavni jezici? U c-u, naravno kad se cak i sam c pise u c-u :) Za C++ ne znam, meni se nekako u startu nije dopao, kao ni celo OOP ali vidim da se mnogima svidja sve vise, moracu malo da bunarim i po njemu.
cccc.476 pusa,
> Ovo mi se kosi sa preglednim programiranjem, i ti si to napomenuo > dalje u tvojoj poruci. Cekaj, na Moduli moras da pises velika / mala slova a kod nekog drugog kompajlera MOZES ali NE MORAS. Meni je bilje ovo drugo, da mogu ako hocu a ako necu tj. ocu brze da kuckam, kompajler me ne tera! Kad bolje pogledam, ispade ovo argument i protiv "moga" c-a, ali u c-u i jeste da se sve pise malim slovima osim ako nesto bas hoces velikim imena promenljivih, pa mi nekako ne smeta. Ali bi najbolje bilo da ima kao na vaxu svich kojim ukidas ili ukljucis razlike velika./mala slova, pa teraj kako ti se svidja. Ima li to JPI M2? Pre nije imala. > ali mi je zato okolina jedno 5-6 puta bolja Po cemu je bolja, Borland paskal ima sve sto ima i modula, plus jos integrisani debager koji para vredi!
cccc.477 pusa,
> Ti Turbo Pascal juniti su samo najgora moguca zakrpa da bi TP > bio upotrebljiv kompajler s obzirom da nema obj & lib. Slazem se, to za obj je zdravo glupo, zato i volim C :)
cccc.478 madamov,
****** Zašto ne bismo koristili ono što najbolje odgovara problemu koji rešavamo? Insistiranje na JEDNOM jeziku za SVE je glupo. ****** Welcome to the club! Ovo pričam od početka rasprave. B)
cccc.479 drmarke,
> Ima i bolja priča. Svojevremeno je za QLa postojao > SuperBASIC prevodilac, koji je napisan, verovali ili ne, u > SuperBASICu a testiran je tako što je preveo prvo sebe :) A Blejk na kraju dinastije izvršava samoubistvo saznavši da je sam sebi otac. :))))) Pozdrav DrMarke
cccc.480 .obj,
> Pitajte me u cemu su pisani cak i Turbo Pascal, Modula 2 > i ostali slavni jezici? U c-u, naravno Turbo Pascal (kompajler) je napisan u čistom asembleru. Inače, kôd je urađen... maestralno. Tip koji je to radio je tako dobro napisao TPC da mu stvarno skidam kapu (jes' da nikad ne nosim kapu, al ajd sad ;). On je takođe napisao i prve verzije Turbo Linkera, a poznato je koliko je bio brži od ostalih.
cccc.481 stomic,
$ >> da se slikam. Volim da imam veću kontrolu nad onim što se $ dešava >> u mom programu. $ Šta ako naletiš na bug u tvom M2 komapjleru. Da li si $ razmišljao da sve pišeš u assembler-u, mada, kad bolje $ razmislim, šta ako naletiš na bug na mikroprocesoru, hm, $ najbolje je napraviti svoj, ... :) Rekao sam da volim da imam veću a ne absolutnu kontrolu nad programom. Ipak je Clipper na višem novu od M2. Nivo višeg programskog jezika mi je za sada dovoljan :). $ Kako si tako siguran da tvoje funkcije i procesure nemaju $ bug-ova. Clipper programi se teraju na hiljadama računara $ u najrazličitijim uslovima, te se sa velikim stepenom $ sigurnosti Nisam ni rekao da sam siguran. Ali posle npr. dva dana debugiranja imam opravdane razloge da posumnjam da je bug u compileru :). Pozdrav, stomic@hobbiton.
cccc.482 stomic,
$ Dobro i kažeš. Zato je najbolje koristiti onaj koji ima $ najbolje implementacije, podršku u obliku knjiga, $ biblioteka, gomile korisnika, zatim onaj koji je standard $ na operativnom sistemu sadašnjosti i budućnosti, unix-u. Dobro i ti kažeš :). To je jedan jedini razlog (unix) zašto bih koristio C -- da 'preživim' dok se ne pojavi M2 :). Pozdrav, stomic@hobbiton
cccc.483 stomic,
$ A da napišeš i svoj kompajler, pa onda znaš tačno šta će kako $ prevesti? Pa onda svoj operativni sistem, pa nema više $ nedokumentovanih poziva? ;)) Ajde da se raspravljamo kao deca :). Nisam rekao NIGDE da želim absolutnu kontrolu nad programom. Pročitaj repliku ppekovic-u. Pozdrav, stomic@hobbiton.
cccc.484 stomic,
$ Ali je i dalje pascal. Kad je M2 toliko dobar, zašto ne uzeše $ sve? Zato što bi nastala Turbo Modula-2, koja bi totalno preuzela tržište Turbo Pascalu. Zašto sami sebi da prave konkurenciju, kada se tada TP već dooobro prodavao. Pozdrav, stomic@hobbiton. $ Kad bude bilo javi da probam. Nemam predrasude ni prema $ jednom programskom jeziku. Postoji Oberon-2 sistem, koji je više za edukativne svrhe. Ako te ovo interesuje -- Hobbiton i:\programm\oberon :). Pozdrav, stomic@hobbiton.
cccc.485 stomic,
$ celina. Da je Borland, recimo, smatrao da je Modula 2 dobra i $ praktična kao jezik, ne bi pravio paskal nego bi pravio Turbo $ Modulu 2 (koja je, doduše, kratko vreme i postojala pre nego $ što su videli da od toga nema 'leba). Oni su uzeli dobre ideje $ iz Module i odbacili celinu, koja je slaba. Opet pročitaj repliku ppekovic-u. Sami bi sebi pravili konkurenciju. To je ustvari i dobro što se desilo, jer tada je nastao i JPI i napravio pravu stvar :). Pozdrav, stomic@hobbiton.
cccc.486 stomic,
$ Ti Turbo Pascal juniti su samo najgora moguca zakrpa da bi TP $ bio upotrebljiv kompajler s obzirom da nema obj & lib. Sasvim se slažem :). Ali to je, moraš priznati, i izvuklo TP, inače bi ga pregazilo vreme :). Zamisli OOP u TP-u bez unit-a :). Pozdrav, stomic@hobbiton.
cccc.487 stomic,
$ Cekaj, na Moduli moras da pises velika / mala slova a kod $ nekog drugog kompajlera MOZES ali NE MORAS. Meni je bilje ovo Time što MORAŠ u M2 je pokušaj da se prekine haos u pisanju programa. Npr. ako ja od X dobija Modula-2 sors a ti od Y C source, šta misliš ko će pre razumeti tuđi sors (podrazumevajući da nam je znanje isto i podrazumevajući da su X i Y potrošili isti napor za pisanje čitljivog koda) :)). $ razlike velika./mala slova, pa teraj kako ti se svidja. Ima li $ to JPI M2? Pre nije imala. Što bi imala kada to onda ne bi bila Modula-2. $ Po cemu je bolja, Borland paskal ima sve sto ima i modula, $ plus jos integrisani debager koji para vredi! Probaj pa ćeš videti :). Isto sve kao i kod Borlanda (izuzimajući napadnu šminku) i plus gomila integrisanih utility-a. Mada nema integrisan debuger, ali on postoji kao eksterni program koji se dobija za iste pare, znači nema doplaćivanja kao kod Borlanda za TD (istina TD jeste bolji). Pozdrav, stomic@hobbiton.
cccc.488 stomic,
$ Da manem zezanje, kakva Modula 2, kakav Pascal, Pascal $ je mozda dobar za ucenje programiranja a Modula 2 ni za to, C $ je jedini jezik opste namene sa kojim se radi posao. Izuzimam Super, ti si genije :). $ CLIPPER itd koji smatram za generator aplikacija a ne za pravi $ jezik. Pitajte me u cemu su pisani cak i Turbo Pascal, Modula 2 $ i ostali slavni jezici? U c-u, naravno kad se cak i sam c pise $ u c-u :) 1. Oko Clipper-a se slažemo. 2. Turbo Pascal i Modula-2 NISU pisani u C-u. 3. Da se jezik piše na istom jeziku je standardna pojava. Opet se uključuješ u diskusiju a da nisi pročitao prethodne poruke. Ovo ti je već 2-3 put :). Pozdrav, stomic@hobbiton.
cccc.489 janko,
> Ovde da zastanemo. Lično smatram da je M2 dobar jezik, ali > ni jedan jezik (mislim na ove jezike opšte namene) ti ne > može drastično pomoći, možda samo olakšati neke delove. Može, može... Dovoljno je jedno veliko slovo i dva plusića pored... ;) Ili, ako stvarno rešimo da budemo manje subjektivni, što smo onda uopšte raspavljali ovoliko? ;) Što su neki zastupnici Module bili tako ratoborni?
cccc.490 janko,
> Ů> ne pamtim kada sam poslednji put > Ů> deklarisao bilo globalnu bilo static promenljivu... a > Npr. imaš sors od ZMODEM-a, i kada ga izkompajliraš radi. > Onda rešiš da napraviš od toga biblioteku. E, ona mora > biti reentrant. Što znači nix globalne promenljive, a mora > podržavati i više "instanci" > žalost. E, da ne bih kada dođe vreme da svoje module tako > krpim mislio o sebi ono što sam tada mislio o njima, lepo > uvek sve pišem da bude reentrant, tj. sve je lokalno, sve > na steku, sve može da ima proizvoljan Ma, okej, ali, jednostavno, ima stvari koje ZNAŠ kako ćeš koristiti. I ne želiš da komplikuješ (valjda)? I kažeš "sada radim ovoliko, a kada budem morao, radiću dalje." Pa valjda imamo samo jedan život, a kada bismo krenuli da sve "isterujemo do kraja," gde bismo stigli? Verujem da se u svemu može preterati, pa i u generalizaciji. :) I ja se zaletim nekad pa počnem da preterujem u tome, i obično me "prizemlji" jedan moj drug, koji, po meni, čak preteruje sa "ignorisanjem suvišnog."
cccc.491 janko,
> $ Ton ti je takav da skoro ne zavređuje ni odgovor. > Poslednji > Za ton vas dvojica raspravite ;). Što se tiče odgovora > mislim da je OK. Pričalo se o slobodi korišćenja pointera. Bogami, nije. Miro (je l' on autor poruke?) je hteo da se priča o tome. I još je pričao "zoljom." ;) A mogao je da napravi, da je umeo, lepu poruku u kojoj bi izložio osobine Module na koje bi želeo da skrene pažnju... Ja sam rečenicu pre pominjao TRI jezika, od toga jedan koji ima izuzetno restriktivnu upotrebu pointera (Ada) i nak koga se najviše odnosila sledeća rečenica, što je svakome ko dovoljno zna jasno; u čitavom tekstu pominjao različite osobine RAZLIžITIH jezika; NIGDE posebno nisam pominjao Modulu... Da ne navodim dalje. Moja poruka je tu, pa je lepo pročitajte... Ni ti nisi, namerno ili slučajno, citirao ceo moj pasus, pa se smisao gubi... No nemoj da misliš da sam mnogo pogođen zbog toga... takve reakcije su uobičajene na Sezamu... Jednostavno, onog trenutka kada nešto napišeš, moraš da budeš spreman da ti može svako svašta napisati kao odgovor... Kao što kad daš oglas "prodajem pianino" može da ti se javi i neko ko će da te pita "a jel' to koncertni?" Sve ide u "rok službe," rekli bi neki...
cccc.492 bdm.,
##> npr. ceo Hobbiton BBS je napisan u M2 ## ## Eto, jos jedan dokaz koliko je Modula 2 inferiorna u ## odnosu na C :>> :))) Prvo upoznaj Hobbiton pa ga tek onda poredi sa Sezam-om, a da si to uradio video bi koliko je Dragišin software (napravljen u M2) moćniji od ovog pod kojim trči Sezam. Sorry svima, morao sam replicirati na ovu "inferiornost" i dalju raspravu (ne plašim se) možemo voditi, ali u nekoj drugoj konferenciji. BDM.
cccc.493 bdm.,
## nekog drugog kompajlera MOZES ali NE MORAS. Meni je bilje ovo ## drugo, da mogu ako hocu a ako necu tj. ocu brze da kuckam, kompajler ## me ne tera! Ne znam meni baš odgovara to što mora, kad uzmem da pogledam tuđi kod a ono sve mala slova, pa još loše nazubljeno... :( A što se tiče brzine kucanja i taj problem se lako može rešiti sa SHIFT-F7, dovoljno je samo jednom da otkucaš ispravno i posle... :) ## Po cemu je bolja, Borland paskal ima sve sto ima i modula, ## plus jos integrisani debager koji para vredi! Pa sad editor je moćniji, integrisani GREP, redirekcija datoteka kroz .RED (samo ovo mi je dovoljno:), pomoć oko ASCII kodova, lepši mi je na izgled :), itd. U jednu okolinu su ti spojeni Pascal, C, Asembler svaku rutinicu ko od šale povežeš. A što se tiče VID-a nije integrisan ali jeste moćniji (Dejan bi ga sam uporedio sa TD-om mada je meni to malo nepošteno) BDM.
cccc.494 miro,
ű>>> C i Clipper... Ti si stvarno nesretnik:)). ű> ű> Eh... od Clipper-a i C-a se živi :) Kako da ne:), vidim po sebi:))
cccc.495 miro,
ű> Piše da ostavljaju programeru preveliku slobodu, da je sistem ű> podložan greškama u slučaju nepažnje, da je #include/prototipi ű> mehanizam jednostavan i zastareo. Ništa od toga ne smatram ű> manama C/C++ već odličnim rešenjima (nasuprot Moduli-2 gde se ű> toliko preteralo u simetriji da je dobijen jezik koga, Molim te pojasni mi o kakvom pretjerivanju u simetriji govoriš. ű> objektivno, ljudi jednostavno ne žele da koriste). Objektivno, nema šta. Tačno ko i ovo 'perfektno' ispod. Što se tiče toga šta ko želi ili ne želi da koristi, ja isto tako mogu da tresnem da niko ne koristi C i da mi se, naravno, pola ljudi ovdje slatko nasmije, kao što smo se na ovo nasmijali mi koji koristimo M2. Inače, od ljudi koji ovdje zovu mogu da nabrojim desetak njih koji ozbiljno koriste M2. Mislim da je mnogo važnije pitanje produktivnosti koju omogućava jedan ili drugi pristup. Da li ograničenja koja postavlja M2 smanjuju vrijeme dibagiranja, kao što slobode koje daje C to povećavaju? Između ostalih stvari. Dalje, koliko ljudi ovdje je napisalo program od 10,000+ linija u Cu. I koliko je to trajalo? Excluding zz za koga svi znamo, a znamo i koliko je trajalo. ű>> ...pa reci kako to rješava ANSI C. ű> ű> Perfektno. Kad ti kažeš... A čime bi to potkrijepio? Ajde daj jedan dobar primjer kako tebi ti hederi pomažu, a zauzvrat dobijaš nekoliko DEFINITION MODULE-ova:)
cccc.496 miro,
ű> Imam utisak da ti je iz poruke u poruku postajalo sve manje ű> zabavno... Pa naravno kad ljudi pišu o stvarima koje ne poznaju. ű> sažetiju sintaksu, operatore nad bitovima (uvek se lepim za ű> njih ali šta Da, ali to ima i Modula. Istini za volju, nije u standardu, ali SVE implementacije koje sam vidio u zadnjih par godina to imaju. Pošto si jedan od ljudi koji zna šta radi i piše, ajde ako ti nije teško napiši koje su to prednosti C(++) koje ga toliko izdvajaju.
cccc.497 miro,
ű> nije kreten da ne uradi ništa pametno za ovo vreme. Module će ű> preuzeti i C++ kad tad ;). U nekoj svojoj cfront x.y.z verziji ű> ;). Pa oni imaju nešto što liči na to. Doduše, samo liči. Uglavnom nisu čuli za Abstract Data Type i slične stvari, a vidjeli su klasu pa misle da je to esencija pameti.:))
cccc.498 miro,
ű> Turbo Pascal (kompajler) je napisan u čistom asembleru. Inače, ű> kôd je urađen... maestralno. Tip koji je to radio je tako ű> dobro napisao TPC da mu stvarno skidam kapu (jes' da nikad ne ű> nosim kapu, al ajd sad ;). On je takođe napisao i prve verzije ű> Turbo Linkera, a poznato je koliko je bio brži od ostalih. Ajde reci i njegovo ime ako ti nije teško...
cccc.499 miro,
ű>> npr. ceo Hobbiton BBS je napisan u M2 ű> ű> Eto, jos jedan dokaz koliko je Modula 2 inferiorna u ű> odnosu na C :>> ű> Da manem zezanje, kakva Modula 2, kakav Pascal, Pascal ű> je mozda dobar za ucenje programiranja a Modula 2 ni za to, C Radiš li ti šta u životu osim što repliciraš nama? I baš si se uključio gdje treba, kad treba i kako treba? I gdje su tvoja ostala remek djela od poruka da i njih vidim. Šta ti dođe Ilija Matić?
cccc.500 miro,
ű> Bogami, nije. Miro (je l' on autor poruke?) je hteo da se ű> priča o tome. I još je pričao "zoljom." ;) A mogao je da ű> napravi, da je umeo, lepu poruku u kojoj bi izložio osobine ű> Module na koje bi želeo da skrene pažnju... 1. Piše dragisha 2. Na pričanje 'zoljom' se pobunio niko drugi nego janko. Treba li da radim search kroz poruke od prije godinu dana kada si mi na poruku u kojoj sam ti pokušao pomoći odgovorio 'dokle ćeš da se blamiraš' i slično. Koliko ljudi si dočekao na nož, a sad ti smeta takvo nešto? 3. Da li sam umio ili ne, manje je bitno. Smisao moje poruke i nije dokazivanje prednosti Module 2, više skretanje pažnje na nepoznavanje materije jednoga koji je pisao o 'prednostima' nekog drugog jezika. ű> RAZLIžITIH jezika; NIGDE posebno nisam pominjao Modulu... Da ű> ne navodim dalje. Moja poruka je tu, pa je lepo pročitajte... ű> Ni ti nisi, namerno ili slučajno, citirao ceo moj pasus, pa se ű> smisao gubi... Napravio si mesa za repliku u svakom slučaju. Nisi ni trebao da spominješ nešto što ne poznaješ. Ja npr. nikada ne pišem o Adi jer je moje poznavanje iste više nego površno. Pišem o onome što znam, za razliku... jel...
cccc.501 miro,
ű> u svakom jeziku ima dobrih ideja. Ali, jezik se ipak posmatra ű> kao celina. Da je Borland, recimo, smatrao da je Modula 2 ű> dobra i praktična kao jezik, ne bi pravio paskal nego bi ű> pravio Turbo Modulu 2 (koja je, doduše, kratko vreme i ű> postojala pre nego što su videli da od toga nema 'leba). Oni ű> su uzeli dobre ideje iz Module i odbacili celinu, koja je ű> slaba. Zaboravljaš da bi Modula-2 ubila više nego dobar proizvod Turbo Pascal, a kojom bi logikom trebao ići Borland da to napravi. JPI je napravio čovjek koji je otišao iz Borlanda između ostalog zbog neslaganja oko dalje strategije firme. ű> A to za module... nije baš novitet Module 2, postojalo je još ű> u starom dobrom fortranu, jedino što je ovom prilikom izdvojen ű> opis funkcija u poseban modul, koji je kod Module 2 baš ű> dibiduz poseban, a kod Turbo Pascala je samo stavljeno na vrh ű> unit-a, u INTERFACE sekciju. Lično smatram da je Turbo Pascal ű> rešenje praktičnije. Modul koji ima Modula-2 je koncept iz Simule koji je nešto kasnije uzeo i C++. To što je imao Fortran ima i svaki asembler, a ovo ipak nema svako. To što ti to dvoje porediš pokazuje da baš ne shvataš o čemu se radi. ű>>> Što se tiče Oberona-2, kažu da ima trenutno najjači OOP. ű>>> Mada još ne postoji dovoljno jaka implementacija ovog ű> jezika. ű> ű> To je baš to što kažem - Virt se bavi teorijom programiranja i ű> smišlja jezike sa nekim novim elementima, a praktična ű> realizacija toga mu nije A najveći broj ljudi koji se bave Oberonom-2 sasvim slučajno ima adresu koja završava na apple.com.
cccc.502 miro,
ű> Zašto ne bismo koristili ono što najbolje odgovara problemu ű> koji rešavamo? Insistiranje na JEDNOM jeziku za SVE je glupo. ű>****** ű> ű> Welcome to the club! Ovo pričam od početka rasprave. B) ű> Jes vala. I tu se srećemo kod tvog izbora Turbo Ca zbog toga što je pružao više i tako to. A ja radim sa alatom koji mi omogućava da C, C++, Pascal kod ulinkujem sa M2 dok si reko keks. Znači, kad (bolje reći ako ikad) mi zatreba neki drugi jezik, tu smo. Na tvom argumentu. Do sada, a programiram desetak godina i za to vrijeme sam napravio nekoliko stotina hiljada linija koda, nije mi zatrebalo ništa drugo od onoga u čemu sam trenutno radio. Prvo je to BIO UCSD Pascal, zatim Turbo Pascal da bi prije pet-šest godina poslije malo zamajavanja sa Logitech Modulom-2 prešao na JPI. BTW, Logitech dibageri su najbolji s kojima sam se ikad sreo.
cccc.503 miro,
ű> $ Dobro i kažeš. Zato je najbolje koristiti onaj koji ű> ima $ najbolje implementacije, podršku u obliku knjiga, ű> $ biblioteka, gomile korisnika, zatim onaj koji je ű> standard $ na operativnom sistemu sadašnjosti i budućnosti, ű> unix-u. ű> ű> Dobro i ti kažeš :). To je jedan jedini razlog (unix) zašto ű> bih koristio C -- da 'preživim' dok se ne pojavi M2 :). Ne moraš više. Skinuo sam generički Modula to C kompajler. Ima dvije verzije izvornog koda. Prva je asembler, pardon C, a druga je M2.
cccc.504 miro,
ű> najbolje bilo da ima kao na vaxu svich kojim ukidas ili ű> ukljucis razlike velika./mala slova, pa teraj kako ti se ű> svidja. Ima li to JPI M2? Pre nije imala. Kao ti si probao?:)) Inače, okolina ima fazon za automatsko uperkasiranje:)). Kad to uključiš onda ti samo kuckaš a on konta šta je rezervisana riječ i uperkaseuje. Ima i u editor ugrađen sintaksni analizator tako da kad pozoveš kompilaciju on prije nego učita overlay provjeri sintaksu (munjevito) pa te opomene i prije vremena. I još mnogo mnogo toga. ű> Po cemu je bolja, Borland paskal ima sve sto ima i modula, ű> plus jos integrisani debager koji para vredi! Borland okolina do dana današnjeg ne omogućava da edituješ jedan file u dva prozora a da se ne zajebeš* pri tome. JPI to ima par godina.
cccc.505 dejanr,
>> Zaboravljaš da bi Modula-2 ubila više nego dobar proizvod Turbo >> Pascal, a kojom bi logikom trebao ići Borland da to napravi. Zamenila bi ga jednim takođe Borlandovim proizvodom koji bi, po tebi, bio još bolji, dakle još konkurentniji. Ne verujem da bi im to bilo baš toliko neprivlačno. Međutim, oni su uradili bukvalno najbolju stvar, uzeli su ono što je valjalo iz Module, poboljšali paskal i napravili jedan i dalje "više nego dobar" proizvod zvani TP 4.0. >> JPI je napravio čovjek koji je otišao iz Borlanda između >> ostalog zbog neslaganja oko dalje strategije firme. Naravno, tako to obično biva, i dobro je što je tako :) žovek je napravio JPI, par dobrih proizvoda, ali ne bih rekao da je uspeo ozbiljnije da se približi Borlandu po bilo čemu. >> > A to za module... nije baš novitet Module 2, postojalo je još >> > u starom dobrom fortranu, jedino što je ovom prilikom izdvojen >> > opis funkcija u poseban modul, koji je kod Module 2 baš >> > dibiduz poseban, a kod Turbo Pascala je samo stavljeno na vrh >> > unit-a, u INTERFACE sekciju. Lično smatram da je Turbo Pascal >> > rešenje praktičnije. >> >> Modul koji ima Modula-2 je koncept iz Simule koji je nešto >> kasnije uzeo i C++. To što je imao Fortran ima i svaki asembler, >> a ovo ipak nema svako. To što ti to dvoje porediš pokazuje da baš >> ne shvataš o čemu se radi. Naprotiv, pokazuje da ja to poredim na nivou onoga što jeste, a ne na nivou toga kako se zove. Mnogi su skloni tome da kad se pojavi neko novo ime, odmah smatraju da je to neka nova stvar. A nove stvari se retko pojave. Da li ćeš deklaraciju jedne procedure napisati na početku procedure, na početku procedure i na početku modula, ili na početku procedure i u drugom modulu, to i nisu tako krupne razlike da bi ih nazvao tako bombastim rečima :) To su dodaci, da bude malo lakše, a od nekih od njih onda ispadne i malo teže.
cccc.506 dejanr,
>> Turbo Pascal (kompajler) je napisan u čistom asembleru. Da li si siguran da se ovo odnosi na kasnije verzije TP-a (na prve se sigurno odnosi, jer onda nije bilo alata da se piše u nečem drugom ;) U jednom od propagandnih materijala koje sam dobio uz beta verziju BP 7.0 je i lista nekakvih pitanja i odgovora o BP-u, i jedno od pitanja (mrzi me sad da tražim, ali otprilike) je "kada je već BP tako dobar, zašto ga Borland ne koristi za razvoj softvera" a odgovor je "Borland za razvoj kompajlera koristi Borland C, ali uskoro će predstaviti jedan bitan proizvod razvijen na Borland Pascalu". Ne rekoše, naravno, kad je to "uskoro" i koji je to proizvod ;)
cccc.507 dejanr,
>> Dalje, koliko ljudi ovdje je napisalo program od 10,000+ >> linija u Cu. I koliko je to trajalo? Excluding zz za koga svi >> znamo, a znamo i koliko je trajalo. ZZ možda ima bolju statistiku, ali koliko mene sećanje služi, prva verzija Sezama je puštena u pogon otprilike za 50 dana (u koje vreme računam i evaluaciju postojećeg softvera, koncipiranje, pisanje i testiranje (posle je nađeno začuđujuće malo bagova) kompletnog programa i pripremu dokumentacije) i rezultirala aplikacijom od oko 9000 linija sorsa u C-u 5.1. U proseku, to je oko 180 linija dnevno. Mene dosta zanima to pitanje koliko vremena je potrebno da bi se napisao neki program, koliko linija se dnevno napiše, koliko je vremena potrebno za debagovanje i tako to. Teorijski, kažu ljudi, 10-15 linija koda dnevno je jako dobar rezultat, međutim meni je to uvek izgledalo dosta malo. Nedavno je završen jedan ne baš previše praktično upotrebljiv ali meni zanimljiv projekat "Simulator raspodele vršnih opterećenja u elektroenergetskom sistemu Jugoslavije". Laički rečeno, radi se o problemu šta se dešava kada neka elektrana neočekivano ispadne iz pogona i kako bi se, u slučaju lančanog ispadanja termoelektrana zbog promene frekvencije u mreži, mogao automatskom regulacijom potrošnje sprečiti raspad energetskog sistema. Projekat je (to je, valjda, obavezno da se kaže ;) delimično finansirao Republički fond za razvoj nauke (ako u međuvremenu nije promenio ime, nekadašnja Republička zajednica nauke). Rezultat tog projekta je, formalno govoreći, jedan simulator pisan na VAX11 C-u od oko 17,000 linija izvornog koda, baza podataka reda 4 megabajta (izgleda mnogo jer su polja fiksne dužine, u stvari je to dosta manje podataka za kucanje, ne znam tačno koliko) i izveštaj od oko 170 strana (ne računajući tu listing programa). Na projektu su radila tri čoveka (Danko Matković, Igor Grubišić i moja malenkost) plus jedna sekretarica (Maja Krunić) koja je "podnela" unos podataka, kuvanje kafe (koju ja ne pijem ;) i donošenje coca cole (dok nije počela da prelazi na koktu, fuj). Formalno govoreći, projekat je trajao 9 meseci (i nešto više) ali u realnosti je trajao oko 3 meseca. Pri tome sam se ja više bavio koncepcijom samog simulatora tako da sam napisao najviše 2000 linija koda, dok su dvojica kolega napisala otprilike podjednako, dakle po 7-8000 linija. Izveštaj smo pisali "na ravne časti", po 50-tak strana. U to vreme od tri meseca računam i testiranje simulatora, izvršavanje i tumačenje rezultata ("glede" tumačenja, bolje da ne znate šta je protumačeno, praktično jedini izvodljiv način da se spreči raspad sistema je da se Beogradu po kratkom postupku secne struja, pošto je to jedino što se dovoljno brzo može učiniti ;( ). Pri tome je, dakle, jedan programer radio dnevno 80-tak linija, računajući tu i subote i nedelje kad se nije radilo. A svi smo za to vreme radili i druge privatne poslove ;) Evo i rezultata za jedan moj program na Clipper-u 5.01 koji je iz raznih razloga pisan "od nule" (hteo sam da probam neke tehnike različite od onih koje inače koristim, a prilika je bila zgodna i...) Radi se o programu za izdavanje karata za auto vozove. Posao je trajao od 9. februara do 18. marta (pri čemu za to vreme nisam samo to radio, napisao sam i jedan umetak i još razne tekuće stvari, ali svejedno, recimo da je samo to). Program ima 5850 linija na Clipper-u i 408 linija asemblera, sve skupa preko 160 linija na dan. Bilo bi zanimljivo čuti i druge rezultate, ako neko vodi statistike.
cccc.508 spantic,
> žekaj, na koju foru? Pa morao je prvo da bude > iskompajliran (ili interpretiran, svejedno) na > nečem drugom... Ili na prethodnoj verziji samog > sebe... Ali od sorsa do izvršnog programa mora da > postoji još nešto. U QL si dobijao integrisan OS i SuperBASIC interpretator. Oni su na njemu napisali prevodilac za isti i jednostavno prvo njega samog preveli. To je uradila nezavisna programerska kuća, da me ubiješ ne znam tačno koja, davno je to bilo.
cccc.509 .obj,
> Molim te pojasni mi o kakvom pretjerivanju u simetriji govoriš. Simetrijom sam nazvao Wirthovo čistunstvo koje, po meni, ide u ekstrem. Ja bogami neću da se zajebavam sa FROM IMPORT bez obzira šta on pričao o modulima i apstrakciji podataka. > Što se tiče toga šta ko želi ili ne želi da koristi, ja isto tako mogu > da tresnem da niko ne koristi C i da mi se, naravno, pola ljudi > ovdje slatko nasmije, kao što smo se na ovo nasmijali mi koji > koristimo M2. Molim te da sniziš ton. Odavno nigde nisam pročitao tako agresivne poruke kao što su tvoje. Pošto čujem da na Hobbiton prebacujete Usenet grupe, možda ne bi bilo loše da sa vremena na vreme i pročitaš po koju i malo se naučiš toleranciji (kao primer onoga kako ne treba da pišeš možeš, na primer, da uzmeš "Nemate pojma", "NE, ne znaš!"). > Dalje, koliko ljudi ovdje je napisalo program od 10,000+ > linija u Cu. I koliko je to trajalo? Excluding zz za koga svi > znamo, a znamo i koliko je trajalo. Očigledno misliš da je 10000 linija puno. Ja ne mislim da je to toliki broj da možeš da kažeš "koliko je ljudi ovde...?", čak šta više, ja mislim da se ta cifra dosta brzo dostiže (u C-u pogotovo, a za asembler 10000 linija nije ništa). > Inače, od ljudi koji ovdje zovu mogu da nabrojim desetak njih > koji ozbiljno koriste M2. Deset? U jeee... ;) > Mislim da je mnogo važnije pitanje produktivnosti koju > omogućava jedan ili drugi pristup. Da li ograničenja koja > postavlja M2 smanjuju vrijeme dibagiranja, kao što slobode koje > daje C to povećavaju? To mi liči na ono "pare decu kvare". Mene nisu pokvarile ;) > Kad ti kažeš... A čime bi to potkrijepio? Ajde daj jedan dobar > primjer kako tebi ti hederi pomažu, a zauzvrat dobijaš nekoliko > DEFINITION MODULE-ova:) Hvala lepo. Hederi omogućavaju da (potencijalno vrlo velik) program držim pod kontrolom bez mnogo gnjavaže i umora. Moj princip je dosta sličan onome što je naveo C-CASE (nikako da mu zapamtim ime;) (tj. svaki .C ima .H, mali modulčići itd.), sa tim što u tom načinu rada ne vidim ništa "tricky" i strašno.
cccc.510 .obj,
> Pa sad editor je moćniji, integrisani GREP, Zar čika-C-CASE ne kaže da korištenje grep-a dobar znak da sa strukturom programa nešto nije u redu? Kako li su samo smeli da dozvole programeru da koristi grep, pa sve to još integrisano? Ccc... samo zbog toga sam odustao od Module-2. Možda će u Moduli-6 biti zabranjeno integrisanje grepa u editor? Npr. u komandnoj liniji otkucaš grep, a kompajler (rezidentni, vreba svaku tvoju akciju): M2C: Fatal: Expected anything but grep. Shutdown by system request.
cccc.511 .obj,
>>> Turbo Pascal (kompajler) je napisan u čistom asembleru. > > Da li si siguran da se ovo odnosi na kasnije verzije TP-a (na > prve se sigurno odnosi, jer onda nije bilo alata da se piše > u nečem drugom ;) Pa piše gore :) da je *samo* kompajler (i integrisani linker) napisan u asembleru. Za ostalo ne mogu da tvrdim, ali mi se čini da je barem deo TP6 integrisane okoline napisan u TP6 Turboviziji.
cccc.512 .obj,
> Ajde reci i njegovo ime ako ti nije teško... To, na žalost, ne znam. Svojevremeno sam sourcerovao TPC.EXE. Na dosta mesta u programu mogu se naći inicijali FB. Jedino takvo ime u vezi sa Borlandom koje mi pada na pamet je Frank Borland. Međutim, njegovo ime se ne nalazi u listi ljudi koji su napravili Turbo Pascal for Windows (a kompajler je *veoma* sličan) tako da nisam siguran. Ako ti ovo nešto znači, autori TPW su: Alex Shtaygrud, Anders Hejlsberg, Bonnie Cohen, Bret Gillis, Charles Jazdzewski, Chopin Yen, Christine Phan, Danny Thorpe, Dave Wilhelm, Eberhard Waiblinger, Eric Swenson, Gary Whizin, Jon Howell, Jorrie Ciotti, K.A. McCord, Lars Frid-Nielsen, Laura Grenyo, Linda Jeffries, Loan Pham, Meg Forgerson, Michelle M. Manning, Mike Weisert, Nancy Wood, Paul Fussel, Peter Eden, Richard Nelson, Rob Powell, S. JeyaRajan, Sidney Markowitz, Steve Drake, Tamra Selfridge, Vikki Cacace, Zack Urlocker.
cccc.513 dejanr,
>> Svojevremeno sam sourcerovao TPC.EXE. Na dosta mesta u programu mogu >> se naći inicijali FB. Jedino takvo ime u vezi sa Borlandom koje mi >> pada na pamet je Frank Borland. Dobra asocijacija, samo je zanimljivo pitanje da li Frank Borland postoji. Ja sam davno imao neki SideKick u kome je, u Read.Me fajlu, ispričana nekakva bajka o Franku Borlandu koji je otišao u planinu i tamo u nedirnutoj prirodi, bla, bla, napisao sidekick. Zvuči kao nekakva bajka, a taj Frank Borland niti je vlasnik niti je neki viđeni "funkcioner" firme Borland.
cccc.514 dejanr,
Šta mislite da napravimo mali kolektivni test? Da smislimo neki problem i rešimo ga na sličan način, na (recimo) MS i Borland C-u, Borland Pascalu, JPI Moduli 2, QuickBasic-u i eventualno još nekom jeziku pa da uporedimo koliko linija sorsa koji program ima, koliki je EXE fajl, koliko se dugo prevodi i koliko se dugo izvrsava. Trebalo bi da bude neki problem numericke prirode koji ce se, recimo na nekom 386/33 (jer to većina ima) izvršiti za 5-6 minuta, s tim što bi trebalo da ima i nekog muljanja po disku i tako to. Ako ima ideja za problem, ja sam raspoložen da učestvujem u eksperimentu. Mislim da bismo dobili zanimljive rezultate kojima se, naravno, ne bi moglo utvrditi da li je neki jezik "bolji" ili "gori" ali bi se osetilo kakva je koja implementacija itd. Mislim da nas ima dovoljno da "pokrijemo" sve iole popularne jezike.
cccc.515 peca.st,
!-> Lično smatram da je Turbo Pascal !-> rešenje praktičnije. Jedino što ne valja kod Turbo Pascalovih Unita je što pravi .TPU a ne .OBJ :( Peđa.
cccc.516 paki,
­> Prvo upoznaj Hobbiton pa ga tek onda poredi sa Sezam-om, a da ­> si to uradio video bi koliko je Dragišin software (napravljen ­> u M2) moćniji od ovog pod kojim trči Sezam. ­> Sorry svima, morao sam replicirati na ovu "inferiornost" i ­> dalju raspravu (ne plašim se) možemo voditi, ali u nekoj ­> drugoj konferenciji. Ajde bre više, gušite s tim "Hobiton je bolji"/"Nije, SEZAM je bolji".
cccc.517 skerl,
│> Pitajte me u cemu su pisani cak i Turbo Pascal, Modula 2 │> i ostali slavni jezici? U c-u, naravno │ │ Turbo Pascal (kompajler) je napisan u cistom asembleru. Inace, kôd │ je uraden... maestralno. Tip koji je to radio je tako dobro napisao │ TPC da └──── Cak je i IDE napisan u asembleru, samo izgleda isto kao Turbo Vision tako da vecina ljudi misli da je u njemu napravljen. Provereno kod njihovih (Borlandovih) ljudi. Pozdrav, Skerl.
cccc.518 beast,
>> linija sorsa koji program ima, koliki je EXE fajl, koliko se dugo >> prevodi i koliko se dugo izvrsava. Siguran sam da bi pobednik bio paskal (TP 6.0). Daleko je brži od svih kompajlera koje znam, a EXE je 'tu negde' sa C-om. U svakom slučaju, podržavam predlog.
cccc.519 dejanr,
>> Jedino što ne valja kod Turbo Pascalovih Unita je što pravi .TPU a >> ne .OBJ :( Da... slažem se. Samo, Borland kaže da baš zato što je izmislio te .TPU formate, paskal može da prevodi onoliko brzo koliko prevodi, tj. višestruko brže od svega drugoga na tržištu. Sve mora da ima neku cenu. A ono što bi Borland minimalno mogao da uradi, to je da uniti budu vertikalno kompatibilni od verzije do verzije. Ali, njima to ne pada na pamet :(
cccc.520 skerl,
│ Cak je i IDE napisan u asembleru, └───── Ispravljam sam sebe da ne ispadne posle da sirim dezinformacije :) Evo kako je to zvucalo u originalu: In pushing the new TurboVision library that comes with TP6, Borland advertises that the "Integrated Development Environment", or IDE, is written using TurboVision. Unluckily for them, the Editors unit which is distributed with TP6 is very buggy; it was quickly clear to people that the editor in the IDE and the Editors unit are two different animals. When this came out on Compuserve, Borland quickly "clarified" their claims: only the "user interface" parts of the IDE are actually written using TV; the Editors unit is a demonstration only; it's not the actual IDE editor, which is written in assembler. Pozdrav, Skerl.
cccc.521 pusa,
> Jednostavno, onog trenutka kada nešto napišeš, moraš da > budeš spreman da ti može svako svašta napisati kao > odgovor... Kao što kad daš oglas "prodajem pianino" može > da ti se javi i neko ko će da te pita "a jel' to koncertni?" :)))) Ova je dobra! Trebalo bi staviti u upustvo za sezam :)
cccc.522 pusa,
> Ne znam meni baš odgovara to što mora, kad uzmem da pogledam tuđi > kod a ono sve mala slova, pa još loše nazubljeno... :( Vidi, ja uglavnom pisem programe da bi radili a ne da bi ih neko gledao, tako da mi je u centru paznje koliko je meni lako ili tesko da pisem, a ne kako ce to nekome posle da izgleda kad ga gleda -ako budem lud pa nekome dam da gleda:)) >## Po cemu je bolja, Borland paskal ima sve sto ima i modula, >## plus jos integrisani debager koji para vredi! > > Pa sad editor je moćniji, integrisani GREP, redirekcija datoteka kroz > .RED (samo ovo mi je dovoljno:), pomoć oko ASCII kodova, lepši mi je na > izgled :), itd. U jednu okolinu su ti spojeni Pascal, C, Asembler svaku > rutinicu ko od šale povežeš. Ti poredis editor u najnovijoj JPI moduli i neki stari paskal 5. Jesi li video BP7.0 ili bar TP6.0? Mada bi ja sve to zajedno dao, i doplatio preko toga, za MSC:))
cccc.523 pusa,
Rezime cu da napisem cim stignem. Primecujem da si totalno ostao bez argumenata pa si presao na insinuacije, ako dobro shvatam sta si hteo da kazes Ja sam samo odgovorio salom na tomicevu salu, i stavio smajli, ti valjda mislis da je u redu kad ti pljuckas druge, ali kad ti neko malo zakaci tebe i cedo ti, ti se mnogo nakostresis ;))
cccc.524 zzivotic,
Kad me pomenuste, iako u exclude modu, da se ipak uključim ;). >> Mislim da je mnogo važnije pitanje produktivnosti koju >> omogućava jedan ili drugi pristup. Da li ograničenja koja >> postavlja M2 smanjuju vrijeme dibagiranja, kao što slobode koje >> daje C to povećavaju? Između ostalih stvari. Pitanje produktivnosti je zaista zanimljivo, ali je veliko pitanje da li se može postaviti na ovaj način. Iz tvog pitanja bi se dalo zaključiti da se uvođenjem ograničenja programer "tera" da piše čistije i pravi manje grešaka. To bi moglo da sugeriše i zaključak da programer ne zna baš najbolje šta radi ili bar da je pisanje programa u C-u toliko teško da niko ne može da se oslobodi slučajnih grešaka - sa oba zaključka ne bih mogao da se složim. Pitanje produktivnosti bi moralo da se posmatra u odnosu na problem koji se rešava a tu poređenje dva jezika opšte namene nema mnogo smisla. Nema produktivnijeg alata od klipera za, recimo, edit datoteke. Naravno, ne treba uzimati u obzir postojeće bilioteke jer bi onda došli na sasvim drugi teren - koliko ih ima za koji jezik, koliko su dobro urađenje, kolika je podrška proizvođača itd itd. a ta diskusija nema veze sa jezicima. Meni se čini da pitanje izbora nekog jezika u najvećem broju slučajeva nema mnogo veze sa "kvalitetom". Može se neobavezno (pa i obavezno :) pisati u raznim jezicima, menjati proizvođač kompajlera ali profesionalno bavljenje ovim poslom (mada mnogi pod ovom definicijom podrazumevaju razne stvari za mene ona znači proizvesti+prodati*N+održavati, pri čemu naravno N teži beskonačnosti ;) zahteva izuzetno poznavanje alata sa kojim se radi. Stići do tog stepena znanja je vremenski dug proces i ako nema baš nekog *izuzetno* jakog razloga, ne verujem da bi se iko usudio da u sred posla promeni jezik, pa čak i samo firmu koja pravi kompajler. Dakle, ili će te neko naterati (firma u kojoj se zaposliš) da radiš sa određenim jezikom, ili ćes ostati na onome što si izabrao u nekom trenutku, često i zbog tako banalnih razloga kao što su "bolje okruženje" ili "dobio sam kompletnu dokumentaciju ;)". Za izbor jezika često je presudan i kvalitet firme koja ga prodaje. Dovedeno do krajnosti - džaba najgenijalniji, najproduktivniji, naj.. jezika ako je sve što imaš kompajler u verziji 1.0 od firme "šlj" koja posle godinu dana propada. Zato mi se čini nemogućim da praktičan programer proceni koliko je neki jezik produktivniji od drugoga - za njega je, ukupno gledano, ono što koristi najproduktivnije. Neko ovde pomenu asembler - imao sam prilike da vidim kako i asembler u rukama čoveka koji ga zna i dugo koristi može da bude produktivan - naravno opet gledano iz ugla problema koji se rešava. Prvi jezik koji sam koristio na PC-u je bio TP 1.0 jer u to vreme sve ostalo nije bilo vredno ni pogleda. Da su se kojim slučajem stvari vremenski drugačije odvijale i da nisam imao jedan slobodan period da počnem sa C-om, danas bi i dalje radio na pascalu. Sa njim sam dosta dugo radio, rešavao razne probleme i mogu sa sigurnošću da tvrdim - *nikakve* razlike u spoljnom izgledu Sezama pa ni u vremenu potrebnom za razvoj ne bi bile da je sve rađeno na njemu. Mislim da je ipak preterano tvrditi da postoji relacija jezik->"moćnost programa". >> Dalje, koliko ljudi ovdje je napisalo program od 10,000+ >> linija u Cu. I koliko je to trajalo? Excluding zz za koga svi >> znamo, a znamo i koliko je trajalo. ^^^^^^^^^^^^^^^^^^^^^^^^^^^ Baš me zanima koliko je trajalo i šta? ;) Pozdrav, zz
cccc.525 stomic,
$ Vidi, ja uglavnom pisem programe da bi radili a ne da $ bi ih neko gledao, tako da mi je u centru paznje koliko je meni $ lako ili tesko da pisem, a ne kako ce to nekome posle da $ izgleda kad ga gleda -ako budem lud pa nekome dam da gleda:)) I nikada nećeš biti u prilici da radiš timski :)? $ Ti poredis editor u najnovijoj JPI moduli i neki stari paskal $ 5. Jesi li video BP7.0 ili bar TP6.0? Mada bi ja sve to zajedno $ dao, i doplatio preko toga, za MSC:)) Puso obožavam te :). Opet isto... Jesi ti video JPI v3.02 ikada? Ja jesam TP6.0. Ako si video, iznesi mi šta je to tako dobro u odnosu na JPI. Izgleda, opet ne poznaješ ono o čemu pričaš (5ti put :). Pozdrav, stomic@hobbiton.
cccc.526 nenadp,
>> Trebalo bi da bude neki problem numericke prirode koji ce >> se, recimo na nekom 386/33 (jer to vecina ima) izvrsiti >> za 5-6 minuta, s tim sto bi trebalo da ima Evo probajte da napisete program koji ce numericki resavati diferencijalne jednacine. Jedno jednostavano resenje na jeziku Mathematica386 bi izgledalo ovako : (** Runge-Kutta Methods **) BeginPackage["RungeKutta`"] RungeKutta::usage = "RungeKutta[f, {x, y}, {x0, y0}, h, ntot] gives ntot {x, y} pairs obtained by integrating the differential equation y'==f by the fourth order Runge-Kutta method." Begin["`Private`"] RungeKutta[f_, {x_, y_}, {x0_, y0_}, h_, ntot_] := NestList[RKStep[f, {x, y}, #, h]&, {x0, y0}, ntot] RKStep[f_, {x_, y_}, {xn_, yn_}, h_] := Block[{k1, k2, k3, k4}, k1 = h f /. {x->xn, y->yn} ; k2 = h f /. {x->xn+h/3, y->yn+k1/3} ; k3 = h f /. {x->xn+2h/3, y->yn-k1/3+k2} ; k4 = h f /. {x->xn+h, y->yn+k1-k2+k3} ; { xn + h, yn + (k1 + 3k2 + 3k3 + k4)/8 } ] End[] EndPackage[ ] >> linija sorsa koji program ima, koliki je EXE fajl, koliko >> se dugo prevodi i koliko se dugo izvrsava. E sada mogao bi da se opkladim da ni na Moduli ni na C - u ( i ako neznam ni jedan od ta dva jezika :)) ili nekom drugom jeziku gornji program nebi mogao da se napise bez stotinjak linija koda i ne samo to ako pogledate gornji program videce, cak i ako neznate da programirate u Mathematici, da taj program kao da je prepisan iz neke knjige za matematiku dakle nema nikakvog programskog zongliranja. E sada ako ocekujete da osnovu toga zakljucim da je Mathematica bolja od svih programskih jezika toliko blesav nisam ;)) jednostavno jezik u kome se programira je dobar onoliko koliko moze da sluzi svrsi a to je sto lakse i sto brze napisati program koji zadovoljava potrebe programera. Dakle ja sigurno necu pisati baze podataka u Mathematici ali isto tako nemam nameru da pisem program za racunanje Beselovih funkcija u Clipper - u ili C - u. Posto se vec duze vreme neckam da naucim C ++ ( mnogo me podseca na Matehematic - u, inace i sama mata je napisana na C ++ ) zeleo bi da cujem argumentovanu diskusiju o Moduli, C ++ ili C - u i njihovom medjusobnom odnosu po brzini, lakoci programiranja, raspolozivim kompajlerima itd. Zato i podrzavam ovaj Dejanov predlog da ljudi koji stvarno znaju jedan od gornjih jezika ilustruju kako bi se neki problem resio na tom konkretnom jeziku. Jasno nemora biti gornji primer nego neki koji ce omoguciti da mane ili prednosti nekog jezika dodju do punog izrazaja. Pozdrav, Nenad .P.S. Za one koji nisu na osnovu gornjeg primera skuzili ovde nenadp. Inace da je Mathematica kompajler pisao bi ja i baze podataka u njoj ;>>>
cccc.527 janko,
> 1. Piše dragisha OK. A gde je Miro? I šta bi sa tvojim korisničkim imenom? Stvarno nisam znao sa kim diskutujem. > 2. Na pričanje 'zoljom' se pobunio niko drugi nego janko. > (...) > poruku u kojoj sam ti pokušao pomoći odgovorio 'dokle ćeš > da se blamiraš' i slično. Koliko ljudi si dočekao na nož, > a sad ti smeta takvo nešto? :) Naravno, i ja umem da pređem tuđi "prag prijema." "Ko je čist, neka se baci kamenom," što kažu. Zato se trudim da se ne "bacam kamenjem" previše. Ali nekad mi skoro sam kamen padne u ruku... > nije dokazivanje prednosti Module 2, više skretanje pažnje > na nepoznavanje materije jednoga koji je pisao o > 'prednostima' nekog drugog jezika. > ű> RAZLIžITIH jezika; NIGDE posebno nisam pominjao Modulu... > spominješ nešto što ne poznaješ. Ja npr. nikada ne pišem o > Adi jer je moje poznavanje iste više nego površno. Pišem o > onome što znam, za razliku... jel... Budi pošten, pročitaj ponovo moju poruku, pa svoju, i priznaj da sam ja u tekstu pominjao TRI, grubo rečeno, paskal-lajk jezika (jedan od njih je Ada) i još DVA druga jezika (C i C++). Rečenicu pre one na koju si reagovao "svim sredstvima" pominjem prva tri. U rečenici na koju si reagovao kažem "Određena sloboda u pointerima je neophodna." Ti na osnovu toga zaključuješ da ti ja time napadam milu ti i dragu Modulu... a samo je moj stav o tome koliko slobode u korišćenju pointera smatram da je potrebno jeziku...(*) Ti si, jednostavno, od generalnih stavova zaključio ono što si najviše želeo da zaključiš... ne kažem da je namerno... to radi podsvest... možda te je šef nervirao, možda te je neko gazio u autobusu, možda ti žena nije ispunila želje, itd. itd.
cccc.528 janko,
> Jes vala. I tu se srećemo kod tvog izbora Turbo Ca zbog > toga što je pružao više i tako to. A ja radim sa alatom > koji mi omogućava da C, C++, Pascal kod ulinkujem sa M2 > dok si reko keks. Znači, kad (bolje reći ako ikad) mi > zatreba neki drugi jezik, tu smo. Na tvom argumentu. Neće tebi nikad zatrebati drugi jezik, jednostavno zato što si previše isključiv. Gde su koreni te isključivosti, stvarno ne znam. Kada bi imao dobar auto, da li bi odbijao da sedneš u neki drugi model? Kao što su učesnici u diskusiji već primetili -- SVE se može napisati i na asembleru. Ali ja, jednostavno, nemam nameru...
cccc.529 janko,
> Šta mislite da napravimo mali kolektivni test? Da smislimo > neki problem i > Moduli 2, QuickBasic-u i eventualno još nekom jeziku pa da > uporedimo koliko linija sorsa koji program ima, koliki je > EXE fajl, koliko se dugo prevodi i koliko se dugo > izvrsava. > Trebalo bi da bude neki problem numericke prirode koji ce > se, recimo na nekom 386/33 (jer to većina ima) izvršiti za > 5-6 minuta, s tim što bi trebalo da ima i nekog muljanja > po disku i tako to. Ako ima ideja za problem, ja sam > raspoložen da učestvujem u eksperimentu. Mislim da bismo > dobili zanimljive Ako poredimo brzine izvršavanja, intenzivan numerički problem će daleko više da testira kvalitet FP emulatora (pogotovu na 386)... Npr. TP ima, između ostalog, format brojeva koji radi brže, ali nije IEEE, pa poredeći TP sa njegovim 5-to bajtnim FP i C sa IEEE formatima, nećemo zaključiti nešto pametno... Ako se već reši da se realizuje numerički algoritam, onda preporučujem da se koristi na SVIM kompajlerima isti (IEEE) format u istoj preciznosti (preporučujem DOUBLE) i da se merenja brzine izvršavanja rade isključivo na 486DX procesoru, koji ima ugrađen FP koprocesor.
cccc.530 ficus,
Hi jedno pitanjce (ako neko ima vremena pored ove zustre raspravice) dali ja mogu normalno da koristim fprintf u binarnim fajlovima. mislim da mi generise normalan izlaz za bin. fajlove 4 bajta za long int itd u knjigama uglavnom nista ne pise (jer unix ne pravi razliku izmedju bin i text fajlova) delovalo bi logicno da su fprintf napisali da obrati paznju na tip fajla i prema tome se ponasa ali u praksi se pokazalo drukcije. Mislim znam da moze i lepse sa write-om da mu smestim celu strukturu u fajl ali mene zanima moze li ovo na neki nacin da proradi. P.S. Negde gore procitah tvrdnju nekog zastupnika module 2 da on smatra da niko ne koristi c pa sad donekle je u pravu niko ga ne koristi ljudi predju na c++ ;))))
cccc.531 bdm.,
## Zar čika-C-CASE ne kaže da korištenje grep-a dobar znak da sa ## strukturom programa nešto nije u redu? Kako li su samo smeli da dozvole ## programeru da koristi grep, pa sve to još integrisano? Ccc... samo zbog Smanji i TI ton diskusije, zašta se kao zalažeš! Odkud ti znaš zašto sam ja koristio Grep? Veruj mi ne za menjanje ličnih programa, već kao najlakši način za učenje iz tuđih a ako tebi tada Grep nije koristan ne znam šta da kažem. BDM.
cccc.532 bdm.,
## Vidi, ja uglavnom pisem programe da bi radili a ne da ## bi ih neko gledao, tako da mi je u centru paznje koliko je meni ## lako ili tesko da pisem, a ne kako ce to nekome posle da izgleda ## kad ga gleda -ako budem lud pa nekome dam da gleda:)) Pazi ja u principu ne volim da uzimam ništa tuđe ako znam to isto da napišem. Tako da ja tuđi kod gledam skoro jedino u timskom radu a to pitanje si zaboravio. ## Ti poredis editor u najnovijoj JPI moduli i neki stari paskal 5. ## Jesi li video BP7.0 ili bar TP6.0? Mada bi ja sve to zajedno dao, i ## doplatio preko toga, za MSC:)) Imam još uvek TP6 na disku, pogledao i razočarao se, i dalje su mi mnoge stvari lakše u TS-u, još ono menjanje polja u maskama sa (SHIFT) TAB, da poludim. BDM.
cccc.533 madamov,
****** Jes vala. I tu se srećemo kod tvog izbora Turbo Ca zbog toga što je pružao više i tako to. ****** I u čemu je tu problem? Ako si iz mojih poruka shvatio da sam samo sa TC-om radio na Atariju, onda izvini, mislio sam da je ostalo što sam pričao bilo dovoljno jasno da se vidi da ne nisam radio samo u C-u. Sada radim samo u C-u, jer na Meku nemam dobar kompajler za bilo šta drugo.
cccc.534 dejanr,
Odgovor u temi JEZICI.
cccc.535 ficus,
>> Dalje, koliko ljudi ovdje je napisalo program od 10,000+ >> linija u Cu. I koliko je to trajalo? Excluding zz za koga svi >> znamo, a znamo i koliko je trajalo. A zar nije poenta dobrog jezika da sa sto manje pisanja napises sto bolji program???? Sto se same produktivnosti tice evo uzmimo primer asemblera mada se ni meni bas ne svidja ideja da recimo baze podataka radim u bilo cemu sto nije specijalizovan prog. jezik. Evo ovako pretpostavimo da mi je 5 firmi narucilo programe i ja ih pisem u asembleru. Problem nastaje kad zakljucim da nemam indexne datoteke i slicne lepote (clipper-a????). Pa sednem napisem jedno 20-tak funkcijica 100-tinak makroa i eto resen problem indexnih datoteka. Sad bi bilo zgodno imati i lepsu komunikaciju sa ekranom i opet se posao svodi na isto. Ovo svee zajedno ce za prvu firmu trajati dosta dugo, za drugu ce vec biti samo par doradica i ako je sve dobro osmisljeno vec kod 4 ja cu lakse i brze komunicirati sa datotekama u asembleru nego u clipperu. Naravno problem citkosti programa ce i dalje da ostane ali... Pa ljudi nisu pisali c za dzaba i opet se posao svodi na isto. Dakle moj zakljucak: -asembler je dobar najvise zbog toga sto su jedini uticajni bagovi bagovi procesora (popad na 386dx) a sami kompajleri?? da rekoh kompajleri jer sadasnji masm je daleko od obicnog asemblera su jos uvek dovoljno jednostavni da su mal sanse da imaju bug-ove ako se doticni i pojave nece biti od tolikog znacaja (bar se nadam). Sto se integrisane okoline tice PWB je jos uvek suvise spor da bi se mogao nazvati integr. okolinom. prednosti: otporniji na bugove kompajlera,lako se linkuje sa svime. mane : nepregledan, lako se prave greske koje se tesko otkrivaju - C Ovo je asembler sa nesto lepsom sintaksom i dodatim korisnickim bibliotekama. Mana je sto ljudi koji su do juce radili u paskalu i na c nisu obracali paznju misle da je nepregledan i kad ga uzmu onda i programe pisu na paskalovski nacin i naravno stvarno napisu nepregledan program. Inace sa malo programerske kulture pregledniji je od vecine drugih programskih jezika. ajd nek mi neko napise na paskalu nesto slicno ovom i da bude pregledno i da to kompajler prevodi kao brz program: for (i=1;i<=128;i*=2) { ... } toliko o nepreglednosti c-a e sad sto se tice ostalog lose je uradjen ulaz i izlaz ipak je trebalo to da bude sastavni deo kompajlera bar na najnizem nivou mada nesto nao write(ln) u paskalu nebi bilo na odmet jer se prilikom poziva printf-a gubi vreme na citanje format stringa i njegovu interpretaciju sa druge strane ja smatram da je printf sa svojim format stringom ipak pregledniji nego writeln cist primer: printf("matrica [ %d , %d ] = %d /n",i,j,matrica[i][j]); writeln( 'matrica [ ',i,' , ',j,' ] = ',matrica[i,j]); pa sad se vi snalazite u gomili navodnika a o onome ''' i da ne pricam. Naravno cena je sporije izvrsavanje programa ali i/o operacije su inace spore zar ne? Druga mana je ocajno spora kompilacija mada ne verujem da je nije moguce ubrzati uvodjenjem pandana tpu fajlu koj bi naravno bio opcionalan (obj ili "tpu") mislim da je tako nesto uradjeno u bp 7.0 sto se povezivanja sa drugim programskim jezicima tice tu nebi trebalo da bude problema ali nisam siguran jedino sto sam probao su c i clipper koji se linkuju super ali bez floating point emulacije. p.s. jos jedna mana su duzi exe fajlovi posto je printf kilometarska funkcija. c++ (moj omiljeni) odma da se ogradim nisam bas mnogo veliki pristalica oop-a ja c++ gledam kao poboljsanje sa druge strane. Sad bar postoji zamena za printf koja bi trebalo da radi otprilike istom brzinom kao writeln. Ja sam ostao pristalica printf-a zbog toga sto smatram da je pregledniji a sto se brzine tice ko ce da misli o brzini kad je u pitanju preglednost. Sto se preglednosti tice povecana je samim uvodjenjem objekata (napisete jednostavan objekat koji ne radi skoro nista pa onda kad ste sigurni da nema bugove nasledite ga i poboljsate.....) i posle mesec dana imate neki papiric sa uputstvom za koriscenje i ne razmisljate kako to uopste radi. naravno postoji problem pri povezivanju zato sto se recimo funkcija f(int) ne zove f nego nesto kao f@qi ili tako nesto zbog overloadinga koj je opet na svoj nacin carska stvar. Prednost BC a je i to sto je toliko opskrbljen headerima sa svim mogucim funkcijama da je to vec pomalo i preterivanje ali uvek se nadje korisno imati kompleksne brojeve na primer. a ajd nek mi neko u paskalu napise ptogramce za prevodjenje iz jednog u drugi brojni sistem na primer. ako to programce bude krace od mog u c-u ima oma da pojedem papir sa mojim programom (nece mi tesko pasti posto ima nekih 5 linija sa sve include-om i main()-om dakle.... mislim ovo se odnosi i na standardni c koj ima iste funkcije. Naravno ko sto rekoh povecana je preglednost upotrebom klasa i owerl. operatora i jos gomila slicnih gluposti koje mogu para da vrede. pascal ok on je jos podnoslijiv moji komentari su : mora mnogo da se kuca za postizanje nekog cilja i cesto su potrebna uvodjenja temp promenljivih koje u c-u nevi moro da uvedem. Ostala diskusija se moze zakljuciti iz predhodnog. clipper i slicni: Odlicni za baze podataka ali smatram da su ipak prelazno resenje dok ne napisem klasu koja ce da podrzava indexe i c++-u prolog i slicni: ipak bi se na njima zadrzao kao na lepim teoretskim jezicima. mislim da recimo na takmicenjima i u slicnim situacijama u kojima treba obraditi neki ulazni podatak i dati ga na izlazu mogu biti spasonosni jer 90% brige programera preuzmu na sebe ali za bilo kakvu programsku primenu bas i nebih koristio tako nesto. Zakljucak: Treba raditi u onome sto najbolje poznajes i da budes sto sigurniji kako ce to kompajler prevesti. (asembler,c pa i pascal) clipper je dobar za baze podataka u nedostatku dobrih biblioteka koje bi ga zamenile (on i jeste neka vrsta biblioteke) ali mu je mana fiksna duzina slogova i jako spor pack. Moje prakticno iskustvo: dam vam dd (360kb) disketu sa programom i bazom podataka program je u clipperu i naravno sve je zipovano pa se sve to lepo raspakuje na nekih 5-6 mb????? podataka. Konkretno radi se o recniku (nemacko-srpski 30000 reci) stim da za neke reci postoji prevod od 70-tak slovnih mesta paaaa a jos dodajte indexe i nastade katastrofa. p.s. programirao sam u clipper-u -15 poena
cccc.536 paki,
­> Puso obožavam te :). Opet isto... Jesi ti video JPI v3.02 ­> ikada? Ja jesam TP6.0. Ako si video, iznesi mi šta je to tako ­> dobro u odnosu na JPI. Izgleda, opet ne poznaješ ono o čemu ­> pričaš (5ti put :). Hvala Bogu da čovek nikad nije video JPI. A zato svi znamo kaki izgleda TP. Govori li ti to nešto?
cccc.537 .obj,
>## Zar čika-C-CASE ne kaže da korištenje grep-a dobar znak da sa > > Smanji i TI ton diskusije, zašta se kao zalažeš! I TI SMANJI!!! Šalim se. Ne radi se o vikanju ni pljuvanju ;) već je ono bila samo mala ironična šala. OK? :) > Odkud ti znaš zašto sam ja koristio Grep? Pretpostavljam da ga nisi koristio za, recimo, formatiranje disketa nego za pretraživanje datoteka. Bilo mi je simpatično kada sam pročitao da "nikad ne treba koristiti grep, već se svaka funkcija mora nalaziti tamo gde je najlogičnije, bez preturanja po modulima" a posle toga neko kaže kako je grep integrisan u M2 IDE. Nemam ništa protiv grepa, taman posla. Koristim ga svakodnevno. Jedino mi fali neki fazon za replace posle pronalaska.
cccc.538 dejanr,
Odgovor u temi jezici, mislim da bi bilo dobro da polako selimo diskusiju tamo.
cccc.539 mihajl,
$ Evo i rezultata za jedan moj program na Clipper-u 5.01 koji je $ ....... $ samo to). Program ima 5850 linija na Clipper-u i 408 linija $ asemblera, sve skupa preko 160 linija na dan. Mislim da je mnogo puta naglasavano da broj linija koda nekog programa u mnogome zavisi od samog programskog jezika odnosno od biblioteka koje se koriste u tom programskom jeziku. Svojevremeno sam na Clipperu 5.01 odnosno summer '87 mogao dne- vno da ispisem i do 600 linija ( u naletima naravno ), a maksimum za aplikaciju , skoro od pocetka napisanu ( ako se tako nesto moze postici ), je oko 300 linija koda, pisano 16 dana, program od cis- tih 5000 linija koda. Inace takve gigantske programe sam pisao u prvim godinama programiranja.Sada sam uglavnom napravio svoje bib- lioteke od kojih 6000-7000 linija koda,pa mi sada programi ne pre- laze 1000 linija. Sada mi je naglo pala produktivnost na svega par desetina linija dnevno ( u najboljem slucaju ). Smatram da naleti linija koda mogu da budu kratkotrajni i samo u slucaju kada se cela programska filozofija menja.
cccc.540 todorp,
> lako ili tesko da pisem, a ne kako ce to nekome posle da izgleda > kad ga gleda -ako budem lud pa nekome dam da gleda:)) A sta je toliko strasno ako objavis svoj sors??? Pa ne mislis valjda da si otkrio novu atomsku bombu ili nesto epohalno pa da budes lud da nekome pokazes. Mislim da bi ljudi trebali vise da objavljuju sorseve uz svoje programe (razume se ako program nije preveliki i ako nije pravljen da se zaradi vec kao neki utility). Ja skoro svaki program koji uradim hocu da dam sors ili u najgorem slucaju spreman sam da ga dam svakom na uvid (razume se ako me nije blam sto je mnogo ruzno napisan :))) Koliko si ti i tebi slicni ucio iz tudjeg sorsa? Mnoga imena ostavljaju cele jezike kao free. Pozdrav od Todora.
cccc.541 todorp,
> dali ja mogu normalno da koristim fprintf u binarnim fajlovima. Mozes koliko ja znam. fprintf pravi razliku izmedju bin i txt fajla (inace nebi bio upotrebljiv ;) Evo ti primer. Pogledaj '\n' u fajlovima I_fajl i II_fajl i videces da je u jednom slucaju 13+10 a u drugom samo 10. /* Test da li postoji razlika izmedju fprintf u bin i u txt fajlu */ #include <stdio.h> #include <stdlib.h> FILE *f; main () { f=fopen("I_fajl.txt","wb"); /* fajl otvoren kao bin */ if (f==NULL) printf("File je nemoguce otvoriti!\n"); fprintf(f,"Todorovic Predrag\n"); fclose (f); f=fopen("II_fajl.txt","wt"); /* fajl otvoren kao txt */ if (f==NULL) printf("File ne je nemoguce otvoriti!\n"); fprintf(f,"Todorovic Predrag\n"); fclose (f); } Pozdrav od Todora. ps. Ako ti toliko smeta sporost i duzina fprintf koristi write koja je na nizem nivou.
cccc.542 ficus,
:) Mozes koliko ja znam. fprintf pravi razliku izmedju bin i txt fajla (inace :) nebi bio upotrebljiv ;) Evo ti primer. Pogledaj '\n' u fajlovima I_fajl i :) II_fajl i videces da je u jednom slucaju 13+10 a u drugom samo 10. Pa on jeste veoma upotrebljiv i bez tog razlikovanja a sto se razlike tice probaj sa brojevima ja sam sve zivo probao nebi li nekako brojeve ubacio u binarnu daroteku sto se texta tice on je veoma slican u oba slucaja tako da ga ne smatram za toliko merodavan test. :) ps. Ako ti toliko smeta sporost i duzina fprintf koristi write koja je na :) nizem nivou. Pa ja ne rekoh da to meni smeta i/o operacije su inace veoma spore. Problem sam na kraju i resio sa fread i fwrite ali neke stvari mi cisto interesuju naprimer fprintf bi trebao da radi sa binarnim fajlovima zasto meni ne radi. Sto se brzine tice ona je napomenuta da mi nebi neko prebacivao kako precutkujem mane a i cilj mi je bio da izlozim i mane. Mislim bez uvrede za ono sa merodavnoscu ali broj 15 u bin fajlu treba da izgleda kao 0fh 00h a ne kao 31h 35h zar ne? Evo probao sam i tvoj program napise broj kao u text fajl tako jednostavno pogledaj ovo: #include <stdio.h> #include <stdlib.h> FILE *f; void main () { f=fopen("I_fajl.txt","wb"); /* fajl otvoren kao bin */ if (f==NULL) printf("File je nemoguce otvoriti!\n"); fprintf(f,"%d Todorovic Predrag\n",15); fclose (f); f=fopen("II_fajl.txt","wt"); /* fajl otvoren kao txt */ if (f==NULL) printf("File ne je nemoguce otvoriti!\n"); fprintf(f,"%d Todorovic Predrag\n",15); fclose (f); } dakle ako mi izlazni bin fajl izgleda ovako (a tako izgleda) : 15 Todorovic Predrag Izem ti binarni fajl :(((( Dakle ili ja negde kruuuuuupno gresim ili fprintf nije za binarne fajlove sto donekle i deluje logicno. So imal jos koja ideja? Ni meni se nesvidja da kazem ali fprintf mi je definitivno sumnjiv
cccc.543 pedjak,
> Šta mislite da napravimo mali kolektivni test? Da smislimo neki > problem i rešimo ga na sličan način, na (recimo) MS i Borland C-u, > Borland Pascalu, JPI Moduli 2, QuickBasic-u i eventualno još nekom > jeziku pa da uporedimo koliko linija sorsa koji program ima, koliki > je EXE fajl, koliko se dugo prevodi i koliko se dugo izvrsava. Može !
cccc.544 todorp,
> Pa on jeste veoma upotrebljiv i bez tog razlikovanja a sto se > razlike tice probaj sa brojevima ja sam sve zivo probao nebi > li nekako brojeve ubacio u binarnu daroteku sto se texta tice > on je veoma slican u oba slucaja tako da ga ne smatram za > toliko merodavan test. Pa sta ocekujes od fprintfa. Priznajem da si me zbunio. Kad otvoris fajl kao bin to se svodi na ono sto sam ti napisao za '\n' i nista vise. fprintf to prepoznaje. To sto ti hoces ne podrzava ni fwrite nego mu ti kazes sta da pise. Ako ti nesto znaci mozes da koristis fprintf(u,"%2x",15); ali ti to stavlja spejsove i opet pise drugacije od onoga sta tebi treba. Drugim recima koristi fwrite ;)) > Pa ja ne rekoh da to meni smeta i/o operacije su inace veoma > spore. Problem sam na kraju i resio sa fread i fwrite ali neke > stvari mi cisto interesuju naprimer fprintf bi trebao da radi > sa binarnim fajlovima zasto meni ne radi. Sto se brzine tice Onda sam pogresno razumeo. Pozdrav od Todora.
cccc.545 bdm.,
## ono bila samo mala ironična šala. OK? :) OK, malo sa naelektrisan... :) BDM.
cccc.546 ficus,
:) Pa sta ocekujes od fprintfa. Priznajem da si me zbunio. Kad otvoris fajl kao :) pise. Ako ti nesto znaci mozes da koristis fprintf(u,"%2x",15); ali ti to Pazi opet si ti mene izgleda pogresno shvatio gledaj binarni fajl je fajl u koji kad upises broj broj se upisuje u onom formatu u kom je u memoriji dakle ako u memoriji imas neku konstantu 0a23h to ti se u fajl upisuje kao 23h 0ah dakle kao 2 bajta ili da posmatramo jos jednostavnije jedan bajt neka bude inkriminisani 15 decimalno (0fh) pa sad ako ga u fajl upises u text formatu dobices "15" ali kao string ili dve cifre ili kako vec oces uglavnom hex zapis bi ti bio 31h sto predstavlja 1 i 35h sto predstavlja 5 a ako ga upises kao u binarni fajl dovbices 0fh i eventualno 00h iza ako je dvobajtni zapis. Ocigledno ne shvatamo na isti nacin binarni fajl a ja sam vrlo ubedjen da ga ja ne shvatam pogresno ako ima neko ko misli drukcije molio bih ga da me ispravi da ne zivim u zabludi a dotle... cak i ovo drugo sto si predlozio nece uraditi pravu stvar jer ce formad %2x napisati za konkretan slucaj f ili ako vise volis ascii kod karaktera f mislim da je 60. dakle opet nece upisati 0fh ili 15 dekadno sto meni treba
cccc.547 kale,
>> Pa on jeste veoma upotrebljiv i bez tog razlikovanja a sto se >> razlike tice probaj sa brojevima ja sam sve zivo probao nebi >> li nekako brojeve ubacio u binarnu daroteku sto se texta tice Probaj ovo (kad baš insistiraš:) : short i; char *p; /* i = nešto */ p=(char *)&i; fprinf(f,"%c%c",*p,p[1]); Pozdrav!
cccc.548 robert,
>> Pazi opet si ti mene izgleda pogresno shvatio gledaj binarni fajl >> je fajl u koji kad upises broj broj se upisuje u onom formatu u kom >> je u memoriji dakle Eh pa fprintf(...) ti je funkcija koja služi za *formatizovano* pisanje u fajl i vrlo je srodna sa printf(...), sprintf(...), cprintf(...), vprintf(...) i vsprintf(...). Znači da ćeš teško postiši sa fprintf ono što hoćeš. U svakom slučaju ti je lakše da uzmeš funkciju koja to lepo radi po difoltu :). Ili, pređi na C++ pa koristi stream.h!
cccc.549 ndragan,
/ tj. delovi liče na rečenice :). Šta bi rekao za IMPLEMENTATION / MODULE ;). Back to cobol. Epska poezija ili programski jezik. Mislim da mi se najlepše sviđa skraćivanje reči do četiri znaka - još uvek je dovoljno jasno, a nema mnogo da se qca.
cccc.550 ndragan,
/ PERFORM ... / trala / lala / END-PERFORM. I foks: For a=1 to 10 do trala with dirigent =lala(refren,pratnj(a)) <-- foksovo 'void' pozivanje funkcija Endfor Ne razlikuje velika i mala slova, a koga mrzi da sam uzupčava tekst, propusti ga kroz FoxDoc (prerađani SNAP!) pa dobije to isto.
cccc.551 ficus,
:) Probaj ovo (kad bas insistiras:) : Pa ok je to ali na kraju sam problem resio cik pogodi kako (fwrite) ali pitanje je bilo imal nade za fprintf a ovo je ipak vec malo preterivanje. So zakljucak fprintf ne podrzava binarne fajlove. Zar ne? U svakom slucaju puno hvala na predlogu (inace problem je bio sto me je mtzelo da kucam jer sam morao vise da kucam sa fprintf jer mi podaci nisu bili u strukturi.)
cccc.552 ficus,
:) Eh pa fprintf(...) ti je funkcija koja sluzi za *formatizovano* Ok ali ako cemo tako sta je znacenje reci formatizovano (mogu ja da formatizujem i za binarni fajl) iliti treba u knjigama ipak napomenuti da fprintf ne radi sa bin fajlovima. :) sa fprintf ono sto hoces. U svakom slucaju ti je lakse da uzmes :) funkciju koja to lepo radi po difoltu :). Pa i uzeo sam je na kraju. Ali ostalo je pitanje.... :) Ili, predi na C++ pa koristi stream.h! Pa ja i radim sa c++-om ali mi se stream.h ne svidja puno (mnogo komplikovano se postizu neke jednostavne stvari a i nije prigledan ni upola koliko fprintf. Istina trebalo bi da je znatno brzi zbog nacina na koji funkcionise.
cccc.553 miro,
ű> uvođenjem ograničenja programer "tera" da piše čistije i pravi ű> manje grešaka. To bi moglo da sugeriše i zaključak da ű> programer ne zna baš najbolje šta radi ili bar da je pisanje ű> programa u C-u toliko teško da niko ne može da se oslobodi ű> slučajnih grešaka - sa oba zaključka ne bih mogao da se ű> složim. Uvođenjem ograničenja smanjuje se rizik da slaba karika u lancu, iliti slabiji programer u timu, zabrlja stvar. ű> zahteva izuzetno poznavanje alata sa kojim se radi. Stići do ű> tog stepena znanja je vremenski dug proces i ako nema baš ű> nekog *izuzetno* jakog razloga, ne verujem da bi se iko usudio ű> da u sred posla promeni jezik, pa čak i samo firmu koja pravi ű> kompajler. Tačno, otprilike to sam i ja rekao u replici madamov-u. Radim godinama, sve završavam što mi treba i teško da u fazi projektovanja mogu da se odlučim zbog bilo čega na nešto drugo. Drugo, ovo osporava Jozu Dujmovića:)), i ono što je on naučio svoje studente, da svaki projekat nosi u sebi obaveznu tačku u kojoj se bira jezik, tj alat. ű> najproduktivniji, naj.. jezika ako je sve što imaš kompajler u ű> verziji 1.0 od firme "šlj" koja posle godinu dana propada. Tačno, ali to nije slučaj. I Pascal i C i C++ i, naravno, Modula-2 imaju odlične implementacije koje proizvode i stalno unapređuju stabilne firme. JPI je, npr., trenutno 'pod okriljem' Clarion-a. ű>>> linija u Cu. I koliko je to trajalo? Excluding zz za koga ű>>> svi znamo, a znamo i koliko je trajalo. ű> ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ű> Baš me zanima koliko je trajalo i šta? ;) Pa mislio sam na trajanje razvoja Sezam softvera i sve silne faze kroz koje je to prolazilo. Ja sam počeo da koristim Sezam čini mi se 89 godine, i do dana današnjeg sam tu sa manjim preskocima. Zatim sam i sam počeo da razvijam BBS softver i prošao sam mnoge faze u kojima sam prepoznao neke 'probleme' s kojima si se ti sretao i još se sigurno srećeš. Pozdrav, dragisha
cccc.554 miro,
ű> :) To radi i GNU C pri instalciji. Pošto dolazi u source-u, ű> prvo ga iskompajliraš sa postojećim C komapjlerom, a zatim ű> tako dobijeni kompajler iskompajlira ponovo ceo source u ű> finalnu verziju. Skinuo sam juče Modula To C kompajler. Napravljen je pomoću toolbox-a za kompajlere (takođe skinut i biće uskoro u dir-u, samo da ga deskriptujem i skontam šta je šta:) i to u Moduli i Cu. Počinješ tako što C verziju prevedeš i napraviš executable, zatim njime prevedeš Modula verziju:).
cccc.555 miro,
ű> Ma za sqrt manje-više, ali zašto se kod jednog zove InOut, ű> WriteLn, WriteString, a kod drugog IO, WrLn... Za LONGREAL je ű> logično, naime imena svih ugrađenih tipova se pišu velikim ű> slovima (CARDINAL, LONGCARD). Standardizacija biblioteke je još budućnost za većinu jezika. Upravo C je taj za koji svi tvrde da je najportabilniji i tako to, a potreban je posao da bi se preveslao sa jednog na drugi kompajler na istoj mašini.
cccc.556 miro,
ű> Jeste. I Modula je dizajnirana kada su memorije bile mnogo ű> manje -- i oni su se brinuli da će biti teže napraviti ű> kompajler sa pokojom ključnom reči više. Fortran nema ključne ű> reči, a opet, novije verzije jezika izlaze na kraj i sa takvim ű> konstrukcijama -- toliko o modernosti Module. ;) Modula 2 nije pravljena sa malo ključnih riječi da bi joj trebalo manje memorije. Potencijalno najveći 'potrošač' memorije pri kompilaciji je simbol tabela, a na to možeš uticati samo uvođenjem ograničenja tipa '10 procedura po jedinici kompilacije sa max 20 varijabli svaka' i slično. To, srećom, još nisam sreo ni u jednom kompajleru za PC, bar ne nekom komercijalnom. Malo ključnih riječi je nešto što je nekada isticano kao jedna od prednosti C-a. Mali, kompaktan jezik, a opet dovoljno moćan da se napravi sve što treba. E, Modula-2 ima manje rezervisanih riječi nego C, a sintaksa joj staje na A4 format. Ja to smatram kvalitetom.
cccc.557 miro,
ű> da će, kao i sve ostalo u C-u, i sintaksa za "moduliranje" ű> biti mnogo sažetija nego ona u M2. U stvari, svi Wirth-ovi ű> jezici su fini kada u njima treba pisati male programčiće i ű> primere baš zato što su "opširni". Ako je C dva puta koncizniji nego Modula-2, znači na dva puta većem projektu ja ću da izgubim prednost koju sam imao u početku zbog toga što sam izabrao C. A 'poor readability' mi je dva puta više poor. To će reći da argumentacija baš ne stoji. Problem 'velikih projekata' nećeš riješiti tako što izabereš jezik u kome je kraće pisati, prije ćeš ga riješiti jezikom u kome ćeš lakše da svoj veliki projekat razbiješ u manje dijelove, iliti module. ű> nije to ništa loše... čaksm jedno vreme razmišljao o ű> mutabilnim jezicima, kod kojih postoji metajezik, a strukture ű> koje želite da imate definišete Nisi jedini:). Svojevremeno na faksu malo je falilo da moj drug Anes Sadiković i ja započnemo sličan projekat:). Pozdrav, dragisha
cccc.558 miro,
ű> pa mozes da kazes da je slicnost potpuna. I da ne ű> zaboravim, na oba mesta seint kaze bas tako, a ne ű> Int i INT. A u kom se to jeziku na jednom mjestu kaže Int a na drugom INT? Što se tiče sličnosti, šta je _AH u Turbo C, a šta u MSC i kako se radi portovanje programa koji je sav od poziva DOS-a?
cccc.559 miro,
ű>>> Dalje, koliko ljudi ovdje je napisalo program od 10,000+ ű> 9000 linija sorsa u C-u 5.1. U proseku, to je oko 180 linija ű> dnevno. 'Poluvezano'... [To: .obj] Ovo ide u prilog mom limitu od 10,000 koji je ovdje čak i pretjeran. Ako je prvi Sezam imao 9,000 linija a znamo da je bio daleko od trivijalnog programa, otkud je 10,000 malo?
cccc.560 miro,
ű> Ti poredis editor u najnovijoj JPI moduli i neki stari paskal ű> 5. Jesi li video BP7.0 ili bar TP6.0? Mada bi ja sve to ű> zajedno dao, i doplatio preko toga, za MSC:)) Gospodine 'pusa', kad je već C 'tvoj', otkud to da ga već nemaš nego bi davao za njega BP i TP. Ajde da bar daješ BC ili TC, pa da kažemo da nešto C-a imaš. Ovako, sam sebi skačeš u usta.
cccc.561 miro,
ű> Molim te da sniziš ton. Odavno nigde nisam pročitao tako ű> agresivne Eh, to bi svako rado drugome pripisao. Ostavljam drugima da procijene poruke, a ti sigurno nisi neko ko je na primjeru pokazao kako treba da bih ga smatrao kompetentnim da ocjenjuje moje pisanje. A za agresivne poruke pogledaj malo 'pusine', pa nam onda nešto reci. Ako smo 'mi' agresivniji od njega... ű> grupe, možda ne bi bilo loše da sa vremena na vreme i pročitaš ű> po koju i malo se naučiš toleranciji (kao primer onoga kako ne Šta bi tebi bilo dobro, pustiću tebi i da odlučiš. Inače, baš volim ovo preko-preče-naokolo-bliže. Hobbiton si spomenuo za svaki slučaj, da malo pojačaš utisak, zar ne? Jak diskutant. ű> treba da pišeš možeš, na primer, da uzmeš "Nemate pojma", "NE, ű> ne znaš!"). KADA?! sam ja rekao 'Nemate pojma'??
cccc.562 miro,
ű> Očigledno misliš da je 10000 linija puno. Ja ne mislim da je ű> to toliki broj da možeš da kažeš "koliko je ljudi ovde...?", ű> čak šta više, ja mislim da se ta cifra dosta brzo dostiže (u ű> C-u pogotovo, a za asembler 10000 linija nije ništa). Mislim da je to donji prag od koga se program može smatrati netrivijalnim. Ima izuzetaka. Srećna okolnost za Sezam je da ovdje ima dovoljno ljudi koji su taj prag prešli, a nesretna okolnost za ovu diskusiju je što u njoj učestvuju i oni koji ga nisu omirisali. BTW, to što za C nije puno 10000 linija govori o njegovoj konciznosti:).
cccc.563 miro,
[To: .obj] ű>> Molim te pojasni mi o kakvom pretjerivanju u simetriji ű> govoriš. ű> ű> Simetrijom sam nazvao Wirthovo čistunstvo koje, po meni, ide u ű> ekstrem. Ja bogami neću da se zajebavam sa FROM IMPORT bez ű> obzira šta on pričao o modulima i apstrakciji podataka. ű>> Inače, od ljudi koji ovdje zovu mogu da nabrojim desetak njih ű>> koji ozbiljno koriste M2. ű> ű> Deset? U jeee... ;) ű> Hvala lepo. Hederi omogućavaju da Vrlo si se dobro snašao u diskusiji s 'nama' agresivcima. Dobro ti stoji! Pozdrav, dragisha
cccc.564 miro,
ű> Neće tebi nikad zatrebati drugi jezik, jednostavno zato što si ű> previše isključiv. Gde su koreni te isključivosti, stvarno ne ű> znam. Kada bi imao dobar auto, da li bi odbijao da sedneš u ű> neki drugi model? Kad ti kažeš da sam isključiv i to još na ovakav način, meni ostaje samo da se povinujem:)). Šta bi to ti upotrijebio osim C++? A ja svaki put kad dobijem neki C sors fino uđem u to i ako je dovoljno malo prevedem u M2, inače portujem na TopSpeed C(++) i koristim. Nemoj samo da, radi očuvanja tona diskusije:), kažeš da nemaš potrebu za ičim osim C++:)).
cccc.565 miro,
ű> Rezime cu da napisem cim stignem. Primecujem da si totalno ű> ostao bez argumenata pa si presao na insinuacije, ako dobro ű> shvatam sta si hteo da kazes Da sam ja jedini koji je posmislio na to, pomislio bih da sam paranoičan. Ali, nisam. Juče sam slično mišljenje čuo od još tri korisnika. Malo je nelogično da korisnik iz Dec 91 počinje da koristi conf povodom Hobbitona, zatim kad se ta rasprava ušuti njega nestane, i pojavi se ponovo kad se pojavi 'kompatibilna' rasprava. Onda se kao fol uključi u još par konferencija, da se Vlasi ne dosjete. Za sve koji smatraju da pretjerujem preporučujem jedan clist * pusa. Takođe, nek malo pogleda ko ima neki stariji output od users da vidi kada je to pusa zvao ranije. Ja je imam, s kraja 1992 i u njoj je pusin zadnji poziv dan učlanjenja iz Dec 1991. ű> Ja sam samo odgovorio salom na tomicevu salu, i stavio ű> smajli, ti valjda mislis da je u redu kad ti pljuckas druge, ű> ali kad ti neko malo zakaci tebe i cedo ti, ti se mnogo ű> nakostresis ;)) Ja sve radim otvoreno, kolega. Zna se ko sam i šta sam. Za razliku, jelte... Za svoje postupke i pisanje odogovaram svojim a ne tuđim obrazom. Pozdrav, Dragiša Durić
cccc.566 miro,
ű> Ili, ako stvarno rešimo da budemo manje subjektivni, što smo ű> onda uopšte raspavljali ovoliko? ;) Što su neki zastupnici ű> Module bili tako ratoborni? Biće zato što su dočekani ratoborno od nekih drugih korisnika. Ovdje ne ubrajam ni tebe ni madamov-a ni prvul-a ni još mnogo drugih, ali da ih ima, ima ih. Ako si još zainteresovan za razumnu diskusiju, možemo da nastavimo:). Moje izvinjenje tebi za ono 'NE, ne znaš!'. Šta sad?:) Pozdrav, Dragiša Durić
cccc.567 miro,
ű> Postojanje PRIVATE dela tako izloženog jeste malo nedosledno, ű> ali, izgleda, prilično potrebno kompajlerima -- ni u Adi nisu ű> mogli to da izbegnu. To je izbjegnuto u Moduli-2:), postojanjem opaque tipova. Jeste da takvi tipovi osim private nemaju ni public varijable, ali ionako se preporučuje da se polja samo čitaju a ne i pišu. Znači, ako to poštuješ dolaziš do istog što ima i Modula-2 a to su procedure za čitanje potrebnih polja a ostalo te ionako ne zanima. U Adi su zbog toga stvar dodatno zakomplikovali, tj otežali život piscima kompajlera, uvođenjem read-only varijabli, a to je uradio i Oberon-2.
cccc.568 miro,
ű> nije programeru potrebno da zna o klasi, zašto to ne izvesti ű> do kraja nego stati na pola puta? Jeste da je za kompajler ű> jednostavnije, ali mogli su da se izvuku... uostalom, ű> kompajler treba da služi onome ko programira, a ne obratno ;) Za kompajler je jednostavnije jer se zna velicina objekta, tj sizeof, ali rješenje je i podrazumijena veličina za takvu strukturu, tj SIZE(taki tip)==SIZE(pointer).
cccc.569 todorp,
> :) pise. Ako ti nesto znaci mozes da koristis fprintf(u,"%2x",15); ali ti > Pazi opet si ti mene izgleda pogresno shvatio gledaj binarni fajl je fajl Ma jesam te shvatio u prosloj poruci ali se nisam dobro izrazio. Zato sam i napisao 'ako ti nesto znaci' mada sad kad citam poruku vidim da je to bilo nepotrebno (a i poruku sam pisao umoran). Elem, nisam mislio da je fprintf drugo resenje za fwrite (to sam valjda vec napisao) vec sam napisao ovo zato sto je meni u jednom trenutku ranije trebao fprintf koji ostavlja prazno ne popunjeno mesto (al' ga slozih ;) nesto kao fprintf("%2d... gde nece da se upisuje 0x20 ispred nego 0x0, pa sam mislio kako da iskoristis fprintf ako ti je oglavu mada neznam koji problem resavas (ne znam zasto moras da pises u binarni fajl). Pozdrav od Todora.
cccc.570 todorp,
> short i; > char *p; > /* i = nesto */ > p=(char *)&i; > fprinf(f,"%c%c",*p,p[1]); Ako dobro vidim ovo ce da radi samo sa short (2 bajta). A sta sa long itd? Inace je resenje lepo za short (bas mi se svidja). Pozdrav od Todora.
cccc.571 peca.st,
!-> program kao da je prepisan iz neke knjige !-> za matematiku dakle nema nikakvog !-> programskog zongliranja. Tačno. Nema programskog žongliranja, a zašto? Pa i ti si rekao u ostatku poruke, samo ću ja to reći malo grublje. Mathematica, ipak, (po meni) ne bi mogla da se svrsta u programske jezike. Zato je i tako lako napisati ovo gore što si ti uradio. A kada je DejanR predložio ono, mislim da je ipak mislio na klasičnije programske jezike. žak mislim da ni Assembler ne bi trebalo uzeti u obzir, nego "više" jezike. Peđa.
cccc.572 robert,
********************************************************************** * * * AMAN LJUDI, MIžITE OVE VAŠE SVAĐE IZ :CCCC U :JEZICI!!! * * * ********************************************************************** Zak, moooolim te ko boga, seli ove momke u temu :jezici!!!
cccc.573 robert,
>> ipak napomenuti da fprintf ne radi sa bin fajlovima. Pa on faktički radi i sa bin fajlovima ali ne onako kako bi ti očekivao već onako kako je napravljen da radi, tj. formatizovano ispisuje u fajl kao što bi ispisao i na ekran a ne bi voleo da na ekranu gledaš heks brojeve umesto normalnih cifara, zar ne? Meni, na primer, nikad nije palo na pamet da pišem po bin fajlu sa fprintf :).
cccc.574 .obj,
> Ovo ide u prilog mom limitu od 10,000 koji je ovdje čak i > pretjeran. Ako je prvi Sezam imao 9,000 linija a znamo da je bio > daleko od trivijalnog programa, otkud je 10,000 malo? Jao... :) Pa nisam ni rekao da je malo. Rekao sam da se brzo dostigne, što nikako ne znači da su programi sa manje od 10000 linija mali. Eto, recimo, ako pišeš 100 linija na dan, to je (samo) 3 meseca posla.
cccc.575 .obj,
> volim ovo preko-preče-naokolo-bliže. Hobbiton si spomenuo za > svaki slučaj, da malo pojačaš utisak, zar ne? Ne. Ni slučajno. Ako misliš da Hobbiton spominjem u uvredljivom kontekstu, varaš se. Hobbiton držim najozbiljnijim BBS-om posle Sezama, i o njemu imam visoko mišljenje. Tek toliko da se zna. A Hobbiton sam pomenuo zato što znam da si napisao njegov softver. I ti si, na primer, pomenuo ZZ-a, pa se čovek nije uvredio zato što se pominje Sezamov softver... > KADA?! sam ja rekao 'Nemate pojma'?? PC.PROG.2:7.496: > Pa naravno kad ljudi pišu o stvarima koje ne poznaju. Nisi baš rekao 'nemate pojma' (nisam tražio tačno frazu, to mi je ostalo u ušima), ali svejedno, utisak ostaje. Ne vredi da se sad preganjamo ko zašto diže ton u diskusiji, ali hoću da ti se izvinim ako si se osetio uvređenim u vezi sa bilo čime što sam napisao.
cccc.576 .obj,
> Vrlo si se dobro snašao u diskusiji s 'nama' agresivcima. Dobro > ti stoji! Hvala na komplimentu ;) Koliko me pamćenje služi (a dobro me služi;) ti si onaj koji je prvi počeo da na poruke odgovara arogantno. Evo, ja sam spreman da pređem preko tvoje arogancije ;) Nadam se da više neću imati prilike da se dobro snalazim u agresivnim diskusijama.
cccc.577 prvul,
Ůkoji kad upises broj broj se upisuje u onom formatu u kom je u memoriji Ůdakle ako u memoriji imas neku konstantu 0a23h to ti se u fajl upisuje kao Ů▄▄ I za takve stvari imaš fwrite i fread, a fprintf i fscanf služe za isto to, samo ono "f" na kraju znači da je ispis FORMATIRAN, a što znači da se ispisuje baš onako kako se ispisuje. U binarni fajl se može pisati I sa fprintf, tj. formatirano, i fprintf se tada ponaša BAŠ onako kako treba, tj. ne radi translaciju kraja reda. Zašto je zgodan formatirani ispis u binarni fajl? Zato da ako ti treba da upišeš npr. broj u ASCII obliku u fajl (u nekim formatim za baze podataka se čak svi brojevi u bazu upisuju tako, cifru po cifru umesto onako kako pišu u memoriji) lepo upišeš to sa fprinf i gotovo. Inače bi morao da ispisuješ formatirano u string sa sprintf, pa da tražiš dužinu stringa, pa pa poravnavaš i pad-uješ (jer su polja u bazi fiksne dužine) i onda upišeš sa fwrite.
cccc.578 ficus,
odgovor u conf jezici
cccc.579 ficus,
>:) > p=(char *)&i; >:) > fprinf(f,"%c%c",*p,p[1]); >:) Ako dobro vidim ovo ce da radi samo sa short (2 bajta). A sta sa long itd? >:) Inace je resenje lepo za short (bas mi se svidja). pa u tom slucaju jednostavnije je fwrite(&i,sizeof(i),1,f); ili jos bolje #define fwr(x,f) fwrite(&(x),sizeof(x),1,f) i dalje samo fwr (i,f) ovo radi i sa drugim tipovima i lepse je a jos bolje lupiti templateove u c++-u ali nazalost cisto da kazem u cemu je bio problem pa da prekinemo sa diskusijom koja nikud ne vodi. Ja sam inace do skoro radio sa pascalom i sad skoro sam presao na c (skoro citaj ko pre 8 meseci). Dosad mi fajlovi nisu trebali sk- oro uopste bar ne binarni a sa textom sam se snalazio. Inace sad zavrsavam neku igricu i treba mi za fajlove sa nivoima. Inace sad radim u c++-u ali jos nisam probo nista od njegovih predefinisanih klasa i objekata izuzev cin i cout a i to ne koristim jer mi se iskreno receno vise svidja printf. U svakom slucaju hvala puno. Ja sam se u medjuvremenu snasao iskoristio fwrite i za sad posao polako napreduje.
cccc.580 mstanic,
Može li neko da mi kaže čemu služe ova dva fajl u PROGRAM direktorijumu na Sezamu ? byacc zip 103040 Berkley YACC for MS-DOS (parser generator) flex_exe zip 86615 Lex compiler - generator programa za skaniranje teksta Mislim da li su u nekoj vezi sa C-om ?
cccc.581 ficus,
yacc ti sluzi za generisanje sintax checkera (proverava sintaksu tvog programa) bar koliko sam ja ukapiro a flex pojma nemam ali pretpostavljam da je nesto slicno
cccc.582 dejanr,
>> > i ako nema baš nekog *izuzetno* jakog razloga, ne verujem >> > da bi se iko usudio da u sred posla promeni jezik, pa čak >> > i samo firmu koja pravi kompajler. >> >> Tačno, otprilike to sam i ja rekao u replici madamov-u... >> >> Drugo, ovo osporava Jozu Dujmovića:)), i ono što je on naučio >> svoje studente, da svaki projekat nosi u sebi obaveznu tačku u >> kojoj se bira jezik, tj alat. Pa, ne vidim baš po čemu osporava, nije on rekao da se U SRED posla menja alat nego da u toku planiranja projekta, dakle pre nego što se pristupi programiranju, treba razmotriti i taj aspekt problema. Naravno, to je primenjivije za veće softverske firme (kakvih kod nas nema) i veće projekte, kad čovek sam radi, verovatno mu je još teže da menja jezike. Ali ja recimo nikad nisam osećao ni "obavezu" (tj. potrebu) a ni želju da sve što radim, radim na istom jeziku.
cccc.583 stomic,
$ U Adi su zbog toga stvar dodatno zakomplikovali, tj otežali $ život piscima kompajlera, uvođenjem read-only varijabli, a to $ je uradio i Oberon-2. žini mi se da su read-only vajibale postojele i u Oberonu. Pozdrav, stomic@hobbiton.
cccc.584 kale,
>> Ako dobro vidim ovo ce da radi samo sa short (2 bajta). A sta sa long itd? Malo više %c i malo više p[i]. :)
cccc.585 pusa,
> Problem 'velikih projekata' nećeš riješiti tako što izabereš > jezik u kome je kraće pisati, prije ćeš ga riješiti jezikom u > kome ćeš lakše da svoj veliki projekat razbiješ u manje dijelove, > iliti module. Lepo je covek pre neki dan dao program pisan u internom jeziku MATHEMATICA paketa i vidi se da je taj program vise puta kraci u odnosu na nesto napisano u C-u ili Moduli ili Pascalu. Ja sam nekada pisao programe u APL jeziku za neke transformacije, tu sa tri operatora uradis sta ti u fortranu treba tri strane. I vrlo se pregledno i brzo pise, jedino treba da imas tastaturu sa svim tim operatorima ili da ih pises kao reci samo sto to tad odma je manje pregledno. Dakle, izaberes odgovarajuci jezik i sve se lako i brzo napise. Ako ima takav jezik. Ako nema... uzmes C :) Inace ta tolika teznja da se sve razbija na male malecke delove me ne impresionira - ima svojih dobrih strana ali se tera u krajnosti i rezultuje ogromnim programima koji su uz to mnogo spori. Mogli bi biti mnogo brzi i mnogo manji, kada bi se racionalnije pisali a ne samo seckao kod po modulima i kada treba i kada ne treba
cccc.586 pusa,
> Gospodine 'pusa', kad je već C 'tvoj', otkud to da ga već nemaš > nego bi davao za njega BP i TP. Ajde da bar daješ BC ili TC, pa da > kažemo da nešto C-a imaš. Ovako, sam sebi skačeš u usta. Ja sad ne znam da li se to ti pravis blesav ili sta, smajli stavio nisi, znaci kao treba ozbiljno da te shvatam. Fala Bogu da imam sve te pakete koje pominjes (sem BC) i nisam hteo nista da razmenjujem, nego sam se izrazio figurativno da sve to zajedno meni ne vredi koliko MICROSOFT C 7.0. Ako to nisi mogao da shvatis onda svaka ti cast ;)
cccc.587 pusa,
> Za svoje postupke i pisanje odogovaram svojim a > ne tuđim obrazom. Tako sto radis pod tudjim imenom. Ne osecam potrebu da se tebi ispovedam ni da ti objasnjavam od kada do kada sam bio na SEZAMu a kada sam bio odsutan i gde sam za to vreme bio. Ako hoces da me vidis, skoro svake subote sam u klubu pa izvoli. Ne bojim se suocenja sa osobom kao sto si ti, iako si samome sebi postavio lepu dijagnozu: > pomislio bih da sam paranoičan.
cccc.588 pusa,
> I nikada nećeš biti u prilici da radiš timski :)? Kad mi bude trebalo da radim timski ima da mislim i o tome. Sad mi ne treba pa me bas briga. A svakako ne bi radio timski sa nekim pacerima, nego bi se dogovorili kako sta da radimo i tako bi radili. Naravski na C-u. > Puso obožavam te :). A sida vreba... ;( > Opet isto... Jesi ti video JPI v3.02 ikada? Ja jesam TP6.0. Ako si > video, iznesi mi šta je to tako dobro u odnosu na JPI. Izgleda, opet > ne poznaješ ono o čemu pričaš (5ti put :). To ti kazes jer nemas argumenata za diskusiju, pa mislis ako 100 puta ponovis da ja ne citam poruke na koje odgovorim i ne znam o cemu pricam, neko ce pomisliti da je stvarn tako. Brze se radi, manje sparta po disku i ucitava, nema stalno da se na nesto ceka, manje se sareni po prozorima, ima debager ugradjen, biras oces li u DOSU ili DPMI podrsku (ovo samo borland p.), svasta lepo ima. JPI Modula ima malo bolje resen rad sa prozorima za tekst. Inace posto pricamo o C-u, nekako se nisam navikao da koristim WORKBENCH jer mi radi nesto kao spomenuta modula, stalno nesto sparta i trazi po disku. Zato kuckam u BRIEF-u pa prevedem samostalnim kompajlerom.
cccc.589 pusa,
> A sta je toliko strasno ako objavis svoj sors??? Pa ne mislis valjda > da si otkrio novu atomsku bombu ili nesto epohalno pa da budes lud da > nekome pokazes. Nije rec o tajni nego o tome da mislim da kada bi pisao program ciji cu sors da delim uz njega, bio bi puno opterecen time da to bude lepo, da se ne vide neke sitne i malo bitne ali ipak ruzni stosovi, da mi neko ne kaze ovo i ono... Ja bi dao sors ako to treba, ali s tim da sam od pocetka pisao program tako da ga delim. A ako sam pisao program misleci da cu da delim samo EXE a pose treba i sors da dam, ne bih to rado bas... Osim ako bi se dobro platilo ;)) I ti si postavio dobru dijagnozu kad kazes > (razume se ako me nije blam sto je mnogo ruzno napisan :))) :) > Koliko si ti i tebi slicni ucio iz tudjeg sorsa? Ja dosta malo, ako ne racunas u sors ono sto je u nekoj knjizi. > Mnoga imena ostavljaju cele jezike kao free. Ali to je zgodno za one koji ce recimo to na faksu da oce po pola godine ili godinu, za to vreme se to prostudira. A meni da da neko sors celog jezika, ja bi rekao lepo, samo nema vremena da citam i lupam glavu. Zato bi kad bi birao rado video sors manjih programa kojima nesto dobro radi, npr kako scan onako brzo trazi signaturu u fajlu ili kako norton backup onako pise na disketu i slicne.
cccc.590 prvul,
Ů Ako je C dva puta koncizniji nego Modula-2, znači na dva puta Ůvećem projektu ja ću da izgubim prednost koju sam imao u početku Ůzbog toga što sam izabrao C. A 'poor readability' mi je dva puta Ůviše poor. To će reći da argumentacija baš ne stoji. Ů▄▄ Mislim da argumentacija stoji. Naime, to što je C dva puta koncizniji nikako ne znači da je i dva puta nečitljiviji. Naprotiv. Izgleda da je najbolje da o čitljivosti programa više ne diskutujemo, pošto ja mislim da je C čitljiviji od paskaloidnih jezika (čitaj: module) a ti obratno. Očigledno se radi o ukusu, a o njima ne bih raspravljao... :) Ůkome ćeš lakše da svoj veliki projekat razbiješ u manje dijelove, Ůiliti module. Ů▄▄ I zato ću izabrati C(++) u kome lepo napišem manje delove i gotovo... ono što kod module zovemo modul kod C-a nema baš neko pompezno ime ali vrši isti posao jednako dobro. Jedino što mislim da nedostaje to je uvoženje samo pojedinih identifikatora iz modula, jer ponekad mi smeta to što npr. zajedno sa strcmp iz string.h ujedno uvozim i memcpy i sijaset drugih funkcija... no, ako se pažljivo planiraju moduli, onda je uvoženje svih identifikatora neophodno... npr. ako je u modulu implementirana samo jedna klasa, onda uvoženjem klase logično uvozimo i sve njene funkcije članice i nema potrebe za uvoženjem samo nekih.
cccc.591 miro,
ű> Bilo mi je simpatično kada sam pročitao da "nikad ne treba ű> koristiti grep, već se svaka funkcija mora nalaziti tamo gde ű> je najlogičnije, bez preturanja po modulima" a posle toga neko ű> kaže kako je grep integrisan u M2 IDE. Pa nije baš da tako piše, al' da sad ne kopamo... Što se tiče M2 IDE, to je istovremeno i C, C++ i Pascal IDE pa eto i razloga zbog koga je morao biti tamo:). ű> Nemam ništa protiv grepa, taman posla. Koristim ga ű> svakodnevno. Jedino mi fali neki fazon za replace posle ű> pronalaska. Ni ja:). I ja koristim taj famozni Alt-F4 (interni GREP) skoro stalno. Replace poslije pronalaska se rješava vrlo lako, on u traženje kreira spisak fajlova koji su matchovali, i kad uđeš u file (sličan sistem pick listi) onda možeš Ctrl-Q A i u fajlovima koji dolaze samo Ctrl-L.
cccc.592 miro,
ű>­> Puso obožavam te :). Opet isto... Jesi ti video JPI v3.02 ű>­> ikada? Ja jesam TP6.0. Ako si video, iznesi mi šta je to ű>­> tako dobro u odnosu na JPI. Izgleda, opet ne poznaješ ono o ű>­> čemu pričaš (5ti put :). ű> ű> Hvala Bogu da čovek nikad nije video JPI. A zato svi znamo ű> kaki izgleda TP. Govori li ti to nešto? Vidi nešto, Zortech C++ je vrhunski proizvod. Koliko nas ga je vidjelo?? Borland je vidjelo više ljudi, mnogo lakše se širi. A JPIja je kupila Petnica, Mladost i još par firmi i pojedinaca. Neuporedivo sa desetinama koje su kupile Borland. Bio je prije JPI, bio je glasniji od JPI i eto razloga. JPI je evropska firma, i to je jedan razlog. Reklamira se po Comm of the ACM i sličnim, proizvodi samo kompajlere, ne svaštari. I to je jedan razlog. I tako dalje...
cccc.593 miro,
ű> Tako sto radis pod tudjim imenom. Ne osecam potrebu da Da, radim pod prijateljevim imenom koji je kupio uslugu koju NE KORISTI. Nije mi prvi put pa već svi i znaju za to, često se potpisujem onako reda radi, a i moja ijekavica je prepoznatljiva. Da ne govorim o čovječuljku kojega miro koristi:)). Znači, nisam anoniman. ű> se tebi ispovedam ni da ti objasnjavam od kada do kada sam bio ű> na SEZAMu a kada sam bio odsutan i gde sam za to vreme bio. Mora da si bio odsutan i za vrijeme od postanka Sezama pa do 1991 kad si postao član. Onda cijele 1991 i to sve do aprila ove godine kad te je odjednom iznervirala naša najava. Cuclao si sa ZgBBS a nisi se prijavio na Sezam čak ni kada je bio besplatan. ű> Ako hoces da me vidis, skoro svake subote sam u klubu pa ű> izvoli. Haha, skoro svake subote u klubu, a jedna od persona koja je tamo više nego često je prva izjavila 'Taj ne postoji!'. Osim toga, svi ćute, meni bi prijatelji bar priskočili da mi potvrde identitet. Gdje su kolege sa faksa i ostala raja. Možda te ne znaju kao pusu?:) ű> Ne bojim se suocenja sa osobom kao sto si ti, iako si Odlično, pošto sam ja u Loznici i nije neka hrabrost suočenje sa mnom. Sigurno neću dati 10-20 DEM da bih tebe sreo. Ali, srećom, moj dobar drug bdm. je u BG pa ako si još uvijek spreman, ponesi ličnu kartu i dogovori se sa čovjekom. Ako ti je ponižavajuće da te legitimišemo, samo mi navedi deset Sezamovaca koje lično poznaješ i oni poznaju tebe. Biće dovoljno pa da počnem da se izvinjavam jednom sedmično sljedećih pola godine na svim sistemima koje izabereš.
cccc.594 miro,
ű>> KADA?! sam ja rekao 'Nemate pojma'?? ű> ű> PC.PROG.2:7.496: ű> ű>> Pa naravno kad ljudi pišu o stvarima koje ne poznaju. ű> ű> Nisi baš rekao 'nemate pojma' (nisam tražio tačno frazu, to mi ű> je ostalo u ušima), ali svejedno, utisak ostaje. Ehhhh, od pojma nepoznavanja do pojma POJMA je duuuug put. A ta razlika se nije vidjela u poruci kojom si opaučio po mom pisanju. Utisak je ostao. A ostaje činjenica, o njoj u jezici, da su ljudi pisali o M2 sa očitim pokazivanjem nepoznavanja iste. ű> Ne vredi da se sad preganjamo ko zašto diže ton u diskusiji, ű> ali hoću da ti se izvinim ako si se osetio uvređenim u vezi sa ű> bilo čime što sam napisao. Ovo je najljepše u svakoj svađi sa normalnim narodom. Ruke šire, u lice se ljube:). Slažem se s tobom, i uzvratno se izvinjavam (opšte pomirenje:) i ako želiš da nastavimo o (po) sabdžektu, ajmo u jezici.
cccc.595 janko,
> Standardizacija biblioteke je još budućnost za većinu > jezika. Upravo C je taj za koji svi tvrde da je > najportabilniji i tako to, a potreban je posao da bi se > preveslao sa jednog na drugi kompajler na istoj mašini. ANSI biblioteke su standardne, ako su kompajleri ANSI C. Dodaci specifični za jednu mašinu su, naravno, nestandardni. Ipak, što se tiče MSC i BC, Borland se trudi da njegovi novi kompajleri mogu da prevedu i MSC konstrukcije. Ipak, puno "mašinski" (čitaj -- MSC) zavisan MSC tekst BC i dalje neće uspeti da prevede.
cccc.596 janko,
> od prednosti C-a. Mali, kompaktan jezik, a opet dovoljno > moćan da se napravi sve što treba. E, Modula-2 ima manje > rezervisanih riječi nego C, a sintaksa joj staje na A4 > format. Ja to smatram kvalitetom. Jeste. Potpuno se slažem. C je daleko od toga da ima jednostavnu gramatiku. To je zato, što su dizajneri počeli, prvo, da razvijaju interpreter. (!) :) C ima konstrukcije koje su tipične za LL i konstrukcije koje su tipične za LR gramatike.
cccc.597 janko,
> Šta bi to ti upotrijebio osim C++? A ja svaki put kad > dobijem neki C sors fino uđem u to i ako je dovoljno malo > prevedem u M2, inače portujem na TopSpeed C(++) i > koristim. > > Nemoj samo da, radi očuvanja tona diskusije:), kažeš da > nemaš potrebu za ičim osim C++:)). Ne razumem pitanje, ako ga je bilo?
cccc.598 miro,
ű> Za sve koji smatraju da pretjerujem preporučujem jedan clist * ű> pusa. Takođe, nek malo pogleda ko ima neki stariji output od ű> users da vidi kada je to pusa zvao ranije. Ja je imam, s kraja ű> 1992 i u njoj je pusin zadnji poziv dan učlanjenja iz Dec ű> 1991. Whow! Stvari dobijaju čudan tok... Moja lista je filtrirana na 1992 (to sam uradio jer mi je trebalo da je skratim) i u njoj ga nema. Odatle sam pretpostavio da je ostao među onima koje sam isjekao. Skidanje sam napravio krajem avgusta kada mi je zbog prijave novih korisnika na BBS trebalo da na osnovu username-a (većini je isti kao na Sezamu) i zahtjeva koji su tada išli Sezam mailom kreiram korisnika. Međutim, nije to JEDINA lista! U jednoj koju sam jutros vidio, pusa prosto NE POSTOJI! Može li neko nadležan da objasni 'misteriju'?
cccc.599 dejanr,
>> Može li neko nadležan da objasni 'misteriju'? Nema nikakve misterije, čovek se pojavljuje na user listi onoga momenta kada plati pretplatu. Dok nije platio pretplatu nema ga ni na kakvoj listi, ali stoji u bazi. Baza nije čišćena još od sredine 1991 godine ili tako nešto. Osim toga, korisnik može da bude anoniman, na sopstveni zahtev.
cccc.600 miro,
> Nema nikakve misterije, čovek se pojavljuje na user listi onoga momenta > kada plati pretplatu. Dok nije platio pretplatu nema ga ni na kakvoj > listi, ali stoji u bazi. Baza nije čišćena još od sredine 1991 godine > ili tako nešto. > > Osim toga, korisnik može da bude anoniman, na sopstveni zahtev. Rekao bih da je to od ove godine, jer u listi imamo i korisnika qwer koji je uclanjen na dan zadnjeg poziva, znaci tada nije bilo ovoga sistema. Moze da provjeri, a qwer je iz decembra kao i ovaj 'pusa'. A sto se tice flega, suhveli mi je da se pojavi sada. Zar nije i tebi? Kao sad se nesto mijenja. Sto se tice flega, ima ga setovanog i na 988...
cccc.601 dejanr,
>> Rekao bih da je to od ove godine, jer u listi imamo i korisnika qwer koji >> je uclanjen na dan zadnjeg poziva, znaci tada nije bilo ovoga sistema. >> Moze da provjeri, a qwer je iz decembra kao i ovaj 'pusa'. Tako je oduvek, a korisnik koga pominješ je platio pretplatu ali nije zvao nikada posle. Dešava se povremeno.
cccc.602 kenza,
(;> Vidi nesto, Zortech C++ je vrhunski proizvod. Koliko nas ga (;> je vidjelo?? Ja sam ga video ;) p.s. Cemu ovo sluzi, a uz to i ne radi?!
cccc.603 bojt,
>> ...samo mi navedi deset Sezamovaca koje lično poznaješ i oni >> poznaju tebe. Evo ja ga znam (a i on mene).
cccc.604 stomic,
$ Tako sto radis pod tudjim imenom. Ne osecam potrebu da $ se tebi ispovedam ni da ti objasnjavam od kada do kada sam bio $ na SEZAMu a kada sam bio odsutan i gde sam za to vreme bio. Ako $ hoces da me vidis, skoro svake subote sam u klubu pa izvoli. Evo ja radim pod svojim imenom. Jel možeš meni da objasniš te sitnice. Može i na mail ako te je blam ovde pred svima. $ Ne bojim se suocenja sa osobom kao sto si ti, iako si samome $ sebi postavio lepu dijagnozu: $ $ > pomislio bih da sam paranoičan. I ja sam paranoik i Dragisha i još nekoliko ljudi? Pozdrav, stomic@hobbiton.
cccc.605 squsovac,
> Ako ti je ponizavajuce da te legitimisemo, samo mi navedi > deset Sezamovaca koje licno poznajes i oni poznaju tebe. Bice > dovoljno pa da pocnem da se izvinjavam jednom sedmicno sljedecih > pola godine na svim sistemima koje izaberes. Poznajem coveka. Javi ako treba da posaljem i podatke o njemu (one koje znam) ili da ga opisem (ali na mail jer ne pratim conf u poslednje vreme posto nisam u Bgd-u). Pozdrav SQ
cccc.606 ndragan,
/ i uperkaseuje. Nešto se čudno izgovara 'uprskati' u poslednje vreme :)
cccc.607 ndragan,
/ sa onim problemom sakrivanja privatnih delova klasa. Samo, verujem 'Hiding private parts' liči na cenzuru...
cccc.608 ganta,
--> listi, ali stoji u bazi. Baza nije čišćena još od sredine 1991 godine --> ili tako nešto. Sad mi je jasno zašto tako dugo pretražuje bazu korisnika. Kako bi bilo da se stari korisnici obrišu? G.
cccc.609 dejanr,
>> Sad mi je jasno zašto tako dugo pretražuje bazu korisnika. Kako bi bilo >> da se stari korisnici obrišu? Sve se nešto očekuje nova verzija softvera zbog koje će se format korisničke baze dosta promeniti pa... ;)
cccc.610 bulaja,
**** new file **** R:\IBMPC\C\*.* ---------------------- ctask22 arj 155754 CTask v2.2, multitasking kernel za C (source) (#1/2) ctask22 a01 154500 CTask v2.2, multitasking kernel za C (source) (#2/2) CTask is a Multitasking Kernel for C, which allows preemptive multitasking in C programs. Includes full sources for the Kernel, a full duplex interrupt driven serial I/O driver, a DOS access multiplexer, printer and keyboard interfaces. CTask programs can spawn other programs and go TSR. Version 2.2 fixes a number of known bugs. Mainly C, some ASM, for use with Turbo C or Microsoft C. -------- Preuzeto sa FFS-a.
cccc.611 bulaja,
**** new file **** R:\IBMPC\C\*.* ---------------------- cephes-2 zip 154460 Cephes v2.2, razne matematicke C funkcije (source) #2 cephes-1 zip 154991 Cephes v2.2, razne matematicke C funkcije (source) #1 This computer software library is a collection of more than 400 high quality mathematical routines for scientific and engineering applications. All are written entirely in C language. Many of the functions are supplied in six different arithmetic precisions: 32 bit single (24-bit significand), 64 bit IEEE double (53-bit), 64 bit DEC (56-bit), 80 or 96 bit IEEE long double (64-bit), and extended precision formats having 144-bit and 336-bit significands. The extended precision arithmetic is included with the function library. The library treats about 180 different mathematical functions. In addition to the elementary arithmetic and transcendental routines, the library includes a substantial collection of probability integrals, Bessel functions, and higher transcendental functions. There are complex variable routines covering complex arithmetic, complex logarithm and exponential, and complex trigonometric functions.
cccc.612 zorans,
Ako se neko seca, ili vec koristi PCL4C async comm lib, evo i dodatka tome: PPL4C - protocol lib. HHps: Ovo SKERL vec sigurno ima ( ili mozda ne ) ppl4c11.zip
cccc.613 zorans,
Da li neko zna ( ima negde po sezamu ) gde se moze pronaci util koji sredjuje neuredno pisane C programe. Hvala unapred pozdrav zorans
cccc.614 spantic,
> Da li neko zna ( ima negde po sezamu ) gde se moze pronaci > util koji sredjuje neuredno pisane C programe. Imaš ga na Hobbitonu. Reč je o GNU
cccc.615 zorans,
Zahvaljujem.
cccc.616 durut,
Ako bi se neka dobra dusa nasla da mi kaze sta ovom programu stvarno hvali (zasto neradi) bio bih mu zahvalan. Evo sta nevalja : - Ovaj program bi trebalo da preuzme INT 9h i da veliko i malo 'A' zameni. Sve je lepo radilo... , ali onda sam pritisao fatalan taster CAPS LOCK lampica se nije upalila i sve je zablokiralo. :((( #include<dos.h> . . . void interrupt handler(unsigned bp,unsigned di, unsigned si,unsigned ds, unsigned es,unsigned dx, unsigned cx,unsigned bx, unsigned ax,unsigned ip, unsigned cs,unsigned flags) { union REGS r; char far *pp; unsigned int offs; char ch1; int86(INTRR,&r,&r); offs=*((char *) MK_FP(0x40,0x1a+2)); if(offs==30) /* ZBOG KRUZNOG BAFERA */ offs=62; pp=MK_FP(0x40,offs); /* POINTER NA BAFER TASTATURE */ ch1=*((char*)MK_FP(0x0040,0x0017)); /* STATUS BAJT */ if(*(pp-2)=='a') /* MALO U VELIKO I KONTRA (SA BAFERA) */ *(pp-2)='A'; else if(*(pp-2)=='A') *(pp-2)='a'; return; } Prilazem pride source,exe i config fajl za TC 2.0 u komeje inace cela stvar kompajlirana . int9.zip
cccc.617 vitez.koja,
Kuku i lele ;) Imam problem : kad je kursor u poslednjem redu, pa sa cprintf ispisem string koji se zavrsava sa '\n' on ubaci jedan red na dno ekrana, ali ne prazan nego dupliran pretposlednji :( tj. ako je kusor u poslednjem redu a ja napisem cprintf("tralala\n") dobicu dva "tralala" na dnu ekrana ?!
cccc.618 vitez.koja,
Kakva su iskustva sa 'compile via assembly' u borlandovom Cu ?
cccc.619 nkbog,
> Kuku i lele ;) Imam problem : kad je kursor u poslednjem redu, pa > sa cprintf ispisem string koji se zavrsava sa '\n' on ubaci jedan > red na Borland C++, I presume. Dokumentovano kao BUG. Mislim da postoji update koji to ispravlja. Ima valjda i ovde na Sezamu. NB.
cccc.620 mjova,
> kusor u poslednjem redu a ja napisem cprintf("tralala\n") > dobicu dva "tralala" na dnu ekrana ?! slični zbrljevi se dešavaju ako se otvori prozor koji je veći od 80x25. sad, ne sećam se baš da li je problem oko otvaranja prozora te veličine ili korišćenja, ali ima nešto ;) najbolje rešenje je pucati u video memoriju.
cccc.621 mjova,
> Kakva su iskustva sa 'compile via assembly' u borlandovom > Cu ? kakva bi trebalo da budu? super, mada ih koristim samo kad mora.
cccc.622 dcolak,
│ najbolje rešenje je pucati u video memoriju. BTW, da li je ikako moguće koristiti pucanje po video ramu bez _far deklaracija? Sledge DAMMIR!
cccc.623 vitez.koja,
#=> Borland C++, I presume. Dokumentovano kao BUG. Mislim da #=> postoji update koji to ispravlja. Ima valjda i ovde na #=> Sezamu. Zahvaljujem :)
cccc.624 vitez.koja,
#=> najbolje rešenje je pucati u video memoriju. Kako-kad. Na kraju krajeva, da uzmem da strogo kontrolisem gde ce poruka da se pojavi (a to bih morao kad bih gadjao video memoriju) nikad ne bih dosao u situaciju kursor_u_poslednjem_redu + \n. Koristio sam cprintf za ispis bezvezne "do vidjenja" poruke na kraju programa, kad me bas mnog ne zanima gde ce da se ispise.
cccc.625 vitez.koja,
#=> kakva bi trebalo da budu? super, mada ih koristim samo #=> kad mora. E, to me zanima :) Kad mora, kako stoje brzina i duzina programa u odnosu na standarno kopajliranje, zasto koristis samo kad mora ? Ako te ne mrzi :)
cccc.626 mjova,
> E, to me zanima :) Kad mora, kako stoje brzina i duzina > programa u odnosu na standarno kopajliranje, zasto > koristis samo kad mora ? Ako te ne mrzi :) u principu, nisam još ˙morao˙ da koristim #pragma inline, ali znam ko jeste ;). ortak sa posla ima 286 i na njoj BC++ 2.0. e, on kaže da mora da koristi komp. preko asm-a. zašto? - nisam ga pitao, ali pretpostavljam da je kompajler malo slabiji pa ne prepoznaje baš sve što treba. e, da, sad se setih, morao sam da koristim ovaj način prevođenja kad sam iz svojih rutina (u .c modulu, pisane u asm-u) hteo direktno da pristupim nekoj globalnoj promenljivoj. znam da sam joj pristupao preko deklaracija koje gotivi asm jer nisam znao kako to da uradim iz C-a (šta mogu kad nemam literature ;). verovatno da postoje još neke prednosti (brzina?) ali sumnjam da je kod drugačiji i da se razlikuje u dužini i/ili brzini. sad, pošto sam savladao deklaraciju C funkcija u asm-u onda ih obično i napišem u čistom asmebleru, pa ih kasnije povežem. glavna fora je što je ovakvo pisanje mnogo lakše nego pre. nema onih deklaracija segmenata i ko zna čega. paramteri se navedu u jednoj liniji (mada se rad sa pointerima razlikuje nego u c-u ;) sve ostalo je isto.
cccc.627 dcolak,
Evo moram da se požalim i da pitam jel neko rešio problem ne saradnje PWB iz MSC6.0 i CV sa bilo kojim CACHE koji ima uključen staged write. Uvek se ukoči čim poželim da pređem iz PWB u CV.. So.. Ima li rešenja? Sledge DAMMIR!
cccc.628 mjova,
da li neko ima rešenje za sledeći problem: izvesna funkcija pisana u asm-u treba da pristupa članovima neke strukture, ali tako da tokom pisanja programa ne moram da pazima na redosled i količinu memorije koju zauzimaju članovi pre one kojoj se obraćam. ovo me posebno zanima za slučaj ubacivanja novih članova. ako postoji struct pera { int a; int b; }A; onda članu b mogu da pristupim iz asm-a na ovakav način: void fn(pera *w) { asm { les bx, DWORD ptr w; mov al, BYTE ptr es:[bx+2]; } } tu bih nekako voleo da zamenim onu dvojčicu nekim simbolom koji će se pri prevođenju zameniti pravom vrednošću. ne znam da li postoji neki lakši način nego da pravim #define i sl.
cccc.629 djelovic,
> onda članu b mogu da pristupim iz asm-a na ovakav način: > > void fn(pera *w) š > > asm š les bx, DWORD ptr w; > mov al, BYTE ptr es:Šbx+2Ć; > ć > ć > > tu bih nekako voleo da zamenim onu dvojčicu nekim simbolom koji će se > pri prevođenju zameniti pravom vrednošću. To tvoje dva zapravo predstavlja: (char*)w->b - (char*)w što je konstantan izraz i kompajler će ga kao takvog tretirati. E sad, probaj da ovaj izraz zameniš direktno u asm blok (što bi trebalo da radi), pa ako ti ne uspe, onda uradi sledeće: void fn (pera *w) š const boffset = (char*)w->b - (char*)w; asm š les bx, DWORD ptr w; mov al, BYTE ptr es:Šbx+bĆ; ć ć P.S. Identacija ti je užasna - jedva ga pročitah :)
cccc.630 mjova,
> const boffset = (char*)w->b - (char*)w; > asm š les bx, DWORD ptr w; > mov al, BYTE ptr es:Šbx+bĆ; > ć upravo si uradio nešto što se ne može uraditi ;) i ono od čega sam hteo da pobegnem. osnovni razlog za pitanje je to što mi izvesna funkcija treba u čistom asm-u (dakle, *.asm) i tamo nema (char*) (mada se rešava sa ˙byte ptr˙). ovo i nije problem, veći je problem što se linija mov al, BYTE ptr es:[bx+b]; prevodi nešto kao mov al, BYTE ptr es:[bx+ [bp-10]] što naravno ne prolazi kroz tasm. u suštini, problem se može rešiti na nekoliko načina, ali ni jedan, za sada, ne odgovara onome što meni treba. umesto one instrukcije sa [bx+??] može se napraviti: add bx, boffset mov al, BYTE ptr es:[bx] ali to nije ono pravo jer je boffset promenljiva (jes da je konstantna, ali se njena vrednost može promeniti indirektno) što znači da to nije "samo vrednost" već se određena memorijska lokacija popunjava njom. može se staviti: les bx, DWORD ptr w; mov al, BYTE ptr es:[w.b]; a to ispadne kao: les bx, DWORD ptr [bp+6] mov al, BYTE ptr es:[[bp+6]+22] e, sad, kako je [bp+6] SEGMENT onda ni to nije ok, već treba da stoji [bp+8]. sad, pošto je o bx registru već [bp+8], onda meni treba samo ona vrednost +22. bljak.
cccc.631 djelovic,
> ali to nije ono pravo jer je boffset promenljiva (jes da je konstantna, > ali se njena vrednost može promeniti indirektno) što znači da to nije > "samo vrednost" već se određena memorijska lokacija popunjava njom. Mislim da ovo nije tačno. Kada bi boffset bilo deklarisano kao recimo const int boffset = ... onda bi to bila promenljiva. Ovako mislim da je│ constů boffset = ... manje-više ekvivalentno sa #define boffset = ... Probaj.
cccc.632 mjova,
prvo, sad sam pogledao svoju poruku i primetih da pitanje nije baš formulisano kako treba, pa da pokušam ponovo. činjenica je da se struktura formira prilikom prevođenja i da svi članovi te strukture uzimaju stalna mesta (ofset u odnosu na prvi član je uvek isti, jel da ;). e, sad, nameće se pitanje zašto to računati uvek tokom izvršavanja ako je to već nešto konstantno? samo se time gubi vreme pri izvršavanju. drugo, provalio sam kako se radi ;) color= w->brdcol; gde je w pointer na izvesnu strukturu, je zapravo: les bx, dword ptr [bp+6] mov al, byte ptr es:[bx+22] mov byte ptr color, al problem kako dobiti broj +22 je sasvim jednostavan, (iz ovog ugla ;). dovoljno je u asm-u pisati: ; les bx, DWORD ptr w; les bx, DWORD ptr [bp+6] ; mov al, BYTE ptr es:[(w PTR bx).brdcol]; mov al, BYTE ptr es:[([bp+6] PTR bx)+22] ; mov BYTE ptr color, al; mov BYTE ptr DGROUP:color, al red: mov al, BYTE ptr es:[([bp+6] PTR bx)+22] se prevodi kao: mov al, BYTE ptr es:[bx+22] što je u osnovi kraj posla. ako se ˙(w PTR bx).brdcol˙ napiše samo kao ˙w.brdcol˙, onda dolazi do greške: ; mov al, BYTE ptr es:[w.brdcol]; mov al, BYTE ptr es:[[bp+6]+22] što je pogrešno jer se to svede na mov al, BYTE ptr es:[bp+28] dakle, (w PTR bx).brdcol je glavna šema!
cccc.633 zzivotic,
> da li neko ima rešenje za sledeći problem: Jesi li probao: mov al, byte ptr es:[bx]pera.b Ako ne radi, vreme je da promeniš kompajler. Recimo MSC 6.0/7.0 ovako nešto savršeno razume ;) Pozdrav, zz
cccc.634 vitez.koja,
Da li je neko uspeo da ulinkuje neki "nezavisni" .chr font u BC program? Ja lepo napravim .obj sa bgiobj, ali linker kaze "fixup error at bla:bla" :((( Upomoc ?!
cccc.635 dcolak,
Ok ljudi pomagajte... Pisah moj CAT.com (obojeni dir) i naiđoh na problem sortiranja po extenziji. Podatke čitam na sl. način: void files(struct find_t *buffer, char *dir, int *num) { struct find_t fileinfo; if ((_dos_findfirst(dir, FILE_ATTR, &fileinfo)) != 0) { *num = -1; } else { *buffer=fileinfo; while (_dos_findnext(&fileinfo) == 0) { ++(*num); ++buffer; *buffer = fileinfo; } } } Kad želim da sortiram po veličini fajlova to radim na sl. način: int comps(struct find_t *buffer1, struct find_t *buffer2) { return((int)buffer1->size - buffer2->size); } A QSORT pozivam sa: qsort(buffer, num, sizeof(struct find_t), comps); E ovde nastaje problem, ako ima manje fajlova u diru onda je sve ok. No ako ih ima više (preko 15) onda su fajlovi sortirani na sl. način: 5 6 7 8 9 10 1 2 3 4 11 12 13 itd.. (ovo su veličine fajlova npr.) No, ako ima još više fajlova od neke granice onda počne toliko dugo da sortira da nikad i ne izađe (možda i završi sort, al ja nemam nerava da čekam).. So, u čemu je problem? BUFFER je definisan sa STRUCT FIND_T *BUFFER; U ZZIVOTIC-evoj skoli C-a je bio primer no BUFFER je definisan sa npr. struct find_t buffer[maxnum]; a to mi ne odgovara, jer ako imam 1000 fajlova onda compiler prijavi grešku tipa niz duži od 64k, no neću ni da probam sa huge modelom.. So, koji je savet, šta da radim da mi lepo sortira? Sledge DAMMIR!
cccc.636 mjova,
> constů boffset = ... > manje-više ekvivalentno sa > #define boffset = ... > Probaj. probah prvo da pogledam help. tamo kaže ovako: In the first version, the const modifier enables you to assign an initial value to a variable that cannot later be changed by the program. For example, const my_age = 39; Any assignments to my_age will result in a compiler error. ■ NOTE: C++ extends const to include classes and member functions. ■ WARNING: A const variable can be indirectly modified by a pointer, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ as in the following: *(int *)&my_age = 35; znam da bi ti voleo da ono const znači (kao u paskalu), ali po svoj prilici u C-u nije takav slučaj :(.
cccc.637 bbizic,
> izvesna funkcija pisana u asm-u treba da pristupa clanovima neke > strukture, ali tako da tokom pisanja programa ne moram da pazima na > redosled i kolicinu memorije koju zauzimaju clanovi pre one kojoj se > obracam. ovo me posebno zanima za slucaj ubacivanja novih clanova. Ovako? ---- aproba.asm ---- pera struc a dw ? b dw ? ends aproba segment word "CODE" ; ; int fn(struct pera* w) ; fn proc C far public C fn arg w: dword les bx,w mov ax,es:bx.b ; Ovo te zanima, zar ne? ret fn endp aproba ends end ---- cproba.c ---- #include <stdio.h> struct pera { int a,b; }; int fn(struct pera* w); void main() { struct pera p; p.a = 1; p.b = 2; printf("%d\n", fn(&p)); }
cccc.638 mjova,
> Jesi li probao: > mov al, byte ptr es:[bx]pera.b probao ;) i napravi ovo: mov al, BYTE ptr es:[bx][bp+6]+2 kakva samrma, sačuvaj me Bože - to izazove tasm-zbrlj ;). ne menjam kompajler ;)
cccc.639 dcolak,
Evo pitam po 2. put: Pisah moj CAT.com (obojeni dir) i naiđoh na problem sortiranja po extenziji. Podatke čitam na sl. način: void files(struct find_t *buffer, char *dir, int *num) { struct find_t fileinfo; if ((_dos_findfirst(dir, FILE_ATTR, &fileinfo)) != 0) { *num = -1; } else { *buffer=fileinfo; while (_dos_findnext(&fileinfo) == 0) { ++(*num); ++buffer; *buffer = fileinfo; } } } Kad želim da sortiram po veličini fajlova to radim na sl. način: int comps(struct find_t *buffer1, struct find_t *buffer2) { return((int)buffer1->size - buffer2->size); } A QSORT pozivam sa: qsort(buffer, num, sizeof(struct find_t), comps); E ovde nastaje problem, ako ima manje fajlova u diru onda je sve ok. No ako ih ima više (preko 15) onda su fajlovi sortirani na sl. način: 5 6 7 8 9 10 1 2 3 4 11 12 13 itd.. (ovo su veličine fajlova npr.) No, ako ima još više fajlova od neke granice onda počne toliko dugo da sortira da nikad i ne izađe (možda i završi sort, al ja nemam nerava da čekam).. So, u čemu je problem? BUFFER je definisan sa STRUCT FIND_T *BUFFER; U ZZIVOTIC-evoj skoli C-a je bio primer no BUFFER je definisan sa npr. struct find_t buffer[maxnum]; a to mi ne odgovara, jer ako imam 1000 fajlova onda compiler prijavi grešku tipa niz duži od 64k, no neću ni da probam sa huge modelom.. So, koji je savet, šta da radim da mi lepo sortira? Sledge DAMMIR!
cccc.640 janko,
> Pisah moj CAT.com (obojeni dir) i naiđoh na problem > sortiranja po extenziji. Podatke čitam na sl. način: > int comps(struct find_t *buffer1, struct find_t *buffer2) > return((int)buffer1->size - buffer2->size); > E ovde nastaje problem, ako ima manje fajlova u diru onda > je sve ok. No ako ih ima više (preko 15) onda su fajlovi > sortirani na sl. način: 5 6 7 8 9 10 1 2 3 4 11 12 13 > itd.. (ovo su veličine fajlova npr.) > So, koji je savet, šta da radim da mi lepo sortira? Za početak, promeni funkciju poređenja. Veličine fajlova su longovi. Ti pročitaš samo int od prvog longa, a drugi long ceo, i onda od proširenog inta u long oduzimaš long pa rezultujući long pretvaraš u int. To se svodi na oduzimanje dva inta. Moram da priznam, to je najčudnija funkcija poređenja koju sam ikada video. NHF? PS. Jesi li čitao neku pravu knjigu o C-u, do sada? Zanima me, jer mi se uklapa u neku raspravicu koju je neko načeo u konf. Računari, ako se ne varam...
cccc.641 dcolak,
│ PS. Jesi li čitao neku pravu knjigu o C-u, do sada? Zanima me, │ jer mi se uklapa u neku raspravicu koju je neko načeo u konf. │ Računari, ako se ne varam... BRIAN W. KERNINGHAN & DENNIS M. RITCHIE Programski jezik C The Waite Group's Quick C Bible Milan Kukrika Programski jezik C DejRanov i još nečiji umetak... ZZivoticeva škola C-a (BTW kupujem računare redovno od 7. broja) Što se tiče funkcije poređenja, bitno mi je samo da li je znak minus ili plus ili 0 :) BTW, Nikad ne bi primetio da mi fajle zagrade :))) znači jedno prosto RETURN ((INT)(BUFFER1->SIZE - BUFFER2->SIZE)); :)) Hvala, tako nešto je stvarno bilo teško primetiti, eeee Marfi ne spava :)) Sledge DAMMIR!
cccc.642 janko,
> Što se tiče funkcije poređenja, bitno mi je samo da li je > znak minus ili plus ili 0 :) > > BTW, Nikad ne bi primetio da mi fajle zagrade :))) > znači jedno prosto > RETURN ((INT)(BUFFER1->SIZE - BUFFER2->SIZE)); > :)) :)))) Mogu da ti zamislim iznenađenje kada otkriješ da i ta tvoja ispravka ne radi. ;) Sada oduzimaš jedan long od drugog, onda od rezultujućeg longa vraćaš donjih šesnaest bita. Kompajler to opet shvata kao int oduzimanje.
cccc.643 mjova,
> Evo pitam po 2. put: mislim da nije potrebno postavljati pitanje dva puta i maltretirati one kojima nije žao što se patiš ;). naročito ako je isto ;). ljudi su dosta zauzeti i mnogi se ne javljaju često. mnogi čak i ne znaju da tebi treba pomoć pa su u idle stanju ;). nulto, koji će ti listanje u boji kad to već ima 4dos interno, a bolje ne može da se napravi? prvo, ovo ovako ne može: return((int)buffer1->size - buffer2->size); em fale zagrade, em to ne radi ;). kastovanjem celog izraza ćeš odseći i po neku bitnu informaciju - kastovanjem se zapravo odseca viša reč, a to znači da se sign bit gubi, odlazi nekud u provaliju ;). ako je taj long ustvari 0x7fffffff onda to (posle kastovanja) nikako neće biti pozitivna vrednost. pa moraš da odsečeš prva dva bajta i da ih oruješ sa druga dva, ali tako da znak ostane samo onaj iz prvog. kad bi ovako uradio, onda u slučaju da je razlika 1000.0000.1000.0000b dobio bi pogrešnu veličinu, tj bilo bi isto da je 1000.0000.0000.0000b. no, ovo i nije neki razlog za muku, već ako je to 0000.0000.1000.0000b eee, to je bleaj koji se po verovatnoći (gotovo) sigurno neće javiti, ali kad pominješ marfija... dodaš jedan mali test pa se to sredi ;). int comps(struct find_t *b1, struct find_t *b2) { asm { les bx, dword ptr b1; mov ax, word ptr es:[bx].size+2; mov dx, word ptr es:[bx].size; les bx, dword ptr b2; sub dx, word ptr es:[bx].size; sbb ax, word ptr es:[bx].size+2; test dx, 0x8000; jz _comps1; shr dx, 1; } _comps1:; asm or ax, dx; } > No, ako ima još više fajlova od neke granice onda počne toliko dugo > da sortira da nikad i ne izađe (možda i završi sort, al ja nemam > nerava da čekam).. drugo, ono što ja vidim odavde je da se vrednost num ne inicijalizuje. možda je inicijalizuješ pre ulaska u files, ali to nije ok jer se (u ovom slučaju) ona mora kompletno popuniti iz te funkcije. dakle, dodaj *num= 0; i sve će da proradi kako treba. mene je zapravo čudilo kako ti je u nekim situacijama ovo i radilo (možda je num globalno definisan ili je static?). treće, da ti prevodilac ne javi pretnje, možeš staviti: typedef int (*cmp)(const void *, const void *); a qsort pozivati sa: qsort(buffer, num, sizeof(struct find_t), (cmp)comps); (i to me čudi kako je prošlo bez patnji, no nema veze ;). četvrto, > U ZZIVOTIC-evoj skoli C-a je bio primer no BUFFER je definisan sa npr. > struct find_t buffer[maxnum]; a to mi ne odgovara, jer ako imam > 1000 fajlova onda compiler prijavi grešku tipa niz duži od 64k, no neću > ni da probam sa huge modelom.. ne znam šta misliš, ali kako ćeš napraviti mesto za te podatke, ako ne alociraš memoriju onda? struktura find_t je dugačka (valjda ;) 43 bajtića. znači da možeš komotno imati 1500 opisa fajlova u memoriji. međutim, ima tu više rešenja, a to je da iz strukture find_t koristiš samo ono što ti treba i time je sa 43 skratiš za bar 21 znak (jer ne znaš čemu služe), pa tako možeš imati skoro 3000 opisa (valjda je dosta?). peto, kad pozivaš findfirst(), onda navedi kao atribut 0xffff da bi bio siguran da će se svi fajlovi pojaviti u listi. (tek da ne pitaš kasnije što mi ne radi ovo ;). šesto, da mene pitaš, koncepcija je pogrešna u ovom programu. sortiranje se obavlja tako što sadržaji dve lokacije zamene mesta. ovo može da potreje (mada ne preterano) ako su kvantovi veći. iz ovih razloga ti predlažem još neku ne prospavanu noć i da imaš 64k pointera na find_t, a da mesto za sam sadržaj alociraš preko farmalloc(). ovo će ti malo promeniti rutinu za upoređivanje i pristup, ali ćeš time dobiti dve stvari: - broj mogućih fajlova će porasti na 16k (64k/4) - qsort će da vrši samo zamenu pointera, a sadržaj struktura će ostati tamo gde je i bio. mesto za sam sadržaj možeš alocirati iz petlje za pravljenje spiska. ovo je još jedan dokaz da sam genije. ;) (koji danas odlazi u learn & page off mod zbog radi više sile. so, so long 2 int ;). cat.c
cccc.644 dcolak,
│ Sada oduzimaš jedan long od drugog, onda od rezultujućeg longa │ vraćaš donjih šesnaest bita. Kompajler to opet shvata kao int │ oduzimanje. Ma možda se nisam dobro odrazio, no meni je potreban samo znak i ništa više!!! Znači -, 0, +... Uopšte mi nije bitna veličina.. BTW, sad radi QSORT no toliko je spor kad ima više fajlova da se vraćam na "ručno" sortiranje :( Sledge DAMMIR!
cccc.645 dcolak,
│ drugo, ono što ja vidim odavde je da se vrednost num ne inicijalizuje. │ možda je inicijalizuješ pre ulaska u files, ali to nije ok jer se (u │ ovom slučaju) ona mora kompletno popuniti iz te funkcije. dakle, dodaj Sa num je sve ok. Sa njim i files funkcijom nisam imao nikakvih problema, samo sam naveo da bi znali način učitavanja. │ predlažem još neku ne prospavanu noć i da imaš 64k pointera na find_t, a │ da mesto za sam sadržaj alociraš preko farmalloc(). ovo će ti malo │ promeniti rutinu za upoređivanje i pristup, ali ćeš time dobiti dve Podatke sam alocirao sa malloc.. A što se tiče zagrada, ex, nisam ni primetio :) Što se tiče sortiranja, ideja je stvarno prosta i nikad je se ne bi setio, so thanx! :) Sledge DAMMIR!
cccc.646 janko,
Turbo Help 3.0 (THELP.COM) koji dolazi uz BC++ 3.0 se nekada čudno ponaša... Pritisnete hot ki, a on ćuti i neće da se pop-apuje. Do rešenja sam došao najčistim hakerisanjem -- disasembliranjem koda koji je zadužen za pop-ap. Taj kod, između ostalog, pogrešno, proverava trenutno stanje INSERT bita! Kada vam se to dogodi, dakle, samo jedan pritisak na taster INSERT će učiniti da pop-ap proradi. Inače, trajno rešenje se postiže sa POKE thelp.com 00b6 0f
cccc.647 janko,
> Ma možda se nisam dobro odrazio, no meni je potreban samo > znak i ništa više!!! > Znači -, 0, +... > Uopšte mi nije bitna veličina.. > BTW, sad radi QSORT no toliko je spor kad ima više fajlova > da se vraćam na "ručno" sortiranje :( Ma, ne radi. Samo si imao sreće da je grupa fajlova sa kojom si probao imala pogodne veličine! Poslušaj savete, inače, što si ih uopšte tražio? Pogledaj Mjovin kod. On daje UVEK ispravan rezultat -- jer i on radi sa SVIH 32 bita oba broja. Ako ti je nejasan, evo ti razumljivijeg, sporijeg, i ISPRAVNOG: int comps(struct find_t *b1, struct find_t *b2) š if (b1->size > b2->size) return +1; else if (b1->size < b2->size) return -1; else return 0; ć A evo ti i C ekvivalenta Mjovinog koda, ako ne govoriš asemblerski: int comps(struct find_t *b1, struct find_t *b2) š long temp; unsigned hi, lo; temp=b1->size-b2->size; lo = temp; hi = temp >> 16; if (lo & 0x8000) lo >>=1; return hi đ lo; ć Naravno, mjovina konstatacija da je je "jeftinije" pomerati samo pointere, a ne alocirane podatke, takođe stoji.
cccc.648 mjova,
> A što se tiče zagrada, ex, nisam ni primetio :) pazi, zagrade *uopšte nisu bitne*, to je pogrešno urađeno od početka. > BTW, sad radi QSORT no toliko je spor kad ima više fajlova > da se vraćam na "ručno" sortiranje :( ma qsort je super brz. proveri ti šta sortiraš i koliko ga ima. ja sam sortirao direktorijum u kome ima 280 fajlova za siću od 0.0208 sekundi. uostalom, evo izveštaja iz profilera: Execution Profile Total time: 3.1909 sec % of total: 99 % Run: 1 of 1 Filter: All Show: Time and counts Sort: Frequency Pass count: +++ Time: *** _main 1 <1% | 2.8497 sec 89% |*************************** _files 1 <1% | 0.3082 sec 9% |** _sort 1 <1% | 0.0208 sec <1% | _comps 7182 99% |++++++++++++++++++++++++++++++ 0.0079 sec <1% | i to, moram priznati da sam prvo sortirao fajlove u opadajućem redu, a zatim pozvao qsort. pretpostavljam da je to najgora varijanta, a onda je trajala smešno vreme i ako je to tako, onda će se 1500 fajlova sortirati za 0.1114 sec, što je izpod svakog kriterijuma. najduže se izvršava 'skupljanje' fajlova sa diska, a bojim se da to legalno nije lako ubrzati. e, da, ovo je sve rađeno sa keširanim diskom (mada to ne utiče na brzinu sortiranja).
cccc.649 dcolak,
│ Ako ti je nejasan, evo ti razumljivijeg, sporijeg, i ISPRAVNOG: Hej, savete sam tražio da bih usporedio i odabrao neki, ne da bi ih poslušao tek tako... Što se tiče sporije varijante, naravno da sam se toga setio, no možda je za sve kriva ZZivoticev-a škola koju sam ja slepo pratio, što će reći ZZivotic je pogrešio, btw, evo njegovog comp-a: ────┬─── │ typedef struct direntry š └─ ne smem da tvrdim :) char filename[14]; long size; <-- Long!? time_t ftim; }; struct direntry dent[MAX_DIRENTRIES]; int lastdent = 0; int compf(struct direntry *d1, struct direntry *d2) { return(int)(d1->size-d2->size); } Ko je kriv? Zanima me. Sledge DAMMIR!
cccc.650 dcolak,
│ ma qsort je super brz. proveri ti šta sortiraš i koliko ga ima. ja sam │ sortirao direktorijum u kome ima 280 fajlova za siću od 0.0208 │ sekundi. uostalom, evo izveštaja iz profilera: Verovatno je brz no kad sortira same pointere a ne i sadržaj, so, daj mu da sortira sadržaj, a ako jesi, onda pojma nemam što je toliko spor... :( Sledge DAMMIR!
cccc.651 mjova,
> Kada vam se to dogodi, dakle, samo jedan pritisak na > taster INSERT će učiniti da pop-ap proradi. e, svašta ;), nego ja se nešto mislim da nađem zakrpu kako bi radio u rezoluciji koja meni treba. ne znam da li ima šanse da se umontira tako nešto ili je ta širina ekrana ukodirana na više mesta. kad već pominješ thelp (u verziji 3.1 radi sasvim dobro), da li možda znaš kako se može ona njegova help datoteka prevesti u običan text?
cccc.652 dekiper,
T>> Chr 2 Obj tako napravljene OBJ-ove moraš sa TLIB ubaciti u GRAPHICS.LIB, pa ih tek onda možeš pozivati!!! (barem tako piše u dokumentaciji koju nemam...)
cccc.653 janko,
> e, svašta ;), nego ja se nešto mislim da nađem zakrpu kako > bi radio u rezoluciji koja meni treba. ne znam da li ima > šanse da se umontira tako nešto ili je ta širina ekrana > ukodirana na više mesta. > > kad već pominješ thelp (u verziji 3.1 radi sasvim dobro), > da li možda znaš kako se može ona njegova help datoteka > prevesti u običan text? Vidiš, da bih ovo iščačkao nije mi trebalo puno vremena -- samo sam instalirao THELP, disasemblirao ono što je zakačeno na onaj int, valjda, 9 i čas posla. Međutim, za ove druge dve stvari, očigledno je da je potrebno znatno više čačkanja. :( Meni je THELP radio sa drugim visinama ekrana, ali nikad nisam probao sa drugim širinama. A što kažeš da ti ne radi, kad ti je u .cfg fajlu 90? (ne mogu da probam, nisam pri kartici) Problem formata THELP datoteke i mene zanima -- ali iz malo drugačijih razloga od tvojih. Ti bi hteo, koliko ja znam ;) da prekonvertuješ THELP u onog naslednika NG, a ja bih voleo da napravim od onog glomaznog help fajla u kome ima i Njindonjs čuda, lepu i slatku DOS-onli verziju. Takođe, voleo bih da napravim i hipertekst verziju JARGON fajla. NG ne radi posao, jer on NIJE hipertekst vjuver. HELPPC jeste, ali ima izuzetno ograničen broj stavki. Treba mi neki bolji. IMA LI NEKO neki HIPERTEKST vjuver i kompajler za njega (ako je potreban), koji može da se izbori sa bar dve hiljade stavki? I, drugo, KO ZNA NEŠTO O THELP FORMATU? Postoje li programi za THELP kompajliranje i THELP dekompajliranje? Molim one koji su dolazili u dodir sa Borlandovim BBS-om (ili, već, bilo čime gde se Borland oglašava) da, ako se sete, malo bace pogled.
cccc.654 janko,
> pratio, što će reći ZZivotic je pogrešio, btw, evo > njegovog comp-a: ────┬─── > typedef struct direntry š └─ ne smem da tvrdim :) > char filenameŠ14Ć; > long size; <-- Long!? > time_t ftim; > ć; > > int compf(struct direntry *d1, struct direntry *d2) > š > return(int)(d1->size-d2->size); > ć > > Ko je kriv? Zanima me. Eto novog momenta. ;) I mene zanima. Koliko je ZZ kriv, toliko si i ti -- što bezrezervno veruješ, a ne razmišljaš. Naveo si toliko knjiga, koje si pročitao, da mi nije jasno da, u trenutku kad si kucao, već nisi posumnjao u to što kucaš! A i posle, kada sam ti skrenuo pažnju, opet nisi bio shvatio. (Dakle, na pogrešnom mestu si primenio ovo: > Hej, savete sam tražio da bih usporedio i odabrao neki, > ne da bi ih poslušao tek tako...) I dalje sam siguran da gornji kod ne radi. Bar ne na C-u koji nije čist 32-bitni ;) tj. ovo radi samo ako je int četvorobajtni, što nije slučaj ni u MSC-u ni u BC-u. Ali, na takovom C-u, nema potrebe ni deklarisati long, u ovakvoj primeni. Druga mogućnost je da pri punjenju size podatka program NE ubacuje veličinu u bajtovima (koju daje findfirst), već je puni nekom vrednošću tako da broj nikad ne prelazi int. Takvim metodom sortiranje postaje "netačno." Ali, onda, čemu deklarisanje long? - * - Za utehu, evo ilustracije kako i Borlandovi programeri brljaju. ;) Tek pošto sam rešio problem sa svojim Thelpom, blagodareći Marfiju, i, posebno, Mjovi, video sam i ispravku baga u verziji BC++ 3.1. Prvo, evo koda sa bagom, u BC++ 3.0: mov ah,byte ptr bios_kbd_flags and ah,8Fh cmp ax,word ptr saved_state jne L_exit Ovde je greška u masci -- šta će programu informacija o Insert stanju, koje je nepredvidljivo, a koju dobija preko najtežeg bita u masci? Samo da ne može da se pop-apuje, pa da muči korisnike. ;) Dok ga nisam disasemblirao, nisam nikako uspevao da zaključim od čega zavisi taj pop-ap. Meni je izgledalo, od mesečeve mene. A i sad mislim, ko, uopšte, ima pojma koje je stanje insert bita? Nijedan program koga ja znam (osim ovog) ga ne koristi! Evo i ispravke baga, u sledećoj verziji: mov ah,byte ptr bios_kbd_flags and ah,7Fh and ah,8Fh cmp ax,word ptr saved_state jne L_exit Ona DVA and imaju isti efekat kao i JEDAN: and ah, 0Fh, (na šta se svodi POKE kog sam dao ;) ) ali je ispravka ipak upravo ovakava! Dva puta brlj za Borland.
cccc.655 janko,
> so, daj mu da sortira sadržaj, a ako jesi, onda pojma > nemam što je toliko spor... :( Zato što je radio sa pogrešnim podacima, sto mu muka! Izgleda, još nisi shvatio šta si mu radio, sa tim skraćivanjem brojeva? Evo jedne ilustracije, šta se, između ostalog, tada događalo: Npr., imaš brojeve A i B. I ti, sa onim zeznutim poređenjem dobiješ jednom A>B. U idućem prolazu porediš B i A. I dobijaš B>A. ;) Dovoljno da ti se Qsort namuči, žešće. Kapito? PS. Ovo me podseti na jedan program, koji je izašao, možda, još u Računarima 1. Zvao se nešto kao "Jive turkey," ako se sećam. Program zamisli broj, ti treba da ga pogodiš, a on ti govori da li je broji koji je zamislio veći ili manji od onog koji otkucaš. Problem je bio, što je program, u tom trenutku, nekada, namerno, LAGAO. E, vidiš, tebi je Qsort igrao "Jive turkey" sa podacima koje si mu pripremio. ;)))
cccc.656 bbizic,
> asm { les bx, dword ptr b1; ... > shr dx, 1; } > _comps1:; > asm or ax, dx; Znači li ovo da ni u BC 3.1 još nisu sredili tu glupost sa labelama u asm {} bloku???? E, to nisu deca, to su ...
cccc.657 vitez.koja,
#=> tako napravljene OBJ-ove moraš sa TLIB ubaciti u #=> GRAPHICS.LIB, pa ih tek onda možeš pozivati!!! (barem #=> tako piše u dokumentaciji koju nemam...) Jos bih ti i poverovao, ali za ona 4 standardna fonta nije potrebno ubacivanje u graphics.lib - linker ih "sažvaće" ;) bez problema. Daklem, jos jednom :(, ko zna kako se linkuju drugi .chr fontovi u .exe (Borland C) ?
cccc.658 dcolak,
│ I mene zanima. Koliko je ZZ kriv, toliko si i ti -- što │ bezrezervno veruješ, a ne razmišljaš. Naveo si toliko knjiga, │ koje si pročitao, da mi nije jasno da, u trenutku kad si kucao, │ već nisi posumnjao u to što kucaš! A i posle, kada sam ti │ skrenuo pažnju, opet nisi bio shvatio. Shvatio sam poentu i sve sredio jednim prostim if :) A što se tiče prekucavanja, nisam ni hteo da pomislim da je ZZivotic wrong, no od sada ;) BTW, za sve je kriv moj drug koji se drznuo da uradi brži DIR od mene, pa se onda ja kao zainatio pa reko da isprobam QSort, sada sve radi kako valja i leti ko ludo :)) │ Dva puta brlj za Borland. BTW, koliko je potrebno da se iskompajlira source od 30K, linkuje sa graphics.lib i sa 5-6 include fajlova, u TC naravno ;) ? Sledge DAMMIR!
cccc.659 dcolak,
│ Zato što je radio sa pogrešnim podacima, sto mu muka! :)))))))))) │ Izgleda, još nisi shvatio šta si mu radio, sa tim skraćivanjem │ brojeva? Evo jedne ilustracije, šta se, između ostalog, tada │ događalo: Ma tada sam bio izbacio long->int itd.. Pa mi je i dalje išlo spooro, naravno zato što sam ja bio glup!!! Imao sam običan sort tipa: for (i=0; i<num; i++) for (j=i+1; j<=num; j++) { switch(order) { case SIZE: // poredi i sortiraj QSORT(... } } .. i u NJEGA SAM UBACIO QSORT!!!! Koja sam ja DILEJA!!! Mora da je zbog škole, totalno me zeznula :)) BTW, hvala na savetima :) Sledge DAMMIR!
cccc.660 mjova,
> Meni je THELP radio sa drugim visinama ekrana, ali nikad > nisam probao sa drugim širinama. A što kažeš da ti ne > radi, kad ti je u .cfg fajlu 90? (ne mogu da probam, nisam > pri kartici) pa on radi za sve visine, ali ne i širine. jednostavno, kad računa sledeći red on se ponaša kao da je na ofsetu 80 od početka tekućeg. tako da se čitanje obično svede na dešifrovanje kineskog pisma. 90 sam u cfg stavio radi probe i tako ostade - nekako mi bilo logično da može, ali on to ignoriše jer je to veća cifra od 80 koliko smatra da je širok ekran. > malo drugačijih razloga od tvojih. Ti bi hteo, koliko ja > znam ;) da prekonvertuješ THELP u onog naslednika NG, a ja > bih voleo da napravim od onog glomaznog help fajla u kome > ima i Njindonjs ma jok, ja bi hteo da neke stvari popravim u originalnom helpu, eventualno raširim tekst (koji je pisan po nekoj levoj margini) i da razdvojim c++ od običnog C-a. što se tiče EH-a, to je moćna stvar, ali nije hyper-text fazon, tako da mi se to ne sviđa. generalno, to rešava mnoge probleme, ali hyper text je mnogo logičniji i bolji. ipak, prebacio sam tekst iz HelpPC-a u .NG, i to radi, ali dok se tu snađeš za neke stvari...
cccc.661 mjova,
> Daklem, jos jednom :(, ko zna kako se linkuju drugi .chr > fontovi u .exe (Borland C) ? vrlo jednostavno. treba da uradiš sledeće: kroz bgiobj preteraš sve fontove i time dobiješ .obj, zatim ih sve tlib-om dodaš u graphics.lib i oni su spremni za upotrebu. možeš ih i direktno ulinkovati u exe pri linkovanju ostalih modula, ali ono sa lib je po meni najbolje rešnje. takođe, ja sam dodao i .bgi u lib i sve je ok. e, sad, tu ima malih problema: u graphics.h nisu definisani svi fontovi koji postoje u verziji 3.1, pa treba izvesti mali zahvat nad tom datotekom. treba dodati nekoliko redova: ───────────────────────────────────────────────────────────── /* !! These "functions" are NOT user-callable, !! */ /* !! they are there just so you can link in fonts !! */ void _Cdecl triplex_font(void); void _Cdecl small_font(void); void _Cdecl sansserif_font(void); void _Cdecl gothic_font(void); void _Cdecl bold_font(void); void _Cdecl euro_font(void); void _Cdecl complex_font(void); void _Cdecl script_font(void); void _Cdecl simplex_font(void); <─────────────────┐ void _Cdecl triplex_scr_font(void); │ │ extern int far _Cdecl triplex_font_far[]; │ extern int far _Cdecl small_font_far[]; │ extern int far _Cdecl sansserif_font_far[]; │ extern int far _Cdecl gothic_font_far[]; │ extern int far _Cdecl bold_font_far[]; │ extern int far _Cdecl euro_font_far[]; │ extern int far _Cdecl complex_font_far[]; │ extern int far _Cdecl script_font_far[]; │ extern int far _Cdecl simplex_font_far[]; │ extern int far _Cdecl triplex_scr_font_far[]; │ ───────────────────────────────────────────────────────────── │ │ potraži u graphics.h i vidi šta fali pa to dodaj. ja sam ovu izmenu │ napravio pre nekog vremena i sad se ne sećam šta sam tačno radio. │ │ dalje, kad treba da taj font koristiš iz .exe, onda moraš │ 'registrovati' i veznik i font. nekako ovako: │ │ ˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙ │ Error(registerbgidriver(EGAVGA_driver)<0); │ │ InputFont= registerbgifont(simplex_font); >─────────────────────┘ Error(InputFont<0); ˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙˙ kasnije, ovaj font upotrebljavaš tako što navodiš ˙InputFont˙ kao tip fonta. pazi, ovo ˙RADI˙ 100% ;)
cccc.662 mjova,
> Znači li ovo da ni u BC 3.1 još nisu sredili tu glupost sa > labelama u asm {} bloku???? E, to nisu deca, to su ... da :(( to je bila prva stvar koju sam pokušao na novoj verziji.
cccc.663 janko,
> BTW, koliko je potrebno da se iskompajlira source od 30K, > linkuje sa graphics.lib i sa 5-6 include fajlova, u TC > naravno ;) ? Moram da te obavestim da se include fajlovi NE linkuju. Sve manje verujem da si ti sve ono pročitao. ;> Inače, ne razumem pitanje. Zašto koliko? Jako malo.
cccc.664 janko,
> Jos bih ti i poverovao, ali za ona 4 standardna fonta nije > potrebno ubacivanje u graphics.lib - linker ih "sažvaće" > ;) bez problema. Daklem, jos jednom :(, ko zna kako se > linkuju drugi .chr fontovi u .exe (Borland C) ? Isto kao ona četiri standardna. Ako si njih uspeo da ulinkuješ, i ostali se SKORO isto tako linkuju. Pogledaj malo help fajl -- tamo sve piše, (registerbgifont) osim ako imaš BC stariji od 2.0. Drugo mesto koje treba da gledaš je GRAPHICS.H. Tamo bi bilo korisno da dodaš par redova sa tim fontovima koji nisu "ona četiri," onako kako je urađeno za "ona četiri," ako već nemaš verziju koja ionako podržava ne "ona četiri" već "onih devet." BTW, tačno je da ne moraju da se trpaju u .LIB. Mogu da se samo pretvore u .OBJ.
cccc.665 dcolak,
│> BTW, koliko je potrebno da se iskompajlira source od 30K, │> linkuje sa graphics.lib i sa 5-6 include fajlova, u TC │> naravno ;) ? │ │ Moram da te obavestim da se include fajlovi NE linkuju. │ │ Sve manje verujem da si ti sve ono pročitao. ;> Sto mu đavola pa ti si BAŠ preterao!!!! Da sam pročitao, pročitao sam! A to što sam zaboravio da navedem '5-6 include fajlova' pre reči linkuje to se može nazvati lapsusom kucanja u toku smišljanja onoga što oću da napišem. Tek nakon reči graphics.lib sam se setio i da navedem broj #include-a, a ne volim da prepravljam već otkucano.... Odakle sva ta negativna energija??? :(((((( │ Inače, ne razumem pitanje. Zašto koliko? Jako malo. Kad pitam koliko je potrebno, očekujem da mi odgovore bar u sekundama, no hvala, ni ne očekujem odgovor. A pitao sam jer mi drugar reče da TC brže kompajlira od MSC... Uh bre, baš si me iznervirao :((( Sledge DAMMIR!
cccc.666 vitez.koja,
#=> Isto kao ona četiri standardna. Ako si njih uspeo da #=> ulinkuješ, i ostali se SKORO isto tako linkuju. Pogledaj #=> malo help fajl -- tamo sve piše, (registerbgifont) osim Aman ljudi :( ovako je bilo : sve ide lepo do linka, onda izjavi "fixup error at xx:xx" i gotovo... Nisam jos probao ovo sto predlazete mjova i ti (probacu cim izadjem iz sora:) al' mi nekako ne lici :)
cccc.667 bulaja,
│KO ZNA NESTO O THELP FORMATU? Postoje li programi za THELP │kompajliranje i THELP dekompajliranje? Molim one koji su │dolazili u dodir sa Borlandovim BBS-om (ili, vec, bilo cime gde │se Borland oglasava) da, ako se sete, malo bace pogled. └─── Poslednji put kad sam bacio pogled, na Borland BBS-u nije bilo niceg slicnog :(.
cccc.668 janko,
> Aman ljudi :( ovako je bilo : sve ide lepo do linka, onda > izjavi "fixup error at xx:xx" i gotovo... Nisam jos probao > ovo sto predlazete mjova i ti (probacu cim izadjem iz > sora:) al' mi nekako ne lici :) Aaaa, pa to je prosto: ako ti se samo zbog toga bunio, probio si famoznu 64K granicu -- hoćeš mnogo fontova u istom programu. :) Da bi to izveo, na strateškim mestima umesto registerbgifont ubacuješ, registerfarbgifont a isto i registerbgidriver svuda menjaš u registerfarbgidriver i obavezno koristiš lardž model. I ima da fercera. :)
cccc.669 janko,
> Kad pitam koliko je potrebno, očekujem da mi odgovore bar > u sekundama, no hvala, ni ne očekujem odgovor. A pitao sam > jer mi drugar reče da TC brže kompajlira od MSC... Odgovor, u sekundama, jednostavno, nema smisla, jer zavisi od strukture programa koji se prevodi, a pogotovu od mašine na kojoj se prevodi. Istina je da TC brže prevodi od MSC. Ako je nekom najbitinija brzina prevođenja, i ne treba mu C++, ne znam brži prevodilac od starog TC 2.01. MS C prevodioci su sporiji i glomazniji, ali imaju bolju optimizaciju generisanog koda od Borlandovih. Sećam se da me je svojevremeno naročito "dojmio" jedan, ne tako važan, detalj: if (a==-1) kada a dovede u AX, BC (čak i 3.0) prevodi kao: CMP AX,FFFFH a MSC (već verzija 5) kao INC AX. Kao pravi asemblerski programer. Inače, ovaj metod optimizacije je jedan od najjednostavnijih -- daleko komplikovanije za realizaciju, i daleko kvalitetnije, optimizacije su one koje treba da optimizuju korišćenje registara na većem delu koda itd. Ja sam na BC-u, pre svega, zato, što u doba kad je Borland imao C++ kompajler, MS nije, Borlandovi kompajleri su manje zahtevni (starije verzije) i Borland još uvek bolje prati promene C++ standarda od MS-a. > Uh bre, baš si me iznervirao :((( Slušaj, to da neki pričaju o "linkovanju .H fajlova" nije nova u cccc temi -- možeš da proveriš i sam, čitajući stare poruke. Jednostavno sam pomislio "evo ga još jedan." Kao što rekoh, NHF. Svako nek smiruje sopstvene živce. :) ("a taman sam ostavio piće" - Ima li pilota u avionu)
cccc.670 vitez.koja,
#=> I ima da fercera. :) Zahvaljujem, dobri covece :)
cccc.671 dusanp,
Uzeo ja da cackam pre neki dan nesto u c-u. I, sta cu, pocnem da radim u msc-u 5.0 (ili bese 5.1?) jer me muka naterala na taj ocajnicki korak - to je zvanicni jezik firme. E, sad, pocnem da trazim funkciju za pozicioniranje kursora (sto se u BCu zove gotoxy()). Ispostavi se da MSC NEMA FUNKCIJU ZA TO :>>>> Jel ova izuzetno mocna funkcija koju sam morao da pisem koristeci pozive biosa dodata novijim msc verzijama 6 i 7? Jer ako nije, onda je stvarno smejurija. I jos me ljudi iz firme gledali cudno "pa normalno da nema, a sta ce ti to?" Sad nisam siguran sta ce mi sledece zatrebati, a msc nece znati za to? Otvaranje fileova? Rad sa tastaturom? ...? ;>
cccc.672 dekiper,
>> MSC nema gotoxy()? Ja do sada nisam radio sa MSC-om, ali ovo ipak znam. MSC ima funkciju _settextposition() koja uradi identičnu stvar koju i gotoxy(). Definicija funkcije je: struct rccoord far _settextposition(short row, short column); gde je struct rccoord: struct rccoord š short row; short column; ć; posle poziva, ona postavlja kursor na poziciju row i column, a u gore pomenutu strukturu će upisati poziciju na kojoj je bio kursor pre pozivanje ove funkcije... Pozdrav, Deki
cccc.673 dcolak,
│ Istina je da TC brže prevodi od MSC. Ako je nekom najbitinija │ brzina prevođenja, i ne treba mu C++, ne znam brži prevodilac │ od starog TC 2.01. Fvala, to mi je trebalo, no ne verujem da ću napustiti tandem QEdit, MSC :) │ Kao što rekoh, NHF. Svako nek smiruje sopstvene živce. :) ("a │ taman sam ostavio piće" - Ima li pilota u avionu) New Hardcode Fucker? (No hard feelings ;)) Zahvaljujem na informacijama :) Sledge DAMMIR!
cccc.674 dcolak,
│ kursora (sto se u BCu zove gotoxy()). Ispostavi se da │ MSC NEMA FUNKCIJU ZA TO :>>>> Možda, _settextposition(x,y) ? Sledge DAMMIR!
cccc.675 dekiper,
Zašto ovo ne radi? Kompilovao sam sa Microsoft C-om 5.00 i kompilovanje prođe ok. Porgram treba da iskopira 2 fajla jedan u drugi, a oni se prenose iz komandne linije npr: kopi fajl1.dat fajl2.dat Problem je što program odbija da otvori izlazni fajl... HELP! Pozdrav, Deki kopi.c
cccc.676 peca.st,
!-> Zašto ovo ne radi? Kompilovao sam sa !-> Microsoft C-om 5.00 i kompilovanje prođe !-> HELP! Hm ako bi probao da kompajliraš program, umesto da ga kompiliraš, možda bi uspelo, ovako teško. Peđa. P.S. Morao sam, NHF. ;)
cccc.677 robert,
E, proveri da li ima nekih dodatnih flegova pored W_ONLY, nešto u stilu CREATE ili sl. što će usloviti istovremeno kreiranje izlazne datoteke. On sada verovatno pokušava samo da otvori datoteku za pisanje ali nje nema...
cccc.678 paki,
­> Hm ako bi probao da kompajliraš program, umesto da ­> ga kompiliraš, možda bi uspelo, ovako teško. On nije probao da kompilira, već da kompiluje :)
cccc.679 dr.grba,
>> On nije probao da kompilira, već da kompiluje :) A tek što prevodi, milina jedna (((:
cccc.680 dekiper,
>> Zašto ovo ne radi... ? Pa, evo da odgovorim na svoju poruku... Funkcija _dos_open će OTVORITI fajl za upis, a neće ga kreirati, kao druge klasične naredbe (fopen). Potrebno je pre poziva _dos_open pozvati _dos_creat..., pa tek onda bilo šta raditi dalje. Ovo nisam znao, ali sam provalio posle 10 minuta buljenja u HELP, inače sam lupao glavu celo veče. P.S. Neka bude u svesti, uvek...
cccc.681 spantic,
Je li borlandovci, nešto vam Borland mlogo često izdaje prevodioce ;) Već ste dogurali do BC/C++ 4.0 Ne zezam se. Ozbiljno :)
cccc.682 dr.grba,
>> Je li borlandovci, nešto vam Borland mlogo često izdaje prevodioce >> ;) Već ste dogurali do BC/C++ 4.0 Opšte poznata stvar je da Borland ne spava na lovorikama, nego radi i gura napred.
cccc.683 dekiper,
>> Borland C++ 4.0 Koliko ja znam, ovako nešto ne postoji... Možda i grešim... Pozdrav, Deki
cccc.684 robert,
>> Ovo nisam znao, ali sam provalio posle 10 minuta buljenja u HELP, >> inače sam lupao glavu celo veče. Pa to sam ti i napisao u prethodnoj poruci!!! Ne znam kako nisi video... valjda on onih što su te zezali ;))).
cccc.685 debelijencija,
> Već ste dogurali do BC/C++ 4.0 Hm, pa zar nije Microsoft dogurao do MSC/C++ 7.0? Ko tu vrši hiperprodukciju prevodilaca? Uzgred, to se piše BC++ 4.0. P.S. Da l' neko možda ima opis fajla u HPGL formatu? (.PLT) Pravim neki program a od mene se traži da dajem upravo ovakav izlazni fajl. Ako neko možda ne zna to je fajl koji se šalje HPovim laserjetovima. Bio bih vrlo zahvalan toj dobroj duši koja bi mi tako nešto poslala bilo na mail, bilo ovdi...
cccc.686 maksa,
<><> P.S. Da l' neko možda ima opis fajla u HPGL formatu? (.PLT) Pravim neki <><> program a od mene se traži da dajem upravo ovakav izlazni fajl. Ako neko Imam knjigu, mailni me da se dogovorimo. Druga solucija bi bila da dobijene vrednosti iz tvog prg. baciš u GNUPLOT (obešen negde u nekoj conf) i odande izvezeš crtež kao HPGL. Uzgred, 'de nađe ovu temu? :)
cccc.687 mjova,
u fajliću okačenom uz ovu poruku nalazi se modul koji služi da brojni niz pretvori u slovni. tako nešto je napisao (za kliper) nbatocanin, pa kome treba nek uzima. autor je Saša Stojiljković brojrec.arj
cccc.688 spantic,
>>> Borland C++ 4.0 > Koliko ja znam, ovako nešto ne postoji... Već sam pročitao na USENETu, išlo je kao najava. Valjda bi trebalo da idu i detalji.
cccc.689 bulaja,
**** new file **** R:\IBMPC\C\*.* ---------------------- actlib14 zip 70933 Lib raznih f() za C (date, string, tools) - source version 1.4: ----------- - function test_drive (TOOLS.LIB) completely re-written. version 1.3: ----------- ** Turbo-Vision library TVTOOLS has been removed from this package. ** It is now available as TVTOOL13.ZIP and includes ACTLIB13.ZIP - macros 'nodebug()' in NODEBUG.H to disable debugging of a program - Bug correction in recursexp (REGEXP.C - STRINGS.LIB) forgot some 'free' - Bug correction in str(n)comp (COMP.C/NCOMP.C - STRINGS.LIB) UPPER was hard-coded (to a wrong value!) - Bug correction in vollabel (TOOLS.LIB) suppress '.' from volume label - function is_drive_ready() replaced by test_drive() to enhance functionalities (added a macro 'is_drive_ready()' for compatibility) - change in fnreduce (TOOLS.LIB) to increase compatibility with Microsoft.
cccc.690 bulaja,
**** new file **** R:\IBMPC\C\*.* ---------------------- tvtool14 zip 145376 Turbo Vision Tools Library v1.4 (source) This package contains several libraries and their source code. Some functions are quite complex, some other are very trivial but may be useful just to centralize frequently called functions (and so allows to coherently propagate modifications). This library is dedicated to TurboVision but it contains a lot of general-purpose functions (string handling functions, low-level tricks of MS-DOS,...). If you are interesting in using it without TurboVision, it is available as a separate (smaller) package ACTLIB. This should be located in the C directory of the server where you downloaded TVTOOLS from.
cccc.691 janko,
> Već ste dogurali do BC/C++ 4.0 Borland pravi BC++ a ne BC/C++. To "kroz" je MS-ova fora. Inače, činjenica da je verzija nova ne znači da je u prošloj bilo grešaka, već ljudi brže prate standarde: Već BC++ 3.1 je imao cfront 3.0 kompatibilnost, a MSC/C++ 7.0 je po cfront 2.1 standardu. Već BC++ 2.0 je držao cfront 2.1 nivo, u vreme dok MSC nije ni pominjao da će ikada napraviti C++ kompajler.
cccc.692 janko,
> u fajliću okačenom uz ovu poruku nalazi se modul koji > služi da brojni niz pretvori u slovni. tako nešto je > napisao (za Brojni NIZ? Slovni niz? ;) Precizna terminologija, nema šta. ;>>
cccc.693 dr.grba,
>> ....Već BC++ 2.0 je držao cfront 2.1 nivo, u >> vreme dok MSC nije ni pominjao da će ikada napraviti C++ kompajler. Eto, dok Microsoft programeri igraju odbojku po hodnicima u donjem vešu, dotle Borlandova ekipa sedi i radi (;
cccc.694 muaddib,
Zdravo svima, imam jedan mali(velkiki) problem sa MS Visual C++. Elem, radim na programu za MS Windows, i sve je bilo u redu dok nisam odlucio da izvrsim neke izmene i da ga prebacim iz cistog C koda u C++ kod. E, tu nastaju problemi. Kada deklarisem neku windows klasu npr. WNDCLASS wndclass; wndclass.lpfnWndProc = WndProc; prilikom kompajliranja dobijem sledecu poruku no conversion from 'long (__far __pascal *)(unsigned int ,unsigned int ,unsigned short ,long )' to 'long (__far __pascal *)(unsigned int ,unsigned int ,unsigned int ,long )' Funkcija WndProc je naravno definisana kao: long FAR PASCAL WndProc(HWND, unsigned, WORD, LONG); Sad dolazi ono najinteresantnije. Uzeo sam moj drugi program koji sam bez problema prekompajlirao, i potom mu promenio ekstenziju sa .C na .CPP i bez ikakvih izmena u kodu (samo promena ekstenzije) ponovo pustio kompajliranje. Pogodite sta se desava. Tacno, kompajler je ponovo prijavio istu gresku. Da li neko zna u cemu je problem. Napominjem da nemam dokumentaciju za MSVC u kojoj je verovatno sve objasnjeno. Pera
cccc.695 dgrbic,
:: Već ste dogurali do BC/C++ 4.0 :: Ne zezam se. Ozbiljno :) Hmmmm :) Bilo bi interesantno čuti nešto o ovome, posebno zato što su već napravili pravi 32-bitni kompajler za OS/2.
cccc.696 djelovic,
> prilikom kompajliranja dobijem sledecu poruku > no conversion from > 'long (__far __pascal *)(unsigned int ,unsigned int ,unsigned short ,long )' > to 'long (__far __pascal *)(unsigned int ,unsigned int ,unsigned int ,long ) C++ za razliku od C-a ima jaku proveru tipova, pa tako funkciji koja recimo prima int* ne možeš poslati long*. U tvom slučaju pogledaj kako je u strukturi WNDCLASS deklarisan pointer na funkciju lpfnWndProc, pa i ti tako deklariši svoju funkciju WndProc. Razlika je, čini mi se, u trećem parametru, tj. unsigned short <-> unsigned int.
cccc.697 nkbog,
> 'long (__far __pascal *)(unsigned int ,unsigned int ,unsigned short,long )' > to 'long (__far __pascal *)(unsigned int ,unsigned int ,unsigned int,long)' Sasvim je moguće da C++ odbija da izvrši implicitni kast (cast) od short na int, jer to u osnovi i nisu istotipni podaci. žini mi se da sam i ja im'o slične randevue sa MS C/C++. Po tome kako si ti napisao sledi da treći parametar, (koji je WPARAM, odnosno WORD tipa) može (na 32 bitnoj mašini - NT, OS/2) da bude i 32 bitan, a ne sme. Sme da bude samo short. Ja bih ti preporučio da koristiš WINDOWSX.H zaglavlje, a svuda koristiš zvanične tipove promenljivih: - kada se vraća long iz potprograma: LRESULT - kada se prosleđuje parametar WPARAM, LPARAM, - ako ti ustreba neoznačeni ceo broj, UINT, nikako WORD. Dakle u tvom primeru: > Funkcija WndProc je naravno definisana kao: > long FAR PASCAL WndProc(HWND, unsigned, WORD, LONG); stavi LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); NB.
cccc.698 bulaja,
**** new file **** R:\IBMPC\C\*.* ---------------------- snip0493 arj 162332 C-snippets 04/93, zbirka raznih C funkcija (source) #1 snip0493 a01 160019 C-snippets 04/93, zbirka raznih C funkcija (source) #2 Uz poruku je prikacen spisak svih funkcija u ovoj verziji Snippets-a, sa napomenama sta je izmenjeno od prosle verzije. snippets.arj
cccc.699 dcolak,
Pozdrav! Jel zna neko kako da učitavam samo fajlove sa _A_SYSTEM atributom? Koristim _dos_findfirst(dir, FILE_ATTR, &fileinfo) i nikako ne mogu da ga nateram da cita samo _A_RDONLY.. :)) Znam da je to lako za vas zato pomagajte ;) Sledge DAMMIR!
cccc.700 debelijencija,
> C++ za razliku od C-a ima jaku proveru tipova, pa tako funkciji > koja recimo prima int* ne možeš poslati long*. U tvom slučaju Jes' to je tačno. Ali mi nije jasno što? Da li neko ima logično objašnjenje? Uzgred, to je jedan od glavnih razloga zbog kojih sam, zasad, batalio C++.
cccc.701 djelovic,
> Koristim _dos_findfirst(dir, FILE_ATTR, &fileinfo) i nikako > ne mogu da ga nateram da cita samo _A_RDONLY.. :)) Funkcije findfirst/findnext ne mogu se naterati da čitaju *isključivo* fajlove sa nekim atributom, već one čitaju "normalne" fajlove + one sa atributima koje ti navedeš. Recimo ako mu daš A_DIRECTORY (ili kako se to već zove na MSC-u koji, ako se ne varam, koristiš?), on će učitavati fajlove *i* direktorijume. Ono što ti treba da uradiš jeste jedno: if (fileinfo.attrib & A_RDONLY) za svaki fajl i time utvrdiš da li je onaj koji tebi treba.
cccc.702 djelovic,
> Jes' to je tačno. Ali mi nije jasno što? Da li neko ima logično > objašnjenje? Uzgred, to je jedan od glavnih razloga zbog kojih sam, > zasad, batalio C++. Striktnost pri proveri tipova se smatra za vrlinu kod jezika, jer ubija one hard-to-find bube. Dalje, ona je u objektno-orijentisanim jezicima neophodna jer, šta bi se desilo da neko umesto int-a pošalje neku klasu? Ne znam koliko si C++ devica :), pa ne znam koliko me razumeš, ali ako hoćeš reci, pa da smislimo neki mali primer?
cccc.703 robert,
>> Jes' to je tačno. Ali mi nije jasno što? Da li neko ima logično >> objašnjenje? Pa jel bi ti, kad bi pravio džem od kajsija, u lonac trpao i višnje i jabuke i breskve...???
cccc.704 robert,
>> Znam da je to lako za vas zato pomagajte ;) Ma moraš sve da učitaš pa da dalje u programu filtriraš šta ti treba. To ti je isto kao i sa direktorijumima, ne možeš samo njih da čitaš već moraš sve pa onda if...
cccc.705 mjova,
>> C++ za razliku od C-a ima jaku proveru tipova, pa tako >> funkciji koja recimo prima int* ne možeš poslati long*. U >> tvom slučaju > Jes' to je tačno. Ali mi nije jasno što? Da li neko ima > logično objašnjenje? jedan od razloga je sigurno preopterećivanje operatora i više različitih funkcija istog imena (različitih parametara).
cccc.706 mjova,
> Znam da je to lako za vas zato pomagajte ;) nikako ti dos ne može vratiti samo fajlove koji imaju dati atribut. o tome sam pisao ovde po conf relativno skoro (mesec-dva). ako želiš da dobijaš fajlove samo jednog atributa onda moraš sam srediti svoje funkcije. naime, u pozivu findfirst moraš navesti da hoćeš sve fajlove (0xFFFF), a pre upotrebe prvo im moraš proveriti atribute, pa tek onda da deluješ. predlažem ti da napraviš svoje funkcije za findfirst/next koje će raditi ispravno.
cccc.707 dcolak,
│ if (fileinfo.attrib & A_RDONLY) │ │ za svaki fajl i time utvrdiš da li je onaj koji tebi treba. Ali to mi je spooro :( BTW, zašto onda radi _A_VOLID što mi izda samo volume label? :( Baš šteta, znači mora da se komplikuje :( Sledge DAMMIR!
cccc.708 dcolak,
│ predlažem ti da napraviš svoje funkcije za findfirst/next koje će │ raditi ispravno. Da, da, i onda će program preći 35K EXE-a :((( :) Sledge DAMMIR!
cccc.709 dcolak,
│ Ma moraš sve da učitaš pa da dalje u programu filtriraš šta ti │ treba. To ti je isto kao i sa direktorijumima, ne možeš samo njih da │ čitaš već moraš sve pa onda if... BTW, u QuickC Bible piše da se findirst koristi sa _A_XXXX da bi čitao samo fajlove datog atributa! Sledge DAMMIR!
cccc.710 debelijencija,
> Striktnost pri proveri tipova se smatra za vrlinu kod jezika, > jer ubija one hard-to-find bube. Dalje, ona je u > objektno-orijentisanim jezicima neophodna jer, šta bi se desilo > da neko umesto int-a pošalje neku klasu? Ne znam koliko si C++ > devica :), pa ne znam koliko me razumeš, ali ako hoćeš reci, pa > da smislimo neki mali primer? Pa je l' to znači da je C jezik bez vrlina? :) Meni je lepo kad mogu intu da dodelim char, a da ne mislim šta će da bude i da se ne bakćem sa pisanjem posebnih funkcija. Ne razumem se baš u teoriju prog.jezika, ali je ta osobina C-a zgodna i kod pointera (void pointer dodeliš npr. int pointeru, i svima lepo). Umesto inta klasu? čurka, verovatno! :) Ali što da ne pointer na klasu? To mi nije jasno. Dakle, ne kao u C-u, radi šta hoćeš, nego radi šta možeš. Koliko znam C++? Malo. Probao sam jednom nešto, a onda me je dočekala gomila errora zbog dodela, pa sam ga batalio. Kad nađem vremena, pokušaću da ga prostudiram, da vidim da li je prelaženje na isti vredno ili ne. Pa, ne znam koliko bi primer pomogao, ali ako još nekog zanima, što da ne? Tj. ako imaš vremena i živaca :). Ako je samo zbog mene, nije neophodno, snaći ću se ja i sam :).
cccc.711 debelijencija,
> Pa jel bi ti, kad bi pravio džem od kajsija, u lonac trpao i > višnje i jabuke i breskve...??? Ah, to mi je omiljena tema! Vidi, u džem od kajsija (jedan od najboljih :), možeš da trpaš i jabuke i breskve (radi arome). žak je malo jabuka i poželjno! Ali za višnje ga malo pretera! To bi bilo kiselo u ... :) Ozbiljno. Pa tako nešto C dozvoljava. A C++ je nastao od C-a.
cccc.712 debelijencija,
> jedan od razloga je sigurno preopterećivanje operatora i više > različitih funkcija istog imena (različitih parametara). Za ovo prvo mi nije baš najjasnije, ali za drugo se slažem. Na to, vidiš, nisam ni pomislio :).
cccc.713 mjova,
>│ predlažem ti da napraviš svoje funkcije za findfirst/next >│ koje će raditi ispravno. > Da, da, i onda će program preći 35K EXE-a :((( :) pa ako ti to pođe za rukom, onda bre zaboravi C, a i programiranje komplet ;). zar je problem da uradiš nešto ovako: // ╔════════════════════════╗ // ║ 18/06/1993 - mjova ║ // ╚════════════════════════╝ #include <stdio.h> #include <dir.h> #include <dos.h> static int attr; // vidljivo samo u ovom modulu //---------------------------------- int ff(const char *pathname, struct ffblk *ffblk, int attrib) { int ret; attr= attrib; ret= findfirst(pathname, ffblk, 0xffff); if(ret) return(ret); // ovaj uslov može da bude i // if((ffblk->ff_attrib & attr) == attr) // da bi dobio samo one fajlove koji imaju setovane SVE // potrebne atribute (a i dole) if(ffblk->ff_attrib & attr) return(ret); do { ret= findnext(ffblk); if(ffblk->ff_attrib & attr) return(ret); } while(!ret); return(ret); } //---------------------------------- int fn(struct ffblk *ffblk) { int ret; do { ret= findnext(ffblk); if(ffblk->ff_attrib & attr) return(ret); } while (!ret); return(ret); } //---------------------------------- int main(void) { struct ffblk ffblk; int done; printf("Directory listing of *.* and FA_RDONLY | FA_HIDDEN\n"); done = ff("*.*", &ffblk, FA_RDONLY | FA_HIDDEN); while (!done) { printf(" %s\n", ffblk.ff_name); done = fn(&ffblk); } return 0; } //---------------------------------- ovo lepo optimizuješ i dobiješ univerzalne funkcije koje rade lepo, brzo i tačno ;). no, postoji jedan problem, ti radiš na MSC-u, pa imaš urođenu odbojnost prema svemu što nije MSC. ipak, sačuvaj ovaj kod, može ti doneti kolor tv ;).
cccc.714 paki,
­> Ozbiljno. Pa tako nešto C dozvoljava. A C++ je nastao od C-a. Pa evolucija čini svoje :)))
cccc.715 robert,
>> Ozbiljno. Pa tako nešto C dozvoljava. A C++ je nastao od C-a. Znam ja da to C dozvoljava ali C++ je "bolji C" kako vole da ga zovu njegovi stvaraoci i zagovornici (pa i ja ;). Uostalom, djelovic ti je već objasnio u grubim crtama o čemu je reč, tj. o strogoj proveri tipova podataka koji se prenose kao argumenti po funkcijama. To ti pomaže da se neke greške u startu onemoguće, da postaneš disciplinovan programer koji vodi računa o svom kodu i ne brka babe i žabe pa onda i sam kompajler kod preopterećenih (overloaded) funkcija (ili operatora) ne bi znao koju funkciju da odabere jer se biranje upravo vrši na osnovu tipova argumenata. Uostalom, skini sa Sezama CPPTUTOR (u C diru) a možeš i FAQCPP (frequently asked questions about C++) ili tako nekako. Prelistaj C direktorijum ovde pa ćeš već naći ove datoteke.
cccc.716 dcolak,
│ pa ako ti to pođe za rukom, onda bre zaboravi C, a i programiranje │ komplet ;). Ma štos je u tome da je DIR naredba duga oko 29K, a ja oću da tako i ostane, kad već nije manje :) Hvala za primer, to sam i sam uradio, no jednostavno sam mislio da može lakše jer mi drug reče da to u TP radi... │ ovo lepo optimizuješ i dobiješ univerzalne funkcije koje rade lepo, │ brzo i tačno ;). no, postoji jedan problem, ti radiš na MSC-u, pa │ imaš urođenu odbojnost prema svemu što nije MSC. ipak, sačuvaj ovaj │ kod, može ti doneti kolor tv ;). Ex, slučajno videh ovaj deo poruke, i tedoh da primetim da to NIJE MSC :))) No, uradiću tako nešto ;) Sledge DAMMIR!
cccc.717 ppekovic,
>> predlažem ti da napraviš svoje funkcije za findfirst/next koje će >> raditi ispravno. Postojeće rade ispravno, tj. upravo onako kako je dokumentovano. Paya
cccc.718 mjova,
> >> predlažem ti da napraviš svoje funkcije za findfirst/next koje će > >> raditi ispravno. > Postojeće rade ispravno, tj. upravo onako kako je > dokumentovano. ajde, ajde pajo, ne budi dosledan ;), znaš ti šta sam ja mislio. rade one ispravno, ali nelogično (bar na prvi pogled). dakle, umesto reči 'ispravno' stavljam reč 'logično'. jel to ok? ;)
cccc.719 dgrbic,
:: BTW, u QuickC Bible piše da se findirst koristi sa :: _A_XXXX da bi čitao samo fajlove datog atributa! Piše... Piše i u Ustavu da je Srbija demokratska. Ono za QuickC će biti mala nepažnja pisca. A ono za Ustav?
cccc.720 dnikolic,
Video sam da u BC postoji funkcija koojom mogu da pamtim datume kao broj sekundi proteklih od 01.01.1970. godine (time). E sad, ne mogu da nadjem koja funkcija taj broj pretvara u "normalan" datum. Zna li neko koja funkcija obavlja taj posao? dn
cccc.721 mjova,
> mogu da nadjem koja funkcija taj broj pretvara u > "normalan" datum. Zna li neko koja funkcija obavlja taj > posao? unixtodos & dostounix
cccc.722 janko,
Imamo više od 1M na pločama, a ne koristimo ih, kako bismo mogli. Koji kompajleri za C umeju da generišu programe u protektid modu (tj. da naprave programe koji rade sa memorijom iznad 1M kao da je najobičnija memorija?) Da li to može da uradi MSC/C++ 7.0 ? Borlandovi to ne umeju. Ko je koristio kompajlere drugih proizvođača? Zanima me koliko su ti, koji to mogu, upotrebljivi (npr. imaju li gotove grafičke biblioteke?). I, naravno, koji su.
cccc.723 dejanr,
>> Koji kompajleri za C umeju da generišu programe u protektid >> modu (tj. da naprave programe koji rade sa memorijom iznad 1M >> kao da je najobičnija memorija?) High C. Radi jako lepo, memorija je stvarno linearna (a čak može da bude i mnogo veća od RAM-a, ako se koristi disk kao virtuelna memorija, naravno uz određeno usporenje). Mada, nedostaje mu ono bogatstvo funkcija Microsoft i Borland C-a, dođe više kao neki "običan" C. Bar u verziji koju sam ja video.
cccc.724 albor,
Da li ima korisnika 'Vermont Views'-a i u kakvom susedstvu oni rade: koja baza podataka i sl. Za radozlane da pomenem da je reč o C biblioteci sa preko 550 funkcija koja služi prevashodno za pravljenje korisničkih interfejsa. Postoje verzije za MSDOS, UNIX, OS/2, XENIX, VMS, ... ukratko zvuči jako interesantno ! Dakle ako neko ima iskustva ili bar informacija, molim nek zakuca odgovor. Pozdra, Boris
cccc.725 bulaja,
│Ko je koristio kompajlere drugih proizvodaca? Zanima me koliko su ti, │koji to mogu, upotrebljivi (npr. imaju li gotove graficke biblioteke?). └─── Igrao sam se malo sa Watcom C (valjda je i C++ ne secam se vise:), verzija 9.0. Ceo paket je dosta Ok, moze da se radi i za Windows i za OS/2, dobijaju se uz njega i neki DOS extenderi. Kompajler je PRAVI 386 protected mode, a radi super - kazes mu lepo "daj mi jedno 4 mega RAM", on ti lepo odgovori "izvolite vasih 4 mega". Bez problema, petljavina i sl., odusevio sam se :). Ne znam kakvu graficku biblioteku ima, cini mi se da sam video i neku grafiku radjenu u njemu al' se ne secam. Mislim da je pocetkom prosle godine bio u Racunarima test Watcom C-a, pogledaj.
cccc.726 .bale.,
Odgovor .obj-u, ne mogu da nadjem gde je bila poruka :) #define PRIME 211 #define EOS '\0' int hashpjw( char *s ) { char *p; unsigned h = 0, g; for( p = s; *p != EOS; p = p + 1 ) { h = ( h << 4 ) + ( *p ); if( g = h & 0xf0000000 ) { h = h ^ ( g >> 24 ); h = h ^ g; } } return( h % PRIME ); } /* U opstem slucaju, PRIME je prvi prost broj veci od broja ulaza u hash tabelu. */ P.S. Izgleda ;) da radi samo sa 32 bita. Regards from .bale. ! #:*)+-<
cccc.727 dejanr,
>> mislim da je pocetkom prosle godine bio u Racunarima test Watcom C-a, >> pogledaj. "Računari 78", strana 30. I ja sam tada probao Watcom C ali nisam bio zadovoljan, High C je davao dosta brži kod. Naravno, možda su novije verzije donele neke nove odnose.
cccc.728 dj.rainovic,
Ţ Koji kompajleri za C umeju da generišu programe u Ţ protektid modu (tj. da naprave programe koji rade sa Ţ memorijom iznad 1M kao da je najobičnija memorija?) GNU C++ ?? Mislim da može. Ima li neko iskustva sa tim kompajlerom.
cccc.729 zormi,
* Koji kompajleri za C umeju da generišu programe u protektid * modu (tj. da naprave programe koji rade sa memorijom iznad 1M * kao da je najobičnija memorija?) Imam negde original stari Metaware High C u kompletu sa Phar Lap linkerom. Koristio sam ga za pravljenje C modula za Matlab 386 i to je radilo u protected modu, uglavnom razne operacije sa matricama gde je 8 MB RAM-a vrlo korisno.
cccc.730 jtitov,
Zamolio bih za savet za neku dooobru biblioteku za rad sa bazama. Spominjali mi CodeBase i ParadoxEngine... Ja o tome pojma nemam ali me zanima.
cccc.731 mark,
KAko da ispisem random brojeve u C-u ??? Cemu sluzi VOID?????? Marko (the pocetnik) P.S. Koju knjigu predlazete za "pocetak".
cccc.732 ppekovic,
>> KAko da ispisem random brojeve u C-u ??? #include <stlib.h> int rand(void); vraca psudoslucajni broj izmedju 0 i 32767. void srand(unsigned seed); postavlja početnu vrednost za generator slučajnih brojeva. Dakle, prvo startuješ seed sa nekim proizvoljnim brojem. Obično je to trenutni broj sekundi, stotinki. Zatim koristiš rand(). >> Cemu sluzi VOID?????? Kupi neku knjigu za C. Prelistaj stare poruke, bilo je više puta reči o najboljim knjigama za učenje C-a. Paya
cccc.733 jasicp,
Hteo sam odavno nesto ovako da napisem, ali nisam smeo... Naime, vec godinama programiram u Pascalu i dBase jezicima. C znam malo a C++ skoro nimalo. Hajde neko da mi kaze bez zezanja da li da ozbiljno pocnem da ucim C++, tj. da li se isplati. U cemu je C++ bolji od, npr. Pascala 7.0 ? Ako nekog ne mrzi. neka napise konkretno. Napominjem da C znam cisto informativno, a Pascal koristim ( objektni ) vec dugo ozbiljno. Namerno sam poslao ovo u C temu, valjda je drustvo ovde kompetentno. Samo da vam kazem, nemojte da udarite u reklamu jer me stvarno ozbiljno interesuje a vremena nemam za bacanje... Big Hvala, Pedja !
cccc.734 mdimitrijevic,
Postoji li neka zamena u Borland C++ 3.1 za _based pointer. Da li to Ęmoze nekako │d│a se simulira. Treba mi da prevedem MENU.C Zorana Zivotica. Prilicno je hitno. Marjan Dimitrijevic
cccc.735 janko,
> Naime, vec godinama programiram u Pascalu i dBase > jezicima. C znam malo a C++ skoro nimalo. Hajde neko da mi > kaze bez zezanja da li da ozbiljno pocnem da ucim C++, tj. > da li se isplati. U cemu je C++ bolji od, npr. Pascala 7.0 > ? Ako nekog ne mrzi. neka napise konkretno. Napominjem da > C znam cisto informativno, a Pascal koristim ( objektni ) > vec dugo ozbiljno. Ako stvarno koristiš objektna svojstva Paskala, po meni, vredi da počneš da učiš C++. Evo kako bih ja pisao o tome: ---- 1. Standardizacija TP TP je proizvod jedne firme, nestandardizovan. žak se, od verzije do verzije, razlikuje i sam od sebe. Vrlo davno, pisao sam neke programe na nekim starim TP-ima. Onda je došla četvorka, pa petica, i programi uz nju za "konverziju starog sorsa u novi." Ti programi ni najtrivijalnije stvari nisu umeli da konvertuju. Npr. ono što se od četvorke zove readkey se dotle zvalo read(kbd,c) ali to taj program nije umeo da prepravi. Tragično. Uz to, nekompatibilnosti između TPU fajlova između svake verzije su nešto na šta se ovde ljudi često žale. C++ C++ još uvek nije potpuno standardizovan, iako komisije ubrzano rade. Ipak, pratični standard su verzije cfront kompajlera koga pravi firma AT&T, gde je zaposlen, između ostalih, i idejni tvorac C++ jezika. Sve firme koje prave C++ kompajlere se nadmeću koja će što više ispoštovati standard. To deje lepe rezultate, da ne samo da programi (osim kada koriste "prljave metode") postaju nezavisni od kompajlera, već postaju nezavisni i od mašine za koju su pisani. 2. Osobine jezika Navešću ih samo par, čisto da zainteresuju onoga koga mogu da zainteresuju. - Za razliku od TP-a, u C++-u se objekti aktiviraju automatski po definisanju. To znači da ne moraš da peške pozivaš svakog konstruktora i denstruktora za svaki objekt. Objekti u C++ se inicijalizuju ekvivalentno modulima (izvinte, junitima) u TP-u. Kao kada kažeš uses NekiJunt; i znaš da se izvršilo parče koda imeđu glavnog begin..end junita, to u C++ radi za svaki objekt, onda kada ga deklarišeš. Što je još lepše, "trajanje" objekta je vezano za tzv. skoup. To će reći, objekt će se automatski i ugasiti, kad izađe iz svog opsega vidljivosti, opet pozivajući deo koda koji nema svog ekvivalenta u TP junitima jer su oni vidljivi kroz ceo junit u kome se koriste. Ova osobina TP-a, da se svaki konstruktor, a posbeno, destruktor, mora eksplicitno pozivati, je, po meni, jedan od najneugodnih nedostataka objektnog TP-a. (Ne znam da li su promenili nešto posle TP 6.0, ja od TP-a još uvek koristim samo TP 5.5. Uglavnom ga koristim za vrlo mele programe, i programe koje moram da mogu da prevodim na svakoj mašini, bila ona XT sa pola mega slobodno ili nešto drugo...) - Za razliku od TP-a, u C++-u postoje, između ostalih: + mehanizimi difolt (izgovor je difoot, rekao bi fensi, ali mi znamo da se l pretvara u o i u našem jeziku, pa mu dođe na isto ;) ) parametara pri pozivu procedure. Npr. pisi( "Pera" ) može da izazove pisanje horizontalno a pisi( "Pera" , VERTIKALNO ) ili pisi( "Pera" , KOSO_NANIZE ) itd. te druge mogućnosti. + mehanizmi "kastovanja" iz tipa u tip. Npr. ako imam proceduru crtaj koja radi sa tipom Tačka, a imam samo dva realna parametra a i b, mogu lako da je pozovem sa crtaj( Tacka(a,b) ); Neka kastovanja su, čak, automatska. Za razliku od Paskala, u C-u sasvim mirno mogu da kažem: int i; float a; a zatim a=i; ili i=a; ako znam šta radim. ---- Itd. itd. Neću dalje pisati, jer mislim da ova tema vredi za jednu lepu malu seriju članaka... ;)
cccc.736 dejanr,
>> Naime, vec godinama programiram u Pascalu i dBase >> jezicima. C znam malo a C++ skoro nimalo. Hajde neko da mi >> kaze bez zezanja da li da ozbiljno pocnem da ucim C++, tj. >> da li se isplati. U cemu je C++ bolji od, npr. Pascala 7.0? Turbo Pascal je na neki način "ćorsokak". Na koju god mašinu dođeš, naići ćeš na C (ili u novije vreme C++) dok TP postoji samo kod Borlanda (doduše, u jednom trenutku je i Microsoft napravio Turbo Pascal "kompatibilca", ali su izgleda posle odustali). Osim toga, realno je očekivati da će C programi, ako imaš dobar kompajler, biti bolje optimizovani (tj. nešto brže se izvršavati) od sličnih programa na TP-u, pošto TP-u optimizacija nikada nije bila udarni novitet. Osim toga, razni C-ovi su bolje "integrisani" u DOS, već po tome što prave .OBJ fajlove umesto TPU-ova koji čak nisu kompatibilni od jedne verzija do druge. Sa "minus" strane, primetićeš da je raditi na TP-u mnogo komfornije (naročito ako si se navikao na IDE), udariš Alt R i program već preveden. žak ako vidiš grešku tri reda niže od kurzora, brže ti da lupiš Alt R pa da ti on dovede kurzor do te greške nego da pritiskaš tri-četiri puta srelicu na dole i na levo (ili desno). O takvoj brzini prevođenja sa ovim C kompajlerima koje sam video možeš samo da sanjaš. Osim toga, stalno se nešto učitava sa diska, te kompajler, te debager, ... a kod TP/IDE sve je u memoriji i radi trenutno. Što se tiče objektnih ekstenzija, kažu ljudi da je tu C++ prirodnije rešenje.
cccc.737 mdimitrijevic,
Kako da koristim Turbo Profiler iz Borland C++ v3.1 paketa. Kako da prevedem program da bih ga posle mogao 'provuci' kroz TPROF. I sta startovati u menijima da bi mi ═radio :)))) Marjan Dimitrijevic
cccc.738 dejanr,
Microsoft Visual C++. NOVOSTI/microb 4.774.
cccc.739 mjova,
> Kako da koristim Turbo Profiler iz Borland C++ v3.1 > paketa. Kako da prevedem program da bih ga posle mogao > 'provuci' kroz TPROF. I sta startovati u menijima da bi mi > ═radio :)))) prevedi ga kao i za slučaj da startuješ turbo debuger. parametar -v komandne linije. sve komande su iste kao u TD, samo što ne možeš vršiti provere sadržaja baš svega, ali zato možeš da vidiš koliko vremena treba za neku fn, koliko se puta poziva u toku rada, itd.
cccc.740 mdimitrijevic,
Pisem disk katalog program u C-u pa mi treba rutina koja cita sadrzaj ZIP arhiva. Takav source je ZIPOFF samo sto on ne vrsi provere o ispravnosti ZIP-ova kao sto cini UNARJ za ARJ arhive. Ako neko ima nesto slicno molim da mi posalje. P.S. Prilicno je hitno !!! Marjan Dimitrijevic
cccc.741 ppekovic,
>> Pisem disk katalog program u C-u pa mi treba rutina koja cita sadrzaj ZIP >> arhiva. Na FFS-u imaš arhivu fff360 u okviru koje je file finder u source-u. Taj ff traži i po arhivama pa je dat i deo source-a koji se odnosi na listanje sadržaja arhiva. Detaljno je napisana struktura većine poznatijih arhivera. Paya
cccc.742 mjova,
> Pisem disk katalog program u C-u pa mi treba rutina koja > cita sadrzaj ZIP arhiva. potraži na FON-u, ne znam da li ima i ovde, fajl koji se zove ˙fff360.*˙ jer u njemu imaš izvorni kod programa za pretraživanje diska, a to radi i po arhivama. sve što ti treba za većinu popularnih arhivera možeš odatle uzeti.
cccc.743 djnsnd,
Da li neko moze da mi pomogne? Ne znam kako da jednu .ASM datoteku prevedem u .OBP umesto u .OBJ. Radi se o TASM koji je deo BC++ i BP. Naravno, pronasao sam prekidac /op pomocu kojeg TASM generise kod za rad u protected mode-u, ali rezultat je i dalje .OBJ datoteka. Unapred hvala. Djn
cccc.744 mdimitrijevic,
Mnogo hvala ppekovicu i mjovi. Pozdrav, Marjan Dimitrijevic
cccc.745 draganm,
*> prevedi ga kao i za slucaj da startujes turbo debuger. *> parametar -v komandne linije. sve komande su iste kao u TD, *> samo sto ne mozes vrsiti provere sadrzaja bas svega, ali zato *> mozes da vidis koliko vremena treba za neku fn, koliko se puta *> poziva u toku rada, itd. Nisu sve komande iste, najveca mana TDPROF-a je sto nema breakpoint-e, backtrace, execute to, trace, instructio trace ....
cccc.746 miroljub,
Imam problem sa apstrakciom podataka u C-u. Evo o cemu se radi. Nameravao sam da napravim pojednostavljenu Clipperovu funkciju EMPTY(). U C-u bi trebalo da izgleda ovako: int empty(void *ptr) Ukoliko se funkcija pozove sa argumentom koji je pointer na string, onda funkcija vraca 1 ako su svi karakteri stringa SPACE (inace vraca 0); a ukoliko se funkcija pozove sa argumentom koji je pointer na numericku velicinu (int, float, double), onda funkcija vraca 1 ako je numericka velicina jednaka nuli (inace vraca 0). Ceo problem je - kako u funkciji empty() utvrditi kog je tipa argument koji je prosledjen funkciji pri pozivu. Vidojko Ciric u svojoj knjizi "Objektno orjentisano programiranje" u poglavlju o "obicnom - neobjektnom" C-u to resava tako sto uvodi jos jedan argument. Medjutim mene interesuje kako to moze da se resi sa samo jednim argumentom kao sto je izvedeno u Clipperu.
cccc.747 wizard,
> int empty(void *ptr) > Ceo problem je - kako u funkciji empty() utvrditi kog je tipa argument > koji je prosledjen funkciji pri pozivu. Pa zašto trpaš sve u jednu funkciju? Iz konteksta tvoje poruke mi se čini da programiraš u C++, a u tom slučaju sve što treba da uradiš je da preklopiš ("preopteretiš", "overloaduješ" :) ime tvoje funkcije, npr.: int empty(char*); int empty(double*); i napišeš dve funkcije od kojih svaka radi svoj posao na svoj način i kako treba. Slično uradi i za int, long i druge argumente. Ako ne koristiš C++ ekstenzije, ja ti ne mogu pomoći. U stvari, mislim da ti niko i ne može pomoći da uradiš ono što si naumio na način na koji naumio, jer, koliko je meni poznato, a poznato mi je, tako nešto je u običnom C-u nemoguće. :)
cccc.748 vpetrovic,
Pitanje za Turbo C 2: Kada neka funkcija zove sistemske interapte ona uglavnom unisti registre. Da li postoji neki nacin da se kaze kompajleru da sacuva sve registarske promenljive pre poziva te f-je i da ih kasnije vrati u registre. U helpu nadjoh 'volatile' ali ne pise da li se odnosi i na funkcije, tj. pise da se odnosi na promenljive koje se onda nece cuvati u registrima.
cccc.749 todorp,
> Pitanje za Turbo C 2: Kada neka funkcija zove sistemske interapte ona > uglavnom unisti registre. Da li postoji neki nacin da se kaze kompajleru Pogledaj poruke oko 346 u ovoj temi. Mozda ti pomogne. TC++ ima _savereg ali mislim da to nemas u TC 2.1 Mozda bi mogao da smestis registre u neki niz pa posle pokupis sadrzaj? Pozdrav od Todora. ps. Ako ti nije tesko aj' reci sta ce ti to, mislim sta te briga ako unisti registre? Nista ne kritikujem samo pitam O:)
cccc.750 vpetrovic,
>> Pogledaj poruke oko 346 u ovoj temi. Mozda ti pomogne. TC++ ima _savereg >> ali mislim da to nemas u TC 2.1 Mozda bi mogao da smestis registre u neki >> niz pa posle pokupis sadrzaj? >> Pozdrav od Todora. >> ps. Ako ti nije tesko aj' reci sta ce ti to, mislim sta te briga ako unisti >> registre? Nista ne kritikujem samo pitam O:) Pa, pisao sam jedanput program koji zovi neki dosov interapt za čitanje sektora. Naravno, taj dosov interapt je menjao registre. E, a kompajler je jednu promenljivu iz maina smestio u registar i, logično, poziv funkcije poremeti zadržaj te promenljive. Trebalo mi je tri sata dok sam shvatio u čemu je štos :). Sad sam se opametio, ali bilo bi lepše da ima neka ključna reč i ja to stavim u deklaraciji f-je, nego da sam snimam registre, pa da ih posle vraćam.
cccc.751 todorp,
> sektora. Naravno, taj dosov interapt je menjao registre. E, a kompajler > je jednu promenljivu iz maina smestio u registar i, logicno, poziv > funkcije poremeti zadrzaj te promenljive. Trebalo mi je tri sata dok sam U bre ovi kompajleri nista nevaljaju :)) Bice da ti nesto nisi dobro uradio. Kako si ti zakljucio da kompajler smesta promenljivu u registar? Ako si mislio na register prom; to ne znaci da on mora da je smesti u registar vec ako moze i nije pogubno. Mozda gresis u lokalna/globalna varijabla? Za pocetak deklarisi tu promenljivu kao globalnu. Voleo bih ako nije vojna tajna i nije previse veliki sors da ga bacis ovde ili meni na mail pa da pogledamo. Pozdrav od Todora.
cccc.752 vpetrovic,
>> U bre ovi kompajleri nista nevaljaju :)) Bice da ti nesto nisi dobro >> uradio. Kako si ti zakljucio da kompajler smesta promenljivu u registar? >> Ako si mislio na register prom; to ne znaci da on mora da je smesti u >> registar vec ako moze i nije pogubno. Mozda gresis u lokalna/globalna >> varijabla? Za pocetak deklarisi tu promenljivu kao globalnu. Voleo bih ako >> nije vojna tajna i nije previse veliki sors da ga bacis ovde ili meni na >> mail pa da pogledamo. Ma nije da ne valjaju, nego sam koristio .asm diretivu. A što se tiče registarskih promenljivih TC 2.01 ako je uključena opcija za registarske promenljive, a nema deklarisanih promenjivih sa register sam smešta neke promenljive u registre. To sam otkrio tako što sam startovo TD i kada kažem inspect <ime prom> on mi da ime, adresu i vrednost. Adresa je u glavnom oblika DS:xxxx, ali je za ovu inkriminisanu promenljivu stajao neki registar (više se ne sećam koji). Naravno, kada sam iskompajlirao sve zabranivši registarske promenljive sve je radilo (kao i kada sam push-nuo sve registre pre .asm).