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.417 mjova, -> #414, bambi
> Da li neko zna kako da uklonim bedni cursor u Turbo C-u? možeš sa _setcursor(). druga rešnje možeš naći u raznim fajlovima na sezamu: snip9*.* (ne znam tačno) i dflat. lutaj malo... SY
unknown.418 bambi,
Hvala svima koji su mi odgovorili...
unknown.419 djelovic,
Može neko da da rutinu za ubacivanje znaka u keyb buffer. Ungetch () radi samo za jedan znak :(.
unknown.420 mjova, -> #419, djelovic
> Može neko da da rutinu za ubacivanje znaka u keyb buffer. > Ungetch () radi samo za jedan znak :(. probaj int 16h 5. ako ti to ne ide (zbog kompatibilnosti), onda ćeš morati direktno da upisuješ u kbd buffer. ovo drugo je lepše, mada ko zna. SY
unknown.421 ivan.s,
Zbog seminarskog rada koji pisem, nabavio sam (posle dosta lutanja po Inernetu) yacc-abilnu PD gramatiku Ca i C++, sve sa iscpnom diskusijom svih konflikata. Meni je bila od velike pomoci, pa mi se cini da bi mogla da bude zanimljiva i za SEZAM (i za direktorijum ;) Iz arhive, koja je prikacena uz ovu poruku, sam (po preporuci autora) izbacio jedino automatski generisan cross-reference (uglavnom zbog velicine; nekompresovan ovaj fajl je nesto preko 4M) C++ gramatike. Ako neko bude zainteresovan, poslacu i njega (zaista je neophodan za analizu cpp5.y; VOLEO bih da imam program kojim je ovaj file generisan - pored standardnog yaccovog -v ispisa, razlikuje LAR(1)-only konflikte, daje primere ulaza pri kojima nastupa svaki od konflikata, stanje steka, i crta parse trees...) Pozdrav, Ivan cppgram5.arj
unknown.422 skoprivica, -> #421, ivan.s
-> Inernetu) yacc-abilnu PD gramatiku Ca i C++, sve sa iscpnom ^^^^^^^^^^^^^ Pojasni mi ovo molim te... -> velicine; nekompresovan ovaj fajl je nesto preko 4M) C++ gramatike. Voleo bih ovo da imam, pa predlozi nesto...:) Aje... CTEBO.
unknown.423 dusanp,
Dal' me oči varaju, ili zz stvarno polako prelazi na Borland C :))))) A i nije čovek kriv. Pogledajte šta radi Microsoft. Da sam hteo da mi se program INTERPRETIRA kupio bih bejzik a ne onaj C 7.0 O:)
unknown.424 kzoran,
Hi! Ima li neko instaliranu cbase biblioteku funkcija za MSC 6.0? Pokušao sam instalaciju na svojoj mašini, ali nešto nije išlo kako treba. Install procedura mi prijavljuje gomilu unresolved external. Pozdrav, Zoran.
unknown.425 dnikolic, -> #424, kzoran
>> Ima li neko instaliranu cbase biblioteku funkcija za MSC 6.0? Ako sam te dobro razumeo, imas to ovde, na Sezamu, ali ne znam tacno u kom direktorijumu. Pregledaj ( odlicno! ) uputstvo, imas objasnjenje kako se CBASE bibilioteka prilagodjava Borland, MS i UNIX kompajlerima. Nije problem. Ja jedino nisam uspeo da nateram TC 2.0 da radi sa CBASE iz integrisane okoline ( koju obozavam :) dn
unknown.426 hacker,
Pozdrav, aman zaman, kako u Cu da dodam JEDAN znak "char" na string, naravno na kraj stringa!?! Pokusavam danima i ne uspeva mi, a neznam zasto, ajte recite Vi meni!
unknown.427 dusanp, -> #426, hacker
=> aman zaman, kako u Cu da dodam JEDAN znak "char" na => string, naravno na kraj stringa!?! ********************************************************** #include <string.h> #include <stdio.h> int main(void) { char destination[25]; char *blank = " ", *c = "C++", *Borland = "Borland"; strcpy(destination, Borland); strcat(destination, blank); strcat(destination, c); printf("%s\n", destination); return 0; } **********************************************************
unknown.428 dvidovic,
Moze li ovo neko da mi iskompajlira i vrati exe verziju? Program je iz PC Mag., zove se BigCopy i radi isto sto i Dejanovi Lcopy/Lretr. Malo je i hitno. Pozdrav Dule bcopy.c
unknown.429 hacker, -> #427, dusanp
Da, znam za taj lepi primer, danke
unknown.430 prvul, -> #426, hacker
Ůaman zaman, kako u Cu da dodam JEDAN znak "char" na string, naravno na Ů▄▄▄ Ako dodaješ na sting, moraš da u njemu imaš mesta za još znakova. Pošto se C string završava sa 0x00 znakom, treba da na mesto tog znaka upišeš znak koji ti treba, a u sledeće mesto da staviš novi 0x00... na primer, char a[100]; /* Ubaciću slovo 'a' na kraj stringa a */ a[i=strlen(a)]='a'; a[++i]=(char)0x00; Dobro, trebalo je da deklarišem i int i; ali pišem online, pa će mi valjda biti oprošteno
unknown.431 mjova, -> #428, dvidovic
> Moze li ovo neko da mi iskompajlira i vrati exe verziju? > Program je iz vidi ovako, ovo je malo problematično, bilo je dosta štamparskih grešaka, a nije samo to.. ima tu još po nešto da se ispravi... mene mrzi prvo da ti kažem jer sve što želim da podelim to su arhive, a za to mi je i arj dovoljan. ako ti baš treba, mogu da ti pošaljem bcopy.exe, ali to ne radi kako treba. e, sad se setih, pogledaj po starim konferencijama za programom koji se zove cut*.zip. to sam ostavio negde, ali nemam pojma gde... SY
unknown.432 dvidovic, -> #431, mjova
> vidi ovako, ovo je malo problematicno, bilo je dosta > stamparskih gresaka, a nije samo to.. ima tu jos po nesto > da se ispravi... > e, sad se setih, pogledaj po starim konferencijama za > programom koji se zove cut*.zip. to sam ostavio negde, ali > nemam pojma gde... Hvala u svakom slucaju. Pogledacu okolo. Pozdrav Dule
unknown.433 dusanp,
Jedan program je radio savršeno do 29.2. ove godine,a onda je pao. Zašto? Zato što sam u njemu koristio primer prikačen uz ovu poruku. Bag BCa? Greška MsDos-a? Rezultat rada stranih obaveštajnih službi? Ne znam. Da li se još nekom desilo nešto slično? greska.arj
unknown.434 bulaja,
**** new file **** \ibmpc\program\spawno41.zip Zamena za Borland/Turbo C i Microsoft C spawn..() funkcije, swap-uje osnovni program na disk, EMS, XMS ili extended memoriju dok se spawn-ovan program izvrsava, ostavljajuci manje od 300 bajtova zauzeto u memoriji. Ukljucena je i varijanta za Turbo Pascal.
unknown.435 mjova, -> #433, dusanp
> Jedan program je radio savršeno do 29.2. ove godine,a onda > Ne znam. Da li se još nekom desilo nešto slično? pretpostavljam da si koristio mktime()? (videću posle dl-a). e, ako jesi, onda u ovoj temi možeš da pronađeš nešto što sam napisao za ispravljanje te greške. jedino čega se sećam (sad je sve ok) je da sam se opasno napatio da nađem error... SY
unknown.436 dragisha, -> #433, dusanp
ű> obavestajnih sluzbi? Ne znam. Da li se jos nekom desilo ű> nesto slicno? Desilo se jednom Ameru. On je i javio u Borland za problem, oni rekli hvala popravicemo i u verziji 3.0 BC-a bug je jos uvijek gdje je i bio:). dragisha
unknown.437 viktor,
Zdravo, Zamoljen sam da postavim pitanje: - pri radu sa ORACLE-om pojavila se potreba za Lattice-C Ver 3.0 - 3.2 Zna li neko gde se tako nesxto mozxe nacyi, ko ga proizvodi, prodaje, da li je zamenljiv nekim drugim oblikom C-a i slicxno. Ako je pitanje i odgovr (mogucyi) interesantan za sve odgovore ostavite ovde u konferenciji. Za ono sxto mozxda nije interesantno posxaljite u mail. Unapred hvala u ime originalnog postavljacxa pitanja. Pozdrav
unknown.438 drakce,
Potrebni su mi programi (nešto kao Benchmark) za testiranje raznih kompajlera, pre svega C-a. Svaki predlog i ideja su dobrodošli :) Pozdrav
unknown.439 bocko,
Ne znam da li je ovo pravo mesto, ali evo pitanja: Gde se moze naci source za GhostScript 2.4? ( U dokumentaciji pise da je i source u PD-u) Mislim da bi se odatle moglo podosta nauciti, pa molim onoga ko je 'skinuo' GS24 da skine i source..... Pozdrav, Bocko
unknown.440 bulaja,
Otvoren je \IBMPC\C poddirektorijum i u njega su prebacene sledece datoteke iz \ibmpc\program: R:\IBMPC\C\*.* ---------------------- cbase101 a01 118403 C database library (source) (#2/2) cbase101 arj 129200 C database library (source) (#1/2) dflat9 zip 147342 C biblioteka (source) za korisnicki interfejs (DDJ) dmake37e zip 145920 MAKE utility za C programere (TC, BC, MSC, MASM) f2c-exe a01 127985 Fortran 77 -> C konverter (#2/2) f2c-exe arj 139259 Fortran 77 -> C konverter (#1/2) mc20 zip 190976 C compiler sc88 zip 81240 Small C compiler (+ .C source) snip9-91 arj 144788 Zbirka raznih primera i funkcija za C (source) spawno41 zip 105023 Zamena za BC/MSC spawn..() funkcije Bice jos noviteta ovih dana ;) ...
unknown.441 madamov, -> #439, bocko
Pa i nije baš pravo mesto, možda u ORKA:source ili tako negde. A mogao bi Kale da otvori temu PostScript ili nešto slično u ORKA. Ne znam da li ima negde za PC, a ja mogu da proverim da nema neki source tamo gde sam ja našao GhostScript za ST. Koliko će da odgovara, ne znam, ali se radi o GNU GhostScriptu, a taj je verovatno pisan u GNU C-u koji postoji valjda na svim mašinama.
unknown.442 bocko, -> #441, madamov
Jos jedan glas za PostScript! Inace, GhostScript je, koliko sam primetio, napisan tako da se sa par (desetina) #define - a prilagodjava svim poznatijim (PC, UNIX i VMS) C-ovima. U krajnjoj liniji, nije ni bitno. Mene interesuju 'parcici' koda, da naucim ponesto o implementiranju PostScript-a i sl. Da li cu moci da rekompajliram celu aplikac, nije ni vazno.
unknown.443 dusanp, -> #440, bulaja
=> Otvoren je \IBMPC\C poddirektorijum i u njega su => prebacene sledece datoteke iz \ibmpc\program: Pravi potez, iscasih oci trazeci programe vezane za C.
unknown.444 darone, -> #439, bocko
>> Mislim da bi se odatle moglo podosta nauciti, pa >> molim onoga ko je 'skinuo' GS24 da skine i >> source..... Pa pre dva dana je došao na Sezam, ima ga u diru, a i bila je poruka negde po konferencijama. A da sysadmi ubace u sistemski autoexec i nešto kao: echo Novi fajlovi: dir /s /n Moguće? Jako često se po konferencijama nalaze poruke 'a žašto na sezamu nema toga i toga' a on je tu od pre par dana. darone
unknown.445 bocko, -> #444, darone
>> Pa pre dva dana je dosao na Sezam, ima ga u diru, a SOURCE?? Mozda sam obnevideo od zelje da ga nadjem, ^^^^^^^^ ali ja ga stvarno ne vidim. Pregledao sam sve sto ima veze sa GhostScript-om, ali source-a nema pa nema. Zeleo bih da nisam u pravu. Molim te, demantuj me. Pozdrav, Bocko
unknown.446 ndragan, -> #437, viktor
/ Zna li neko gde se tako nesxto mozxe nacyi, ko ga proizvodi, prodaje, Set code maguar? Bue_ Ndragan
unknown.447 viktor, -> #446, ndragan
Zdravo, >>Set code maguar? Ne, pokusao sam da vam prikazem jedan nacin "kodiranja" YU slova koji se lako prebacuje na bilo koji kodni raspored sa replace. Nije vam se dopalo, jeste, tesko je za citanje. Necu ga vise koristiti. Dakle, zao mi je ako je nekome smetalo, ali ako nista drugo, videli ste ... Pozdrav. P.S. Sta bi sa Lattice - C?
unknown.448 nick,
Da li je neko programirao nesto na C-u u okviru AutoCAD-a verzija 11. Ako jeste neka se javi da razmenimo iskustva. pozdrav, nick
unknown.449 bulaja, -> #444, darone
││molim onoga ko je 'skinuo' GS24 da skine i source..... │└─── │Pa pre dva dana je dosao na Sezam, ima ga u diru, └─── To nije bio source nego .EXE verzija i ostali glavin fajlovi. Source-a nema na Trickle-u, cini mi se da je u dokumentaciji pisalo da se moze naci na nekom ftp serveru (nemam vise dokumentaciju, obrisao sam je jer mi GS en treba ;), ali nazalost ja nemam vremena ovih dana da to dovlacim. Ako neko nabavi (a da nije mnogo dugacak source) ...
unknown.450 madamov, -> #449, bulaja
Dugačak je, dugačak ... B((
unknown.451 madamov, -> #442, bocko
Onda je ok, ali tu je problem veličine fajla. Našao sam source za verziju 2.11 GhostScripta na jednom ftp serveru za Atari, dug je oko 700Kb, ZOO arhiva. Oštrim se da ga naručim, ali prvo moram da sredim stanje svog direktorijuma na VAX-u da bi isti mogao da primi toliki fajl. Najverovatnije za vikend.
unknown.452 darone, -> #445, bocko
>> Zeleo bih da nisam u pravu. Molim te, demantuj >> me. U pravu si ;( Eh kad ne čitam svaku reč. Izvini. darone
unknown.454 dusanp, -> #453, hacker
=> JEL moze meni neko da objasni CELU proceduru pisanja => jednog LIBa u C++ 2.00 (BC) i kako kasnije iz TOG LIBa => koristiti funkcije koje sam napisao... I kako iz IDEa => ukljuciti LIB u program? 1..Napišeš svoju funkciju ili proceduru, koju hoćeš da uključiš u lib. Na primer: ****************************************** #include <stdio.h> void myfunc (void) { printf ("MYFUNC RADI!"); } ****************************************** 2..Ovu proceduru prevedeš iz komandne linije sa BCCX -ml -c myfunc.c (-ml određuje large model, a -c znaači samo kompajliranje u .OBJ) 3..Iz komandne linije otkucaš: TLIB mylib.lib +myfunc.obj OVIM SI DOBIO BIBLIOTEKU MYLIB.LIB I U NJOJ FUNKCIJU MYFUNC() 4..Napišeš probni program, da vidiš kako to radi, na primer: ****************************************** void main (void) { myfunc(); } ****************************************** 5..Iz komandne linije ovaj program prevodiš sa: BCCX -ml main.c myfunc.lib 6..Iz IDEa otvoriš projekat i u njega upišeš da se sastoji iz main.c i mylib.lib. Okineš F9 i radi...
unknown.455 hacker,
HVALA...
unknown.456 ndragan, -> #447, viktor
/ Ne, pokusao sam da vam prikazem jedan nacin "kodiranja" YU slova koji / se lako prebacuje na bilo koji kodni raspored sa replace. Nije vam se Teško se čita, zaista. A i na Sezamu ima dosta citata iz engleskog (beše li replace ili riplejs), kod kojih bi došlo do zabune ako bi se ovo tvoje 'cy' prevodilo u neki drugi kodni raspored. Mislim da je neko već okačio primer. Bue_ NDragan
unknown.457 kzoran,
Koristi li neko dflat user interfejs za c? Kako se to čudo instalira? Pozdrav, Zoran.
unknown.458 ppekovic, -> #457, kzoran
>> Koristi li neko dflat user interfejs za c? Kako se to čudo instalira? Citajuci uputstvo sam ga instalirao bez ikakvih problema. Nekako tih dana se pojavilo nekoliko poruka u kojima oni koji su malo blize zavirili u dflat i pokusali da ga korisno upotrebe izrazili rezervu prema upotrebljivosti dflat-a. Koliko se secam, najvise je prituzbi bilo na racun nacina programiranja pri koriscenju dflat procedura, ili prosto receno: sve je to mnogo je komplikovano. Paya
unknown.459 kzoran, -> #458, ppekovic
>> Citajuci uputstvo sam ga instalirao bez ikakvih problema. Nekako Ma, citao sam ja to sto si nazvao uputstvom; mozda je problem u drugom - - dobio sam nesto sto nisam ocekivao. Naime, mislio sam da je to 'standardna' biblioteka funkcija za user interface, a dobio memopad.exe! Takvih stvarcica mi je vec pun ... Uz to, kompajliranje skoro svakog drugog .c fajla iz onog poduzeg spiska proizvelo je gomilu poruka tipa : signed/unsigned mismatch; conversion between different integral types; conditional expression is constant; long/short mismatch in argument, a o onim 'All rights reserved' da i ne govorim :)) Na kraju, naravno, o nekom .lib fajlu ni govora. Samo mi jos treba da prekopavam po source-u i da trazim mesta na kojima je pisac hteo nesto da kaze a nije se lepo odrazio ... Pa ako to i uradim, treba da verujem da je sve OK, da od onih .obj fajlova pravim biblioteku i molim Slobu da mi ne padne ... Hvala! I zasto sve u large modelu? Kako se tebi dflat ponasao prilikom kompajliranja? Ili - postoji li nesto pouzdano na istu temu, a da je rad sa njim jednostavniji? Pozdrav, Zoran.
unknown.460 vilic,
Hi, evo jedne od poslednjih poruka pristiglih sa TCPLUS-L listservera: ------------------------------------------------------------------ It comes from com.os.ms-windows.programmers.tools --------------------- For now, here's a brief summary from Borland Language Express: - Full Windows 3.1 Support (MM, OLE, Pen, etc...) - WINSTRIC.H Type Checking is now standard. (3 "relaxed" levels are also available: 3.0, 3.1 compatibility, 3.1, and 3.1 strict) - Better optimization, including 386 code generation (though not 32 bit flat memory :(, and "Object Data Calling Convention". - The Windows IDE now includes the optimizing compiler. - Optional "pretty color" syntax highlighting. - The .RC compiler is now integrated into the Windows IDE (!) - WinSpector, like Dr. Watson/Dr. Frank but allegedly better. - "...hard copy documentation for the Windows 3.1 API..." - AT&T Cfront 3.0 compliance (they rip on C++7 for being only 2.1 compliant, i.e. no templates) - Precompiled Headers no longer requires the same headers in the same order in every file (quite a Good Thing). - The article takes a lot of shots at MSC++7, and they may have some valid points... Prices: BC++/AF 3.1 $749.00 new $199.95 from BC++ 3.0, BC++/AF 2.0, TC/TC++ Pro $ 39.95 from BC++/AF 3.0 BC++ 3.1 $495.00 new $199.95 from BC++ 2.0, TC/TC++ Pro $ 39.95 from BC++ 3.0 Also, they throw in free ProtoGen 2.1 with both packages (if ya can't sell it...) All and all, a pretty nice package, especially if you have 3.0... I don't see how anyone can complain that "Borland is screwing us into another upgrade already." 39 bucks for a whole new set of manuals and Windows stuff... heck, Borland can't be making a lot off of that... I'm *poor*, and I'm not complaining... \bye
unknown.461 spantic, -> #460, vilic
> - Full Windows 3.1 Support (MM, OLE, Pen, etc...) Ex, znam neke koji su kupili Borland C++ 3.0 i sada skidaju Borlandu svece ;)
unknown.462 kzoran,
Hi! Ima li neko Microsoft C Bible ili nešto slično KKvrlo slično za MSC 6.0? Pozdrav, Zoran.
unknown.463 djelovic,
> class D š...ć > class C : virtual public D š...ć > class B : virtual public D š...ć > class A : public B, public C š...ć > > A a; > > ovo ne funkcionise (D&)a (tacnije javlja gresku da ne moze da izvrsi cast) S obzirom da bi ovo moralo da radi, pretpostavljam da si pre napravio neku grešku koja daje istu poruku na tom mestu. Recimo, ako si u klasi D imao funkciju show, verovatno si radio (D&)a.show (); Kompajler onda prvo uradi a.show (), pa onda vrednost koju ova f-ja vraća (void, int, ...) pokušava da pretvori u D. Umesto toga, napiši ((D&)a).show (); i sve će savršeno raditi. P.S. Tvoja poruka je greškom dospela u CIVILIZACIJA::o.jeziku, pa sam morao da odgovorim na nju sa rep (PC.PROG&)CIVILIZACIJA::5.487 :).
unknown.464 nkbog, -> #463, djelovic
***** S obzirom da bi ovo moralo da radi, pretpostavljam da si pre napravio neku gresku koja daje istu poruku na tom mestu. Recimo, ako si u klasi D imao funkciju show, verovatno si radio (D&)a.show (); Kompajler onda prvo uradi a.show (), pa onda vrednost koju ova f-ja vraca (void, int, ...) pokusava da pretvori u D. Umesto toga, napisi ((D&)a).show (); ***** Upravo ovako stoji, i opet ne radi. Na kraju sam odustao od mrezne organizacije i presao na hijerarhiju, ali to nije ono sto mi je trebalo. NB. p.s. sorry za pogresnu temu, ko bi se setio tog Ctrl-D ;)
unknown.465 djelovic, -> #464, nkbog
> Upravo ovako stoji, i opet ne radi. Na kraju sam odustao od mr > organizacije i presao na hijerarhiju, ali to nije ono sto mi j > balo. Evo, potrudio sam se da proverim, i sledeći primer radi savršeno. Gledaj: #include <stdio.h> class D š public: int i; void ass (int k) š i = k; ć ć; class C: virtual public D š public: void ass (int k) š i = k + 1; ć ć; class B: virtual public D š public: void ass1 (int k) š i = k - 1; ć ć; class A : public B, public C š public: void show (void) š printf ("%dĐn", i); ć ć; main () š A a; ((D&)a).ass (5); a.show (); return 0; ć
unknown.466 nkbog, -> #465, djelovic
>> Evo, potrudio sam se da proverim, i sledeci primer radi savrseno. Moja greska... u pitanju: Nisam trebao da pitam za (D&)a vec za (A&)d. Npr: // Iste klase main() { D d; ((A&)d).ass(5); ... } Inace mogla bi da bude logika tipa virtuelni (prividni) predak u stvari i nije predak, ali meni BAS TO TREBA. p.s. Sta li si mislio sa ovim "ass". Sram te bilo ;) (mada kad razmislim, kad neko pita pogresno pitanje, sta je on onda)
unknown.467 djelovic, -> #466, nkbog
> D d; > ((A&)d).ass(5); Pazi: Klasa A nasleđuje klasu D pa prema tome *nema ni govora* da instancu kase D možeš da pretvoriš u A. Ako počnemo da koristimo one odvratne analogije OOP gurua, ovo se svodi na sledeće: 1. Klasa D = majmun. 2. Klasa A = čovek. (Nastao od majmuna, tj. nasleđuje majmuna.) 3. Sa (A&)d ti govoriš majmunu da se ponaša kao čovek. Ovo nije moguće! Ti možeš da nateraš čoveka da se ponaša kao majmun (D&)a, ali nikako ne možeš da nateraš majmuna da bude čovek, jer on to ne zna. > Inace mogla bi da bude logika tipa virtuelni (prividni) predak u > stvari i nije predak, ali meni BAS TO TREBA. Virtualni predak je potpuno isti kao i običan predak. Virtualne klase su izmišljene da bi se (kao na našem primeru) sprečilo da ista klasa bude nasleđena više puta, tj. da postoje više primeraka bazne klase u jednom nasledniku. Ovako, ako je virtualna, kompajler to uzima u obzir i smešta je samo jednom u naslednika. (Ovaj pasus liči na crnogorski rodoslov. Silni neki predaci i naslednici :).) > p.s. Sta li si mislio sa ovim "ass". Sram te bilo ;) (mada kad razmislim, > kad neko pita pogresno pitanje, sta je on onda) Onaj ko pita (makar i pogrešno pitanje) jeste neko sa željom da nauči. Doduše, onaj ko bi da od majmuna napravi čoveka... Šalu na stranu, moje "ass" je "assign" za lenštine. Nisu to bile nikakve insinuacije :).
unknown.468 psti,
Imam jedan problem, pa molim da mi neko pomogne. Naime, hteo bih da promenim interapt rutinu RTC (Real Time Counter) tako da prilikom svakog interapta prvo se izvrsi "nesto" (na pr. neko izracunavanje) a onda se nastavi izvrsavanje standardne interapt rutine... Imam taj slucaj resen na sledecem listingu ali u pitanju je Microsoft C a ja sam radio na Borland C++!? Neznam sta je ekvivalent u Borland C-u za _chain_intr(old_rtc) i sta on tacno radi... void interrupt cdecl far rtc_int() { sada ide neki deo koji se ubacuje u standardnu interapt rutinu... _chain_intr(old_rtc); //rutina se zavrsava ovim } Unapred hvala PSTI.
unknown.469 nkbog, -> #467, djelovic
> Pazi: Klasa A nasleduje klasu D pa prema tome *nema ni govora* da > instancu kase D mozes da pretvoris u A. Mogu preko pointera ili reference. Stvar je sto to ne funkcionise kod virtuelnih predaka. A kod obicnih predaka to moze da funkcionise, ali nije garantovano da ce funkcionisati (po logici covek je primat, pa ako znamo da je neki primat covek, pretvorimo ga onda u coveka, ako slucajno on bas i nije bio covek, onda u najboljem slucaju imamo Abnormal Program Termination). Naime ako preci nisu virtuelni sledeca stvar radi (bar u BC++ i to dokumentovano): class A {}; class A1: public A {}; A& a = *new A1; ((A1&)a).member(); ((A1*)&a)->member(); i slicno. Ako su preci virtuelni to ne radi. Zasto je jedna stvar dozvoljena, a ne i druga? Ima tu i neke logike, ali i nema... NB.
unknown.470 mjova, -> #468, psti
> rutine... Imam taj slucaj resen na sledecem listingu ali u > pitanju je Microsoft C a ja sam radio na Borland C++!? > Neznam sta je ekvivalent u Borland C-u za > _chain_intr(old_rtc) i sta on tacno radi... ne znam kako se to radi u MSC-u, ali u borlandu to izgleda ovako (mrzi me da menjam sve tako da ti samo prepišeš, ovo je primer za KBD int 9, valjda ćeš se snaći sam). možda bi trebalo da obratiš pažnju gde stavljaš poziv originalnog interapta (a postavi negde obavezno). drugo, treba da isključiš 'stack warning' i nemoj da koristiš promenljive definisane sa 'regester'. //------------------------------------------ deklaracije void interrupt (*oldint9)(...); void interrupt newint9(...); //------------------------------------------ funkcije void interrupt newint9(...) { (*oldint9)(); ..start starog int-a // moj deo koda } void exit_fn(void) { disable(); setvect(0x09, oldint9); enable(); } //------------------------------------------------------------------- void main(void) { oldint9= getvect(0x09); disable(); setvect(0x09, newint9); enable(); atexit(exit_fn); // trte-mrte ;) } SY
unknown.471 ljubao,
Treba mi pomoć oko harderr funkcije. Elem, kada vršim štampanje sa npr. fputc, ne mogu nikako da dobijem -1 ili šta već treba kada se pojavi greška. Probao sam da štampam sa biosprint, ali ako sam dobro shvatio harderr nije za bios. Iz harderr sam se vraćao na sve moguće načine, i kao što sam rekao, nisam mogao sa fputc nikako da dobijem znak da se pojavila greška. Pitanje bi npr. bilo, sa kojom funkcijom vi štampate (i dobijate kod greške iz harderr) ? Ljuba
unknown.472 jtitov,
Postovani ljubitelji i korisnici C jezika. "Zahvaljujuci" jednom Sezamovcu (a kome bi drugom), vrlo sam se zagrejao za C. Sada mi treba savet, koji prevodilac koristiti? Imam u kucnoj bazi i MS C 6.0 i7dĽ# Borland C++ 3.0 for Win. Da li neki od ova dva vredi ozbiljno koristiti i udubljivati se u njihov sistem rada, ili traziti nesto trece? Pozdrav, Jura. PS Molim prednosti i mane raznih C prevodilaca.
unknown.473 dusanp,
Nisam znao gde da stavim ovu poruku, pa je evo ovde: Iskompajliram ja lepo jedan kratak primer u BCu 2.0, od opcija uzmem optimizaciju i 286 mode itd. Startujem program i sta se desi? Dobijem poruku: QEMM386: The processor has notified QEMM that an attempt has been made to execute an invalid instruction. This may be due to an error in one of your programs, a conflict between two pieces of software, or a conflict between a piece of hardware and a piece of software. It is likely that the system is unstable now and should be rebooted. The report below may be able to help you and/or the developer of the program determine the problem. Please refer to the troubleshooting section of the QEMM manual for advice on resolving this problem. Exception #13 at 1F0A:0167, error code: 0000 AX=FFFF BX=FFFF CX=1F29 DX=0004 SI=0203 DI=056C BP=1000 DS=1F29 ES=1F29 SS=208A SP=0FF6 Flags=7202 Instruction: 26 FF 07 7D 1B 26 8B 47 0E 26 8B 77 0C 26 FF Do you want to (T)erminate the program or (R)eboot? Ako nekog zanima da dalje čačka šta se desilo poslaću mu taj primer, mene je mrzelo... Šta još da vam kažem? OBOčAVAM QEMM!
unknown.474 dnikolic, -> #472, jtitov
>> "Zahvaljujuci" jednom Sezamovcu (a kome bi drugom), vrlo sam se zagrejao >> za C. Sada mi treba savet, koji prevodilac koristiti? Imam u kucnoj bazi i >> MS C 6.0 i7dĽ# Borland C++ 3.0 for Win. Da li neki od ova dva vredi >> ozbiljno koristiti i Ja mislim ( i tvrdim :) da je za tebe najbolji Turbo C 2.0, koji, kako vidim, nemas u kucnoj bazi. To pod uslovom da ne zelis da pises programe za Windows. Najbrze kompajliranje, linkovanje, WS editor, integrisani dibager, imas i NG bazu za njega, zauzima samo par MB na disku umesto danasnjih Kiklopa - ukratko ja ga godinama sa zadovoljstvom koristim. Pozdrav, dn
unknown.475 spantic, -> #472, jtitov
> Sada mi treba savet, koji prevodilac koristiti? Imam u > kucnoj bazi i MS C 6.0 i7dĽ# Borland C++ 3.0 for Win. Da > li neki od ova dva vredi ozbiljno koristiti i Neki će me odrati :) ali za učenje a i za prve primene više je nego dovoljan Turbo C 2.0. Za profesionalne stvari odgovor će se verovatno razlikovati ali opet sve zavisi šta ti treba.
unknown.476 mjova, -> #472, jtitov
> PS Molim prednosti i mane raznih C prevodilaca. što se tiče učenja, uzmi neki koji će ti zauzimati manje mseta na disku, iz dva razloga. prvi je to što te glomaznost programa obično obeshrabri, a drugi je što zauzima grdan prostor na disku pa te vuče želja za jednim xrd. preproručujem ti turbo c++, ali neku stariju verziju (1.01) koja ima oko 4 - 5 disketa i sasvim je dovoljna za rad. tu se naravno nalazi i običan c i sve što ti treba za ozbiljan rad a i za početak. SY
unknown.477 mjova, -> #473, dusanp
> Iskompajliram ja lepo jedan kratak primer u BCu 2.0, > od opcija uzmem optimizaciju i 286 mode itd. > Šta još da vam kažem? OBOčAVAM QEMM! to nije do qemm-a, već do procesora koji mora da radi u V86 modu kad je instaliran qemm (ili max). u tom modu ne rade instrukcije koje su namenjene 286 i jačim. mislim da je to u pitanju.
unknown.478 ndragan, -> #472, jtitov
/ PS Molim prednosti i mane raznih C prevodilaca. Jura, jel' tebi kojim slučajem dosadno? Pa znaš šta si uradio? Pokrenuo si lavinu. Sad ćemo čitati "MsC vs BC" reprizu na šablon od "ZX protiv komodora", "atari protiv PCa", "teliks protiv telemejta", "dos protiv juniksa"... ajd' izdržaćemo, al da napišeš nešto lepo i okačiš na Sezam. Bue_ Ndragan P.S. Mislim da ćeš se na kraju odlučiti prema nekakvim ličnim simpatijama prema ovom ili onom kompajleru, bez obzira na ubedljivost ove ili one strane.
unknown.479 jtitov, -> #478, ndragan
> Jura, jel' tebi kojim slucajem dosadno? Pa znas sta si > uradio? Pokrenuo si lavinu. Sad cemo citati "MsC vs BC" > reprizu na sablon od "ZX protiv Ma gde dosadno. Sta ti je?! :)) Ali problem je u tome sto volim da koristim programe koji pruzaju najvise (po nekom mom misljenju). Svojim pitanjem sam i zeleo da pokrenem diskusiju da bi se iznele one prave vrednosti i mane C prevodilaca. Ne bih zeleo pricu u stilu "taj-i-taj C prevodilac je lep, ima lepu okolinu, brzo prevodi, itd. ali znas, kad radis sa npr. bazama, ume da zezne". Treba objasniti sta to zezne. Treba mi nesto pouzdano, brzo, sto podrzava onaj pravi standard C-a. Ta ja sam pravi pocetnik. Prekjuce sam napisao svoj PRVI C program (u onom stilu prinf("Hello, World.\n") ha, sta radim!). Sto se tice sablona "ZX vs. Comm." mislim da svaka argumentovana diskusija vredi. A znas li ti sta su programeri izvlacili iz one crne, "lepljive" kutije...?
unknown.480 dusanp, -> #477, mjova
=> to nije do qemm-a, već do procesora koji mora da radi u => V86 modu kad je instaliran qemm (ili max). u tom modu ne => rade instrukcije koje su namenjene 286 i jačim. mislim da => je to u pitanju. Znam, znam, dosetim se ja toga i prekompajliram program ovoga puta za 8086. I šta se desi: Opet izleti sa istom greškom. A Qemm nisam ni optužio, samo sam se oduševio njegovim mogućnostima presretanja grešaka. E, da, da ne zaboravim: Greška je i pronađena tako što se program obesio na jednom ATu bez nekih rezidentnih programa - znači čista 286 mašina. Da li neko zna šta oni kodovi koje je izbacio qemm znače, odnosno o kojoj se nepostojećoj instrukciji radi. Da nije BC pri optimizaciji iskoristio neki registar za nešto što taj registar ne može?
unknown.481 mjova,
skraćeno viđenje Borand C++ 3.0 paketa: -: mnogo mesta na disku (bez win oko 16Mb, a samo obavezno + malo utl + .lib & .h je oko 7Mb) nisu ispravljeni bagovi (mušice ;) u *.lib korišćenje memorije (ne radi sa poznatim xms/ems veznicima) +: src standardnih biblioteka (par mušica sam istrebio ;) znimljiv TV konačno ispravan help za cmd (ispravljeni bagovi) sređenija help datoteka (ajoj sad ima 2.4Mb a ranije 800k!) mada se ne slaže se max/qemm std-om korišćenje memorije mi se čini mnogo bolje nego pre. opšti utisak: tako - tako ;), razmišljam da se vratim na TC++ 1.01 (jedan korak napred, dva koraka nazad) SY ps. kad sam dao bildovanje ;) std *.lib imao sam oko 8Mb slobodnog HD-a, verujte, to je malo... e, da, to je trajalo (do manjka prostora na HD-u) oko 50 minuta.
unknown.482 janko, -> #481, mjova
> korišćenje memorije (ne radi sa poznatim xms/ems > veznicima) !! :( > mada se ne slaže se max/qemm std-om korišćenje memorije mi > se čini mnogo bolje nego pre. Pa BC++ 2.0 je radila sa Qemm? Što bi sada odustali? Ajde napiši još malo o tome. I (još) ne briši te diskete da bi snimio TC 1.01, pliz. ;) > -: mnogo mesta na disku === ===== al si našao znak ;> > (bez win oko 16Mb, a samo obavezno + malo utl + .lib & .h je oko 7Mb) Koliko je velika jedna cX.lib? U TC 2.0 su bile oko 100K, na BC++ 2.0 su oko 200K a sad?
unknown.483 mjova, -> #482, janko
> Pa BC++ 2.0 je radila sa Qemm? Što bi sada odustali? Ajde > napiši još malo o tome. pa ne znam ništa više, u glavnom borland je priznao da to nije kompatibilno, ali ono što sam ja primetio, u neki uslovima se slažu, mada ne baš kao 2.0. drugo, kako radim iz komandne linije (mrzim ide i ostale okoline) primetio sam razna poboljšanja u help sistemu. sad se može prozor proširiti po celom ekranu i pretraživanje ključnih reči je bolje (rade i znaci koji nisu slova). međutim, taj help mi pravi probleme, nisam 100% siguran, ali pravi. kako se kači na int 13 (nemam pojma koje su mu potrebe), on ume lepo da ometa ono što se tamo upisuje. kako mi je arj setovan da posle pakovanja obavezno testira arhivu, on pri uključenom helpu javi neku crc error i to me izluđuje... > Koliko je velika jedna cX.lib? U TC 2.0 su bile oko 100K, > na BC++ 2.0 su oko 200K a sad? pa one koje dobijaš uz paket su oko 250k, prosek, a one koje možeš sam da napraviš nešto su veće od 150k. kako nemam neku literaturu, ne mogu da probalim onaj kod koji treba da generiše std lib, ali mislim da sam se snašao. kako sam hteo da instaliram stari kompajler (iz 2.0) onda je došlo do problema pri povezivanju obj datoteka, pa je onda kukao da neke opcije ne poznaje (kompajler) jer su se ovi baš potrudili da maksimalno iskoriste sve novo. SY
unknown.484 jtitov, -> #483, mjova
> da ometa ono sto se tamo upisuje. kako mi je arj setovan > da posle pakovanja obavezno testira arhivu, on pri > ukljucenom helpu javi neku crc error i to me izluduje... Kad spomenu vec ARJ i njegovo javljanje (u nekim slucajevima) crc error-a, objasni zasto se to ponekad desava? Naime i meni se desava nesto slicno tome. Malo, malo pa crc error. Pa kad se zainatim i iskljucim sve rezidentno (cash, itd.) - ono arhiva cista ko suza.
unknown.485 dusanp, -> #481, mjova
=> skraćeno viđenje Borand C++ 3.0 paketa: ... Tako sam nešto i mislio, a mjova je potrvrdio moje pretpostavke. BC3.0 ... Preglomazno, moćno i preglomazno. Ukoliko vam stvarno ne trebaju WIN mogućnosti, ukoliko vam ipak treba ponešto od objektnih mogućnosti neka od nižih verzija ++a je sasvim dovoljna. btw: BC++2.0 sam uspeo da stešem na samo 4.2 mb i još uvek mi "zauzima previše mesta na disku". 8 mb? 16 mb? 30 mb? ­:( /naježila mi se kosa na glavi/
unknown.486 mjova, -> #484, jtitov
> Kad spomenu vec ARJ i njegovo javljanje (u nekim > slucajevima) crc error-a, objasni zasto se to ponekad > desava? Naime i meni se desava nesto slicno nemam pojma, izolovao sam thelp 3.0 kao jedinog krivca, kači se na int 13 (kao i prethodni) i možda mu je malo pomrsio račune. meni se crc error nije nikad pre javljao, osim kod slučajeva oštećene arhive, a sa thelp-om u memoriji nikad nije crc na istom mestu! pri jednom čitanju ima greške pri drugom ne mora! btw, arj ima mogućnost da pre destrukcije uradi test arhive i njenih sastojaka, za tu stvar definisao sam promenljivu koja podešava sve što mi treba. jeste da je malo duže, ali sam siguran da posle move komande (ajr m) neće obrisati datoteke kao je bilo problema. (set arj_sw=-jycry -i1 -jv -jt2 -ja) SY
unknown.487 dnikolic, -> #479, jtitov
>> podrzava onaj pravi standard C-a. Ta ja sam pravi pocetnik. Prekjuce sam >> napisao svoj PRVI C program (u onom stilu prinf("Hello, World.\n") ha, sta >> radim!). Pa okaci to ovde, da ga vidimo! :) dn
unknown.488 jtitov, -> #485, dusanp
> btw: BC++2.0 sam uspeo da stesem na samo 4.2 mb i jos uvek Svaka cast. Ajde, ako te ne mrzi, posalji DIR i stablo direktorijuma.
unknown.489 jtitov, -> #486, mjova
> btw, arj ima mogucnost da pre destrukcije uradi test > arhive i njenih sastojaka, za tu stvar definisao sam > promenljivu koja podesava sve sto Btw, sto se tice definisanja promenljivih, preporucio bih ti sistem: set arj_sw=<path>\arj.cfg Pa u arj.cfg navedes koji parametri ce se primenjivati pri raznim arj komandama. Na pr. a /jm /vva /wc:\windows\temp /x*.lzh /x*.zip /x*.arj x /vva /y itd. Onda ce se svaki put, kada otkucas arj a <ime, itd.> aktivirati i ona masa "prekidaca"...
unknown.490 jtitov, -> #487, dnikolic
>>> napisao svoj PRVI C program (u onom stilu prinf("Hello, >>> World.\n") ha, sta radim!). > > Pa okaci to ovde, da ga vidimo! :) Pa nema sta da kacim :))) Sve je sadrzano u onom prontf(..). Treba samo ispred main(), malo zagrada {} i to je sve :). Uzgred i jedno strucno pitanje. Preporucuje se ubacivanje #include <stdio.h>, mada se nigde konkretno ne kaze zasto. Programce mi radi i sa #include i bez. U cemu se konkretno sastoji to ubacivanje?
unknown.491 jtitov, -> #487, dnikolic
Evo jos jednog pitanjca. U toku instalacije C-a pitao me je za memorijske modele. Ja mu rekoh hocu sve! O cemu se tu radi?
unknown.492 dusanp, -> #488, jtitov
=> Svaka cast. Ajde, ako te ne mrzi, posalji DIR i stablo => direktorijuma. Tu je sve što treba: Ide, Cmd, svi .h i large lib. Zašto large? Pa iz dva razloga: taj model se najlakše linkuje sa bilo čim, i svaki program na kraju naraste do large modela. I nije 4.2 nego 4.00mb!!! \───BORLANDC──┬─BIN ├─INCLUDE └─LIB Directory of D:\BORLANDC\BIN [.] [..] PRJ2MAK.EXE TCCONFIG.TC GREP.COM TKERNEL.EXE TLIB.EXE BCCX.EXE TCHELP.TCH TD.EXE BCCX.OVY TDHELP.TDH MAKE.EXE TLINK.EXE BCX.EXE TLINK.CFG TURBOC.CFG BCX.OVY TCDEF.DSK TCDEF.DPR 20 file(s) 3169645 bytes Directory of D:\BORLANDC\INCLUDE [.] [..] ALLOC.H ASSERT.H BCD.H BIOS.H COMPLEX.H CONIO.H CTYPE.H DIR.H DIRECT.H DOS.H ERRNO.H FCNTL.H FLOAT.H FSTREAM.H GENERIC.H GRAPHICS.H IO.H IOMANIP.H IOSTREAM.H LIMITS.H LOCALE.H MALLOC.H MATH.H MEM.H MEMORY.H NEW.H PROCESS.H SEARCH.H SETJMP.H SHARE.H SIGNAL.H STDARG.H STDDEF.H STDIO.H STDIOSTR.H STDLIB.H STREAM.H STRING.H STRSTREA.H TIME.H VALUES.H VARARGS.H BOOL.H BLKIO.H BLKIO_.H BTREE.H BTREE_.H LSEQ.H LSEQ_.H CBASE.H CBASE_.H BASSTR.H ROLODECK.H PXENGINE.H STAT.H TIMEB.H TYPES.H 59 file(s) 258710 bytes Directory of D:\BORLANDC\LIB [.] [..] C0DL.OBJ C0FL.OBJ C0L.OBJ CL.LIB MATHL.LIB OLDSTRML.LIB EMU.LIB FP87.LIB GRAPHICS.LIB IMPORT.LIB MATHERR.C OVERLAY.LIB WILDARGS.OBJ PXENGTCL.LIB 16 file(s) 652298 bytes
unknown.493 ndragan, -> #479, jtitov
/ napisao svoj PRVI C program (u onom stilu prinf("Hello, World.Đn") ha, / sta radim!). Nadam se da nije suviše dugačak :). / vredi. A znas li ti sta su programeri izvlacili iz one crne, / "lepljive" kutije...? Znam. Radio sam bod liste za celu zbornicu (80 profesora) sa preračunom ko kolko posto ide gore ili dole ako promenimo pravilnik ovako i onako, pa sam nekoliko godina radio upis učenika (ono "zanimanje pod A, B, C, sve zauzeto, ispadaš... oš' budeš bravar, tamo ima mesta?")... Jura, ti si neverovatan - skoro da sam se rasplakao od nostalgije. Moraću da ga popravim :). Btw, čini mi se da je negde postojao i minimalni C kompajler za ZX - nemoj tek tako da ga izbaciš sa spiska zanimljivih. Preporučujem da napišeš članak za Računare: "Sve škole C-a ili šta raditi kad megabajti počnu da cure po podu". Bue_ Ndragan
unknown.494 ndragan, -> #485, dusanp
/ ­:( /naježila mi se kosa na glavi/ Ovo je jedan od boljih u poslednje vreme. Svaka čast.
unknown.495 dejanr, -> #490, jtitov
>> Preporucuje se ubacivanje #include <stdio.h>, mada se nigde konkretno >> ne kaze zasto. Programce mi radi i sa #include i bez. U cemu se >> konkretno sastoji to ubacivanje? U programu nemaš nikakve operacije sa diskom, samo ispis. žim budeš počeo sa datotekama (a bez njih se ne stiže daleko), #include je neophodan
unknown.496 jtitov,
:)))))))))))))))
unknown.497 jtitov, -> #495, dejanr
> U programu nemas nikakve operacije sa diskom, samo ispis. > Cim budes poceo sa datotekama (a bez njih se ne stize > daleko), #include je neophodan Hvala.
unknown.498 janko,
Za sve koji koriste Borlandov BC++ 2.0 paket, ili neki drugi Borlandov koji sadrži 'splitted' datoteke tipa ime.CA1 ime.CA2... i koji žele da skinu neke datoteke bez instaliranja celog čuda od NN megabajta (napr. reše da skinu dibager, koji pre nisu koristili, direktno sa instalacionih disketa, koji se nalazi podeljen, na dve diskete u TD.CA1 i TD.CA2): > CA2ZIP v0.1 Copyright 1992. Janko Stamenovic > > Spaja razdvojene .CAx datoteke na BC++ 2.0 disketama u jedan > .ZIP fajl u radnom direktorijumu. > > This program is put in public domain by author. ca2zip_e.zip
unknown.499 mjova,
imam jedno pitanjce za one koji imajuvolje i znanja da mi odgovore. zanima me upotreba va_list, va_start i va_end. u stvari, znam kako se koristi sa vprintf, ali me zanima kako mogu da napišem fn koja će da prihvata takve argumente. konkretno, kako se deklariše i kako izgleda konstukcija funkcije koja kao parametar ima pointer na parametre. SY
unknown.500 kzoran,
Zdravo! Je li radio neko sa int86 funkcijama u MSC 6.0? Interesuje me jedan detalj. Naime, potrebno je uhvatiti stanje carry flega po izlasku iz interrupt poziva, pa nađoh da REGS unija sadrzi strukturu WORDREGS, čiji poslednji član je unsigned int cflag. Je li to sadrzaj samo carry flega ili celog celog statusnog registra? Pozdrav, Zoran.
unknown.501 madamov, -> #499, mjova
>>konkretno, kako se deklariše i kako izgleda konstukcija funkcije koja kao >>parametar ima pointer na parametre. Loše si se izrazio, radi se o funkcijama sa promenljivim brojem parametara. Kao prvo, moraš da uradiš including stdarg.h, jer su u njemu definicije va_list tipa i va_start, va_arg i va_end makroa. Deklaracija tvoje funkcije treba da izgleda ovako: void fn(char *arg1, ... ) { va_list ap; /* ap je skraćenica od argument pointer */ int ivred; /* ove dve promenljive samo za ilustraciju */ long lvred; /* va_arg makroa */ i zatim pre bilo kakvog posla sa argumentima treba sa va_start da inicijalizuješ ap da pokazuje na prvi argument, tj. na arg1: va_start(ap, arg1); Zatim, parsuješ arg1 i u zavisnosti od njegovog sadržaja radiš svoj posao sa ostalim argumentima koje kupiš korišćenjem va_arg makroa: ivred = va_arg(ap, int); lvred = va_arg(ap, long); koji kao parametre uzima pointer na argument listu i tip, a vraća argument na koji pointer trenutno pokazuje pretvoren u taj tip, i pomera argument pointer na sledeći argument u argument listi. Kada završiš posao, sa va_end(ap) počistiš stvari. Da ne bih ja mnogo filozofirao, prekucaću ti primer iz drugog izdanja Kernigenovog i Ričijevog "The C Programming Language": void minprintf(char *fmt, ...) { va_list ap; char *p, *sval; int ival; double dval; va_start(ap, fmt); for(p = fmt; *p; p++) { if(*p != '%') { putchar(*p); continue; } switch(*++p) { case 'd': ival = va_arg(ap, int); printf("%d", ival); break; case 'f': dval = va_arg(ap, double); printf("%f", dval); break; case 's': for(sval = va_arg(ap, char *); *sval; sval++) putchar(sval); break; default: putchar(*p); break; } } va_end(ap); }
unknown.502 dragisha, -> #499, mjova
ű> konkretno, kako se deklariše i kako izgleda konstukcija ű> funkcije koja kao parametar ima pointer na parametre. Ovo je rješenje u JPI Moduli 2 ali mislim da je princip generalan i da nije zgoreg da se pogleda. Deklaracija =========== (*# save, call(c_conv=>on, var_arg=>on, reg_param=>()) *) PROCEDURE PrintF(formstr: ARRAY OF CHAR (*...*)); (*# restore *) Implementacija ============== (*# save *) (*# call( reg_param=>(), reg_saved=>(dx,bx,cx,si,di,es,ds,st1,st2), inline=>on ) *) TYPE A2 = ARRAY[0..1] OF SHORTCARD; PROCEDURE GetBP(): CARDINAL=A2(089H, 0E8H); (* mov ax,bp *) (*# restore *) CONST (*%T _fcall*) RetSize = 4; (*%E*) (*%F _fcall*) RetSize = 2; (*%E*) (*%T _fptr *) PtrSize = 4; (*%E*) (*%F _fptr *) PtrSize = 2; (*%E*) PROCEDURE PrintF(formstr: ARRAY OF CHAR (*...*)); CONST MaxStrSize = 511; TYPE MaxStr = ARRAY [0..MaxStrSize] OF CHAR; VAR res: MaxStr; BEGIN StrIO.DoFormat(res, formstr, [SYSTEM.Seg(res):GetBP()+RetSize+PtrSize+6]); WriteStr(res); END PrintF; Ko razumije, shvatiće. :) dragisha
unknown.503 mjova, -> #501, madamov
> Loše si se izrazio, radi se o funkcijama sa promenljivim > brojem parametara. Kao prvo, moraš da uradiš including jes, očigledno da jesam. znam kako se koristi u 'standardnom' obliku: print(int msg, ...) { va_list argptr; strcmp(f_mat, string[msg]); va_start(argptr, msg); vprintf(f_mat, argptr); va_end(argptr); } mene zanima sledeća kombinacija (nadovezuje se na prethodnu): screen(nt msg, ...) { // ovde radim neku pripremu.. // šta ovde treba da stoji da bi mogao da prenesem parametre // u print sve one argumente koji su prosleđeni ovoj fn. print(msg.......) } eto, da ponovim, kako treba da izgleda funkcija tipa vprintf(), kako bi ja napisao funkciju kojoj se predaje pointer na parametre, baš kao što se on prenosi funkciji vprintf() (i srodnom). inače, ovo sam skoro počeo da koristim pa mi je onaj tvoj primer ipak dobrodošao! SY
unknown.504 dnikolic,
Nisam siguran da li ovo pitanje treba da ide ovde ili u PC.PROG>BAZE.PODATAKA, ali neka ga ovde. Skinuo sam sa Sezama fajl CBASE, u kom su rutine ( i izvorni kod ) za rad sa bazama, iz C-a. Neke svoje programe sam prepravio za rad sa CBASE rutinama, ali se pojavio problem, tj. vise njih. Recimo, kako se izvrsava uzastopno pretrazivanje? Trazim sve slogove koji sadrze odredjenu vrednost. Postoji funkcija CBKEYSRCH(cbp,key,&buf) koja vrsi pretrazivanje, ali uvek pocinje od pocetka ( ne od fizickog pocetka, jer radi sa indeksima, vec od pocetka sortirane baze ). CBP je pointer na bazu, KEY polje po kom se pretrazuje ( 0,1,2...) a &BUF pokazivac na tra- zenu vrednost. Dakle, funkcija nadje prvu trazenu vrednost, ali ne moze ( koliko ja znam ) da nastavi trazenje od tog mesta. Sem toga, funkcija ne moze ( opet koliko ja znam :) da nadje pojavu nekog stringa, na primer "gan" u imenu Dragan. Nije mi jasno cemu sluze flegovi CB_FKEY i CB_FUNIQ u funkciji CBCREATE. Mozda je to u vezi sa gore spomenutim problemima. Nedostatak je i sto se ne moze pretrazivati u nazad. Ove stvari su krupni nedostaci, pa me zanima dali neko koristi CBASE i kako je resio ove probleme. Bio bih veoma zahvalan za nekakav odgovor. Za one koji se spremaju da pocnu rad sa CBASE funkcijama, stojim na raspolozenju. :) Pozdrav, dn
unknown.505 madamov, -> #503, mjova
Koliko sam shvatio (malo mi je nejasno šta želiš da postigneš), ali ako želiš da napišeš stvar sličnu vprintf() onda moraš i da poštuješ ista pravila koja važe i za poziv vprintf(), tj. pre poziva tvoje funkcije moraš pozvati va_start, proslediti svojoj funkciji argptr i po povratku uraditi va_end. A tvoja funkcija mora da ima deklaraciju kao: void print(int msg, va_list argptr); slično kao što je ima i vprintf(), a u okviru te funkcije bi pozivao va_arg i pointer bi išao do sledećeg argumenta itd. Ne znam koliko sam bio jasan, ali ovako sam ja shvatio ono što želiš da postigneš.
unknown.506 kanda, -> #504, dnikolic
>> Recimo, kako se izvrsava uzastopno pretrazivanje? Trazim sve slogove >> koji sadrze odredjenu vrednost. Postoji funkcija >> CBKEYSRCH(cbp,key,&buf) koja vrsi pretrazivanje, ali uvek pocinje od >> pocetka ( ne od fizickog pocetka, jer radi sa indeksima, vec od >> pocetka sortirane baze ). CBP je pointer na bazu, KEY polje po kom se >> pretrazuje ( 0,1,2...) a &BUF pokazivac na tra- zenu vrednost. Dakle, >> funkcija nadje prvu trazenu vrednost, ali ne moze ( koliko ja znam ) >> da nastavi trazenje od tog mesta. Pa to se verovatno radi kao u DBASE. Recimo, trazis ime 'Pera'. Kad nadjes prvog Peru, svi ostali (ako ih ima) su odmah iza, zato sto baza zbog indeksa izgleda kao da je sortirana. Znaci, iza tog CBKEYSRCH zviznes nesto tipa 'while polje=vrednost... sledece polje) i to je to. >> Sem toga, funkcija ne moze ( opet koliko ja znam :) da nadje pojavu >> nekog stringa, na primer "gan" u imenu Dragan. Za ovo, moras da prodjes kroz celu bazu i proveris koji slogovi ispunjavaju takav uslov. Indeksi koriste druge tehnike pretrazivanja, sa efektom da je pretrazivanje mnogo brze, ali se zato kriterijum pretrazivanja svodi na zadavanje celog polja koji trazis. >> Ove stvari su krupni nedostaci, pa me zanima dali neko koristi CBASE >> i kako je resio ove probleme. Bio bih veoma zahvalan za nekakav >> odgovor. >> >> Za one koji se spremaju da pocnu rad sa CBASE funkcijama, stojim na >> raspolozenju. :) Hm, ja sam zakljucio da CBASE moze otprilike ono sto moze i DBASE. S tim da je sve to MNOGO komplikovanije nego u DBASE. Video sam (ima na FENIX-u) neke biblioteke, kao CBASE, ali za C++, sintaksa je (zbog koriscenja klasa) mnogo lepsa, a mogucnosti verovatno tu negde. Opet, sve to je negde 50 svetlosnih godina iza klipera. Kada bi postojao neki preprocesor za C++, kao za kliper, da mozes da uvodis komande; kada bi postojao neki pouzdan prevodilac koji ume da radi sa virtualnom memorijom kao kliper; ... mozda bi sve to i moglo da se koristi za posao. ovako, vise je zanimljivo nego upotrebljivo.
unknown.507 prvul,
Kako se radi ono zaključavanje slogova u fajlu? I da li je to moguće uraditi iz standardnog C-a (da pojednostavim: jel' se tako radi i pod VMS-om i UNIX-om? ) Unapred hvala na odgovorima, Prvul
unknown.508 djelovic, -> #507, prvul
> Kako se radi ono zaključavanje slogova u fajlu? I da li je to moguće > uraditi iz standardnog C-a (da pojednostavim: jel' se tako radi i pod > VMS-om i UNIX-om? ) Osnovno zaključavanje slogova vrši se pomoću funkcija lock i unlock koje fajl određen handle-om zaključavaju/otključavaju od nekog ofseta za određeni broj bajtova. Ako pokušaš da zaključaš područije koje je već neko drugi zaključao, lock ti vrati -1. (Ako koristiš ove funkcije pod DOS-om obavezno učitaj SHARE.EXE da ti DOS ne bi sjebo disk. BTW, lock i unlock funkcije se mapiraju direktno na DOS.) Naravno, kada radiš zaključavanje slogova ne smeš da koristiš nikakvo baferizovanje, to je i razlog zašto lock/unlock funkcije rade sa handle-ovima a ne sa FILE*-ima. Gornje rešenje mi se nikada nije sviđalo, i zbog nemogućnosti korišćenja bafera i zbog neažurnosti podataka koje gledaš na ekranu. Idealan sistem bi koristio međuprocesne komunikacije, a one se razlikuju od sistema do sistema, mada bi i za njih mogao da korisitiš zajedničko područije na disku koje bi razni procesi zaključavali i otključavali. Više o tome pogledaj u nekim o prethodnih "Računara", tekstovi o NetBIOS-u, i ZZ-ov tekst o CHAT-u, pogledaj u /RSOFT.
unknown.509 mjova, -> #507, prvul
> Kako se radi ono zaključavanje slogova u fajlu? I da li je > to moguće uraditi iz standardnog C-a jes, valjda je isto i za unix jer je funkcije open(), sopen(), lock() i unlock() UNIX-like, što bi rekli englezi ;) e, sad kako to radi na VMS-u i UNIX-u nisam probao ;), ali za dos ti treba share u root-u boot drive-a ;) ili da sam učitaš pre upotrebe. SY
unknown.510 ppekovic, -> #509, mjova
>> jes, valjda je isto i za unix jer je funkcije open(), sopen(), lock() >> i unlock() UNIX-like, što bi rekli englezi ;) E nije isto za UNIX. Na XENIX-u se zaključava i otključava fajl ili deo fajla sa locking() funkcijom. Evo primera: #include <sys/locking.h> main() { int fh; /* ... */ fh=open("fajl",O_RDWR); lseek(fh,1024L,0); locking(fh,LK_LOCK,300L); /* ovde citas, pites itd. itd. */ lseek(fh,1024L,0); locking(fh,LK_UNLCK,300L); /* ... */ } UNIX System V poznaje još dve funkcije za zaključavanje a to su: fcntl() lockf() ali ih nisam koristio pa nemogu reći ništa više o njima. Paya
unknown.511 ppekovic,
Krenuo sam u osvajanje programiranja pod OS/2 uz pomoć MSC-a 6.0 i naravno naišao na probleme. Treba mi da uradim jednu banalnu operaciju a to je da isčitam sadržaj dir-a. Stari dobri _dos_findfirst() i _dos_findnext() naravno ne radi. Za to sada postoje DosFindFirst() i DosFinfNext() čije definicije izgledaju ovako: USHORT APIENTRY DosFindFirst(PSZ pszFSpec, PHDIR phdir, USHORT usAttr, PFILEFINDBUF pffb, USHORT cbBuf, PUSHORT pcSearch, ULONG ulReserved); USHORT APIENTRY DosFindNext(HDIR hdir, PFILEFINDBUF pffb, USHORT cbBuf, PUSHORT pcSearch); Provalio sam šta je pszFSpec, usAttr i pffb jer su to parametri za _dos_findfirst(), provalio sam i šta je phdir (handle), ali jel zna neko šta su cbBuf, pcSearch i ulReserved? E da, i čemu služe ove dve funkcije: USHORT APIENTRY DosFindFirst2(PSZ pszFSpec, PHDIR phdir, USHORT usAttr, PVOID pBuf, USHORT cbBuf, PUSHORT pcSearch, USHORT usInfoLevel, ULONG ulReserved); USHORT APIENTRY DosFindClose(HDIR hdir); Ajde ova druga je logično da postoji jer mora neko i da oslobodi "okupirani" ;) handle, al šta je ona prva? Paya
unknown.512 ppekovic,
Opet OS/2 ;). Jel zna neko zašto C programi koji koriste grafiku puknu pre ili kasnije? žak ne rade ni oni demo programi CHRTDEMO, GRDEMO i SORTRDEMO. Paya
unknown.513 mjova,
može li mi neko reći pouzdan način da datoteku otvorenu kao "rt" prebacim u "rb"? probao sam sa setmode(fh, _O_BINARY), ali to nije to. ne prebaci se u binarno način čitanja (nemam pojma zašto) jer i dalje CR/LF čita kao LF. ne znam da li je neki bug ili jednostavno ne može uvek da se prebaci iz t => b. možda je problem što sam u sredini datoteke? brljao sam čak i sa stream.flags, ali ništa ne pomaže. ajde neka ideja, ako je ima. glupo mi je da koristim getc() kad ima fread(), no i getc() rešava posao. ipak i pored toga, zanima me ono prebacivanje. e, da ne zaboravim, da li se sa ftell() određuje apsolutno mesto u datoteci, bez obzira da li je otvorena kao bin ili kao text? (logično je da nema veze, ali ko zna?) SY
unknown.514 zzivotic, -> #511, ppekovic
> USHORT APIENTRY DosFindFirst(PSZ pszFSpec, PHDIR phdir, USHORT > usAttr, PFILEFINDBUF pffb, USHORT cbBuf, PUSHORT pcSearch, > ULONG ulReserved); pszFSpec - ascii path & file specifikacija phdir - find handle (inicijalno -1, sistem vrati handle) usAttr - atributi za pretrazivanje pffb - adresar bafera za vraceni naziv datoteke cbBuf - velicina bafera pffb pcSearch - broj pronadjenih naziva ulReserved - reservisano, treba da bude 0L Ideja je da funkcija može u jednom potezu da vrati više od jednog filename. cbBuf je umnožak sizeof( pffb ); > USHORT APIENTRY DosFindFirst2.. Nemam informacija (miriše na nešto što ima veze HPFS mogućnostima...) > USHORT APIENTRY DosFindClose(HDIR hdir); Oslobađa find handle. DosFindFirst bi trebalo da može da se 'otvori' i sa phdir = 1 jer je taj handle inicijalno otvoren pa onda DosFindClose nije potrebno. Pozdrav, zz
unknown.515 janko, -> #513, mjova
> može li mi neko reći pouzdan način da datoteku otvorenu > kao "rt" prebacim u "rb"? probao sam sa setmode(fh, > _O_BINARY), ali to nije to. ne prebaci se u binarno način > čitanja (nemam pojma zašto) jer i dalje CR/LF čita kao LF. > > ne znam da li je neki bug ili jednostavno ne može uvek da > se prebaci iz t => b. možda je problem što sam u sredini > datoteke? 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 trenutka kada se učita parče dataoteke u bafer odmah 'padne' i eventualna konverzija, a zatim samo nešto kao return imaubaferu() ? *s++ : ucitaj_novi_bafer() ; radi posao čitanja jednog karaktera, svaki put kada pozoveš čitanje jednog znaka. Bilo kako bilo, takvi problemi kao tvoj se drugačije koncipiraju, pa se onda drugačije i rešavaju. Ideja nije 'kako da ga nateram da uradi ovo ili ono' već 'krajnji cilj mi je taj i taj, pa da vidim čime ću to da izvedem.' Hoću da kažem (a naravno, ne moraš da me poslušaš) da razmisliš "da li ja to stvarno hoću?" Možda si, ustvari, hteo nešto drugo? (nemoj da misliš da ti popujem, ozbiljno mislim ovo što ti pričam)
unknown.516 todorp,
Hi 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? Pozdrav od Todora.
unknown.517 radunovic,
Moze li mi neko preporuciti neku biblioteku funkcija za rad sa bazama podataka u High C-u . P.S. Da li je neko radio sa High C-om ili Watcom-om i moze li nesto da napise o dosadasnjem iskustvu.