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.315 djelovic, -> #314, alexa
> Tužna vest, ali naredba *c = *c++ ne radi ništa! Što se > tiče redosleda za * i ++, nema priče - prvo ide ++. Ono što je >mene zanimalo je da li će neki kompajler prevesti ovo kao: > 1. Uzmi *c > 2. Povećaj c > 3. Stavi uzeti sadržaj na c > Međutim, izgleda da se ++ izvršava tak kada se izvrši ceo >izraz. Ovo nije slučaj sa pozivanjem f-ja (za razliku od makroa): > Kako rezultat nekog izraza biva stavljen na stek (s desna na levo), > tako se izvršavaju ++ i --. Probajte recimo: > a = 5; > printf ("%d %d", a, a++); > > *** Extreme caution! *** Ovakva igrica ne radi sa makroima, > so kids, don't do this at home! Handle with care! ...
cccc.317 zormi, -> #313, vasiljevic
* Zna li neko neki dobar nacin za pribavljanje neke * literature ili bilo cega u vezi sa grafikom u C-u> Ima na BBS-ovima dosta biblioteka funkcija u C-u. Baš sam juče video na EXEC-u nešto za rad sa PCX i VGA... Videću šta mogu da učinim.
cccc.318 mjova, -> #314, alexa
> *c = *c++ slabo snam C ali jednom prilikom imao sam sličan problem. naravno da sam pitao ZZ-a i on mi reče da se "++ ispred" izvršava PRE *CELOG* izraza a "++ iza" POSLE *CELOG* izraza (što meni tad nije bilo logično). znači da se prvo izvrši *c = *c (što nema smisla), a zatim se izvrši ++. e, sad, šta je operand to je drugo pitanje. kako ++ ima viši prioritet od * sledi da će se uvećati c (pointer) (pretpostavljam da je ranije definisan), a zatim će se 'podići' vrednost na koju pokazuje c. tako, pretpostavljam (nisam probao), da ono gore znači isto što i *c++. koliki je smisao da to stoji samo u redu nije bitno. može sve da se promeni zagradama, ovako: (*c)++. cu, mjova.
cccc.319 alexa, -> #315, djelovic
> Tužna vest, ali naredba *c = *c++ ne radi ništa! U stvari, nema garancije. Prosto, kompajleri koje si gledao verovatno vole da prvo izračunaju levu stranu, pa posle desnu kod infiksnih operatora (mislim na '=' u ovom slučaju).
cccc.320 djelovic, -> #319, alexa
Ma, ja se slažem sa citiranima ZZ-om: -- se izvršava pre celog izraza, a ++ posle celog izraza... Međutim, gde je tu onda optimizacija?!? C je i pravljen po principu: "Što da opterećujemo mašinu, ovi konji će to i onako sami uraditi... :)", međutim ovakav redosled ubija optimizaciju za ++ i --. Ništa mi nije jasno! :(
cccc.321 mjova, -> #320, djelovic
> Ma, ja se slažem sa citiranima ZZ-om: -- se izvršava pre > celog izraza, a ++ posle celog izraza... Međutim, gde je nemoj pogrešno da me shvatiš, radi se o tome da položaj znaka ++ ili -- određuje kad će se izvršiti. koji je znak u pitanju nema veze! ako je znak (INC ili DEC) PRE operanda onda se prvo izvrši znak, ako je operand IZA onda posle. kako su istog prioriteta ++ i -- pravilo važi za oba operatora podjednako. > Međutim, gde je tu onda optimizacija?!? kao što vidiš, optimizacija je vrlo nezgodna :). optimizacija se sastoji u tome da ne moraš da stavljaš red c += 1 (ili c -= 1) ispred ili iza izraza. kako u C-u možeš u okviru jedne linije da napraviš svašta, onda je ++ (ili --) dobra stvar i često se koristi. mislim da si imao primer ispravnog programa koji ne radi tačno :) cu, mjova.
cccc.322 djelovic, -> #321, mjova
>nemoj pogrešno da me shvatiš, radi se o tome da položaj znaka ++ >ili >-- određuje kad će se izvršiti. koji je znak u pitanju nema veze! >ako je znak (INC ili DEC) PRE operanda onda se prvo izvrši znak, >ako je operand IZA onda posle. kako su istog prioriteta ++ i -- >pravilo važi za oba operatora podjednako. ISUSE! Izgleda da je došlo do kratkog spoja između mog mozga i mojih ruku. Of course you are right, to sam sve vreme i mislio kada sam pričao ove gluposti. Kamen mi u usta. Međutim, moja misao oko optimizacije još uvek stoji: ++ i -- nemaju svrhe po pitanju optimizacije. Naime, to o čemu ti pričaš je jednostavna kratkoća pisanja koja doprinosi da listing bude kraći (i teži za razumevanje :)), a optimizacija bi se svela na to da se takva naredba izvrši brže nego su prefiksni operatori izbačeni u red više a postfiksni u red niže. Naravno, još uvek postoji optimizacija samog kompajlera, ali zašto onda koristiti C? Paskal je lakši za razumeti :).
cccc.323 bulaja,
Evo izvoda iz dokumentacije za cbase - database lib. Meni izgleda Ok, dat je kompletan source, pa ce se verovatno naci danas-sutra u \ibmpc\program direktorijumu (ARJovana je oko 250K pa ce biti podeljena na dva dela). Citadel 90/06/21 ---------------------------------------------------------------------- | cbase - The C Database Library | | Version 1.0 | ---------------------------------------------------------------------- cbase is a complete multiuser C database file management library, providing indexed and sequential access on multiple keys. It features a modular design, comprising four individual libraries: cbase - C database library lseq - doubly linked sequential file management library btree - B+-tree file management library blkio - block buffered input/output library cbase internally uses lseq for record storage and btree for inverted file index storage, which in turn use blkio for file access and buffering; blkio is analagous to stdio but based on a file model more appropriate for structured files such as used in database software. ... cbase Features -------------- Portable: - Written in strict adherence to ANSI C standard. - K&R C compatibility maintained. - All operating system dependent code is isolated to a small portion of the blkio library to make porting to new systems easy. - UNIX and MS-DOS currently supported.* Buffered: - Both records and indexes are buffered using LRU (least recently used) buffering. Fast and efficient random access: - B+-trees are used for inverted file key storage. - Multiple keys are supported. - Both unique and duplicate keys are supported. Fast and efficient sequential access: - B+-trees also allow keyed sequential access. - Records are stored in doubly linked lists for non-keyed sequential access. - Both types of sequential access are bidirectional. Multiuser: - Read-only locking. Other: - Text file data import and export. - Custom data types can be defined. - Marker used to detect corrupt files when opened. - Reference documentation is in standard UNIX manual entry format, including errno values.
cccc.324 prvul,
Povodom onoga teksta o UNIX-u i C-u (znate, onaj :)))))))): ZZ reče da C neće da proguta ovo: for(;P("\n"),R-;P("|"))for(e=C;e-;P("_"+(*u++/8)%2))P("| "+(*u/4)%2); Pošto mislim da bi to prošlo, jel' može da mi se objasni gde je greška? M. P.S. Pitao bih ja ovo ranije, ali sam bio zagubio tekst...
cccc.325 djelovic,
samo R- i e- treba da se zamene sa R-- i e--, i to će ti progutati svaki ANSI kompajler. Stariji kompajleri i bez toga...
cccc.326 ppekovic, -> #324, prvul
>> ZZ reče da C neće da proguta ovo: >> for(;P("Đn"),R-;P("đ"))for(e=C;e-;P("_"+(*u++/8)%2))P("đ "+(*u/4)%2); >> >> Pošto mislim da bi to prošlo, jel' može da mi se objasni gde je greška? Mislim da je najjednostavnije probati da se ovaj red, naravno dopunjen još nekim osnovnim stvarima, izkompajlira nekim od kompajlera. Paya
cccc.327 prvul, -> #325, djelovic
>> samo R- i e- treba da se zamene sa R-- i e--, i to će ti progutati >> svaki ANSI kompajler. Stariji kompajleri i bez toga... Da, jedino to je i meni bilo sumnjivo, ali sam pretpostavio da će C (onaj Ričijev) da e- shvati kao e-1 (tako bi bilo u skladu sa filozofijom C-a)...
cccc.328 alexa, -> #324, prvul
> for(;P("\n"),R-;P("|"))for(e=C;e-;P("_"+(*u++/8)%2))P("| "+(*u/4)%2); ** ** Mislim da je ovo sve sto smeta; naravno, i kada se to promeni (na primer, u --) potrebno je da simboli koji se koriste budu prethodno definisani ili deklarisani na odgovarajuci nacin. Tek ce u tom slucaju ovo 'proci' kompilaciju. for (; P("\n"), R--; P("|")) for (e = C; e--; P("_" + (*u++ / 8) % 2) ) P("| " + (*u/4) % 2); Mozda ovako izgleda prihvatljivije? Istina, tesko da ima nekog smisla (mada, ko zna? mozda bi se mogao napraviti primer).
cccc.329 prvul, -> #328, alexa
>>Mislim da je ovo sve sto smeta; naravno, i kada se to promeni >>(na primer, u --) potrebno je da simboli koji se koriste >>budu prethodno definisani ili deklarisani na odgovarajuci nacin. >>Tek ce u tom slucaju ovo 'proci' kompilaciju. A da li bi možda ipak e- prošlo? Ja mislim da bi trebalo, kao što rekoh, kao e-1... M.
cccc.330 alexa, -> #329, prvul
Ne bi prošlo. Za to služi '--'. Isto tako ne bi prošlo ni '+' umesto '++'.
cccc.331 prvul, -> #330, alexa
>>Ne bi prošlo. Za to služi '--'. Isto tako ne bi prošlo ni '+' >>umesto '++'. Naravno da 'R-' nije isto što i 'R--'. 'R--' uradi sledeće: 'R=R-1', dok bi 'R-' trebalo da uradi 'R-1', npr. posle izvršenja: int R,I; R=5; I=R-; trebalo bi da bude R==5 i I==4... Po ANSI-ju ne znam, ali po Ričiju, trebalo bi... M.
cccc.332 igor.mil, -> #314, alexa
> Radi se o naredbi (izrazu) > * c = *c++ > > - inkrementira se sadrzaj lokacije na koju ukazuje c. > E pa nece biti - ni na jednom C-u na koji sam naisao nije se > inkrementirao sadrzaj lokacije, nego se inkrementirao c. U pravu si. Ja sam imao pogresno ubedjenje da * ima visi prioritet od ++. Medjutim to nije tacno. Nije tacno ni obrnuto. Imaju ISTI prioritet, i oba su desno asocijativna. Znaci redosled izvrsavanja zavisi od medjusobnog polozaja, to jest izvrsi ce se prvo onaj na koji se naidje sa desne strane. Kao ilustracija, evo prevoda nekoliko C naredbi: === 1 ============================================================== mov word ptr [bp-2],1 ; int x=1; lea si,word ptr [bp-2] ; int *c = &x; mov ax,word ptr [si] ; *c = *c++; mov word ptr [si],ax inc si inc si === 2 ============================================================== mov word ptr [bp-2],1 ; int x=1; lea si,word ptr [bp-2] ; int *c = &x; inc si ; *c = *++c; inc si mov ax,word ptr [si] mov word ptr [si],ax === 3 ============================================================== mov word ptr [bp-2],1 ; int x=1; lea si,word ptr [bp-2] ; int *c = &x; inc word ptr [si] ; *c = ++*c; mov ax,word ptr [si] mov word ptr [si],ax ==================================================================== U prvom primeru, o kome je i bila rec, operator ++ se izvrsava prvi, medjutim, posto je u pitanju postfix, njegovo izvrsavanje je implicitno, efekat u vidu inkrementiranja pointera 'c' se javlja tek na kraju izracunavanja izraza. pozdrav, Igor
cccc.333 alexa, -> #331, prvul
> Naravno da 'R-' nije isto što i 'R--'. 'R--' uradi sledeće: 'R=R-1', > dok bi 'R-' trebalo da uradi 'R-1', npr. posle izvršenja: > > int R,I; > R=5; > I=R-; > > trebalo bi da bude R==5 i I==4... > Po ANSI-ju ne znam, ali po Ričiju, trebalo bi... Ovo si negde, valjda, sanjao. Prvo pročitaj tog Ričija.
cccc.334 prvul, -> #333, alexa
>>Ovo si negde, valjda, sanjao. Prvo pročitaj tog Ričija. Pa da sam siguran, ne bih ni pitao (ima 5 godina od kada sam učio C (uzgred, iz Ritchie&Kernihan ;), a nisam ga mnogo koristio). M. P.S. Ipak ću morati da probam.
cccc.335 mirkot,
Evo nesto na temu zvezdice i plusici: The unary operators associate from right to left, so *ptr++ applies first the ++ and then the * which increments the pointer. This only determines that the ++ applies to ptr, rather than to *ptr. For the ++ and -- operators, position also must be used. Since ++ follows ptr, it is applied to ptr after the pointer is used in the expression. Mirko
cccc.336 dnikolic,
Zna li ko nacin za koriscenje svih 640K memorije iz TC-a? Objasnjenje: treba mi recimo 300K memorije, izvrsim dinamicku alokaciju i dobijem pokazivac na prvi bajt tog prostora. Pokusao sam sa kombinacija ma tipa farcoreleft, farmalloc itd. ali ne radi.. dnikolic
cccc.337 djelovic,
>Zna li ko nacin za koriscenje svih 640K memorije iz TC-a? >Objasnjenje: treba mi recimo 300K memorije, izvrsim dinamicku alokaciju Čuj, farmalloc bi trebao da završi stvar. E, sad: Možda na sistemu nemaš upošte tih 300Kb! Probaj da program startuješ van Integrisane okoline TC-a, a ako ni to ne radi, moraš da koristiš Overlay-r (TC) ili VROOM (TC++). Ako ti kojim slučajm farmalloc iz biblioteke ne radi, mislim da možeš da se snađeš sa par uzastopnih malloc-a, mada to ne mogu da ti garantujem, to je radilo na TP-u, a na TC-u smo dobili farmalloc. Probaj. P.S. Ovo je kucano iz glave i on-line. Ako problem leži negde drugde, a ja samo pisao gluposti, reci, pa ću ja opet pisati nove gluposti on-line :).
cccc.338 djelovic,
Moze li neko ko ima TC++ da mi napise kako izgleda polje Command line dijaloga New/Modify_transfer koji se dobija iz options/transfer menija za Turbo debugger i Turbo assembler. Naime, ja sam pravio neke akrobacije sa translator programima itd., pa sam ova sva programa obrisao iz transfera, a sada mi je komfornije da radim s njima iz TC++a, nego da svaki put izlazim u shell, pa...
cccc.339 ppekovic,
Dežurni bugolovac opet jaše ;) Petljam se ja tako sa PGCHART LIB-om iz MSC-a 6.00. Za neupućene, to je biblioteka za izuzetno lako kreiranje raznoraznih dijagrama, pitica, itd. itd. I tako, napišem ja jedan jednostavan programčić koji za zadate podatke i tip dijagrama iscrtava dijagram. Ali vraga, prolikom linkovanja prijavljuje mali mion nedefinisanih simbola. I tu ja čeprkam, zavirujem itd. itd. i slučajno provalim da chart funkcije neće da rade sa llibca.lib već jedino sa llibce.lib. Ok. kažem ja i ulinkujem sve ponovo sa llibce. Sve prođe bez problema. Sav veseo startujem program, ...vraga, neće. Zablokirao mi se računar. Tu ja isprobam sve i svašta, rezidentni programi, virusi, greške u mom programu, 386MAX, etc. etc. ma kakvi. Ajde reko da vidim dal će primer iz help-a da radi. Probam prvo da ga ulinkujem sa llibca, reko čisto da vidim dal radi, ..jok. Znači, sa llibca 100% neće da radi. Ok. nastavim dalje, ulinkujem sa llibce i sve prođe bez grešaka warninga i sličnih zezalica. Startujem program, oooooops, block, klik, klik, klik. E tu ti ja pošandrcam i odem u Programers Work Bench (uh kako ga mrzim), i dam mu da iskompjalira, linkuje itd. etc. program. Startujem ga, kad on radi???!!! E tu ti ja tek poludim. Reko verovatno sam pogrešio parametre. I sad da vas ne gnjavim baš previše probo ja parametre iste kao u pwb i na kraju dođem do jedne jedine stvari koja se razlikovala kod command line compajliranja i pwb c. a to je memory model. Naime, ja sam radio u large modelu (trebalo mi), a u pwb-u u small modelu. Probam ja iz komandne linije da sve sredim u small modelu. Proradi bez greške. Probam u large. Neće. Probam compact. Radi, ali ne zadugo, posle par secundi zablokira se računar. Probam u Medium. Radi, ooops block. ;(((( Dakle, može chartovi, al samo u small modelu i samo slibce. Paya
cccc.340 maleksic, -> #339, ppekovic
>> i slucajno provalim da chart funkcije nece da rade sa llibca.lib >> vec jedino sa ... >> Probam u large. Nece. Probam compact. Radi, ali ne zadugo, posle par >> secundi zablokira se racunar. Probam u Medium. Radi, ooops block. ;(((( >> Dakle, moze chartovi, al samo u small modelu i samo slibce. ?? Pa kako ti izgleda komandna linija kojom linkujes program? A jesi li probao druge memorijske modele iz PWB-a?
cccc.341 ppekovic, -> #340, maleksic
>>Pa kako ti izgleda komandna linija kojom linkujes program? >>A jesi li probao druge memorijske modele iz PWB-a? Probao sam sve moguće switch-eve. Isključio sam optimizacije itd. itd. ali ništa. Probao sam i iz PWB-a sve modele ali program korektno radi samo u small modelu. Da ponovim još jednom, program je primer za chartove iz help-a msc-a 6.0. I tako krenuh ja malopre da čeprkam po programu uz pomoć CV-a i korak po korak, imam šta da vidim: illegal instruction. Opaaaaaaa. A najveći je fazon što greška nije ni u jednoj od funkcija za rad sa chartovima već u strcpy funkciji ?????!!!!! Rešim ja taj problem definisanjem stringa u koji se kopira neki tekst (naslov chart-a) kao _far (manite logiku). Međutim, opet novi problem: illegal instruction (opet!!) ali sad na funkciji getch(). E tu sam već digao ruke. Ispade da sve chart funkcije korektno rade, ali sve ostale kada rade uz njih u large modelu ne rade kako treba. Zanimljivo, vrlo zanimljivo. Paya
cccc.342 alexa, -> #341, ppekovic
> Ispade da sve chart funkcije korektno rade, ali sve ostale kada > rade uz njih u large modelu ne rade kako treba. Jeste, rade kako treba, samo što imaju i neke uzgredne efekte, tj. brljaju negde po memoriji (a na neke od brljotina si naleteo u kodu). Pretpostavljam da je u pitanju loše pisan kod, koji ne uzima u obzir da ne mora biti sizeof(char *) == sizeof(int), niti da (char *)0L == (char *)0. Ova dva primera sam dao kao najčešće probleme na koje sam nailazio kad sam prebacivao razne UNIX programe na XENIX 286. I onda je small model radio dobro (kad je sve moglo da se 'ugura' u small model :) Šta misliš o ovakvoj interpretaciji?
cccc.343 ppekovic, -> #341, ppekovic
>>Ispade da sve chart funkcije korektno rade, ali sve ostale >>kada rade uz njih u large modelu ne rade kako treba. Zanimljivo, >>vrlo zanimljivo. Uradio sam jedan XRD MSC-a i ponovo ga instalirao i sad cela stvar savršeno radi. Nemam pojma u čemu je bio problem, al da me je namučio to jeste i posebno zbunio. Tja, idemo dalje ... Paya