PCSOFT

08 Nov 1989 - 22 Sep 1991

Topics

  1. bios (50)
  2. ms.dos (492)
  3. unix (322)
  4. os.2 (5)
  5. jezici (125)
  6. cccc (343)
  7. clipper (273)
  8. turbo.pascal (247)
  9. tools (219)
  10. grafika (189)
  11. programiranje (156)
  12. tekst.procesori (164)
  13. word.perfect (222)
  14. ventura (216)
  15. windows (270)
  16. spec.softver (212)
  17. virusi (255)
  18. zastita (44)
  19. knjige (61)
  20. razno (668)
  21. mreze (75)
  22. ms.word (42)
  23. nabavka (153)
  24. baze.podataka (60)
  25. radne.tabele (2)
  26. van.teme (17)
  27. 4dos (25)

Messages - cccc

cccc.103 mtadic, -> #97, gww.
Ljubo, jedan komentar na tvoj programčić: pošto trenutno nemam ni jedan C instaliran ;) ne mogu da proverim šta tvoj pgm proizvodi (pretpostavljam, niz *rastućih* brojeva ?), ali šta god da dobiješ na ekranu (pa čak i "mešane" tj. neuređene brojeve) - u redu je. U C-u ti niko ne garantuje izvršavanje operacija s-leva-u-desno osim u slučaju comma operatora. Zarezi u pozivu funkcije *nisu* comma operatori, pa bi proizvoljan rezultat izvršavanja tvog pgm-a bio moguć (i dozvoljen) bez obzira na redosled prosleđivanja parametara. Ciao, Milančica
cccc.104 ppekovic, -> #99, rlazic
>>Pošto imam dosta iskustva u radu sa pomenutim kompajlerom (ceo >>školski raspust sam proveo s njim) Uh, kako je to "imam dosta iskustva ..." relativno. Ali ipak mislim da se "iskustvo" ne može steći za 15 dana, pa makar i 24h rada sa nekim kompajler-om, pa bio to i TC ++. No, mišljenja su različita, ja samo iznosim svoje. >>Editor ima (za sada) jedan odvratan bag. Naime, kada "legnem" na >>neki kursorski taster, često se dešava da mi editor ubaci po neku >>dvojku, osmicu ili nešto slično (odgovarajući brojevi na numeričkoj >>tastaturi) u program, što je VRLO neprijatno. Zaista ne znam šta >>je u pitanju, jer mi se ni u jednom drugom programu ne dešava ništa >>slično. Nije to bug editor-a već verovatno tvoje tastature ili nekih rezidentnih programa vezanih za tastaturu. Meni su se pre izvesnog vremena pojavili takvi problemi. Rešenje je bilo u zameni jednog rezidentnog programa odgovarajućim. >>Moram da priznam da sam se dobro namučio sa run-time greškom Null >>pointer assignment, koja se javlja na kraju izvršavanja programa. Za ovo nemoj da tražiš grešku kompajleru nego sebi. Ovo je tipična greška koja se javlja u prvim programerskim koracima u C-u i to ne samo kod TC ++ nego i kod ostalih compiler-a. >>Naravno, to je i >>dalje daleeekooo u odnosu na MSC 6.00 :))). Pa sigurno, za ozbiljne stvari je uvek trebalo malo više vremena ;) >>Što se tiče C++ programiranja, Turbo C++ predstavlja praktično jedini >>izbor (ostaje još Zortech C++, koji nisam imao prilike da vidim, >>ali smatram da nije ništa posebno). A kako to smatraš da nije ništa posebno kad ga nisi ni video ????!!!!! ;)))))))))))))))))))))))) >>Takođe, na ovom mestu bih da poručim Vladi Kostiću da nije u pravu >>(po mom pišljenju, naravno) kad kaže (u nekoj od ranijih poruka, >>ne sećam se tačno broja) da ništa ozbiljnije *ne može* da se radi >>bez DOS/BIOS poziva. Verovatno se nas dvojica bavimo pisanjem različitih >>tipova programa, ali ipak nije u redu iznositi takve tvrdnje. Vlado, >>nemoj ovo pogrešno da shvatiš, ali meni pri pisanju već pomenutog >>programa (simulator paralelnog procesiranja i interpreter jednog >>paralelnog jezika), kog ja smatram za ozbiljniji (ako ti nešto znači, >>source ima oko 75kB i oko 2500 linija), ni jednom nije zatrebalo >>da direktno pozovem DOS ili BIOS, izuzimajući izključivanje kursora >>(to je zaista smešno i trivijalno). Svaki program se može napisati na xxxxxx različitih načina. Jedan je bolji, drugi lošiji. Svi oni rešavaju problem ali na različite načine, različitim brzinama, komforom, pouzdanošću. Vlada je, koliko znam Vladu, govorio o najboljem načinu, a i po mom mišljenju, najbolje jedino vredi pominjati. BTW, za tvoju informaciju, simulator paralelnog procesiranja, kao i odgovarajući kompajler!!! a ne interpreter već postoji. Paya
cccc.105 rlazic, -> #101, alexa
Slična stvar je i meni pala na pamet (da exit poziva destruktore), ali sam se ubrzo razuverio. Kada step-ujem preko delete operatora sve je u redu, tj. Turbo C++ pre dealokacije memorije koji zauzima primerak klase prvo pozove destruktore (bilo standardne, bilo one koje sam ja definisao) za svaki član klase posebno - mogu lepo da step-ujem kroz njih i tačno vidim šta se dešava. Zbog toga jednostavno otpada tvoja pomisao da sam "pobrkao" redosled pozivanja destruktora - oni se uvek pozivaju istim redosledom, ako se radi o "brisanju" jednog objekta. Takođe, predvideo sam situaciju u kojoj treba da se obriše više objekata redom koji ja ne zadajem (na kraju programa, na primer), pa sam u svim destruktorima vodio računa o mogućnosti da je neki član klase već dealociran. Na bag funkcije exit, pored kontrolisanja sadržaja prvih stotinjak lokacija data segmenta (koji se ne menja od početka programa, pa sve do poziva exit-a), ukazuje i činjenica da _exit u istoj situaciji ne prijavljuje nikakvu grešku. Pošto se memorija i ovako i onako mora dealocirati, VRLO je nelogično da exit i _exit to rade na različite načine. Pošto u uputstvu stvarno *ništa* ne piše o tome i pošto kompajler ne step-uje kroz destruktore pri pozivu exit-a, moguće je da se memorija dealocira jednostavnim pozivanjem DOS-a za svaki alocirani blok memorije. Takođe, funkcije exit i _exit se potpuno isto (korektno) ponašaju kada se neka od početnih lokacija data segmenta promeni - obe ispišu Null pointer assignment. Znači da _exit ne preskače taj test. U uputstvu piše da je razlika između exit i _exit ta što exit, osim izlaska u DOS i vraćanja ERRORLEVEL-a, zatvara sve otvorene fajlove, ispisuje tekst zaostao u baferu i poziva "exit funkcije", tj. funkcije čije je pozivanje po izlasku programer eksplicitno zadao. (Dealokacija memorije se *nigde* ne pominje.) Zbog svega navedenog, ja i dalje pomišljam da je u pitanju (na žalost) bag exit funkcije. Naravno, ne isključujem ni mogućnost svoje greške, pa ako imate još neku ideju, napišite! S poštovanjem, Ranko Lazić
cccc.106 rlazic, -> #102, gww.
Što se tiče funkcija s promenljivim brojem argumenata, slažem se s tobom u konstataciji da način guranja argumenata na stek nema previše uticaja. Možda se njihovo skidanje u pozvanoj funkciji relativno olakšava, ali bi se i pri obrnutom guranju argumenata stvar mogla sasvim lepo rešiti "dobacivanjem" broja prenetih argumenata. Takođe, potpuno si u pravu kad kažeš da ovakav način pozivanja funkcija "skida odgovornost" sa pozivajuće funkcije i sve prepušta onoj čiji se poziv vrši. Na taj način se, recimo, omogućava generisanje korektnog .OBJ koda i pored toga što mnoge funkcije još nisu definisane. Dalje, tačno je da ovakav način pozivanja može doći u suprotnost sa zdravom logikom (kao u navedenom programu), ali je i dalje sve O.K., jer u stvari sve radi kako je predviđeno i propisano. Pozdrav, Ranko Lazić
cccc.107 rlazic, -> #103, mtadic
Program zaista daje kao rezultat niz rastućih brojeva, što je i logično. Ali, moram da ti kažem da nisi u pravu kad kažeš da bi sve bilo O.K. u slučaju ispisivanja neuređenog niza brojeva. Naime, to nema *nikakve* veze sa comma operatorom i sve je u potpunosti određeno i definisano - argumenti se na stek guraju zdesna nalevo i tim redom se i "izvršavaju", tj. računaju se odgovarajući izrazi. Pozdrav, Ranko Lazić
cccc.108 rlazic, -> #104, ppekovic
>> Uh, kako je to "imam dosta iskustva ..." relativno. Ali ipak >> mislim da se "iskustvo" ne može steći za 15 dana, pa makar i 24h >> rada sa nekim kompajler-om, pa bio to i TC ++. No, mišljenja su >> različita, ja samo iznosim svoje. S obzirom da sam pročitao dosadašnje poruke u temi cccc, zaključio sam da se niko nije ni dotakao Turbo C++-a (osim malo Vlada, ali je samo testirao brzinu), kao što sam i napisao, pa sam za shodno smatrao da mojim poštovanim sagovornicima prenesem svoja iskustva pri radu s tim kompajlerom. To da ga imam dosta je veoma relativno - ono se u toku rada neprestano povećava. Ne znam zašto te je navedena rečenica toliko pogodila? >> Nije to bug editor-a već verovatno tvoje tastature ili nekih >> rezidentnih programa vezanih za tastaturu. Meni su se pre izvesnog >> vremena pojavili takvi problemi. Rešenje je bilo u zameni jednog >> rezidentnog programa odgovarajućim. Pa lepo sam napisao da je prilično moguće da je za sve kriv ncc/fastkey (nisam još probao da ga skinem). Ali, pošto se to stvarno ne javlja *ni u jednom drugom programu*, uključujući Turbo C 2.00, ja to i dalje smatram Turbo C++-ovim bagom (moguće je da je Borland pravio neke perverzije oko skeniranja tastature). >> Za ovo nemoj da tražiš grešku kompajleru nego sebi. Ovo je tipična >> greška koja se javlja u prvim programerskim koracima u C-u i to ne >> samo kod TC ++ nego i kod ostalih compiler-a. U ispravnost svog programa (po pitanju Null pointer asignment-a) sam 99.99% siguran (onaj 0.01% uvek ostaje), jer sam zaista žestoko kontrolisao prvih stotinjak lokacija za svo vreme izvršavanja programa, kao što sam i napisao. Ne znam odakle ti ideja da ja pravim "prve programerske korake u C-u". Kako si to zaključio i s kim me to porediš? Sa sobom? Odakle ti takva samozaljubljenost i samouverenost? >> Pa sigurno, za ozbiljne stvari je uvek trebalo malo više vremena ;)) Šta? MSC 6.00 je "ozbiljniji" kompajler od Turbo C++-a? Trt! >> A kako to smatraš da nije ništa posebno kad ga nisi ni video >> ????!!!!! ;)))))))))))))))))))))))) To sam zaključio iz programerskih časopisa u kojima se o njemu *relativno* malo piše. >> Svaki program se može napisati na xxxxxx različitih načina. Jedan >> je bolji, drugi lošiji. Svi oni rešavaju problem ali na različite >> načine, različitim brzinama, komforom, pouzdanošću. Vlada je, koliko >> znam Vladu, govorio o najboljem načinu, a i po mom mišljenju, >> najbolje jedino vredi pominjati. Najbolji način za pisanje efikasnih, brzih, komfornih i pouzdanih (tj. profesionalnih u pravom smislu) programa su direktni DOS i BIOS pozivi, a? Ha, ha, ha, ha, ha, ... >> BTW, za tvoju informaciju, simulator paralelnog procesiranja, kao >> i odgovarajući kompajler!!! a ne interpreter već postoji. Iz ovoga što si napisao zaključujem da si *totalni* nepoznavalac navedene oblasti. Zato bolje ćuti, uči i ne maltretiraj druge svojim razbacivanjem. BTW, o svom znanju u pomenutoj oblasti uopšte nemam previsoko mišljenje. Što se tebe tiče, izgleda da pripadaš grupi ljudi za koje važi: ne zna koliko ne zna (bar za ovu oblast). P.S. Čoveče, odakle ti tolika zloba i sujeta? Meni se čini da mi ovde treba da sarađujemo i delimo iskustva, a ne da blatimo jedni druge. Drugarski pozdrav, Ranko Lazić
cccc.109 kale, -> #103, mtadic
>> U C-u ti niko ne garantuje izvršavanje operacija s-leva-u-desno osim >> u slučaju comma operatora. ANSI standard garantuje izvođenje logičkih "i" i "ili" operacija u "if" naredbi sleva nadesno, i da neće biti izvršeno više operacija nego što je neophodno da se izračuna rezultat testa. Pozdrav, Kale
cccc.110 ppekovic, -> #108, rlazic
>> Ne znam zašto te je navedena >>rečenica toliko pogodila? Veliko iskustvo=15 dana rada sa kompajlerom????!!!! Veliko iskustvo sa C kompajlerima ima samo nekoliko ljudi na Sezamu!!! Iskustvo se ne stiče zezanjem i pisanjem malih rutinica na C-u već pravljenjem ozbiljnih aplikacija koje imaju praktičnu primenu. Programi za paralelno procesiranje i pomenuti interpreter se sigurno nemogu napraviti za tih 15 dana. >>Ali, pošto se to stvarno >>ne javlja *ni u jednom drugom programu*, uključujući Turbo C 2.00, >>ja to i dalje smatram Turbo C++-ovim bagom (moguće je da je Borland >>pravio neke perverzije oko skeniranja tastature). Što Njegoš u Gorskom vijencu reče: "Tvrd je orah voćka čudnovata, ne slomi ga al zube polomi..." >>U ispravnost svog programa (po pitanju Null pointer asignment-a) >>sam 99.99% siguran (onaj 0.01% uvek ostaje), jer sam zaista žestoko >>kontrolisao prvih stotinjak lokacija za svo vreme izvršavanja >>programa, kao što sam i napisao. Ne znam odakle ti ideja da ja pravim >>"prve programerske korake u C-u". Kako si to zaključio i s kim me >>to porediš? Sa sobom? Odakle ti takva samozaljubljenost i samouverenost? Jednog dana, kad ti Null pointer assignment poruka nestane, zapitaj se šta si promenio u svom programu. Sorry, ako ti nestane... Slučajno imam malo više iskustva od onih 15 dana u C-u, i mogu ti reći da sam tu grešku video xxxxx puta i svaki put je bila moja greška i ni jedan moj završeni program to nema. Izvini mi se jednog dana. A sa kime ti SEBE porediš. Posle Vlade Kostića, TI ćeš da nam daješ zaključke o Turbo C-u!!! >>To sam zaključio iz programerskih časopisa u kojima se o njemu >>*relativno* malo piše. A iz kog časopisa? Čitajući neke naše računarske časopise, mogao sam saznati da je Turbo pascal 6.0 najbolji kompajler za PC-a i da bi svi trebalo da pređemo na njega. A još ako je objektno orijentisan!!!! aiiiiiii (ovo se ne odnosi na tebe). >>Najbolji način za pisanje efikasnih, brzih, komfornih i pouzdanih >>(tj. profesionalnih u pravom smislu) programa su direktni DOS i >>BIOS pozivi, a? Ha, ha, ha, ha, ha, ... Imam za tebe jedan sjajan programski jezik. Jesi čuo za LOGO? >>Iz ovoga što si napisao zaključujem da si *totalni* nepoznavalac >>navedene oblasti. Zato bolje ćuti, uči i ne maltretiraj druge svojim >>razbacivanjem. BTW, o svom znanju u pomenutoj oblasti uopšte nemam >>previsoko mišljenje. Što se tebe tiče, izgleda da pripadaš grupi >>ljudi za koje važi: ne zna koliko ne zna (bar za ovu oblast). >>P.S. Čoveče, odakle ti tolika zloba i sujeta? Meni se čini da mi >>ovde treba da sarađujemo i delimo iskustva, a ne da blatimo jedni >>druge. Kada budeš malo porastao, pa budem mogao da te povedem sa sobom, a da te čika na ulazu ne zaustavi jer nemaš LK, onda javi pa da te odvedem i da ti pokažem kako to radi. I na kraju, NE BUDI BEZOBRAZAN, i smanji malo ton, pogotovu kad se obraćaš nekom ko je, pa makar za 1 dan, stariji od tebe. Al pri ovom ne mislim samo na godine!!! Paya
cccc.111 rlazic, -> #110, ppekovic
>> Veliko iskustvo=15 dana rada sa kompajlerom????!!!! Veliko >> iskustvo sa C kompajlerima ima samo nekoliko ljudi na Sezamu!!! >> Iskustvo se ne stiče zezanjem i pisanjem malih rutinica na C-u već >> pravljenjem ozbiljnih aplikacija koje imaju praktičnu primenu. >> Programi za paralelno procesiranje i pomenuti interpreter se sigurno >> nemogu napraviti za tih 15 dana. Prvo, ja sam rekao da imam dosta iskustva (a ne *veliko* iskustvo, što je bitna razlika) pri radu sa Turbo C++-om, kao i zašto sam to napisao. Drugo, ne znam kako ti to "napamet" zaključuješ da veliko iskustvo pri radu sa C kompajlerima ima samo nekoliko ljudi na Sezamu? Treće, kako si došao do zaključka da ja pišem "male rutinice"? Možda ti za "ozbilje aplikacije koje imaju praktičnu primenu" (uf, uf ;) - da i ja malo počnem da koristim ;) smatraš programe za prenos podataka sa Amstrada na PC-ja, drajvere za tastaturu (Vlado, ja te cenim kao programera i uopšte ne ciljam na tebe) i sl. Ja bih rekao da su to obična i bezvredna (osim što rade posao) *hakerisanja*. Četvrto, kako ti znaš da li se simulator paralelnog procesiranja ne može napisati za 15 dana - ja smatram da je to posao od 10-ak čovek/dana, ako se prethodno o svemu raščisti i sve do kraja isplanira. Inače, slažem se da ni mesec dana stalnog rada nije dovoljno ako se kao haker "bane" za tastaturu i krene s kucanjem main funkcije. >> Što Njegoš u Gorskom vijencu reče: >> "Tvrd je orah voćka čudnovata, >> ne slomi ga al zube polomi..." Ko bi ovde trebalo da bude Crna Gora, a ko Turska? >> Jednog dana, kad ti Null pointer assignment poruka nestane, >> zapitaj se šta si promenio u svom programu. Sorry, ako ti nestane... >> Slučajno imam malo više iskustva od onih 15 dana u C-u, i mogu ti >> reći da sam tu grešku video xxxxx puta i svaki put je bila moja >> greška i ni jedan moj završeni program to nema. Izvini mi se jednog >> dana. Ti izgleda nisi pročitao moj odgovor poštovanom Alexi u kome sam prilično precizno objasnio celu stvar. Kako ja to imam 15 dana iskustva u C-u, kad u C-u (u zadnje vreme u C++-u) radim od sredine 1989. godine? Kako si sad to zaključio? Ja sam rekao da imam 15 dana intenzivnog rada iskustva sa Turbo C++-om (uključujući još par meseci "fakultativnog"), a ne 15 dana iskustva u programiranju u C-u (daleko od toga). >> A sa kime ti SEBE porediš. Posle Vlade Kostića, TI ćeš da nam >> daješ zaključke o Turbo C-u!!! Jel' si se ti to zaljubio u Vladu Kostića, pa mi stalno izbijaš oči s njim? Što se mene tiče, navešću ti s kim se sve poredim: sa autorima programerskih tekstova u *našim* časopisima (tj. sa znanjem koje iznose u njima), sa saradnicima (na polju programiranja) i ljudima iz redakcije Sveta kompjutera (gde si ti malo "provirio"), sa predavačima i saradnicima u Istraživačkoj stanici Petnica, sa sadržajem postdiplomskih predavanja cenjenog profesora Dr Prešića u Matematičkom institutu u Srpskoj akademiji nauka i umetnosti, ... Ako želiš još "prepucavanja" na ovu temu, nemoj ponovo da odgovoriš pitanjem i smanji frekventnost znakova ! u svojim porukama. Iz (između ostalog) onoga što si napisao u konferenciji forum (tema devojke), dalo bi se zaključiti da je tvoj domet toliko pominjani Klub programera. >> A iz kog časopisa? Čitajući neke naše računarske časopise, mogao >> sam saznati da je Turbo pascal 6.0 najbolji kompajler za PC-a i da >> bi svi trebalo da pređemo na njega. A još ako je objektno >> orijentisan!!!! aiiiiiii (ovo se ne odnosi na tebe). Rekao sam iz programerskih časopisa, što AUTOMATSKI isključuje "neke" (rekao bih SVE) naše računarske časopise, koji se svode na reklame i prikaze hardvera i softvera. Što se tiče postavljenog pitanja, reč je o časopisima Program Now, Programming Languages i IEEE. >> Imam za tebe jedan sjajan programski jezik. Jesi čuo za LOGO? Za Logo ne samo da sam čuo, nego ga i znam. Jezik je lep i sasvim zgodan za ono za šta je namenjen (crtuckanje i dečja zabava). Imam i ja jedan SAVRŠEN programski jezik za tebe: 6502 asembler. >> Kada budeš malo porastao, pa budem mogao da te povedem sa sobom, a >> da te čika na ulazu ne zaustavi jer nemaš LK, onda javi pa da te >> odvedem i da ti pokažem kako to radi. I na kraju, NE BUDI BEZOBRAZAN, >> i smanji malo ton, pogotovu kad se obraćaš nekom ko je, pa makar za 1 >> dan, stariji od tebe. Al pri ovom ne mislim samo na godine!!! Zašto stalno potenciraš razliku u godinama između tebe i mene i forsiraš Vladu? Jel' su ti to dva jedina argumenta za toliko razbacivanje? Šta ćeš da mi pokažeš "kako radi"? Neki program o kome nemaš pojma ni ko je ni šta je ni šta radi, a neko te napalio na njega? Što se mene tiče, uopšte nisam bezobrazan (šta će ti opet gomila znakova ! - šta to tako burno doživljavaš?) - čak se divim sebi što odavno nisam rekao: "Ma, pusti ga da balavi". Na šta još misliš sem na godine i zašto bih ja trebalo da imam poštovanja prema starijima koji pokazuju da nisu dostigli očekivani stepen svesnosti i samokontrole, kao i da pate od kompleksa više vrednosti. P.S. Zaista mi je žao što se ovako "koljemo", ali ipak ne bih hteo da nastaviš da se razbacuješ neosnovanim tvrdnjama. Drugarski (nije ironično) pozdrav, Ranko Lazić
cccc.112 ppekovic, -> #111, rlazic
>>Što se mene tiče, navešću ti s kim se sve poredim: sa autorima >>programerskih tekstova u *našim* časopisima (tj. sa znanjem koje >>iznose u njima), sa saradnicima (na polju programiranja) i ljudima >>iz redakcije Sveta kompjutera (gde si ti malo "provirio"), sa >>predavačima i saradnicima u Istraživačkoj stanici Petnica, sa >>sadržajem postdiplomskih predavanja cenjenog profesora Dr Prešića >>u Matematičkom institutu u Srpskoj akademiji nauka i umetnosti, >>... Vidiš dečko, kad porasteš, kazaće ti se samo zašto sam ti sasvim lepo i bez uvreda u prvom reply-u skrenuo pažnju da se ne izlećeš baš toliko da svi odmah vide koliko imaš godina. Paya
cccc.113 gww.,
Dakle i ja koristim TC++ ali ne koristim IDE. Koristim samo TCC, TLINK i TLIB. Dve stvari mi smetaju a mislim da sam ih pomenuo ovde. Kod separatnog kompajliranja i linkovanja sa debug informacijama TLINK 3.0 se nepovratno zakuca (to bih voleo da neko vidi šta je sa tim). Druga stvar je da mi se učinilo nepouzdanim bilo koji switch TCC-a koji se odnosi na EMS/XMS (nešto nije radilo, ne koristim više, a nisam ni tražio šta je, nemam vremena). Što se tiče C++ kao jezika lepo je kao ekstenzija (nisam probao) tako da C++ koristim kao C kompajler. Prekompajlirao sam sve biblioteke i zadovoljan sam (ima svačega osim teške matematike). Radi sve što imam, jedino je brzina kompajliranja blago opala (što je razumljivo). Debugger (TD 2.0) hoće da se zakuca čim uključim EMS a program veliki (nije EMS prostor u pitanju, možda je u pitanju moj EMS u šta prilično sumnjam) ali varijanta TD286 (XMS) lepo radi zasad nisam imao problema jedino što ona malo sporije radi (što je takodje logično) a i zauzima vrlo malo mesta u osnovnoj memoriji .
cccc.114 gww., -> #109, kale
Da li se garantuje i izvršavanje funkcija (u parametrima) s desna na levo u ANSI standardu ? Ako se ne garantuje znači treba drugačije pisati portabilne C programe. O.K. Za if() nisam znao, ali to mi se dopada i logično je.
cccc.115 gww., -> #110, ppekovic
ppekovic i rlazic, molim vas kao i sve ostale da unesete malo kolegijalnog ponašanja u diskusije. Ocenjivanje tudjeg kvaliteta nikad nije zahvalna rabota. Ispravljanje zabluda jeste korisno, ali uvek se može staloženo i argumentovano odbraniti svoj stav, ali i prihvatiti tudje mišljenje ako se čovek nadje u zabludi. Ja znam da smo svi mi (pa i ja) manje više sujetni kada je poznavanje ove oblasti u pitanju (računari, programiranje), ali ovde smo pre svega da se medjusobno pomažemo, više očiju više vidi.
cccc.116 alexa, -> #114, gww.
Mislim da if() nije u pitanju, već izrazi koji sadrže logički and i or (da ne isključujem sada YUSCII zbog or-a :)
cccc.117 alexa,
Povodom argumenata u C-u, gde me je gww. 'ispreskakao': istina je da se mogu gurati na stek i u obrnutom redosledu (tj. prvo levi) ali se mora posebno dati i podatak o tome gde se nalazi prvi argument (valjda se zato takav način nigde i ne koristi - ili ga bar ja nisam video). Inače, u C-u se argumenti moraju prenositi preko steka - po definiciji.
cccc.118 mtadic, -> #107, rlazic
>to nema *nikakve* veze sa comma operatorom i sve je u potpunosti >određeno i definisano - argumenti se na stek guraju zdesna nalevo i >tim redom se i "izvršavaju", tj. računaju se odgovarajući izrazi. neeee, nisi shvatio. Da ti pojasnim: bez obzira na redosled guranja parametara na stek, tebi još uvek niko ne garantuje da će i funkcije biti izračunate istim redosledom!! Redosled izračunavanja je *potpuno* proizvoljan osim u slučajevima comma operatora i u logičkim izrazima (*ne* u if-u, nego u logičkim izrazima, što je širi skup situacija). Za verodostojnost ove tvrdnje možeš da konsultuješ: B.W. Kernighan and D.M. Ritchie The C Programming Language preciznije Chapter 2.12 "Precedence and Order of Evaluation". Malo šale za kraj: u mom izdanju to je strana 50 (tj vrlo blizu *početka* knjige ;) Pozdrav, Milan
cccc.119 gww., -> #117, alexa
"prvo levi) ali se mora posebno dati i podatak o tome gde se nalazi "prvi argument (valjda se zato takav način nigde i ne koristi - ili da, to je bio "najlabaviji" deo mog dokaza. Da se toga nisam setio ubedio bi me. Ali podsetiću na jednu sitnicu. Prilikom svih sistemskih poziva na PC-u nešto se mora tutnuti u registar. Ne poznajem PC-jev asembler dovoljno ali čim se "upadne" u neku funkciju izvršava se nešto poput: MOV BP,SP Ta instrukcija može lepo da se izvuče "ispred zagrade" pa da se ne izvršava u pozvanoj funkciji već van nje. Time je praktično i markiran prvi argument.
cccc.120 gww., -> #118, mtadic
pretpostavimo da imamo 3 funkcije F1, F2, i F3. Koje se MORAJU pozivati baš u tom redosledu (1,2,3). kod izraza: a=F1()+F2()+F3(); niko naravno ne može garantovati koju će optimizator koda uzeti prvo u obradu, ali kod parametara je stvar drugačija, pretpostavimo da postoji F4 koja koristi kao prametre rezultate ovih triju funkcija, pitanje glasi da li je potrabilna (sa C-a na C) sledeća programska linija: d=F4(F3(),F2(),F1()); ili se mora pisati: a=F1(); b=F1(); c=F1(); d=F4(a,b,c);
cccc.123 alexa, -> #120, gww.
Mislim da nigde ne piše da se argumenti izračunavaju onim redosledom kojim se guraju na stek. Međutim, ovo je manje-više akademsko pitanje, jer svi današnji kompajleri prevode C source u neki međukod, koji je dosta primitivan, i liči na mašinski jezik nekog virtuelnog procesora (kasnije se ovaj međukod prevodi u mašinski kod). Zbog toga je vrlo verovatno da će se argumenti izračunavati u redosledu u kojem se smeštaju na stek, i da je ovaj redosled zdesna ulevo. (Istina, oni bi mogli biti postavljeni na stek u uobičajenom redosledu, a da se na njega stavljaju obrnutim redosledom, naravno ne pomoću naredbi push).
cccc.124 alexa, -> #119, gww.
> MOV BP,SP >Ta instrukcija može lepo da se izvuče "ispred zagrade" pa da se ne >izvršava u pozvanoj funkciji već van nje. Time je praktično i markiran >prvi argument. Jeste, ali BP ne služi samo za markiranje prvog argumenta (uostalom, on i ne pokazuje direktno na njega). U odnosu na njega se određuje i mesto automatskih varijabli na steku. Znači, morao bi da odvojiš novi registar za tu svrhu. U stvari, BP se (čak i u Intelo-voj dokumentaciji) povremeno naziva frame pointer-om; stek se ne posmatra kao klasičan procesorski stek reči fiksne dužine, nego kao stek 'okvira' - blokova koji se pridružuju procedurama u toku izvršavanja. U 'okvirima' se nalazi radni prostor, koji služi za smeštanje automatskih promenljivih, i za smeštanje argumenata pri pozivu nove procedure. Na početku izvršavanja svake procedure, ona (na PCju) u BP registru čuva pointer na 'okvir' pozivajuće procedure, a zatim zauzima za sebe novi 'okvir' na klasičnom steku. Pri ovome joj BP služi i kao referenca na sopstveni 'okvir'. Na 286 i 386 procesorima postoji i instrukcija ENTER, koja sve to sama uradi. Jedna familija računara (Honeywell 6-ice) ima mašinsku instrukciju ACQ (acquire stack frame), koja omogućava realizaciju 'steka' kao ulančane liste 'okvira', pri čemu ovi 'okviri' nisu smešteni jedan do drugog u memoriji.
cccc.125 kanda, -> #120, gww.
>>koja koristi kao prametre rezultate ovih triju funkcija, pitanje glasi da >>li je potrabilna (sa C-a na C) sledeća programska linija: >> >> d=F4(F3(),F2(),F1()); >> >>ili se mora pisati: >> >> a=F1(); b=F1(); c=F1(); d=F4(a,b,c); Neko je to ovde već pominjao : u K&R II izd., str. 202 piše : "The order of evaluation of arguments is unspecified; take note that various compiler differ." Dakle ako je redosled pozivanja ovih funkcija nebitan, može se koristiti i gornji i donji metod; ali ako je redosled bitan, tj. npr. izvršavanje F1() utiče na rezultat koji vraća F3(), mora da se radi kao u donjem primeru Tako i za ono printf( "%d %d %d", i++, --i, i ), ANSI C ti ne garantuje šta ćeš dobiti. Baš tu skoro sam radio nešto na PC sa TC2.0, i upravo zbog ovakvog jednog printfa sam #*!& osedeo. Inače cenim da je ovo jedan od poganijih razloga da program ne radi. I još, kod binarnih operatora nije definisano (ima izuzetaka, recimo && i ||) kojim redom se izračunavaju operandi, tj. da li prvo levi pa desni ili obratno. Baš u K&R II ( str. 77 ) ima primer poziva push( pop() - pop() ). Recimo da je pop() takva funkcija, da kad je prvi put pozoveš vrati 3, a drugi put 5. Niko ne garantuje da li će onaj izraz biti evaluiran kao push( 3 - 5 ) ili push( 5 - 3 ), tj. da li je pop()-pop() -2 ili 2 :O
cccc.126 gww., -> #124, alexa
Aha, pa su parametri "ispod" BP a auto varibaile "iznad" ako sam dobro shvatio. Lepo i jednostavno.
cccc.127 gww., -> #125, kanda
O.K. treba da se zna!
cccc.128 rlazic, -> #112, ppekovic
>> Vidiš dečko, kad porasteš, kazaće ti se samo zašto sam ti sasvim >> lepo i bez uvreda u prvom reply-u skrenuo pažnju da se ne izlećeš baš >> toliko da svi odmah vide koliko imaš godina. Dobro, pošto vidim da ti je jedini argument delta godine, smatram da je ova "rasprava" završena. A to da si u prvom reply-u istupio lepo i bez uvreda, ne bih baš rekao. Drugarski pozdrav, Ranko Lazić
cccc.129 rlazic, -> #113, gww.
>> Kod separatnog kompajliranja i linkovanja sa debug informacijama >> TLINK 3.0 se nepovratno zakuca (to bih voleo da neko vidi šta je sa >> tim). Ne znam, nije mi se to dešavalo (par puta sam bio prinuđen da koristim TCC i TLINK zbog nedostatka memorije). >> Druga stvar je da mi se učinilo nepouzdanim bilo koji switch TCC-a >> koji se odnosi na EMS/XMS (nešto nije radilo, ne koristim više, a >> nisam ni tražio šta je, nemam vremena). U svojoj prvoj poruci sam napisao kako TC (i TCC) koriste EMS/XMS memoriju - možda te je to (ne poruka, nego način korišćenja) zbunilo. Ranko Lazić
cccc.130 rlazic, -> #115, gww.
>> ppekovic i rlazic, molim vas kao i sve ostale da unesete malo >> kolegijalnog ponašanja u diskusije. Ocenjivanje tudjeg kvaliteta >> nikad nije zahvalna rabota. Ispravljanje zabluda jeste korisno, >> ali uvek se može staloženo i argumentovano odbraniti svoj stav, ali i >> prihvatiti tudje mišljenje ako se čovek nadje u zabludi. Par puta u toku naše diskusije, pokušao sam ppekovic-u da ukažem na to da mi ovde treba da se pomažemo i razmenjujemo iskustva, ali nije vredelo. Sve što sam svo vreme pokušavao da uradim je da ispravim njegovu zabludu, i to putpuno argumentovano. Staloženost je bila odgovarajuća njegovoj drskosti. Inače, on mi je kasnije u chat-u rekao da je ovde (na Sezamu) takav "običaj" - da se međusobno blatimo i da tako nastaju najbolje diskusije. E pa, taj običaj mi se mnogo ne sviđa. Drugarski pozdrav, Ranko Lazić
cccc.131 rlazic, -> #118, mtadic
>> neeee, nisi shvatio. Da ti pojasnim: bez obzira na redosled >> guranja parametara na stek, tebi još uvek niko ne garantuje da će i >> funkcije biti izračunate istim redosledom!! Redosled izračunavanja je >> *potpuno* proizvoljan osim u slučajevima comma operatora i u logičkim >> izrazima (*ne* u if-u, nego u logičkim izrazima, što je širi skup >> situacija). Da, u pravu si. Mada, mislim da je krajnje logično povezati redosled izračunavanja argumenata sa redosledom kojim se oni guraju na stek. Čak se u praksi uvek (na svim kompajlerima koje sam probao) pokazalo da je to zaista tako. Ipak, slažem se da ponekad treba imati na umu proizvoljnost njihovog izračunavanja - radi portabilnosti (jedno od osnovnih pravila u programiranju je: nikad ništa ne podrazumevaj dok ne proveriš). Pozdrav, Ranko Lazić
cccc.132 ppekovic, -> #130, rlazic
>>Par puta u toku naše diskusije, pokušao sam ppekovic-u da ukažem >>na to da mi ovde treba da se pomažemo i razmenjujemo iskustva, ali >>nije vredelo. Sve što sam svo vreme pokušavao da uradim je da ispravim >>njegovu zabludu, i to putpuno argumentovano. Staloženost je bila >>odgovarajuća njegovoj drskosti. Čika GWW., čika GWW. čika Paya me diraaaaaaaa!!!. >>Inače, on mi je kasnije u chat-u rekao da je ovde (na Sezamu) takav >>"običaj" - da se međusobno blatimo i da tako nastaju najbolje >>diskusije. E pa, taj običaj mi se mnogo ne sviđa. Ako imaš log chat-a pročitaj ga još jednom, premda sumnjam da ćeš uspeti i ovog puta da skontaš. ;))) I na kraju, ako nisi primetio, nisam slao reply gww.-u jer je čovek u pravu i jer zaista nije fer da opterećujem druge ličnim diskusijama. Svima izvinjenje sa moje srane, a TI rlazić-u, ne budi žena i ne traži pomoć za svoje "probleme" plačući na ramenu gww.-u ili bilo kome drugom. Pošalji mi private mail, ili otvori šifru pa reci svima za nju, pa kome se čita... A najbolje bi bilo da dođeš u klub, jer ću lepo da ponesem odštampane sve "naše" poruke, pa da ih lepo, na miru analiziramo, premda čisto sumnjam da ćeš izabrati ovu zadnju opciju, jer si prošle nedelje utekao i ili nisi došao u klub ili si došao pa se ućutao. ;) Paya
cccc.133 gww., -> #129, rlazic
>> Kod separatnog kompajliranja i linkovanja sa debug informacijama >> TLINK 3.0 se nepovratno zakuca (to bih voleo da neko vidi šta je sa >> tim). Evo moje turboc.cfg datoteke da potkrepim stvar. -ml -v -w -a -N -y -P- -Z- -k -IC:ĐTĐCĐINCLUDE;C:ĐTĐCĐINCLUDEĐSYS; -Le:Đ;C:ĐTĐCĐLIB; Što se linkovanja tiče: TLINK /v - * - " U svojoj prvoj poruci sam napisao kako TC (i TCC) koriste EMS/XMS " memoriju - možda te je to (ne poruka, nego način korišćenja) zbunilo. ???? Nemam nikakav stav, samo utisak, da TCC pada prilikom korišćenja EMS/XMS, maybe da je problem u mom EMS-u, u šta sumnjam jer par drugih programa radi sasvim korektno.
cccc.134 gww., -> #130, rlazic
& rep 6.132 Rešenje tako blizu a tako daleko. Blizu: create/tema PC.SOFT::Najbolji.programer (može i u ORKI, ona se valjda bavi socio-psihologijom) Kaleeeeeeeeeeeee!!!!!!!!!!!!!!!! Daleko: V.K. je valjda još u Italiji. Arbitar promene, "Čika" GWW. :)))))))))))))))))))))))))))))))))))) P.S. Ta, valjda znate trilogiju .... ;)
cccc.135 rlazic, -> #132, ppekovic
>> Čika GWW., čika GWW. čika Paya me diraaaaaaaa!!!. Deda Payo (jel' ti sad srce na mestu), ja sam GWW-u najnormalnije odgovorio i objasnio razloge našeg prepucavanja. Inače, čiča Paya me uopšte nije "dirao", već se samo (još jednom da ponovim) neargumentovano razbacivao na moj račun. Pošto ipak nisam mogao 'ladno da pređem preko svega toga, došlo je do ove diskusije. Samo ne znam zašto još posle prvog reply-a nisam rekao: "Ma, pusti ga da bulazni, čovek je ionako neiživljen i iskompleksiran." I još nešto: izgleda da je sve što si postigao u životu to što si sticajem okolnosti odrastao, pa zato to STALNO ponavljaš i na tome baziraš svojih poslednjih nekoliko reply-a, pošto nemaš na čemu drugom. >> ...premda čisto sumnjam da ćeš izabrati ovu zadnju opciju, jer si >> prošle nedelje utekao i ili nisi došao u klub ili si došao pa se >> ućutao. ;) Na klub nisam došao zbog toga što je bilo potrebno da sutra počnem da se budim oko 7:30am (to traje bar pola sata), da bih u 8:50am krenuo vozom za Valjevo. Da sam došao, buđenje bi bilo fizički teško izvodljivo, tako da sam oko 11:00pm legao da pajkim. P.S. Predlažem da sada stvarno prestanemo da gušimo ljude koji nisu ništa skrivili da bi čitali ovo, pa mi reply pošalji private mail-om. P.P.S. Ako imaš višak energije, prvom sledećom prilikom otidi do severne tribine na Marakani, pa se sit isprazni. Ranko Lazić
cccc.136 rlazic, -> #133, gww.
>> " U svojoj prvoj poruci sam napisao kako TC (i TCC) koriste EMS/XMS >> " memoriju - možda te je to (ne poruka, nego način korišćenja) zbunilo. >> ???? >> Nemam nikakav stav, samo utisak, da TCC pada prilikom korišćenja >> EMS/XMS, maybe da je problem u mom EMS-u, u šta sumnjam jer par >> drugih programa radi sasvim korektno. Da, nismo se pravilno razumeli. Mene je kod Turbo C++-a jednom veoma zbunio način korišćenja EMS/XMS memorije. Naime, Turbo C++ koristi navedenu memoriju samo za svoje swap-ovanje iz osnovnog RAM-a, što se podjednako efikasno može uraditi i RAM diskom, ili u krajnjoj liniji običnim hard diskom (samo će biti nešto sporije). To praktično znači da je kod korišćenja Turbo C++-a potpuno isto imati 512kB ili 7MB EMS/XMS memorije. Što se tvog problema tiče, nisam pretpostavio da je u pitanju blokiranje (tj. zakucavanje:) kompjutera. Probaću istu stvar kod mene sa navedenim parametrima, pa ćemo da vidimo šta je (Turbo C++ ili tvoja EMS/XMS memorija). Pozdrav, Ranko Lazić
cccc.137 ppekovic, -> #135, rlazic
>>P.S. Predlažem da sada stvarno prestanemo da gušimo ljude koji nisu >>ništa skrivili da bi čitali ovo, pa mi reply pošalji private mail-om. >> >>P.P.S. Ako imaš višak energije, prvom sledećom prilikom otidi do >>severne tribine na Marakani, pa se sit isprazni. Slušaj MALI!!! ja sam, za razliku od tebe, pogledao jedno 16 puta onaj moj prvi reply na tvoju prepotentno, nadobudno, imbecilno hvalisavu poruku i nisam uspeo da nađem ništa što bi na bilo koji način bilo uvredljivo ili bilo šta slično, čak šta više tamo ćeš pročitati da sam čak imao i nameru da ti pomognem, kao što se uostalom trudim da svima na Sezamu pomognem ako to moje znanje i mogućnosti dopuštaju. Iz tog razloga sam prikačio uz ovu poruku zipovanu celu "diskusiju" između nas dvojice, u kojoj je, naravno, i moj prvi reply na tvoju gore pomenutu poruku. A tu je naravno i tvoj odgovor na moju, sasvim normalnim i nimalo uvredljivim rečima, napisanu poruku. A ti si bio toliko drzak i bezobrazan, kao i u svim kasnijim porukama. I da ti otvoreno kažem, upotrebiš li još jednom ijednu jedinu pogrdnu reč upućenu meni, neću se više zadovoljiti krajnje argumentovanim i za tebe preblagim reply-ima!!! Dakle, spusti nos par kilometara dole i pročitaj celu diskusiju pa proceni. Ako ti ne umeš, posavetuj se sa nekim starijim. Ja sam pokazao tvoju i moju prvu poruku nekolicini ljudi koji su sasvim neutralni, i kojima nisam rekao da je izbila bilo kakva varnica kasnije u toj diskusiji, samo da mi kažu šta bi odgovorio na onakav drzak reply, tj. da li sam ja stvarno napisao bilo šta, što bi te povrdilo. Odgovor svih, ali baš svih ljudi, je da su iznenađeni koliko si drzak i bezobrazan, a kad sam još pomenuo koliko godina imaš, rekli su da bi ti rado uši izvukli. Prema tome, bezobrazno derište, spusti pogled do svog monitora i pročitaj par puta moj reply, pa ćeš onda ukapirati kakva si ništarija obična, i dugojezika ženturača ispao. Ovo važi i za sve ostale koji su mi rekli da sam delom u pravu a da sam malo i preterao, neka pročitaju moj prvi reply zbog koga se rlazić grdno uvredio, i zbog koga je nalupao onoliko gadosti i gluposti, na koje čovek nezna dal da ga žali il da mu se smeje. Moji argumenti su u fajlu ispod, pa izvolite, pažljivo pročitajte. Paya rlpp.zip
cccc.138 bojt, -> #137, ppekovic
Ajde ppekovicu, smanji doživljaje i ostavi čoveka na miru. >> I da ti otvoreno kažem, upotrebiš li još jednom ijednu jedinu >> pogrdnu reč upućenu meni, neću se više zadovoljiti krajnje >> argumentovanim i za tebe preblagim reply-ima!!! Ako se ova diskusija nastavi ovim tokom, ja se više neću zadovoljiti reply-ima nego ću možda da potegnem neke jače argumente...
cccc.139 ppekovic, -> #138, bojt
>>Ajde ppekovicu, smanji doživljaje i ostavi čoveka na miru. O.K. >>Ako se ova diskusija nastavi ovim tokom, ja se više neću zadovoljiti >>reply-ima nego ću možda da potegnem neke jače argumente... Ono O.K. je direktna posledica gore navedene rečenice. Jest da Bojt ima 165 i 55 kila al ti mali su najgori, prgavi bre nešto mnogo. Paya
cccc.140 dejanr, -> #139, ppekovic
Molim da se ova diskusija iz PC.SOFT preseli u neku prikladniju konferenciju, a još bolje u privatnu poštu. Dalje poruke na ovu temu ćemo uklanjati iz PC.SOFT/cccc
cccc.141 gww., -> #136, rlazic
Šta zapravo TC++ odsvapuje u EMS? Vrlo čudno je za DOS program da ima 800K. Kako se zapravo nalouduje takav program, jedini moj logičan zagljučak da negde ima zapisano koliki zapravo kod treba da se nalouduje a ostalo je neka vrsta overlaya. Ako je tako zašto su uopšte trpali sve u jedno? Čisto zbog kurioziteta?. Zašto bi se svapovao u XMS kad recimo debugger lepo radi iz XMS-a bez svapa?
cccc.142 rlazic, -> #140, dejanr
Za sve one koji su imali (ne)prilike da prate diskusijicu između Paye i mene, obaveštenje da se ista od sada razvija u private mail-u pod šifrom !rlpp. Ranko Lazić
cccc.143 rlazic, -> #141, gww.
>> Šta zapravo TC++ odsvapuje u EMS? Vrlo čudno je za DOS program da >> ima 800K. Kako se zapravo nalouduje takav program, jedini moj >> logičan zagljučak da negde ima zapisano koliki zapravo kod treba >> da se nalouduje a ostalo je neka vrsta overlaya. Mislim da je u pitanju taj novi Borland-ov sistem za overlay-e (VROOMM). Izgleda da stvar radi tako što sve "natrpa" u jedan .EXE fajl, na početku učita deo koji mu je u tom trenutku potreban, a tokom rada iz fajla "vadi" segmente programa koji mu u datom trenutku trebaju. Kako piše u uputstvu, VROOMM će sam prepoznati i koristiti EMS/XMS memoriju. Moj zaključak je da se upravo na to svodi TC++-ovo korišćenje EMS/XMS memorije - umesto da tokom izvršavanja stalno "prčka" po disku, on te overlay-e lepo stavi u EMS/XMS, pa ih posle odatle vadi. Objašnjenje za poruku "Swapping..." tokom kompajliranja je da on u tom trenutku prebacuje u EMS/XMS (ili na hard/RAM disk) segmente koji su mu u tom trenutku suvišni i na taj način povećava količinu slobodnog osnovnog RAM-a. Naravno, sve to ima granice (nešto ipak mora da mu ostane u memoriji), čije prekršavanje rezultuje sa Fatal error: Out of memory. Ranko Lazić
cccc.146 bjirecek,
TC 2.0 Funkcija /*OVDE*/ /*OVO*/ for(i=0;i<64000;i++) niz[i]=0; izvrsi OVO (skoro) trenutno; ali ako OVDE iniciramo grafiku, OVO se izvrsava nesto vise od POLA SATA!!!! (XT). Zna li neko zasto?
cccc.147 mperovic,
U najnovijim racunarima je dat prikaz knjige: The Waite Group's Microsoft C Bible ali nigde u celom tekstu nije data adresa ili telefon zasĘtuůpnika iz Sarajeva kod koga se moze kupiti doticna knjiga. Ako je neko zna molim vas da je posalje. Pera
cccc.148 dtadic, -> #147, mperovic
Ta adresa se vec vise puta pojavljivala na Sezamu. Evo je opet: TKP "Sahinpasic" Livanjska 74 Sarajevo tel. 071/212-333, 275-574 ┼
cccc.149 miki,
Jedno pitanje za korisnike MS-C6.00 Nova verzija C-a u sebi sadrzi opciju za generisanje Browser - datoteka, poznata -FR opcija. Ove datoteke posle koristi pwbmake i na kraju PWB. Program pwbmake generise fajl *.BSC koji ustvari predstavlja fajl baze podataka, nesto kao *.DBF fajlovi. Interesantno je da u uputstvu za C6.00 ima vrlo malo toga napisanog, tj. vecinu ovog sam shavatio koristeci qh program. Imam utisak da je ova opcija jos nedovrsena pa iz tog razloga nije dobro dokumentovana. Pitanje: Da li neko zna format ovih *.BSC fajlova ili neki program osim PWB-a koji moze da ih cita. Unapred hvala: Mirko B.
cccc.150 dgrbic,
TURBO C 2.0: Kada sam u petlji imao nest ovako: a [i][1]=...; a [i++][2]=...; to nije radilo korektno, pa sam morao da uvecavanje brojaca izvucem u poseban izraz. Pretpostavljam, da je to posledica optimizacije (default), nisam jos stigao da proverim sa iskljucivanjem optimizacije (to mi se upravo sad desilo). Vrlo ruzno, program ne radi, a morao bi. Kada se radi o necem takvom, trazenje greske moze biti vrlo neprijatno. Ovo je cito kao upozorenje, da bi ljudi znali sta im se radi iza ledja, tj. ako program ne radi a morao bi, moglo bi da se radi o necem ovakvom. Grba.
cccc.151 dgrbic,
Ima li neko neka iskustva sa Power C kompajlerom (od MIX Software)? Grba.
cccc.152 pjero,
Poruka je u datoteci handle.sez hendle.sez
cccc.153 dgrbic,
Ima li neko source nekog C ili Pascal kompajlera? (Small C ili slicno) Grba
cccc.154 vkostic,
Pointer na niz stuktura ???????? Mislio sam da znam sve o C-u, programiram vec godinama na C-u, drzao sam i kurseve C-a, ali ne lezi vraze! Danas sam naleteo dali na svoje neznanje, ili na ogranicenje C-a, nemam pojma. Problem: Imam strukturu i pointer na nju: struct { int a; int b; } *p; Prostor za strukturu se alocira na heap-u, i to ne za jednu strukturu nego za niz struktura. Ok, sada hocu da adresiram te elemente. Da je struktura ovako deklarisan: struct { int a; int b; } p[10]; onda bi to radio ovako: p[i].a po toj analogiji, ja sam pokusao da uradim: p[i]->a posto je p kao sto rekoh deklarisan kao pointer. E, ali to ne radi. Jednostavno nemam pojma zasto. Imam tri knige ovde pri ruci, ali ni u jednoj ni slova o pointeru na niz stuktura, samo ono standardno - pointer na strukturu: p->a Malo petljanja sa aritmetikom pointera prizvodi sledeci rezultat: (*(p+i)).a i to radi. Proverio sam. Nije ni lepo ni elegantno ali radi. Samo, problem je sto sam nameravao da koristim nesto mnogo slozenije: struct regions { char name[32]; long users; int subregions; struct subregions *subregs_ptr; } *sp; struct subregions { char name[6]; long start_index; long users; long maxusers; }; Pri cemu je sp pointer na niz struktura, a u svakoj od tih struktura sregs_ptr je pointer na drugi niz struktura. Sav prostor se alocira na heap-u jer se tacne dimenzije ne znaju unapred. Dalje, nameravao sam da koristim izraze tipa: sp[i]->subregs_ptr[j]->start_index Samo, to ne moze. Izgleda da bi moglo: (*((*(rp+i)).subregs_ptr+j)).start_index Sacuvaj boze sto je to pregledno, a pitanje je i dali radi. Upravo nameravam da proverim. Jel ima neko bolju ideju? Pozdrav, V.K.
cccc.155 zzivotic, -> #154, vkostic
>> Pointer na niz stuktura ???????? >> Ok, sada hocu da adresiram te elemente. Da je struktura ovako >> deklarisan: >> struct { >> int a; >> int b; >> } p[10]; >> onda bi to radio ovako: >> p[i].a >> po toj analogiji, ja sam pokusao da uradim: >> p[i]->a >> posto je p kao sto rekoh deklarisan kao pointer. Sve je ok sem analogije :) Jesi li probao prosto: p[i].a Pozdrav, zz
cccc.156 kaza, -> #154, vkostic
Kod polja struktura tipa struct { int a; int b; } *p; i druge struct {int a; int b; } p[10]; Razlika je sto se u prvom slucaju NE alocira prostor (nezna se ni koliki je) *p-to ne govori, a u drugom slucaju se alocira prostor posto se zna koliki je niz struktura. (i u prvom slucaju se alocira prostor ali samo za jednu strukturu, ne za niz) Kod oba slucaja vrijedi p[i].a ili *(p+1).a sto je analoo. Postoji analogija i sa oblikom p->a ali to izgleda ovako (p+i)->a. Notacija p[i]->a ne dolazi u obzir jer u ovom slucaju (pointer na pointer) nije deklarisana. Jednostavno receno u strukturama kombinacija * i . ili [] i . se mogu zamjeniti sa notacijom -> umjesto tacke, ako je tako preglednije i pod uslovom da je deklarisan niz struktura. Prva struktura iz ovog primjera je neupotrebljiva kao niz jer se vise na nju ne moze pozvati u smislu deklaracije clanova niza jer nema ime. Medjutim polje struktura koje sadrzi polje struktura kao u komplikovanom primjeru iz poruke 6.154 se moze napraviti na slijedeci nacin: struct x { int a; int b; struct { int c; int d; } p[10]; }; sada u programu treba inicijalizirati strukturu npr. void main() { static struct x y[]={ {1,2,{{31,41}, {32,42}, moze se dodati jos clanova niza (do 10) {39,49}}}, {5,6,{{71,81}, {72,82}...}}, {9,10,{{11,12}}} }; Tek je ovaj proces inicijalizacije alocirao prostor ? Apojedinim elementima se moze pristupiti: (y+i)->p[j].c za i=1 i j=1 ovo je 72 ili ekvivalentno y[i].p[j].c ako je preglednije pozdrav KAZA
cccc.157 vkostic, -> #155, zzivotic
>> Jesi li probao prosto: >> >> pŠiĆ.a Eh da, trebalo se setiti! Bre Zorane, od tebe covek uci dok je ziv! :) Pozdrav, V.K.
cccc.158 vkostic, -> #155, zzivotic
>> Jesi li probao prosto: >> >> pŠiĆ.a Eh da, trebalo se setiti! Bre Zorane, od tebe covek uci dok je ziv! :) Pozdrav, V.K.
cccc.159 vkostic, -> #156, kaza
Hvala na trudu oko odgovora. Sve sto si napisao vec godinama znam osim sitnice da je trebalo napisati pŠiĆ.a a ne pŠiĆ->a. Pozdrav, V.K.
cccc.160 .bale.,
U novim "Računarima" ZZ kaže da MENU.C (koga još nema u RSOFT) ima oko 1500 linija, a MENU.EXE 25 kB. Je li to greška (150) ili da se i dalje čudim? Regards from .bale. ! #8*)+-<
cccc.161 bojt, -> #159, vkostic
>> Sve sto si napisao vec godinama znam osim sitnice da je trebalo >> napisati pŠiĆ.a a ne pŠiĆ->a. Treba zakonom zabraniti da programeri koriste YUSCII raspored!
cccc.162 gww., -> #159, vkostic
Eh da. Problem alociranja niza struktura na heap-u kao i uostalom svakog niza svodi se na problem prljavosti C-a kao jezika. Ono što zapravo nedostaje ja zovem "niz cast". K&R ne gleda razliku izmedju pointera. Zapravo je svejedno kakav pointer se predaje a kakav se koristi. Oko toga sam se već svadjao sa Alexom (a mislim da sam jednom tražio tu doslednost ovde na Sezamu). Turbo C 2.0 (ANSI varijanta) ume da prijavi u tom slučaju Suspicious pointer conversion jer jedno je pointer na strukturu a drugo pointer na niz struktura iako jer adresna aritmetika ista. (po toj analogiji svejedno je da li je str_p->a ili str_pŠ0Ć.a). Ovo povlači izjavu da zapravo u C-u gornji bound checking nije moguć. A koliko sam shvatio čitajući neki od Zoranovih napisa u "Računarima" ni donji bound cheking se ne radi (tj mogući su i negativni indeksi) što daje neke mogućnosti ali kao side-efekt a ne kao legalna filozofija. To nije problem u C jeziku, medjutim, da je C malo više tipiziran jezik što na primer C++ pokušava da bude (a Pascal naprimer jeste) postavlja problem legalnosti smatranja pointera. t.j. preporučljivije je cast-ovati da bi stvar bila jasnija. Zapravo mi ne pada napamet u kojim bi to slučajevima izazvalo frku, ali da nedostaje - nedostaje. Ovako stvar prodje kao (eventualni) warrning i pojeo vuk magarca (stvar radi) a o doslednosti (lepoti filozofije) ko te pita. P.S. Možda bi zapravo trebala f-ja calloc da vraća pointer niz tipa (možda calloc to i radi, ne znam, nisam proveravao). Možda ideja da se niz cast piše na primer: (ŠĆ*) ili možda lepže ali i nedoslednije (ŠĆ). pozdrav GWW.
cccc.164 alexa, -> #162, gww.
Eh, gww., pa tebi ne treba C, nego Modula-2! Protivno je koncepciji C-a proveravanje granica niza i slične stvari. C je samo zamena (mnogo lakša, lepša, elegantnija i portabilnija) za asembler.
cccc.165 gww., -> #164, alexa
Zašto je moliću lepo protivno koncepciji bilo kog jezika proveravanje? Koliko znam tako nešto čak i postoji i to baš za C, a zove se LINT (uzgred ima li neki LINT za PC). Ne vidim takodje razlog za tvrdnju da je C zamena za ASM jezike isto se tako može reći da je "samo zamena (mnogo brža, fleksibilnija, elegantnija i portabilnija) za" neki viši jezik. Jezik je lep i koristan sa još par zgodnih stvari (koje već postoje u C++) mogli bi se 'ladno odreći svega što postoji i lepo zaboraviti probleme računarskih jezika (ovog tipa). 'De me nadje sa Modulom? pa ona je povukla masu loših strana Pascala, čak je neke i prološila da se slobodno izrazim, a recimo današnji Turbo Pascal (počev od verzije 4) mi žestoko smrdi na propali projekt Turbo Module 2. Pogotovo otkad sam video Turbo Modulu 2 za CP/M. pozdrav GWW. (u zanosu akademske rasprave) :)))))
cccc.166 alexa, -> #165, gww.
C je jezik niskog nivoa. Zato u njemu nema stvari kao što su proveravanje dimenzija niza, razlikovanje pointera-na-niz od pointera-na-element, prenosa argumenata po referenci itd. To su koncepti višeg nivoa, koji svoju podlogu nemaju u arhitekturama današnjih računara. Za takve stvari je pravi jezik upravo C++, i ne treba tražiti da se ubacuju u C. Ne zaboravi da je C++ nekada generisao kod u C-u, kao dobroj (portabilnoj) zameni za mašinski kod! (istina, taj kod u C-u je VRLO nečitljiv). Što se tiče LINT-a, to je program potpuno odvojen od C-a, i služi za to da ti ukaže na (njemu) sumnjiva mesta; koristio sam ga nekoliko puta za traženje bug-ova, ali mi ne pada na pamet da ga redovno upotrebljavam. Program koji bi bio sasvim 'po ukusu' LINTa uopšte ne bi ličio na 'normalan' C program. Sve u svemu, LINT mi liči na podvalu nekog učenika N. Wirtha, i ne zaslužuje da postoji. Što se tiče Module, ne shvatam zašto te toliko odbija (kad već voliš strong typing). Ono što je POSEBNO dobra stvar kod Module su odvojeni definition- i implementation-moduli. To se (prilično bedno, po mom mišljenju) simulira u C-u upotrebom header datoteka. Na kraju, da kažem da već godinama programiram u C-u (profesionalno), prvenstveno na UNIXu i UNIXoidnim operativnim sistemima. Tek kad malo više 'zaživi' Release 4 System V UNIXa preći ću na ANSI C, a dotle sam vrlo zadovoljan starom (K&R) verzijom jezika. Pozdrav, Alexa
cccc.167 gww., -> #166, alexa
Zašto niskog? "Zato u njemu nema stvari kao što su proveravanje dimenzija niza, "razlikovanje pointera-na-niz od pointera-na-element, "prenosa argumenata po referenci itd. To su koncepti Ali zato ima struktura i strukturne aritmetike (još gore unija), prenosa po adresi i po vrednosti i funkcije strlen. Kakva ameba! Modula ima pretenziju da se proširi na proces linkovanja (čak i na druge funkcije opertivnog sistema, ali to je već druga priča), C nema tu pretenziju zato i nema jake koncepcije linkovanja u C-u. Slažem se: linkovanje C-a je operacija koja nigde nije dovoljno objašnjena (*1). Modula se vrlo malo razlikuje od današnjeg turbo pascala s tim što je Borland na vreme odlučio da nas ne gnjavi sa moduloidnim drilom pisanja programa. Nemam nameru da koristim modulu a i današnji pascal koristim uglavnom za brzo rešavanje odredjene klase problema i za eskperimentisanje. Strong typing ima tu lepu osobinu što je idealan za eksperimentisanje ali ne i za konačnu verziju nekog koda (čemu overhead?). A ako bih hteo nešto portabilno jednostavno ne bih imao šta da izaberem osim C-a, ali bojim se da su tu mnoge stvari još uvek jednostavno nedorečene. Sve u svemu u pravu si osim što ćeš kad predješ na ANSI C susresti jednu podvalu ili pak lepu stvar (sve zavisi kako posmatraš): prototip funkcije sa parametrima a onda na scenu stupa niz cast ... ta da da dam :)) (*1) Skoro mi se dogodio jedan biser u vezi sa linkovanjem. Iz nekog čudnog razloga u jednoj od biblioteka našla se funkcija main. Da stvar bude malo više po marfiju u modulu koji je trebao da bude glavni main funcija je bila isključena (komentarom). Stvar je prošla bez problema (kompajliranje / linkovanje) a po startovanju programa pojavio se meni od pre mesec dana. U trenutku je palo zbunjvanje ali i rešenje: jedan pregled svih biblioteka i stvar je bila jasna kao dan. GWW
cccc.168 alexa, -> #167, gww.
> Ali zato ima struktura i strukturne aritmetike (još gore unija), > prenosa po adresi i po vrednosti i funkcije strlen. Kakva ameba! UH! Ovde nema ni jedne reči sa kojom se mogu složiti! Strukture sasvim sigurno JESU low-level koncept. Sa time se neće složiti jedino zaklete FORTRANdžije, jer eto ima i jedan high-level jezik bez njih. Podsetio bih da i Microsoftov asembler ima službenu reč STRUC, koja upravo služi za realizaciju koncepta strukture - skoro identičnog C-ovim strukturama. UNION u C-u nema AMA BAŠ NIKAKVE veze sa strukturnom aritmetikom (šta god to bilo), već je prosto prirodno proširenje koncepta strukture. Nešto slično imaš u PASCALu, na primer, kao VARIANT RECORD. U C-u NE POSTOJI prenos argumenata po adresi, nego samo po vrednosti!!! Funkcija strlen je možda deo C-a od kako je ANSI komitet uzeo stvari u svoje ruke. > linkovanje C-a je operacija koja nigde nije dovoljno objašnjena. To je zato što je linkovanje funkcija operativnog sistema, totalno izvan C-a, kao što i TREBA da bude. Zato objašnjenja treba tražiti u priručnicima za LINK ili analogni program operativnog sistema. > Modula se vrlo malo razlikuje od današnjeg turbo pascala ... Ispravka: današnji TP se vrlo malo razlikuje od Module-2. > Sve u svemu u pravu si osim što ćeš kad predješ na ANSI C susresti jednu > podvalu ili pak lepu stvar (sve zavisi kako posmatraš): prototip funkcije > sa parametrima a onda na scenu stupa niz cast ... ta da da dam :)) No dobro, svaka ideja se može zloupotrebiti. Ja ulogu forsiranog cast-a u prenosu argumenata vidim na sasvim drugoj strani - u rešavanju praktičnog problema čestih grešaka u dužini raznih integerskih izraza-argumenata.
cccc.169 zonjic,
Postavio sam pitanje na temi TP o programu za ulepsavanje source-a u pascalu, ovde ostavljam to isto, samo za C. Rade cb.zip
cccc.170 djelovic,
U TC++ se grafički karakteri mogu otkucati tako sto izađete u DOS (Shell), vratite se u TC, i onda otkucate Alt- kombinaciju (recimo Alt-196). Izašao je Borland C++ for Windows koji koristi isti grafički toolkit kao i Actor, tako da bi trebao da bude moćan. Koji je "najniži" bios poziv za ispisivanje znaka na ekran (da svi drugi pozivi idu preko njega).
cccc.171 braca,
Može li neko da mi preporuči dobru biblioteku funkcija za C (ili C++) za rad sa podacima organizovanim u B+ stablo? Unapred hvala, Braca.
cccc.172 djelovic, -> #171, braca
Odlična je C/Database Toolchest (B+, ISAM) za samo $19.95 od iste firme koja prodaje Mix C kompajler za koga kažu da je car među low-end kompajlerima. Adresa: Mix Software 1132 Commerce Drive Richardson, TX 75081 Tel: 1-800-333-0330 P.S.: Imaš i "60 Day Money Back Guarantee".
cccc.173 sstakic, -> #172, djelovic
Da li si probao da zoves nekada na 1-800-... ? ;>>>
cccc.174 nkbog, -> #171, braca
Evo datoteke sa programima iz DDJ (u C-u) iz decembra '90. Ona sadrzi source program i header datoteke za rad sa B stablom. Autor je Al Stevens. U programu se javlja funkcija dberror() koju trebas sam definisati (obrada greske). Nazivi funkcija su dovoljno jasni. NB. btree.zip
cccc.175 braca, -> #172, djelovic
Hvala na preporuci, upravo sam naleteo na to listajući danas DDJ i naručio na slepo, rekoh da ne mogu da se zeznem za 50$ (19.95 + 10 za source + 20 za transport). Kad stigne, ostaviću utiske ovde.
cccc.177 djelovic, -> #173, sstakic
Možda Braca ima ujaka u Amerigi (To je još uvek najbolji način da se nešto odande dobavi). Što se telefona tiče, možda treba probati i tech. supp. line: 1-214-783-6001
cccc.178 sstakic, -> #177, djelovic
Tako vec moze! Pozdrav Srdjan
cccc.179 ppekovic,
Imam sledeći problem: Korstim MSC 6.00 i u jednom programu u isto vreme koristim više fontova različitih veličina. Problem je što, kada god promenim font, program ga učitava sa disk-a. Da li je moguće, kao kod Borlandovog TC-a, ulinkovati fontove zajedno sa programom i kako, ili, da li je moguće učitati fontove u memoriju, pa ih koristiti iz memorije a ne sa diska, i naravno, kako? Za svoje potrebe, ja prepišem fontove u RAM disk, međutim, program treba da radi na svim mašinama ;(. Paya
cccc.180 djelovic,
Da li neko zna kojim redosledom bivaju izvršeni konstruktori i destruktori u C++? Izgleda da prvo bivaju izvršeni oni koji su prvi definisani (class x (...); - zamislite vitičaste zagrade, ja imam YUSCII), tj. izgleda da nije bitan redosled njihovog kreiranja u programu, mada ne mogu u to biti siguran.
cccc.181 djelovic,
Da li je moguće .OBJ faljove iz TC-a dalje optimizirati trećim prolazom MSC-a. .OBJ fajlovi bi trebali da budu standardni (ja ne znam format), ali je moguće da kompajler ostavlja "komentare" koji služe za dalju optimizaciju, te je "gorespomenuta tehnika" neizvodljiva.
cccc.182 alexa, -> #180, djelovic
> Da li neko zna kojim redosledom bivaju izvršeni > konstruktori i destruktori u C++? ----------------------------------------------------------- When a class has a constructor, it is called whenever an object of that class is created. When a class has a destructor, it is called whenever an object of that class is destroyed. Objects can be created as (1) An automatic object: created each time its declaration is encountered in the execution of the program and destroyed each time the block in which it occurs is left; (2) A static object: created once at the start of the program and destroyed once at the termination of the program; (3) A free store object: created using the 'new' operator and destroyed using the 'delete' operator; and (4) A member object: as a member of another class or as a vector element. An object can also be constructed by explicit use of a constructor in an expression, in which case it is an automatic object. (citat iz knjige 'The C++ Programming Language', Bjarne Stroustrup) ----------------------------------------------------------- Sudeći po citatu, trebalo bi da je bitan *redosled kreiranja u programu*. Ako se radi o TC++, bilo bi dobro da rečima autora programskog jezika C++ ne veruješ suviše - Borland se nikad nije libio da prepravi programski jezik ako mu ne odgovara onakav kakav jeste.
cccc.183 alexa, -> #181, djelovic
> Da li je moguće .OBJ fajlove iz TC-a dalje > optimizirati trećim prolazom MSC-a. Nije uobičajeno da optimizujući deo kompajlera kao ulaz koristi objektnu datoteku - njen format je za tako nešto vrlo nepogodan. Treći prolaz MSC-a kao svoj IZLAZ daje .OBJ datoteku. > .OBJ fajlovi bi trebali da budu standardni Standardni format datoteka sa objektnim kodom je za MSDOS Intel-ov (NE Microsoft-ov!) OMF.
cccc.184 djelovic, -> #182, alexa
Hvala. Međutim, moj problem je u tome što je jedan objekt (klasa) iz jednog fajla, a dugi iz drugog. Primer: Fajl1: class cl1 (...); ... cl1 class1; Fajl2: extern cl1 class1; class cl2 (...) class2; main () (...) Iako je u fajlu 2 class1 definisana pre class2, prvo se izvršava konstruktor iz class2, pa tek onda iz class1. Koristim TC++, možda je u njemu problem? P.S.: Prave su zagrade samo iza main. Sve ostale su vitičaste.
cccc.185 alexa, -> #184, djelovic
> Iako je u fajlu 2 class1 definisana pre class2, prvo > se izvršava konstruktor iz class2, pa tek onda iz class1. Ako sam dobro shvatio, tebe zanima redosled izvršavanja konstruktora za statičke objekte definisane izvan funkcija - na najvišem nivou. Pogledaću još malo Stroustrup-ovu knjigu, ali pretpostavljam da je što se toga tiče stvar ostavljena na volju autoru kompajlera. Uzgred budi rečeno, u fajlu 2 class1 uopšte nije definisan, samo je deklarisan. Definisan je u fajlu 1.
cccc.186 djelovic, -> #185, alexa
I ja isto mislim da su Borlandovci sami odlučivali. Hvala u svakom slučaju.
cccc.187 ljupco,
Kako da nateram TCC da generise informacije potrebne turbo debuger-u? Takodje zelim da dobiveni fajl bude .com tipa. Mozda TCC -mt -lt -v -lv -y -ll IME Medjutim, tdebug javi da mu nedostaje tabela simbola. Sta sad?
cccc.188 ljupco,
Juce mi se dogodilo sledece: imam program od 25 reda u kome je neko racunanje i na kraju je stampanje. Na pocetku je #include "math.h" i #include "stdio.h". Prilikom linkovanja iz integrisane okoline TC 2.0, interni linker javi da je naisao na neke nedefinisane simbole (medju kojima navodi i _fabs i _sqrt, funkcije fabs i sqrt koristim u programu) i t.n. Isti program, sa TCC i TLINK, prolazi bez problema. Direktorijumi za include i lib su pravilno podeseni i kod TC i kod TCC. Pre nedelju dana isti taj program kompajlirao se bez greske i sa TC. U cemu gresim?
cccc.189 ljupco,
Secam se da je negde (u nekoj poruci ili u Racunarima) nedavno bilo reci o deklaraciji funkcije kao 'interrupt'. Zna li neko gde? U uputstvu za TC20 na str.542 (Appendix E, Language Syntax Summary, Lexical Grammar, Tokens, Keywords) kao i u Norton Guide (Reserved Words) navodi se rezervisana rec interrupt kao ekstenzija TC-a, ali i nista vise.
cccc.190 ljupco,
Hteo bih da pokujem Herkules video memoriju (kartica je u tekst rezimu). Medjutim, sledeci program #include "dos.h" int i,p; void main() { for(i=0, p=0; i<256; i++, p++, p++) poke(0xb000,p,i+256*7); } ne radi. Racunar se zaglavi. U cemu gresim? Poke(int segment, int ofset, int vrednost) je makro u "dos.h" (tako kaze NortonGuide).
cccc.191 djelovic, -> #189, ljupco
interrupt f-je se razlikuju od običnih u tome što automatski gurnu registre CPU-a na stack, i završavaju se sa IRET. Nisam pogledao, ali bi trebao da imaš primer kod f-je keep (). Što se pitanja o herkulesu tiče, pogledaj help TC++ - a na temu keep (). Tu imaš mali primer. Inače, ja poke nisam koristio, švrljao sam direktno sa pointerima i to sigurno radi, a i više je u duhu C-a ("poke" ?? - jel to C ili BASIC?). Pozdrav.
cccc.192 alexa, -> #188, ljupco
> interni linker javi da je naisao na neke nedefinisane simbole > (medju kojima navodi i _fabs i _sqrt, funkcije fabs i sqrt > koristim u programu) i t.n. Pa, ne znam kako radi to 'integrisano okruženje', ali ono što se dešava je da linker ne uzima u obzir biblioteku sa math funkcijama - verovatno imaš negde neku opciju da ubaciš i ovu biblioteku.
cccc.193 ljupco, -> #192, alexa
> Pa, ne znam kako radi to 'integrisano okruzenje', ali ono sto se > desava je da linker ne uzima u obzir biblioteku sa math > funkcijama - verovatno imas negde neku opciju da ubacis i ovu > biblioteku. Na pocetku programa nalazi se direktiva #include "math.h".
cccc.194 ljupco, -> #191, djelovic
> help TC++ - a na temu keep (). Tu imas mali primer. Inace, > ja poke nisam koristio, svrljao sam direktno sa pointerima > i to sigurno radi, a i vise je u duhu C-a ("poke" ?? - jel > to C ili BASIC?). Pozdrav. Probo sam najpre ovako: char i=0; char far *p; void main() { p=0xb0000L; do { *p=i++; p+=2; } while(i); } ali svejedno ne radi, a i nacin na koji ne radi je isti. Posto je ocigledno da pojma nemam, molim te ne zameri ako odvalim neku glupost. Juce sam tek posle pola sata lupanja glave i tri minuta sa TurboDebuger-om shvatio da char i; for (i=0; i<=255; i++) ; jeste mrtva, a ne prazna petlja.
cccc.195 djelovic, -> #193, ljupco
Taj include fajl služi samo za definisanje konstanti itd., tj on nema veze sa onim što linker ubacuje. Nateraj (potraži to po opcijama) linker da ubaci i matematičku biblioteku (math.lib ili tako nešto), a ako ti ni to ne uspe, probaj da je ručno ubaciš u project fajl.
cccc.196 djelovic, -> #194, ljupco
probaj p = MK_FP (0xb000, 0) umesto p = 0xb0000L i p++; *p = <atribut>; p++; (ti to "izoptimizuj") tj., možda ti prikazuješ slovo na ekranu, ali crno na crno. Srećno.
cccc.197 sradman,
Molim nekog da mi prenese iskustva sa BORLAND C++ 2.0,posto namjeravam da ga nabavim.
cccc.198 nkbog, -> #194, ljupco
> p=0xb0000L; Ovo bi trebala da bude adresa 000b:0000 <=> 0b0h. TC bi trebao (ne radim sa njim ali imam neke source-ve) da isto pamti far pointere sa 2x 16bita. Stoga program ne radi jer si gadjao nultu stranu <=> tabela vektora. NB.
cccc.199 kaza, -> #194, ljupco
Probaj jednostavno sa recimo char far pok=(char far *) 0xb0000000L; ovo pouzdano radi ali ima jedno divno rjesenje a podrazumjeva strukturu oblika : struct m { char slovo; char atrib; } (far *Ekran) [BR_RED][BR_KOL]; sada se moze definisati #define PUTC(red,kol,ch) (*Ekran)[red][kol].slovo=(ch) isto za atribut pa se poslije moze pokati po video memoriji koristeci oblik npr. PUTC(0,0,'A'); Inace treba reci Ekran=(struct m(far*)[25][80]) 0xb0000000L; Pozdrav KAZ
cccc.200 ljupco, -> #196, djelovic
Greska je u p=0xb0000L. Treba char far *p=(char far *)0xb0000000L !!! Drugim recima, kada stavis p=0xAAAABBBB, onda je za pointer p segment 0xAAAA, ofset 0xBBBB, t.j. stvarna adresa je 0x(AAAA0+BBBB). Radi char i=0; char far *p=(char far *)0xb0000000L; void main() { do *(p+=2)=i++; while(i); } I makro MK_FP daje pointer u obliku 0xAAAABBBB za MK_FP(0xAAAA,0xBBBB): #define MK_FP(seg,ofs) ((void far *) \ (((unsigned long)(seg) << 16) | (unsigned)(ofs))) Hvala na pomoci. P.S. Ovog trenutka mi je pogled pao na aprilske Racunare otvorene na strani 71 (moja skola c-a, zz), gde je dat primer o huge pointerima: "... Ako pokusamo da proverimo ovu tezu sledecim primerom: void main() { char huge *p; p=(char huge *)0x12345678L; printf("%p\n",p); } necemo bas dobiti potvrdu ove teze, program ce stampati 0x1234:0x5678." Resenje mi je bilo ispred nosa citavo ovo vreme! ^^^^^^^^^^^^^
cccc.201 djelovic, -> #200, ljupco
Zbog dužine tvog nosa mi smo morali da ispaštamo :). Odsada, svake računare da si na pamet naučio, a mi ćemo da te ispitujemo.
cccc.202 ivujanic, -> #197, sradman
>Molim nekog da mi prenese iskustva sa BORLAND C++ 2.0,posto namjeravam da ga >nabavim. Paket mi je tek stigao pre par dana. Deluje moćno. U odnosu na poslednju verziju Turbo C++ koji sam video, novost je što oba C++ kompajlera (i onaj sa IDE i klasični linijeski) postoje u dve varijante: jedna je standardna DOS verzija, a druga prebaci vaš 286+ računar u protected mode i koristi svu raspoloživu expanded/extended memoriju. Isto važi i za TASM, jedino njemu u "mišićavoj" verziji treba pomoć Windows-a. Gomila disketa, pa ste mirni bez obzira da li imate 3.5" ili 5.25", što je lepo od njih. Da bi se radilo za Windows-e dodat je i Turbo Debbuger pod Windows-ima, koji normalno ima mogućnost remote debbuging-a sa druge mašine preko RS-232. Mali ali korisni dodatak je i Whitewater Resource Toolkit, program koji radi pod Windows-ima sa zadatkom da omogući lako kreiranje i editovanje resursa za Windows-e (dialog-box, ikone, kurzori...). Radi sasvim fino, ko ima vremena uz pomoć te alatke će cele Windows-e prevesti na S-H, jer je struktura koda za Windows aplikacije standardizovana, pa možete editovati resurse bez source-a, samo sa .EXE ili .DLL verzijom. Knjiga koliko ti volja: 1. Borland C++ Getting Started 2. Borland C++ User's Guide 3. Borland C++ Programmer's Guide 4. Borland C++ Library Refernce 5. Whitewater Resource Toolkit 6. Turbo Profiler 7. Borland Languages Help Compiler 8. Turbo Debugger 9. Turbo Assembler 10. Turbo Assembler Quick Reference Guide 11. Mali ali vrlo zgodan Borland C++ Quick Reference Booklet Ja sam ga uplatio na dan kad je Ante proglasio novi kurs, po predračunu koji sam dobio dan ranije ;) ali mislim da ja i sadašnja cena sasvim fer. Ko može marku da nađe ispod 17 din? Postoji još gomila malih alata koji pomažu u radu, ali još nisam stigao da ih sve pogledam. Ivica
cccc.203 ljupco, -> #199, kaza
Hvala. Resenje koje si dao je stvarno lepo. Ja sam stavio struct m{ char slovo; char atrib; }(far *ekran)[25][80]=(struct m(far *)[][])0xb0000000L; Interesantno da kad je zadnja linija }(far *ekran)[25][80]=((struct m)(far *)[][])0xb0000000L; t.j. kad je '(struct m)' umesto 'struct m' dobijem 'Error:Expression syntax'. Zasto?
cccc.204 ivujanic, -> #202, ivujanic
Što više proučavam Borland C++ to me više prijatno iznenađuje. Mislili su na sve žive konfiguracije računara, na sve žive probleme na koje možete naići... Čak i linker i asembler postoje u verziji za protected mode! Normalno i profiler, a debugger može da radi standardno, u 286 modu (digne se u hi-RAM) ili da pređe u 386 mode i za vašu aplikaciju napravi pravu malu 8086 virtuelnu mašinu (na žalost tada neće ići software tipa QEMM ili 386ČMAX, jer je tada mašina već u virtuelnom modu). Stvarno je potrebno iščitati kompletna uputstva, jer je šteta da vam rešenje problema leži pod nogama a da niste ni znali. A sada ono što je vrlo bitno: brzina i veličina koda. Što se brzine tiče, nisam imao na raspolaganju ništa što bi mi sigurno pokazalo brzinu koda, pa je dobrodošao neko ko ima neki program koji je već koristio da bi poredio dosadašnje kompajlere da isti zakači na mail pa ćemo videti. A što se koda tiče, manji je za oko 8% od Turbo C-a. Mrzi me da instaliram Turbo C++. Dakle oni koji su već poredili dosadašnje kompajlere i sačuvali su rezultate dobro su došli da vidimo koliko je dobro ovo novo čedo. Ivica
cccc.205 kaza, -> #203, ljupco
(struct m[][]) predstavlja cast (struct m)[][] ostavlja [][] da visi samo za sebe pa to uzrokuje greske. citavu konstrukciju (struct (far *)m[][]) treba shvatiti kao cast u castu i sve je ok. pozdrav KAZA
cccc.206 djelovic,
Kako da u TC++ napravim GOSUB kao u BASIC-u (Sve u okviru jedne procedure). Probao sam sa: #include <stdio.h> void main () š asm call far dummy return; asm dummy: printf ("Deki"); asm ret ć ali me kompajler psuje. PLEASE HELP!
cccc.207 nkbog, -> #206, djelovic
>> #include <stdio.h> >> >> void main () >> >> s >> asm call far dummy >> return; >> asm dummy: >> printf ("Deki"); >> asm ret >> c Kao prvo, kad saljes nesto kao C (ili pascal ili bili sta drugo) iskljuci molim te YUSCII kod. Kao drugo probaj bez "far" poziva izbaci "asm dummy:" i stavi dummy: (labela u C <=> labela u assemberu- u ovom slucaju) - na MSC radi. Evo jednog resenja: /* FAR poziv */ main() { unsigned long a; printf("Zdravo\n"); /* sada sledi gosub */ _asm mov bx,offset a _asm mov ax,seg dummy _asm mov word ptr [bx+2],ax _asm mov ax, offset dummy _asm mov word ptr [bx],ax _asm call dword ptr [bx] /* ovde je kraj gosub */ printf("RETURN executed\n"); goto end; dummy: printf("GOSUB executed\n"); /* ovde je return */ _asm retf end:; } /* NEAR poziv */ main() { printf("Zdravo\n"); /* sada sledi gosub */ _asm call dummy /* ovde je kraj gosub */ printf("RETURN executed\n"); goto end; dummy: printf("GOSUB executed\n"); /* ovde je return */ _asm ret end:; } NB.
cccc.208 djelovic, -> #206, djelovic
Mali lapsus: trebalo je call far ptr dummy, i sve je OK. Compiler proizvodi .ASM fajl koji dalje mora da se prevede ručno, jer izgleda TASM 1.0 koji je ugrađen u TC++ ne može da se snađe sa forward referencama.