PCPROG.1

20 Sep 1991 - 03 Dec 1992

Topics

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

Messages - unknown

unknown.518 mjova, -> #515, janko
> Pa imaš sors standardnih biblioteka. Pogledaj kako je > realizovan rad sa "b" i "t" datotekama. Konkretno, iako > nisam video kod, (a znaš zašto :) siguran sam da onog trenutno mi v3.0 nije tu, a i da jeste, na to đubre neću ni da pomislim. definitivno sam razočaran u tu verziju. inače, što se tiče pitanja bufferisanog r/w, problem je rešen, ali sam ipak promenio koncepciju. mislio sam (a i sasvim je logično) da čita iz bafera dok ne promenim neki od parametra ili pročitam ceo. za mene su ti baferi skroz transparentni i kao programera ne treba da me zanima način na koji se datoteka učitava... zar nije logičnije da se prevođenje cr/lf u lf obavlja pri čitanju iz bafera? ono kako je sad je skroz glupavo. ok, možda ima neke prednosti, ali trenutno ih ne vidim ;) posle promene treba bafer isprazniti ili ga ukinuti. ono prvo nije mi poznato, a ovo drugo se radi sa setbuf() (ne provereno, ali radi ;). SY
unknown.519 mjova, -> #516, todorp
> Kako iz turbo C-a da startujem neki program u dos-u pa da > program u C-u nastavi sa izvrsavanjem.Znam za system() is > stdlib.h ali da li moze nekako drugacije? pogledaj: spawn*() set funkcija. SY
unknown.520 ppekovic, -> #516, todorp
>> Kako iz turbo C-a da startujem neki program u dos-u pa da program u C-u >> nastavi sa izvrsavanjem.Znam za system() is stdlib.h ali da li moze nekako >> drugacije? Na MSC-u, a čini mi se da je isto ili slično na TC-u, imaš čitavu gomilu exec* i spawn* funkcija. Uostalom, pogledaj u helpu system() funkciju pa pogledaj "see also". Paya
unknown.521 todorp, -> #519, mjova
Hi! Hvala tebi i ppekovicu.Resio sam problem sa spawnl(). Pozdrav od Todora.
unknown.522 djelovic, -> #517, radunovic
> Moze li mi neko preporuciti neku biblioteku funkcija za rad sa bazama > podataka u High C-u. Pošto High C i Watcom C oba prave prave programe u 386 režimu, onda si ograničen na biblioteke za koje imaš source za MSC sa koji su oba ova kompajlera kompatibilna (Watcom sigurno, za High mislim da jeste). Ukoliko si spreman da daš neku paru reci, pa ću ti par adresa u Americi na koje da se javiš. Ukoliko ti treba sirotinjska verzija, imaš ovde na Sezamu biblioteku po imenu CBASE koja nit' je previše laka, nit' je previše brza. Izmađu nje i Clippera pre bi izabrao Clipper! No, ne znam zašto sebe ograničavaš na 386 kompajlere? U radu sa bazama podataka brzina procesora i veličina radne memorije nisu previše bitni, pre je važan dobar keš i brz disk, na operacije sa diskom ionako otpada većina vremena. Zato ti preporučujem da isprobaš MSC ili BC sa nekim DB menadžerom, recimo BTREAVE-om. Najefikasnije rešenje. P.S. Povodom neke diskusije pre jedno mesec dana ovde: Nejbrže baze podataka na mreži ne pravi ni Clipper, ni BTREAVE ni bilo šta od vama poznatih alatki. Najbrža je jedna implementacija Kobola, zaboravio sam ime, ali ako nekoga zanima iščačkaću. Boj ne bije jezik, već boj bije onaj ko pravi kompajler.
unknown.523 radunovic, -> #522, djelovic
Pitanje sam postavio na molbu jednog druga koji bi baze koristiou okviru autocad-a pa je samim tim ogranicen na 386 kompajlere.
unknown.524 djelovic, -> #469, nkbog
> > Pazi: Klasa A nasleduje klasu D pa prema tome *nema ni govor > > instancu kase D mozes da pretvoris u A. > > Mogu preko pointera ili reference. Q. What potential problems can arise from typecasting a base class pointer into a derived class pointer so that the derived class's member functions can be called? A. Syntactically this is allowable. There is always a possibility of a base pointer actually pointing to a base class. If this is typecast to a derived type, the method being called may not exist in the base class. Therefore, you would be grabbing the address of a function that does not exist.
unknown.525 bojt, -> #522, djelovic
>> Pošto High C i Watcom C oba prave prave programe u 386 režimu... Jesi li imao prilike da vidiš NDP C 386 ?
unknown.526 kuzma,
HELP! Jednom kolegi su potrebna znacenja sledecih prekidaca kod Microsoft- ovog C-a: /AL /Od /c Pa ako je neko raspolozen nek napise
unknown.527 bojt, -> #526, kuzma
>> Jednom kolegi su potrebna znacenja sledecih prekidaca kod >> Microsoft- ovog C-a: /AL /Od /c /AL - Large memory model /Od - disable optimization /c - compiling without linking
unknown.528 kuzma, -> #527, bojt
Hvala!
unknown.529 dnikolic,
Imam jedan problem sa CBASE-om. Program ( koji pisem ) kreira i otvori tri baze. Sve operacije sa podacima i samim bazam idu OK do izlaska iz programa. Ponovnim startovanjem programa, sve funkcije i operacije rade OK izuzev jedne u kojoj se vrsi tabelaran prikaz podataka, i u kojoj su otvorene sve tri baze. Program otvori prve dve, a za trecu prijavi gresku. Ovo se desava stalno, bez obzira kojim redosledom otvaram baze - treca se ne moze otvoriti. Po izlasku iz ove funkcije, ostatak programa radi kao i pre - odlicno. Ne znam da li je ovo vezano sa CBASE ili za nesto drugo. U CONFIGu je FILES=80. dn
unknown.530 ppekovic,
Potrebno mi je da računar generiše slučajne brojeve izmedju 0 i 9,999,999. Funkcija rand() iz MSC-a generiše slučjne brojeve izmedju 0 i 7fff. Jel ima neko ideju, ili neku funkciju koja generiše long slučajne brojeve? Paya
unknown.532 dejanr, -> #530, ppekovic
Ako "pristaješ" na funkciju koja radi sa racionalnim brojevima, imam ja veliki izbor. Ako mora celobrojna, nemam.
unknown.534 ppekovic, -> #532, dejanr
>> Ako "pristaješ" na funkciju koja radi sa racionalnim brojevima, >> imam ja veliki izbor. Ako mora celobrojna, nemam. Pa ako generiše dovoljno veliki broj raličitih racionalnih brojeva (> 9,999,999) onda naravno da može. Da bi se od toga napravilo ono što meni treba je potrebno najobičnije linearno preslikavanje. Dakle, šalji! Paya
unknown.535 janko, -> #530, ppekovic
> Funkcija rand() iz MSC-a generiše slučjne brojeve izmedju > 0 i 7fff. Jel ima neko ideju, ili neku funkciju koja > generiše long slučajne brojeve? Baci pogled kod Knuta. Nema potrebe da radiš sa realnim, što ti predlaže Dejan, sve se lepo može uraditi sa intidžerima. U ovom slučaju, sa long-om. Realizacija prizvoljnih RND generatora se na ETF-u, otsek RT uči još na trećoj godini. ;)
unknown.536 ppekovic, -> #535, janko
>> Realizacija prizvoljnih RND generatora se >> na ETF-u, otsek RT uči još na trećoj godini. ;) Da, učio sam to u III godini ali matematičke gimnazije, ali, pošto generator slučajnih brojeva spada u tzv. "ne izmišljaj toplu vodu" algoritme, pitao sam jel ima neko gotov algoritam, a ja sam se u medjuvremenu bacio na druge "ne izmišljam toplu vodu" stvari. Paya
unknown.537 mjova, -> #529, dnikolic
> ove funkcije, ostatak programa radi kao i pre - odlicno. > Ne znam da li je ovo vezano sa CBASE ili za nesto drugo. U > CONFIGu je FILES=80. mislim da ima problema oko većeg broja otvorenih fajlova od 20. računaj da je 5 osnovnih pa ti ostaje samo 15. e, sad ako se baza sastoji od više fajlova (indexi, podaci itd) možda pri otvaranju poslednje baze imaš previše otvorenih fajlova. dakle, ono files u config.sys-u ne rešava problem. SY
unknown.538 mjova,
kako mogu da dobijem ispravnu adresu člana nekog objekta? konkretno, ako je neki član objekta definisan kao interrupt handler, kako mogu da uradim setvect(), a da mi kompajler ne javlja grešku u stilu: 'Use :: to take the address of a member function'. kako glasi red u kome se dodoeljuje nova adresa nekom interaptu, ali tako da je data fn član neke klase. SY
unknown.539 djelovic, -> #530, ppekovic
> Potrebno mi je da racunar generise slucajne brojeve izmedju 0 > Funkcija rand() iz MSC-a generise slucjne brojeve izmedju 0 i > neko ideju, ili neku funkciju koja generise long slucajne broj Kod mjove su mi Dr. Dobbs-ovi, neka ti u jednom od njih potra`i algoritam pod imenom r250. Te{ko da }e{ na}i bolji, makar i kod Knuta.
unknown.540 djelovic, -> #538, mjova
> kako mogu da dobijem ispravnu adresu clana nekog objekta? Pogledaj za to {to te zanima u BCHELP datoteci koju ima{ u /IBMPC/INFO. Ukratko, koristi se sintaksa klasa::*funkcija za pointer na f-ju. No, kako tebi treba kori{e}enje interapta, to je druga pri~a. Interapt ne mo`e da pokazuje na ~lana klase zbog skrivenog parametra this. Umesto toga mo`e{ interapt da usmeri{ na stati~ki ~lan klase, a on mo`e da poziva neku drugu funkciju preko za to odre|enih pravila. Ako treba jo{, vikaj.
unknown.541 obren, -> #538, mjova
> konkretno, ako je neki član objekta definisan kao interrupt handler, > kako mogu da uradim setvect(), a da mi kompajler ne javlja grešku u > stilu: 'Use :: to take the address of a member function'. Isti problem je i mene mučio pre mesečak dana dok ne nađoh uzrok: "Member function pointers are not true pointer types, and do not refer to any particular instance of a class." Posle sam se oprostio od interapt handlera u okviru klase, mada ko zna, možda je ipak moguće?
unknown.542 cacxa,
... char zn; if(*bafer==0) { cin.get(zn); *bafer++ = zn; char* p = bafer; *p++ = zn; while (cin.get(zn) && zn!='\n') *p++ = zn; cin.putback(zn); *p=0; cout << bafer; } ... Zašto ovo ne radi? (npr za ulaz "aaaaaaaaaa\n" izlaz je "aaa┌$9aaa")
unknown.543 ljubao,
Imam problema sa TURBO C++ 1.0. Elem, deo koda je radio OK, sve dok nisam sa malloc odvojio još 4 KB memorije. Tačnije, sada neće nikako da učita neke podatke iz datoteke (ne učitava se u pomenuti deo memorije). Probao sam sa fread i read, memoriju gde se učitavaju podaci sam odvajao i sa malloc i farmalloc, i neće da radi. Inače, sve je to u LARGE modelu, pa sumnjam na petljanje sa far i običnim pointerima (čemu nisam vičan jer sam ranije imao normalan kom- pjuter sa linearnom memorijom, a do sada mi je bio dovoljan i small model). Ako neko nešto zna, neka kaže i spasi me nepotrebnog noćenja i nerviranja. Ljuba
unknown.544 ppekovic, -> #539, djelovic
>> Kod mjove su mi Dr. Dobbs-ovi, neka ti u jednom od njih >> potra`i algoritam pod imenom r250. Te{ko da }e{ na}i bolji, >> makar i kod Knuta. Već sam se snašao ali hvala u svakom slučaju. Pomogao mi je robert koji me je uputio na zbirku C programčića koja postoji ovde na sezamu (ne sećam se kako se zvaše). Paya
unknown.545 ppekovic, -> #544, ppekovic
Pronašao sam dosta zanimljivih random generatora ali ipak i dalje ostaje problem šta uzeti za početnu vrednost a da se zadovolji uslov prenosivosti programa, dakle da ostanem u okviru ANSI C-a. Dakle, mogao bi da očitam vreme ili nešto slično, ali bi želeo da isti program radi i na xenix-u i na dos-u i na os/2-u. Paya
unknown.546 zormi, -> #530, ppekovic
* Potrebno mi je da računar generiše slučajne brojeve izmedju 0 i * 9,999,999. Funkcija rand() iz MSC-a generiše slučjne brojeve * izmedju 0 i 7fff. Jel ima neko ideju, ili neku funkciju koja * generiše long slučajne brojeve? Ako nije za neke "naučne" primene: pozovi funkciju dvaput pa sastavi normalizovane cifre ;)
unknown.547 djelovic, -> #545, ppekovic
> problem šta uzeti za početnu vrednost a da se zadovolji uslov > programa, dakle da ostanem u okviru ANSI C-a. Dakle, mogao bi > ili nešto slično, ali bi želeo da isti program radi i na xenix > na os/2-u. Joj. To je problem koji još niko nije uspeo da reši. Jedino da koristiš #ifdef direktive, svaki kompajler definiše svoje ime, a pretpostavljam da postoji i neka definisana reč ako je ANSI kompajler. Za C++ se recimo koristi reč __cplusplus.
unknown.548 ndragan, -> #530, ppekovic
/ Funkcija rand() iz MSC-a generiše slučjne brojeve izmedju 0 i 7fff. Pade mi na um najprostija stvar: da napraviš rnd=rand()*8000+rand() U stvari ne znam kako se piše shl(rand(),15) na Ceu, ali ovo bi moglo da radi poso. Bue_ Ndragan
unknown.549 mjova, -> #539, djelovic
> Kod mjove su mi Dr. Dobbs-ovi, neka ti u jednom od njih > potra`i algoritam pod imenom r250. Te{ko da }e{ na}i > bolji, makar i kod Knuta. nađoh, ali pajo, ako me ne pohvališ drž' se dobro ;) ────────────────────────────────────────────────────────────────────────────── //===================================================== // written by: W. L. Maier (a mjova nije bio lenj :) //===================================================== #include <stdlib.h> static unsigned int r250_buffer[250]; static int r250_index; void r250_init(int seed); unsigned int r250(); double dr250(); //---------------------------------- // initializes r250 random number generator void r250_init(int seed) { int j, k; unsigned int mask; unsigned int msb; srand(seed); r250_index= 0; for(j= 0; j<250; j++) // fill the r250 buffer with 15-bit values r250_buffer[j]= rand(); for(j= 0; j<250; j++) // set some of the MS bits to 1 if(rand() > 16384) r250_buffer[j] |= 0x8000; msb= 0x8000; // to turn on the diagonal bit mask= 0xffff; // to turn off the leftmost bits for(j= 0; j<16; j++) { k= 11 *j +3; // select a word to operate on r250_buffer[k] &= mask; // turn off bits left of the diagonal r250_buffer[k] |= msb; // turn on the diagonal bit mask >>= 1; msb >>= 1; } } //---------------------------------- // returns random unsigned integer unsigned int r250() { register int j; register unsigned int new_rand; if(r250_index >= 147) j= r250_index -147; // wrap pointer around else j= r250_index +103; new_rand= r250_buffer[r250_index] ^ r250_buffer[j]; r250_buffer[r250_index]= new_rand; if(r250_index >= 249) // increment pointer for next time r250_index= 0; else r250_index++; return(new_rand); } //---------------------------------- // returns random double in range 0..1 double dr250() { register int j; register unsigned int new_rand; if(r250_index >= 147) j= r250_index -147; // wrap pointer around else j= r250_index +103; new_rand= r250_buffer[r250_index] ^ r250_buffer[j]; r250_buffer[r250_index]= new_rand; if(r250_index >= 249) // increment pointer for next time r250_index= 0; else r250_index++; return(new_rand/(double)0xffff); // return a number in 0.0 to 1.1 } //===================================================================== #include <stdio.h> #include <stdlib.h> #define NMR_RAND 5000 #define MAX_BINS 500 //---------------------------------- void main(int argc, char *argv[]) { int j, k, nmr_bins, seed, bins[MAX_BINS]; double randm, bin_limit[MAX_BINS], bin_inc; if(argc != 3) { printf("Usage -- rtest [nmr_bins] [seed]\n"); exit(1); } nmr_bins= atoi(argv[2]); r250_init(seed); bin_inc= 1.0/nmr_bins; for(j=0; j<nmr_bins; j++) { bins[j]= 0; // initalize bins to zero bin_limit[j]= (j +1) *bin_inc; } bin_limit[nmr_bins-1]= 1.0e7; // make sure all others are in last bin for(j= 0; j<nmr_bins; j++) { randm= r250()/(double)0xffff; for(k= 0; k<nmr_bins; k++) if(randm < bin_limit[k]) { (bins[k])++; break; } } for(j= 0; j<nmr_bins; j++) printf("%d\n", bins[j]); } ────────────────────────────────────────────────────────────────────────────── mj
unknown.550 ppekovic, -> #549, mjova
>> nađoh, ali pajo, ako me ne pohvališ drž' se dobro ;) Pohvaljujem te mjovo! ;) Hvala i svima ostalima! Paya
unknown.551 robert, -> #543, ljubao
<:> Inače, sve je to u LARGE modelu, pa sumnjam na petljanje sa far <:> i običnim pointerima (čemu nisam vičan jer sam ranije imao <:> normalan kom- čao mi je što ne mogu baš konkretno da ti pomognem (mjovo!?) ali evo da pokušam... I ja sam imao slične probleme... (u pitanju je TC++ 2.0) upotrebljavao sam farmalloc u LARGE modelu i kad sam sa coreleft() ispitao raspolo- živu memoriju dobio sam svega 2-3 kb. Kad sam upotrebio malloc i preveo u SMALL modelu coreleft mi je vraćao lepo 64 kb slobodno. E sad, ja ne umem da kažem zašto je to tako ali bi trebalo pročitati malo pažlji- vije neku literaturu u vezi tog alociranja memorije. Farmalloc rezerviše memoriju u far-heap- u pa možda tu smetaju rezidentni drajveri ili programi tako da se ne može rezervisati više, stvarno ne znam za sigurno ali moglo bi da se isproba. E sad, ako neko zna bolje objašnjenje, nek pomogne čoveku... Pozdrav ... Robert.
unknown.552 janko, -> #547, djelovic
># ifdef direktive, svaki kompajler definiše svoje ime, a > pretpostavljam da postoji i neka definisana reč ako je > ANSI kompajler. Za C++ se recimo koristi reč __cplusplus. __STDC__ je predefinisana reč koja označava da se prevodi ANSI C-om, i, za razliku od C++ definisane reči __cplusplus koja, nažalost, NIJE stvarno standardna, ova jeste, i označava standardni ANSI C. Zanimljivo je da po difoltu Borlandovi kompajleri ne javljaju da su standardni ANSI, dok im se ne uključi poseban svič. To objašnjavaju time što njihov C prepoznaje, bez tog aktiviranog sviča, i ključne reči tipa FAR i šta-ti-ja-znam koje su specijalitet MS-DOS-a. Kada se aktivira svič za prevođenje po ANSI standardu, onda se takve reči ne prepoznaju na MS-DOS način.
unknown.553 janko, -> #545, ppekovic
> Pronašao sam dosta zanimljivih random generatora ali ipak > i dalje ostaje problem šta uzeti za početnu vrednost a da > se zadovolji uslov prenosivosti programa, dakle da ostanem > u okviru ANSI C-a. Dakle, mogao bi da očitam vreme ili > nešto slično, ali bi želeo da isti program radi i na > xenix-u i na dos-u i na os/2-u. Zavisi od upotrebe programa. Za neke primene (monte-karlo simulacije, jer u njima je samo veličnia perioda generatora bitna) je bilo koja KONSTANTA sasvim OK. Ako ti trebaju razičite početne vrednosti, ANSI C ti omogućava da uzmeš sistemske minute i sekunde, ali te to oganičava na 3600 mogućih početaka. Ako ti je taj broj dovoljan, i naravno, ne inicijalizuješ generator previše često, rešio si problem: Minute i sekunde iskoristiš za rendom generator (OBAVEZNO različit od onog koga ćeš posle koristiti!) koji će ti dati SEED onog sledećeg. Ako ti 3600 'početaka' nije dosta, moraš da 'vadiš' sistemsko vreme u milisekundama ili još sitnije, što nije po ANSI-ju, ali se može naći na svakoj mašini.
unknown.554 janko, -> #546, zormi
> Ako nije za neke "naučne" primene: pozovi funkciju dvaput > pa sastavi normalizovane cifre ;) To može samo ako će jako malo puta u programu pozvati funkciju. Inače, neće da valja, jer će perioda biti nedopustivo mala.
unknown.555 janko, -> #551, robert
> I ja sam imao slične probleme... (u pitanju je TC++ 2.0) > upotrebljavao sam farmalloc u LARGE modelu i kad sam sa > coreleft() ispitao raspolo- živu memoriju dobio sam svega > 2-3 kb. Kad sam upotrebio malloc i preveo u SMALL modelu > coreleft mi je vraćao lepo 64 kb slobodno. E sad, ja U LARGE modelu može da se koristi malloc, koji će, naravno, alocirati memoriju na far hipu, jer drugi i ne postoji. Tako bi trebalo da radi i sa napr. COMPACT modelom, ali ne radi. U Borland C++ 2.0 kompajleru, u L. modelu bez problema alocira kako treba, i koristi svu raspoloživu memoriju (meni kada alociram 1K blokove, daje 490 takvih blokova pre nego što mi vrati NULL. Ali, zbog očiglednog baga u stand. biblioteci (ako ima neko sors, koji se dobija uz profešnal verziju, mogli bismo, verovatno, to da ispravimo) u COMPACT modelu 1K blokove uspe da alocira šezdesetak puta pa SRUŠI ceo sistem.
unknown.557 djelovic, -> #548, ndragan
> Pade mi na um najprostija stvar: da napraviš > rnd=rand()*8000+rand() Da, ali na taj način dobija slučajne vrednosti istog, ili upola manjeg od onog koji već ima (u MSC slučaju, upola manji). Tako, iako povećava opseg za dobijene slučajne vrednosti, ne dobija sve (ne dobija čak ni dobar deo, naprotiv!) vrednosti iz tog opsega.
unknown.558 sasa,
Interesuju me neke stvari oko CODE BASE biblioteke za Dbase/Clipper pa ako neko ima nesto slicno bio bih veoma zahvalan! Unapred hvala, Sasa@nsd
unknown.559 zormi, -> #554, janko
* > Ako nije za neke "naučne" primene: pozovi funkciju dvaput * > pa sastavi normalizovane cifre ;) * * To može samo ako će jako malo puta u programu pozvati funkciju. * Inače, neće da valja, jer će perioda biti nedopustivo mala. Zato sam i rekao "ako nije za naučne primene". Ima tu još formalnih nedostataka, ne samo zbog periode, ali ne bi da počinjem još jedan krug rasprava o verovatnoći. Ako mu treba za video-igru, ništa ne smeta ;).
unknown.560 mjova, -> #543, ljubao
> podaci sam odvajao i sa malloc i farmalloc, i neće da malloc i farmalloc daju različite rezultate samo za small i medium mem modele. u ostalim modelima nema razlike jer nemaju FAR HEAP (nije odvojen od near heap-a). međutim, lepo je koristiti farmalloc() ako treba neke izvorne kodove prevoditi (npr za lib) u raznim modelima, a zahtevaju uptrebu FAR HEAP-a. drugo, pri alociranju mememorije postoje određeni bug-ovi u .lib za c i h model, toplo preporučujem definitivno izbegavanje ;). mj
unknown.561 robert,
Trebao bi mi opis *.DBF datoteka tj. format ispisa DBASE-a u *.DBF datoteke. Nisam siguran ali mi se čini da je to već neko pitao u temi baze podataka ili sl. pa ako je bio odgovor na to bitanje bilo bi mnooogo lepo da mi kažete gde. Ovo pitam ovde jer treba da pišem kod u C-u koji kao izlaz, između ostalog, generiše i *.DBF datoteke tako da se kasnije mogu koristiti iz DBASE paketa. Još nešto, da li je neko već radio sa DFLAT bibliotekom u C-u za rad sa prozorima (koji liče na WINDOWS ali su u ASCII modu) i kakva su iskustva sa tim. Pozdrav ... Robert.
unknown.562 mjova, -> #561, robert
> Ovo pitam ovde jer treba da pišem kod u C-u koji kao > izlaz, između ostalog, generiše i *.DBF datoteke tako da > se kasnije mogu koristiti iz DBASE paketa. pitao sam jednom ovde i neko je bio dovoljno ljubazan da mi pošalje kod koji se bavi .dbf datotekama. ako te zanima mogu da ti pošaljem. moram samo da pogledam da li je pd. SY
unknown.563 pjankovic, -> #558, sasa
> Interesuju me neke stvari oko CODE BASE biblioteke za > Dbase/Clipper pa ako neko ima nesto slicno bio bih veoma > zahvalan! Posjedujem CODE BASE 4.2. Reci sta te interesuje pa da pokusam da ti odgovorim.
unknown.564 ivantod, -> #561, robert
v{Što se tiče strukture dBase fajla, ovo su podaci koji se nalaze u "dBase III+ priručniku" koji je izdala Mikro knjiga. Zaglavlje fajla sastavljeno je od sledećih delova: - prvih 32 bajta rasporedjenih ovako: 0 83h ako je uz bazu uključen fajl tipa DBT, 03h ako nije 1-3 datum poslednje izmene u formatu ggmmdd 4-7 ukupan broj slogova u bazi 8-9 ukupan broj bajtova zaglavlja 10-11 broj bajtova po slogu 12-14 rezervisano 15-27 rezervisano za višekorisnički rad 28-31 rezervisano - posle ovoga dolazi po 33 bajta za opis svakog polja u slogu posebno i to ovako: 0-10 ime polja 11 tip polja (N, C, L, D, ili M) 12-15 adresa u memoriji podataka iz polja 16 širina polja 17 broj decimalnih mesta 18-19 rezervisano za višekorisnički rad 20 oznaka radnog prostora 21-22 rezervisano za višekorisnički rad 23 pokazatelj stanja odredjenog naredbom SET FIELDS 24-31 rezervisano 32 oznaka kraja podataka o polju - iza ovoga se upisuju slogovi. Svaki slog počinje bajtom u koji je upisana zvezdica (*) ako je označen za brisanje, ili razmak ako nije. Jedina važna napomena je da se datumsko polje upisuje u formatu ggggmmdd.
unknown.568 robert, -> #565, jtitov
<:> Auuu, nije nego! Kada si ti uzimao kod onda nema veze; kada treba <:> drugom da Ma sve je u redu, ljudi, dobio sam ono što sam tražio i hvala mjovi za to. On se to samo šalio... ;) Pozdrav ... Robert.
unknown.569 robert, -> #564, ivantod
<:> v{Što se tiče strukture dBase fajla, ovo su podaci koji se nalaze Puno hvala na ovim informacijama i uz mjovinu pomoć, verujem da sada imam sve što mi treba. Ako bude problema, naravno, pitaću opet... ;) Pozdrav ... Robert.
unknown.570 dnikolic, -> #558, sasa
>> Interesuju me neke stvari oko CODE BASE biblioteke za >> Dbase/Clipper pa ako neko ima nesto slicno bio bih veoma zahvalan! I mene ovo VEOMA zanima! dn
unknown.571 tesloni,
Ajde maheri ... Ima li ko TopSpeed C++ .... ... ­Ú-> Tesloni <-Ú­
unknown.572 rogi,
Stize Micro Emacs za Windowse sa kompletnim sourceom u c Rogi mewin10.zip
unknown.573 rogi, -> #572, rogi
A evo i uputstva za Micro Emacs u Windows "WRI" formatu. Rogi mewri.arj
unknown.574 rogi,
Postoje li na SEZAMU grupe sa temom Borland C++, C++ i programiranje pod Windowsima ? Ako postoje molim Vas da me uclanite ili obavestite o uclanjenju. Rogi
unknown.575 janko,
Natrčao sam na bag u BC++ 2.0. Kada definišete klasu koja sadrži niz ne-elementarnog tipa, već od objekata neke druge klase, BC++ 2.0 će se ponašati kao da joj je tzv. kopi konstruktor prazan (iako bi, po difoltu, trebalo da podrazumeva kopiranje). Napr. ako je fja članica definisana kao X X::vrati() onda u njoj return x; ne vraća objekat tipa X, već samo radi return, a ono što tako pokupite, je, naravno, đubre. Proveravao sam asm. kod. Jednostavno i tamo kaže return, umesto da prekopira bilo šta. Na sreću (jedina nesreća je što sam izgubio vreme na jurenju baga), ovo se može 'izvaditi' eksplicitnim definisanjem kopi konstruktora, koji kopira u *this. --- Kad smo već kod C++-a: ima li neko detaljnije podatke (sa programskim primerima) o razlikama 1.x 2.0 i 3.0 cfront (odnosno C++) 'standarda?'
unknown.576 rogi,
Novosti o Borlandovim kompajlerima. Rogi 5new.rls
unknown.577 rogi, -> #576, rogi
Novosti o beta kompajleru za WINDOWS NT od Borlanda. Rogi win32.arj
unknown.578 rogi, -> #577, rogi
Izvinjavam se nije ZIP nego ARJ. Rogi
unknown.580 jtitov, -> #578, rogi
> Izvinjavam se nije ZIP nego ARJ. Uopste se ne izvinjavaj. Samo salji. Snacicemo se.
unknown.581 rogi,
Evo i GNU-CHESS v3.21 for WINDOWS Rogi chess321.arj
unknown.582 rogi, -> #581, rogi
Prilikom prenosa arhive je doslo do prekida linije, pa je arhiva prenesena iz dva transfera. Nadam se da je Zmodem ispravno nastavio slanje fajla, a ako nije javite pa cu opet prebaciti. Inace sam zaboravio da napisem da je u arhivi komple- tan source u c + exe + dokumentacija + help. Imam primera za tehnike programiranja pod Windows-ima ali niko ne odgovori na moje ranije postavljeno pitanje o grupama na SEZAM-u koje se bave BC++, C++ i programi- ranjem pod WINDOWS-ima. Rogi
unknown.583 ppekovic, -> #582, rogi
>> Imam primera za tehnike programiranja pod Windows-ima >> ali niko ne odgovori na moje ranije postavljeno pitanje >> o grupama na SEZAM-u koje se bave BC++, C++ i programi- >> ranjem pod WINDOWS-ima. Obrati se bulaji, mislim da je on osnovao jednu takvu grupu. Ujedno, hvala na GNU Chess-u. Paya
unknown.584 dnikolic,
Moze li se u TC ( ili uopste ) napisati program koji bi recimo ispisao neko ime na ekran, a koji bi posle kompajliranja imao duzinu oko max 50 bajtova tj. kao odgovarajuci u masincu? U pitanju je opklada. dn
unknown.585 dnikolic,
Ko ime CODE BASE 4.xx? dn
unknown.586 janko,
Ima li neko iskustva, informacije ili sorsove o korišćenju setjmp i longjmp instrukcija za realizaciju korutina? Napisao sam dva programa, istim metodama, i jedan ruši sistem, a jedan 'odradi.' Izgleda da je problem u tome da prevodilac, čak i kada se unutar rutine ne koriste lokalne promenljive, nekad koristi stek tako da ošteti informacije drugih korutina. (Filozofski, ne bi morao tako da radi, BP i SP bi trebalo da se nezavisno pomeraju?) Svaka korutina je, u mojoj realizaciji, funkcija članica klase koja određuje korutinu, iz koje se izašlo sa longjmp.
unknown.587 zzivotic, -> #584, dnikolic
> Moze li se u TC ( ili uopste ) napisati program koji bi recimo > ispisao neko ime na ekran, a koji bi posle kompajliranja imao > duzinu oko max 50 bajtova tj. kao odgovarajuci u masincu? U > pitanju je opklada. Koristeći potpuno *standardne* tehnike prevođenja - nije moguće. Problem je u modulu iz biblioteke koji se obično zove crt0 u kome je inicijalizacija, koji je retko manji od 2-3K i koji se uvek linkuje u program. Ako napraviš svoj crt0.asm i izbegavaš funkcije iz C biblioteke (ne baš sve, ali one za ispis tipa puts, ili printf) onda bi bilo sasvim moguće - pitanje je samo koliko je to onda C ;) Pozdrav, zz
unknown.588 rogi, -> #586, janko
Poslao si premalo informacija da bi se moglo shvatiti sta se desava sa setjmp/longjmp. Opisi detaljnije sta se tacno dogadja sa programom i posalji kod ili algoritamski opisan metod. Sto se tice prevodioca kompajliraj kod da generise ASM listing i onda ces videti sta tacno prevodioc uradi. Rogi.
unknown.589 janko, -> #588, rogi
Hvala na trudu, Obren mi je poslao e-poštom baš ono što mi je trebalo. Konkretno, dva su razloga mogućeg pada, i meni je padao zbog ovog drugog: - rutina je radila sa registrima koji nisu sačuvani sa setjmp (to mi je poslao Obren). - jedna korutina je drugoj uništila njen deo steka (to sam sam isčačkao). Sve sam rešio. Obrenu se i ovde zahvaljujem.
unknown.590 mdimitrijevic,
Hi! Ima li neko source za Turbo C v2.0 za grafiku, scroll, prokaz slike ili slicno. Prilicno je vazno.
unknown.591 dnikolic,
Kako je najbolje prebaciti radne fajlove na diskete? Moze li se koristiti DOS naredba COPY preko SPAWNxx funkcija? Postoji li neki drugi, bolji, nacin? dn
unknown.592 ppekovic, -> #591, dnikolic
>> Kako je najbolje prebaciti radne fajlove na diskete? Moze >> li se koristiti DOS naredba COPY preko SPAWNxx funkcija? >> Postoji li neki drugi, bolji, nacin? system("arj a -vva a:arhiva *.*"); :)))) Paya
unknown.593 vitez.koja, -> #592, ppekovic
-> system("arj a -vva a:arhiva *.*"); :)))) system("arj a -va -jt1 -r -we:\ -i1 a:arhiva *.*"); ^^^ ram disk... ;)
unknown.594 mdimitrijevic,
Imam problema sa prikazivanjem slika na VGA karti iz Turbo C-a 2.0, molio bih ako neko ima neki source ili zna kako da prikazem neku sliku u 320x200x256 da mi napise. Kad skinem rezidentnim programom deo memorije od A000-AFFF dobijem sliku ali bez boja kakve bi trebalo. Zato ako bi neko mogao da mi pomogne bio bih mu vrlo zahvalan. Pozdrav, Marjan Dimitrijevic
unknown.595 mornar, -> #594, mdimitrijevic
Evo ti program koji ce ti prikazati sliku u 320x200x256 skinutu kao dump sa ekrana. Prilozen je i source u C-u (TC/BC) i .EXE verzija. Mozda naidjes na neki bag jer sam program napisao na brzinu,ali kolko sam ga testirao - radi.Ako program modifikujes, kompajliraj ga iskljucivo u HUGE modelu (inace ce da prijavi nedostatak memorije). Ako ima nekih nejasnoca i pitanja slobodno pitaj ovde ili salji mail. [mornar] pic.arj
unknown.596 pjankovic, -> #590, mdimitrijevic
> Ima li neko source za Turbo C v2.0 za grafiku, scroll, > prokaz slike ili slicno. Prilicno je vazno. Uz taj kompajler se dobija BGIDEMO.C koji je najbolji primjer kako se radi sa grafikom. Ako ga nemas reci da ti posaljem.
unknown.597 mdimitrijevic, -> #595, mornar
Hvala pogledacu pa cu se javiti. mdimitrijevic
unknown.598 mdimitrijevic, -> #596, pjankovic
Znam za BGIDEMO ali nisam mislio na crtanje i C-a vec na prikazivanje neke slike na primer GIF,BMP,PCX i slicno ili dump ekrana ali za VGA mdimitrijevic
unknown.599 ndragan, -> #564, ivantod
Jes' da je prošlo dve nedelje, al' danas sam morao da se patim sa nekom ogavnom bazom od pet mega sa nekog zjeban*g diska, pa sam pisao jednu malu nisku (*) proceduru za rekonstrukciju onog što se iščupati dade. Imam ispravku na ovo: / - posle ovoga dolazi po 33 bajta za opis svakog polja u slogu / 0-10 ime polja / 32 oznaka kraja podataka o polju Ide u stvari po 32 bajta; vo treba shvatiti kao 0-9 za ime polja (ili 1-10, ako ćemo da krenemo od 1); posle niza tih podataka dolazi jedan bajt u kojem piše 0D, i onda slog za slogom. Ostalo je tačno. žini mi se da bi bilo lepše da je prilikom projektovanja .DBF fajla ubačeno nešto tipa CHR(15) ili tako nešto za vodeći bajt (onaj što postaje '*' kad se slog obriše), baš zato da se olakša život nama jadnicima koji ovakve programčiće za rekonstrukciju piskaramo od slučaja do slučaja. (*) Mislim na low level čitanje .DBF fajla kao niza bajtova.
unknown.600 bearboy, -> #593, vitez.koja
˙¨:> -> system("arj a -vva a:arhiva *.*"); :)))) ˙¨:> ˙¨:> system("arj a -va -jt1 -r -we:\ -i1 a:arhiva *.*"); ˙¨:> ^^^ ˙¨:> ram disk... ;) system("arj a -va -jt1 -r -we:\ -1 a:arhiva"); je saasvim dovoljno, posto ARJ podrazumeva *.* Ipak moze krace :)
unknown.601 bojanp,
Za sve one koji koriste Borland C++ 3.0 jedno pitanje. Da li vam radi utility WinSight? Pozdrav, Bojan
unknown.602 mornar, -> #601, bojanp
Radi! ,ali Windowsi moraju da 'trce' u enhanced modu! Inace efekti nisu bog zna kako vidljivi, cak se nista i ne desava.
unknown.603 tesloni,
Sorry narode ... Interesuje me koji C kompajler ima ugrađenu podršku dinamičkom linkingu ( podataka i procedura ), ili bar da li postoje dodaci za neki od poznatih koji to omogučavaju ? P.S. Ako neko ima nešto od navedenog neka mi se javi na mail ... ... ­Ú-> Tesloni <-Ú­
unknown.604 mornar, -> #603, tesloni
Dynamic linking je ugradjen u BC++ 3.0 !
unknown.605 tesloni, -> #604, mornar
­Ú-> : Dynamic linking je ugradjen u BC++ 3.0 ! TNX... ... ­Ú-> Tesloni <-Ú­
unknown.606 paris,
Preklinjem za pomoc, naime imam knjigu C++ (Bjarne STROUSTRUP) i neku ─od verzija TC-a. Vec kod prvog prţbiŢ╔mera sam stao jer nemam bibliotekau li to znaci da za C++ moram da nabavim poseban kompailer Ú, a ako da gde to mogu da nadjem, zaista je hitno. ╝Ż paris
unknown.607 robert, -> #606, paris
<:> li to znaci da za C++ moram da nabavim poseban kompailer Ú, a ako <:> da gde to mogu da nadjem, zaista je hitno. Za C++ ti treba (ako koristiš Borlandove kompajlere) TC++ 1.0 i veće ili BC++ 2.0 ili 3.0 (to je i poslednja verzija Borland C++). Ja, konkretno, koristim TC++ 1.0 ali imam i BC++ 2.0 ali mi to još nije potrebno jer se ne bavim pisanjem aplikacija za Windows. Mislim da je TC++ 1.0 prava stvar jer je prilično kompaktan (ne zauzima mnogo prostora na disku) a može da se radi svašta sa njim. Ima samo dve knjige (TC++ Users guide i Programmers guide) tako da ni tu nema prevelikih troškova kopiranja (naravno ako nisi kupio paket od Borlanda). TC++ 1.01 bi trebalo da ima svako ko se bavi programiranjem u C-u tako da samo treba da poznaješ nekog takvog i da ga lepo zamoliš da ti da da iskopiraš diskete ;). TC++ 1.0 ide na 8 disketa od 360k samo da znaš. Pozdrav... Robert. P.S. Mail me ako imaš još pitanja.
unknown.608 mjova, -> #606, paris
> verzija TC-a. Vec kod prvog prţbiŢ╔mera sam stao jer nemam > bibliotekau li to znaci da za C++ moram da nabavim poseban > kompailer Ú, a ako da gde to naravno da su ti potrebne biblioteke, ono bar za početak (dok sam ne napišeš ;). biblioteke idu uz prevodioc, i ako imaš neki TC, verovatno da si uzeo sa diska (samo exe), ili nisi (pri instalaciji) pravilino podesio putanje, itd pretpostavljam da ti verovatno nedostaje još dosta toga, nađi kompletan prevodioc. SY
unknown.609 pstojanovic,
Pokusavam da zadam pointer na odredjenu FAR adresu u TC-u. Medjutim, problem je u tome sto se pointer uvek postavi na tekuci data segment. U turbo paskalu sa tim nisam imao problema, jednostavno sam zadavao var p:pointer; begin ... p:=ptr(segvar,ofsvar); ... end. Da li postoji odgovor za C, ili se ipak mora pisati dodatna asemblerska rutina ?
unknown.610 ppekovic, -> #609, pstojanovic
>> Pokusavam da zadam pointer na odredjenu FAR adresu u TC-u. Medjutim, >> problem je u tome sto se pointer uvek postavi na tekuci data segment. Postoji nekoliko načina za to, evo ti dva najjednostavnija: <type> far *<far_pointer_name>=<32_bit_adress>; primer: int far *pocetak=0xB8000000; ako te mrzi da pišeš 32 bitne adrese tj. više voliš segmente i offset-e, onda uradi sledeće: #define MK_FP(seg,ofs) ((void far*) (((long) (seg)<<16) | (ofs))) int far *pocetak; pocetak=MK_FP(0xB800,0); ... Paya
unknown.611 ppekovic, -> #606, paris
>> Preklinjem za pomoc, naime imam knjigu C++ (Bjarne STROUSTRUP) i neku ─od >> verzija TC-a. Vec kod prvog prţbiŢ╔mera sam stao jer nemam bibliotekau >> li to znaci da za C++ moram da nabavim poseban kompailer Ú, a ako da gde to >> mogu da nadjem, zaista je hitno. Potreban ti je neki od C++ compiler-a. Za MSDOS imaš gomilu Borlandovih C++ compiler-a kao i Microsft C 7.0. Za UNIX/XENIX imaš GNU C++. Ako ti ovaj potonji treba javi kad dolaziš do fakulteta i spremi 5 1.44 disketa. Paya
unknown.612 djelovic, -> #609, pstojanovic
> Pokusavam da zadam pointer na odredjenu FAR adresu u TC-u. Medjutim, > problem je u tome sto se pointer uvek postavi na tekuci data segment. Ako si u Small ili nekom drugom "near" memorijskom modelu pointer deklariši kao "far" ili pređi u large model. Prvo se radi tako što umesto, recimo, void *p napišeš void far *p, a drugo možeš u integrisanoj okolini da središ u Options/Compile meniju, ili svičem -ml u komandnoj liniji. Za dodelu pointera mislim da ti je najlakše da koristiš makro MK_FP, recimo void *p = MK_FP (segment, offset); Das ist alles.
unknown.613 obren, -> #609, pstojanovic
> Pokusavam da zadam pointer na odredjenu FAR adresu u TC-u. Medjutim, > problem je u tome sto se pointer uvek postavi na tekuci data > segment. To se lako reši jednim cast-om, mada je lepše koristiti makro MK_FP: Primer: void far *ptr=MK_FP(0xA000, 0x0000);
unknown.614 robert, -> #610, ppekovic
<:># define MK_FP(seg,ofs) ((void far*) (((long) (seg)<<16) | (ofs))) Kod Borlanda je ovaj makro već definisan... Robert
unknown.615 janko, -> #609, pstojanovic
> Pokusavam da zadam pointer na odredjenu FAR adresu u TC-u. > Medjutim, problem je u tome sto se pointer uvek postavi na > tekuci data segment. Najlakše je da pređeš na LARGE model. Ne boj se, nije strašno, niti previše sporo. Odaću ti tajnu: Turbo Paskal NA SVE STRANE radi sa FAR pointerima, inače ne bi mu ista rutina mogla da radi i sa promenljivom koja je alocirana na Hipu. > Da li postoji odgovor za C, ili se ipak mora > pisati dodatna asemblerska rutina ? Ne mora, ali, Small, Medium modelu puno BIBLIOTEžKIH rutina ti neće raditi sa far pointerima! Postoji farmalloc, ali ne i rutine kojima je PRAMETAR far pointer -- moraš sam da ih pišeš. Lakše preći na LARGE. A, ako, ipak, nećeš, čarobne reči su MK_FP, FP_SEG i FP_OFS: > > ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ■ Get a far address offset (FP_OFF) > ŢFP_OFF, FP_SEG, and MK_FP macrosŮ ■ Get a far address segment (FP_SEG > ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ ■ Make a far pointer (MK_FP) > Syntax: > unsigned FP_OFF(void far *p); > unsigned FP_SEG(void far *p); > void far *MK_FP(unsigned seg, unsigned ofs); > > Defined in dos.h > > See Also: > movedata segread > > /* FP_OFF */ > > #include <dos.h> > #include <stdio.h> > > int main(void) > š > char *str = "fpoff.c"; > > printf("The offset of this file in memoryĐ > is: %FpĐn", FP_OFF(str)); > > return 0; > ć > > > /* FP_SEG */ > > #include <dos.h> > #include <stdio.h> > > int main(void) > š > char *filename = "fpseg.c"; > > printf("The offset of this file in memoryĐ > is: %FpĐn", FP_SEG(filename)); > > return(0); > ć > > > /* MK_FP */ > > #include <dos.h> > #include <graphics.h> > > int main(void) > š > int gd, gm, i; > unsigned int far *screen; > > detectgraph(&gd, &gm); > if (gd == HERCMONO) > screen = MK_FP(0xB000, 0); > else > screen = MK_FP(0xB800, 0); > for (i=0; i<26; i++) > screenŠiĆ = 0x0700 + ('a' + i); > return 0; > ć > >
unknown.616 ppekovic, -> #614, robert
>> <:># define MK_FP(seg,ofs) ((void far*) (((long) (seg)<<16) | (ofs))) >> >> Kod Borlanda je ovaj makro već definisan... Kad smo već krenuli sa ovom temom da dodam da je moguć i sledeći način za "igranje" sa segment-ima i offset-ima. _segment seg=0xb800; int _based(seg) *pocetak=0; Dakle, pointer pocetak je 16 bitni offset na segmentu seg. Paya
unknown.617 dnikolic, -> #603, tesloni
>> podrsku dinamickom linkingu ( podataka i procedura ), ili bar Sta je to? dn
unknown.618 dnikolic, -> #607, robert
>> ili BC++ 2.0 ili 3.0 (to je i poslednja verzija Borland C++). Poslednja je valjda, 3.1? dn
unknown.619 ppekovic, -> #617, dnikolic
>> >> podrsku dinamickom linkingu ( podataka i procedura ), >> ili bar >> >> Sta je to? Ukratko to ti je kada jedan deo programa odvojiš u poseban fajl pa ga po potrebi učitavaš za vreme izvršavanja programa. To su ti oni fajlovi sa ekstenzijom OVL, ili kod OS/2 DLL, ... Paya
unknown.620 robert, -> #618, dnikolic
<:> Poslednja je valjda, 3.1? OK, može biti... Izvinjavam se ako sam pogrešio.
unknown.621 jtitov, -> #618, dnikolic
> Poslednja je valjda, 3.1? Tacno, a da li je neko ima?
unknown.622 pstojanovic,
Hvala svima za opsirne savete.
unknown.623 todorp,
Hi Zanima me kako u turbo C-u broj npr. 1234567 napiše kao 1,234,567.Ja sam napravio rutinu (ono sa deljenjem bez ostatka,oduzimanje itd) ali me zanima da li to može nekako jednostavnije. Pozdrav od Todora.
unknown.624 djelovic, -> #623, todorp
> Zanima me kako u turbo C-u broj npr. 1234567 napiše kao 1,234,567? Ne postoji bibliotečka rutina koja bi to radila. No, pošto se ovakvi brojevi sa zarezima uglavnom koriste sa novac, pa se završavaju sa dve cifre iza decimalnog mesta (.00), onda možeš da jednostavno ispišeš broj bez zareza u string, sa strlen izračunar njegovu dužinu, i onda kreneš pa ubacuješ zareze na odgovarajuđa mesta (do_kraja%3 == 0).