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.313 alexa, -> #309, janko
E, tamo ima linija scanf sa formatom u kojoj idu redom > postotak, leva srednja zagrada, pa strelica na gore, pa kvačica > pa desna srednja zagrada. A da nema možda i neki blanko znak pre desne zagrade? Ono u zagradama predstavlja karaktere koji "dolaze u obzir", a ako ima "strelicu na gore" na početku onda je u pitanju negacija. Zanči, sve osim blanko znaka (tj. do prvog blanko znaka), ako je bio i blanko znak u (uglastim) zagradama. Mada, mislim da je to ekvivalentno sa %s, osim možda kada ima vodećih blanko znakova.
unknown.314 dusanp, -> #313, alexa
=> Mada, mislim da je to ekvivalentno sa %s, osim možda kada => ima vodećih blanko znakova. Nema mnogo veze sa prošlom porukom, ali da pokušam da se nadovežem. Kako drugi rešavaju učitavanje stringova sa diska i snimanje na disk. Ja sam se jedno vreme mučio dok nisam napisao par rutina koje pre rada sa diskom prilagode string tako da fscanf i fprintf ne greše. Ako bude trebalo, ovo mogu i detaljnije da objasnim, ali za sada dosta. A opet, u programima koje je pisao zz vidim dosta slobodno baratanje stringovima na disku /stringovi imaju i razmake/, a opet ih c lepo ucitava. Mislim da sam video u sor.str, nije ni bitno. Jel to zasluga mnogohvaljenih _dos_open i _dos_read ?:)
unknown.315 nandi, -> #312, janko
> žini mi se da čovek ipak priča o TC 2.0, inače ne bi pomenuo > Turbo, a nije ni plusiće stavio. :) :))). a ja hteo da pomognem. ako je ovo gore tačno dnikolić odmah da pređe na c++. dajte ljudi, ako imate problem, opišite malo okolinu i simptome više. ovako uglavnom se samo pogađa ... nandi ps: kola neće da mi se upale. šta da raaaadim?
unknown.316 nkbog, -> #311, janko
>> Ma, mislim da nema to veze sam sa tim Make ili BCC-om. To je >> zez u MS-DOS-u, čini mi se. Znam da se i meni događalo, i to >> da nisam zaključio kada se to događa. Neko od sezamovaca ti >> sigurno može reći više o ovome. Ajd ovako: U BIOS-u ima poziv funkcije koja vraća informaciju da li je prošla ponoć (to je int 1Ah/00h). Ova funkcija briše fleg na adresi 40h:70h koji to pokazuje. Ukoliko vaš program sam meri vreme preko ovog poziva, to može biti izvor zapetljancija, jer neko drugi (npr DOS neće znati da treba da promeni datum). Make utility, sa druge strane, bi trebao uzima podatke od DOS-a koji sam vodi računa o ovome i o datumu. Da nije tako sistemski datum ne bi bio ispravan. NB.
unknown.317 nkbog, -> #310, janko
>> Zatim, univerzalno parsiranje komandne linije, sve sa džokerima, >> opcijama i opcijama uz koje se navode fajlovi i datoteke sa >> spiskovima fajlova, napr: Za džokere u linijama uz većinu kompajlera se isporučuje WILDARG.OBJ koji se poveže sa ostatkom programa, i sam obradi takve stvari. Za ostale stvari postoje razni standardni UNIX potprogrami na C-u (na MSDOS nema takvih standardnih) koji to rade. Inače ne vidim razlog da se za ovo koriste klase - to već pretstavlja nepotrebno komplikovanje - klase imaju puno bolju primenu. NB.
unknown.318 janko, -> #314, dusanp
> nadovežem. Kako drugi rešavaju učitavanje stringova sa > diska i snimanje na disk. Ja sam se jedno vreme mučio dok > nisam napisao par rutina koje pre rada sa diskom prilagode > string tako da fscanf i fprintf ne greše. Nije mi jasan problem, priznajem. Gde je bila mina? Ja sam imao problema sa fgets, dok nisam otkrio da posle linije duže nego što se navede u pozivu ne učitava sledeću, nego nastavlja gde je stao. S obzirom da se ne zna gde je stao (možda baš na NL znaku), nisam rešio problem dok nisam napisao sam svoj ekvivalent fgets. Ne znam može li to elegantnije? Ne znam šta je problem sa fscanf itd, ali znam da se na C++ manje igra sa formatima. Skoro da možeš kao na bejziku, (zagriženiji ljubitelji bi rekli, puno više nego na bejziku :) sve redom da pišeš i ne brineš da li si sve 'skrpio' i u formatu i u pozivu funkcije.
unknown.319 dusanp, -> #318, janko
=> Nije mi jasan problem, priznajem. Gde je bila mina? Pa greška i nije bila do C-a. Problem je bio u tome što sam morao da napišem mnogo koda u malo vremena. Baza podataka je bila na disku organizovana ovako PRVAVREDNOST=.............CR/LF DRUGAVREDNOST=............CR/LF . . Itd. Stvar je bila u tome što sam stringove u bazu nor- malno fprintfovao na disk, a pri ucitavanju sa fscanf (file,"%s",...) je program citao stringove do prvog razmaka i onda haos. Onda dozvlim i ucitavanje razmaka. Ništa. Dodam kontrolu cr/lf. Opet ništa. Pošto je rok (tik-tak,tik-tak) opasno isticao, zaklju- čim da mi je pametnije da prilagodim string pre sni- manja na disk tako da "ovo je string" postane "ovo_je_string". Tako sam bio u mogućnosti da ga samo pljusnem na disk sa fprintf, a kada ga vraćam samo izbacim crtice i radi. Sad, (lenjost?) i u daljim programima koristim ove rutine, jer me jednostavno mrzi da probam nešto što mi već radi. /Lepša verzija prethodne rečenice kaže da nemam vremena :)/
unknown.320 mjova,
ima li neke šanse da se u nekim slučajevima isključi izvršavanje funkcije destruktora? odgovara mi da se ta funkcija uvek izvrašava osim u 1 slučaju. za taj slučaj mi smeta. da li ima neka konkretna komanda ili mora da se sredi nekako drugačije? dakle, može li nekako da se zaobiđe izvršavanje destruktora? SY ps. mogu ja sa tim da izađem na kraj, ali me zaima da li ima kraći put...
unknown.321 nandi, -> #320, mjova
> odgovara mi da se ta funkcija uvek izvrašava osim u 1 slučaju. > > dakle, može li nekako da se zaobiđe izvršavanje destruktora? nisam baš najbolje shvatio šta hoćeš da postigneš: da li da neki objekat nema destruktor (prazan destruktor) ili da se funkcija u destruktoru izvršava uslovno (if (!slučaj) funkcija) ili nešto treće. nandi
unknown.322 djelovic, -> #320, mjova
> ima li neke šanse da se u nekim slučajevima isključi izvršavanje > funkcije destruktora? Destruktori mogu biti virtualni. Ako ga u okviru neke klase tako deklarišeš, a onda u njenom nasledniku staviš za destruktor praznu f-ju, onda za naslednike destruktor ne važi. Drugi način je, naravno, da u klasu uvedeš neki flag koji bi konstruktor postavljao na 1. Onda oko tela f-je destruktora ubaciš uslov "if (flag) ...", i posao je završen. Jednostavnim postavljanjem flega na 0 destruktor neće biti izvršen. Treće, jedna rizična varjanta: Ako si instancu klase kreirao sa new, onda nemoj da je uništavaš sa delete (koja poziva destruktor), već sa free. Ovo bi u principu trebalo da radi, mada je (mislim) zavisno od načina na koji je new/delete konstruisan, tj. od načina čuvanja virtualnih tabela. Ako klasa nema virtualnih članova, onda ovo sigurno radi.█
unknown.323 bulaja,
**** new file **** \ibmpc\program\snip9-91.arj Zbirka raznih korisnik funkcija i primera (isecaka) datih kao C source. Evo spisa njihovih opisa: Macros for ANSI.SYS screen control Write portable code for various PC compilers Macros for direct video work AWK program to count lines of C code Saves/restores 80x87 environment Reliable cold/warm boot Determine type of CPU in use Determine presence of coprocessor Switch to 43/50 line mode on EGA/VGA Multiple printer support Read attribute and build ANSI.SYS command Build ANSI.SYS command string, given attribute Allow up to 255 open files under DOS 3+ Filter ASCII to bytes Allocate stack memory Detect ANSI.SYS Fuzzy string search Filter bytes to ASCII Read variables from a file BASIC-like string functions Bit array functions Count 1 bits Small bit array macros Set border color Cast any object to any type Change the standard printer device Checksum protection for executable files On-screen clock generator Calculated 16-bit CRC Table lookup 32-bit CRC S-Coder data encryption from DDJ Cursor management/manipulation Hide/unhide cursor TC/TC++/BC++ DOS file time/date macros DES encryption/decryption Complex pattern matching (calls patmat()) Copy a file DOS SORT work-alike Benignly validate disk drives On-screen TSR clock Direct video benchmark - ZTC/Watcom Copy a file Like fgets, except reads backwards Count files/directories Crunch dot directories, verify DOS-valid paths Full file name normalization Demonstrates a finite state machine Get current working directory for given drive AT&T compatible getopt(3) Scan command line for switches Unix head work-alike Obfuscated C code Read data into variables Expression evaluator Is a path a valid directory? Is a file handle associated with a file? Is a number an integral power of 2? Integer square root Julian Day Number computation Joystick support functions Keyboard status determination Set/clear Caps/Num/Scroll locks Caps/Num lock set/clear functions Distribution counting sort rediscovered Large bit array macros Long double floor Linked list mergesort Linked list quicksort DOS DIR work-alike Convert long to a string Convert long to a string Compression used in LHARC & LHA Obfuscated C code Convert strings to morse code MS Mouse functions MS Mouse functions MS Mouse functions MS Mouse functions Add peek/poke to MSC Traps Ctrl-C, Ctrl-Break, Ctrl-Alt-Del Traps Ctrl-Alt-Del String pattern matching Convert Pascal strings to C Permute strings Permute strings Determine permutation index Calculate PI to 60,000 digits or more How to print proper plurals Pop-up communications Tee stdio to stdprn Stack-oriented CHDIR functions Optimized bubble sort Timed query w/default for batch files Random number generator Random number generator Random number generator Convert between number bases Demonstrates output redirection Regular expression (subset) pattern matching Compiler-independent find first/next functions ANSI quicksort function ANSI quicksort-compatible shellsort function Remove all files How to seed ANSI random number generator Scalar ("Julian") date functions Scans/converts text fractions Get screen size Set DOS master environment legally Allow user input into a .BAT file Set, change, or kill a disk volume label Standard English soundex Benchmark to calculate I/O performance Analyze file statistics Reverse a string in place using XOR swapping (Shell) Sort a string array Trim trailing spaces from a string Read/write structures to/from a file Suggested coding style guidelines TC/TC++/BC++ display file date EBCDIC-ASCII conversion arrays TC/TC++/BC++ set file time/date stamp Recursive directory lister Convert Unix-style pathnames to DOS-style Unix uudecode Setup video operations Fast file copy/append Obfuscated C code Search for a file String concatenation functions C++ wrapper for LITECOMM Portability guidelines How to validate a logical drive How to blank/restore EGA/VGA screen How to check if file sharing is active Direct screen package Access command processor "back door" C "glue" to use Int 2Eh POSIX-compliant header opendir(), readdir(), seekdir(), closedir() Directory lister demo Microsecond timing function header Microsecond resolution timing functions Sound functions header Speaker control functions Tone generation functions Background music package Demo of backgroud music package
unknown.324 igor.mil, -> #313, alexa
> Mada, mislim da je to ekvivalentno sa %s, osim možda kada ima vodećih > blanko znakova. Pa lepo tamo piše da ima kvačica (pretpostavljam da je to znak č), pa to predstavlja učitavanje niza do prve kvačice.
unknown.325 igor.mil, -> #319, dusanp
> Stvar je bila u tome što sam stringove u bazu nor- > malno fprintfovao na disk, a pri ucitavanju sa > fscanf (file,"%s",...) je program citao stringove do > prvog razmaka i onda haos. Onda dozvlim i ucitavanje Ovo se, koliko je meni poznato, rešava sa pomenutim uglastim zagradama u formatu "fscanf" funkcije. Na primer: fscanf(file, "%ŠžĐnĆ", string); /* format: '%', left brace, caret, backslash, 'n', right brace */ učitava niz znakova *do* "newline" u niz "string", znači ceo red. Interesuje me šta se dešava sa samim "newline" karakterom. Bilo bi logično da on ostane nepročitan (zapravo moralo bi biti tako, u duhu jezika), pa ga onda treba pojesti npr. pozivom "fgetc". Da li je uvek ovako? I šta se dešava kad se gornjoj naredbi poturi prazan red, tj, red koji sadrži samo "newline" karakter?
unknown.326 igor.mil, -> #317, nkbog
> Za džokere u linijama uz većinu kompajlera se isporučuje WILDARG.OBJ > koji se poveže sa ostatkom programa, i sam obradi takve stvari. Onaj koji je isporučen uz Turbo C 2.01 ne radi kako treba.
unknown.327 mjova, -> #322, djelovic
> Treće, jedna rizična varjanta: Ako si instancu klase > kreirao sa new, onda nemoj da je uništavaš sa delete (koja > poziva destruktor), već sa free. Ovo bi u principu trebalo uh, ovo mi ne zvuči baš 'legalno' ;), a ona dva rešenja druga sam i sam skontao, ali me zanimalo da li ima možda neki drugi, lakši način. kako sam objekte pravio pre same funkcije main(), njihovi destruktori su se izvršavali pri svakom napuštanju programa. kad objekte definišem u samoj fn main() i kad prekidam izvršavanje exit()-om destruktori se ne startuju!? na kraju sam se odlučio za korišćenje new, a delete tamo gde treba. thanks! SY
unknown.328 dusanp, -> #325, igor.mil
=> Interesuje me šta se dešava sa samim "newline" => karakterom. Bilo bi logično da on ostane nepročitan => (zapravo moralo bi biti tako, u duhu jezika), pa ga onda => treba pojesti npr. pozivom "fgetc". Da li je Pokušam, recimo "%[^\n]". Ne radi. Onda iza zagrade dodam \n. To zato što se, po teoriji, karakteri van format stringa preskaču. Tako se izbegava fgetc. Opet ne radi. Zašto? Ne znam. Onda ipak string pre snimanja sredim sa while (*s!=0) {if (*s==32) *s='_';}. Gledao sam po dokumenta- ciji, ali brate deo uputstva za scanf ima 7-8 strana, pa sam batalio. Bilo mi je bitno da ne moram da kombinujem fscanf i fgetc, jer na taj način ceo slog baze pokupim sa jednim fscanf, nekoliko redova dugačkim.
unknown.329 zonjic, -> #325, igor.mil
> Interesuje me šta se dešava sa samim "newline" karakterom. Bilo bi Ostaje u stdin-u i treba uraditi jedno fflush(stdin); da bi ga odbaciJo
unknown.330 dgrbic, -> #325, igor.mil
:: fscanf(file, "%[^\n]s", string); :: /* format: '%', left brace, caret, backslash, 'n', right brace */ :: :: učitava niz znakova *do* "newline" u niz "string", znači ceo red. :: :: Interesuje me šta se dešava sa samim "newline" karakterom. Bilo bi :: logično da on ostane nepročitan (zapravo moralo bi biti tako, u :: duhu jezika), pa ga onda treba pojesti npr. pozivom "fgetc". Da li :: je uvek ovako? I šta se dešava kad se gornjoj naredbi poturi :: prazan red, tj, red koji sadrži samo "newline" karakter? Ja probao (MSC 6.0) i evo rezultata: Navedeni format zaista učitava CEO red (do newline). Zatim je potrebno pročitati newline sa fgets, nisam uspeo na drugi način (neko je pomenuo fflush, ali to ne radi). fscanf, čini se, nikako ne može da pročita newline?
unknown.331 rcojba,
Ima li neko od korisnika sezama BC++ 3.0 ako ima nek se javi !!!!! rcojba !
unknown.332 dusanp, -> #331, rcojba
=> Ima li neko od korisnika sezama BC++ 3.0 ako ima nek se => javi !!!!! Zvao sam juče. Za nove korisnike je cena $569, a za upgrade treba imati $229 !!! Ne misliš valjda na crnu kopiju, greh je jedan tako moćan paket imati bez doku- mentacije.
unknown.333 gvuckovic,
Molio bih neku dobru dusu(ako je ima ;) da mi posalje c0h.obj za TC 2.0 (nevidjoh da sam je obris'o), hitno mi je potrebno. Goran..
unknown.334 ndragan, -> #315, nandi
/ ps: kola neće da mi se upale. šta da raaaadim? Pređi na bicikl. Ne smeta mu ni ako u sred zime prenoći sa uključenim svetlima. Ujutro garant kreše - proverio sam stotinama puta.
unknown.335 dnikolic, -> #326, igor.mil
>> Onaj koji je isporucen uz Turbo C 2.01 ne radi kako treba. Koji bre Tc 2.01?!?!?!? Pa zar to postoja, a ja da nemam?? Kad je to izaslo i kakve su razlike u odnosu na 2.0? dn
unknown.336 stomic, -> #334, ndragan
$ / ps: kola neće da mi se upale. šta da raaaadim? $ $ Pređi na bicikl. Ne smeta mu ni ako u sred zime prenoći sa $ uključenim svetlima. Ujutro garant kreše - proverio sam $ stotinama puta. Kakve ovo ima veze sa C-om? Jel' to neka UNDOCUMENTED funkcija C-a? Pozdrav stomic ▀▀▀▀▀▀▀▀▀▀▀▀▀▀ P.S: Šalim se! OK?
unknown.338 ndragan, -> #325, igor.mil
/ /* format: '%', left brace, caret, backslash, 'n', right brace */ Mislio sam da se taj 'caret' zove u stvari 'circumflex', a da je 'caret' obrnut (onaj znak na slovu ž kao chetka). Btw, za ostale znake još i znam neke tipografske nazive (ampersend &, underscore _, asterisk *, ellipsis ...), ali kako se stručno zovu majmun i taraba? Bue_ NDragan
unknown.340 janko, -> #325, igor.mil
> Ovo se, koliko je meni poznato, rešava sa pomenutim > uglastim zagradama u formatu "fscanf" funkcije. Na > primer: > > fscanf(file, "%ŠžĐnĆ", string); > /* format: '%', left brace, caret, backslash, 'n', right > brace */ > > učitava niz znakova *do* "newline" u niz "string", znači > ceo red. Najlepše je to što upotreba srednjih zagrada _postoji_ u ANSI standardu (ali ja to nisam primetio). Dakle, portabilno je, i može da se preporuči za upotrebu! U zz-ovom programu se ne navode Đn-ovi, a program ipak čita konfiguraciju koja je u više redova. Kako to? Kada se navede veličina polja u formatu, koji je sledeći znak koji se dobija sa getchar?
unknown.341 duduk, -> #325, igor.mil
> Interesuje me sta se desava sa samim "newline" karakterom. Bilo bi > logicno da on ostane neprocitan (zapravo moralo bi biti tako, u duhu > jezika), ..... "\n" se NE ucitava, a problemi obicno nastanu kad treba da se ucita. Dakle, pod pretpostavkom da je linija ucitana sa formatom "%[^\n]", ako se izvrsi fscanf(...,"\n") predje preko nl-ova koliko ih ima jedan do drugog ( preskacu se prazne linije ), a zatim i PREKO VODECIH RAZMAKA u narednoj nepraznoj liniji?!?! Ako se pak izvrsi fscanf(...,"%*[\n]), gde zvezdica znaci da procitano ne treba nigde smestiti, prelazi se SAMO preko uzastopnih nl-ova!! Ovo drugo sam i ocekivao, jer prelazim preko niza od samih nl-ova, ali ono prvo mi i nije bas jasno. Uostalom evo primera, pa nek proba koga je volja: [=== CUT HERE =========================================================] #include <stdio.h> #include <conio.h> void main(int argc,char **argv) { FILE *f;char s[100]; clrscr(); f=fopen(argv[1],"r"); fscanf(f,"\n"); if (!feof(f)) fscanf(f,"%[^\n]",s); while(!feof(f)) { fscanf(f,"\n"); printf("s=%s;\n",s); fscanf(f,"%[^\n]",s); } fclose(f); getch(); f=fopen(argv[1],"r"); fscanf(f,"%*[\n]"); if (!feof(f)) fscanf(f,"%[^\n]",s); while(!feof(f)) { fscanf(f,"%*[\n]"); printf("s=%s;\n",s); fscanf(f,"%[^\n]",s); } fclose(f); } [=== CUT HERE =========================================================] Preskacu se prazne linije na pocetku, i bilo gde drugde, a i izbegavaju se pojave da se zadnja linija ispise dva puta ili ne procita/ispise uopste ako nije zavrsena nl-om. read.exe
unknown.342 duduk, -> #338, ndragan
> ali kako se strucno zovu majmun i taraba? @ = business a # = hash
unknown.343 ljubao, -> #340, janko
>>U zz-ovom programu se ne navode Đn-ovi, a program ipak čita >>konfiguraciju koja je u više redova. Kako to? Verovatno ima na kraju format stringa (ili na početku sledećeg) jedan 'space' kojim se preskaču svi sledeći razmaci, 'tabovi', CR-ovi itd. Ljuba
unknown.344 vbole, -> #338, ndragan
> Mislio sam da se taj 'caret' zove u stvari 'circumflex', a da je 'caret' > obrnut (onaj znak na slovu C kao chetka). Btw, za ostale znake jos i > znam neke tipografske nazive (ampersend &, underscore _, asterisk *, > ellipsis ...), ali kako se strucno zovu majmun i taraba? @ = majmun = At (Sign) # = taraba = Pound (Sign) $ = dolar = Dollar (Sign) ^ = stepen(?) = Caret - = minus = Hyphen . = tacka = Period / = kosa crta = Slash : = dvotacka = Colon ; = tac-zarez = Semicolon ( = zagrada = Paranthesis (Left, Right) [ = u.zagrada = Bracket (Left, Right) { = v.zagrada = Brace (Left, Right) Glupo mi je vise da kucam, em' vidim sve nasa slova umesto zagrada i majmuna, em' verovatno i znas - ajd' cao.
unknown.345 ilazarevic, -> #344, vbole
█ # = taraba = Pound (Sign) Pound? Engleska funta? Ako je to, znak je ono L :)) █ ž = stepen(?) = Caret Ovo se u francuskom zove circumflex (nepravilno napisano)
unknown.346 ndragan, -> #336, stomic
/ P.S: Šalim se! OK? Nije bilo jasno? Pa, veza je u sledećem: za istu godinu sam planirao da naučim C i da rasturam menjač na biciklu. Te dve stvari imaju podjednako mutnu sintaksu. Koja je to godina? Nemam pojma, počinje sa 2.
unknown.347 dejanr, -> #345, ilazarevic
>> Pound? Engleska funta? Ako je to, znak je ono L :)) Jeste, ako postoji u setu znakova.Ako ne postoji, koristi se #
unknown.348 mjova,
vrlo zanimljivo, imam 'wildargs.obj', ali nemam uputstvo :) može li neko da mi da par smernica, u kratkim crtama, kako da to probam, ili ću morati sam da napišem obradu ludih ;) argumenata.. SY
unknown.349 mjova, -> #340, janko
> U zz-ovom programu se ne navode Đn-ovi, a program ipak > čita konfiguraciju koja je u više redova. Kako to? kad učitavam tekst iz neke datoteke to datim npr ovako: fscanf(input_file, "%160[ - ]", &input_line); e, sad, možda postoje i druga rešenja, ali meni ovakvo odgovara i radi. u [] se nalazi kod 32, '-' i kod 255. broj 160 je dužina reda koji učitavam. konkretno mi je tako trebalo, ali ako se izostavi onda se čita ceo red tj do pojave nekog od znakova koji nisu u skupu od 32 do 255. sasvim je logično učitavati red po red i svaki posebno skanirati i upoređivati zadate reči u cfg datoteci sa nekom tabelom u kojoj su opisane same reči i aktivnosti koje treba preduzeti radi njihove obrade. ako pri skaniranju umesto značajnog znaka (slova) prg naiđe na '\n' vrati se nazad u petlju i nastavi sa čitanjem (tj čitaj novi red). ako neke reči nema u onoj tabeli prijavi grešku itd. treba se odlučiti o tome da li se koriste kodovi ispod 32, koji su vrlo nezgodni za upotrebu u datotekama koje se edituju običnim editorom. SY
unknown.350 ppekovic, -> #348, mjova
>> vrlo zanimljivo, imam 'wildargs.obj', ali nemam uputstvo :) >> može li neko da mi da par smernica, u kratkim crtama, kako da to >> probam, ili ću morati sam da napišem obradu ludih ;) argumenata.. Nemaš potrebe da se trudiš mjovo. U onoj novoj arhivi (stigla pre neki dan) gde ima gomila C source-ova, imaš i jedan u kome je rešen rad sa * i ?. Paya
unknown.351 obren, -> #348, mjova
> vrlo zanimljivo, imam 'wildargs.obj', ali nemam uputstvo :) > može li neko da mi da par smernica, u kratkim crtama, kako da to > probam, ili ću morati sam da napišem obradu ludih ;) argumenata.. Ubaciš u project osim tvojih modula i WILDARGS.OBJ pa onda lepo prevedeš. Posle kada startuješ program sa recimo: WILD *.EXE on ti ubaci u listu argumenata umesto '*.EXE', imena fajlova koji zadovoljavaju tu masku. Posle ih samo skidaš sa argvŠ1Ć, argvŠ2Ć, ...
unknown.352 ndragan, -> #344, vbole
/ em' verovatno i znas - ajd' cao. Ostalo jesam znao, a i ovo me razočaralo. Očekivao sam da će i za ona dva odnekud isplivati latinski nazivi. Et sajn - ne zvuči baš jasno kad nekom treba da diktiraš preko telefona. Uostalom, za diktiranje preko telefona idu druge tehnike "kucaš onda chkdsk... c kao cetinje, h kao hrkanje, ne ne, hrkanje, k kao kanta, pa onda dsk kao daska bez a... bez razmaka, jel imaš šes slova dosad, dobro, pa sad razmak, pa kroz, imaš ga tamo desno iznad sedmice, jedte kosa crta, i f kao furuna, bez razmaka, i enter jel te pita nešto za jes no? ne? ajd izdiktiraj šta si napisala.." i tako do besvesti. Bue_ NDragan
unknown.353 igor.mil, -> #335, dnikolic
> Koji bre Tc 2.01?!?!?!? Pa zar to postoja, a ja da nemam?? Kad je to > izaslo i kakve su razlike u odnosu na 2.0? Ne znam brate, to je prvi i jedini Turbo C koji imam.
unknown.354 janko, -> #352, ndragan
> ga tamo desno iznad sedmice, jedte kosa crta, i f kao > furuna, bez razmaka, i enter jel te pita nešto za jes no? > ne? ajd izdiktiraj šta si napisala.." i tako do besvesti. Pa zatim, dobro si napisala, ali šta još vidiš na ekranu? I onda provališ da je sve to kucala tamo gde ne treba -- nije ni ušla u Dos (ako si diktirao 'Chkdsk') Da, da. :)
unknown.355 dzoran,
rz B00000000000000 Zdravo! Imam jedan problem. Neznam da li spada u ovu temu konferencije ali nista slicno nisam video. Uprilici sam da doradjujem jedan fortranski program iz domena kvantne fizike. Dosta memorijskog prostora se potrosi na razne matrice. Program je duzine oko 40 KB i kompajlira se sa MS Fortranom u large modu, tom prilikom se poveca na oko 450 KB. Za neke graficke rutine sam napravio shell u MSC600. Sa obicnim linkanjem sa LINK /NOE program je dugacak oko 550 KB. Funkcije u MSC koriste pointere i jedan bafer za skrolovanje grafickog dela ekrana. Opcija /P u LINK /NOP /P ....; smanji program na oko 110 KB ali program tada ne mogu startovati. Zanima me ima da li neko ima informaciju da li mogu da module kompajliram u small ili medium modu radi manjeg gutanja memorije,da bih izbegao koriscenje overleja i pripadajuce opcije za compajliranje i linkanje. Pozeljan je kratak primer iz definicionog dela fortrana i C-a. Unapred zahvalan Zoran
unknown.356 ppekovic,
Jel postoji neki lakši način od pisanja potpuno nove funkcije za editovanje stringa. Tj. hoću nešto kao gets() ili scanf("%s",...) ali da mi dozvoli ispravljanje prethodne vrednosti stringa. Paya
unknown.357 mjova, -> #356, ppekovic
> š > asm š ako već simuliraš YUSCII ;), onda je { == Š, a ne š (== [). drugo, problem ćeš rešiti ovako (dok neko ne da bolje rešenje): ili void main() { │ void main() { asm { │ asm cmp ax, ax cmp ax, ax │ asm je labela je labela │ labela: } │ asm nop labela: │ } asm { │ nop │ } │ } │ takođe da ti skrenem pažnju da bi trebalo da paziš na registre (BP, SP), jer to nije uradio kompajler. SY
unknown.358 obren, -> #357, mjova
> drugo, problem ćeš rešiti ovako (dok neko ne da bolje rešenje): Hvala! žesto sam koristio asm u programima ali još ni jednom mi nisu trebali skokovi, tako da nisam ni primetio da zeza sa labelama. Rešenje lepo radi, što sam i probao, ali mi nekako izgleda neprirodno što moram da prekidam blok da bih napisao labelu, pa zatim ponovo da nastavim... a uz to rekao sam čoveku (malte ne sam se opkladio) da je moguće koristiti labele ali sigurno na neki specifičan način, jer ne verujem da je Borland dopustio sebi neku takvu nedoslednost. BTW, meni je u SOR-u po broju tvoja poruka odgovor na MOJE pitanje mada vidim da si ti odgovorio ppekovic-u. Ne znam šta je to pisalo u njegovoj poruci ali u svakom slučaju hvala svima. Verovatno je došlo do zbrke zbog onog novog diska, koji je "pojeo" neke poruke.
unknown.359 obren, -> #356, ppekovic
> Jel postoji neki lakši način od pisanja potpuno nove funkcije za > editovanje stringa. Tj. hoću nešto kao gets() ili scanf("%s",...) > ali da mi dozvoli ispravljanje prethodne vrednosti stringa. > > Paya Jel bi neko mogao da ponovi odgovor na ovo pitanje? Nema ga kod mene u SOR-u, a interesuje me. Ispod poruke piše "Reply(s) in: 357". Na žalost tu poruku nisam dobio u PAD-u. Verovatno je završila na novom disku. P.S. Može i na mail.
unknown.360 skoprivica, -> #357, mjova
>-> ako vec simuliras YUSCII ;), onda je { == S, a ne s (== [). Nije, ali nije vazno...S je na [, a s je na {...
unknown.361 mjova, -> #358, obren
> BTW, meni je u SOR-u po broju tvoja poruka odgovor na MOJE > pitanje mada vidim da si ti odgovorio ppekovic-u. Ne znam ma neka frka je bila oko onog novog diska, inače sam tebi odgovorio a ne paji, njemu samo jedna devojčica sme da odgovori ;) SY
unknown.362 dnikolic,
Jel skidao ovde neko onaj CBASE sa Sezama, i kakva su iskustva sa njim. Mislim na pouzdanost, brzinu i slicno. dn P.S. Bulajo, ti rece da imas nesto slicno. Kako to radi, opet u poredjenju sa Clipperom?
unknown.363 max.headroom,
Evo jedne male rekurzivne f-je, ali stvar radi dosta šašavo :) Slučajno sam naišao na ovo kada sam kopao po "C-Tutor"u, pa rek'o da vidim ima li ko ideju šta se ovde zaista događa. Ja sam došao do zanimljivog rešenja, pretpostavljam da je tačno. (Pažnja, stvar ne radi ono što bi rekli na prvi pogled! ;) main() š int index=8; odbrojav (index); ć odbrojav (broj) int broj; š broj--; printf ("Vrednost broja je %dĐn",broj); if (count > 0) odbrojav (broj); printf ("Sada je broj = %dĐn",broj); ć
unknown.364 ppekovic, -> #363, max.headroom
>> main() >> š >> int index=8; >> >> odbrojav (index); >>ć >> >> odbrojav (broj) >> int broj; >> š >> broj--; >> printf ("Vrednost broja je %dĐn",broj); >> >> if (count > 0) >> odbrojav (broj); >> >> printf ("Sada je broj = %dĐn",broj); >>ć Pa prvo, kompajler će prijaviti grešku pri kompajliranju jer promenljiva count uopšte nije definisana, a i da jeste, program bi bio besmislen, tj. ili bi se odbrojav izvršilo jednom ili onoliko koliko bi veličina steka dozvolila. A ako staviš broj umesto count, onda program radi upravo ono što na prvi pogled izgleda da radi. Paya
unknown.366 nimi,
pocetniku u TSR programiranju potrebna informacija o interrupt handler-u. M.D.Nikolic
unknown.367 obren, -> #366, nimi
> pocetniku u TSR programiranju potrebna informacija o interrupt > handler-u. Pretpostavljam da te interesuje kako da preuzmeš neki interapt. To imaš u help-u pa nema potrebe da ti pišem primer. Pogledaj example za funkciju keep. Inače, pošto si početnik u toj oblasti, savetujem ti da za početak nabaviš neku dobru knjigu. Teško da ćeš naučiti nešto više od osnova gledajući helpove ili hakerišući. Pozdrav, Dragan
unknown.368 mjova,
treba li pratiti int 9 u cilju detekcije ctrl-break-a ili se može nekako preusmeriti (promeniti default) rutina za obradu break stanja? SY
unknown.369 dzakic, -> #368, mjova
>> treba li pratiti int 9 u cilju detekcije ctrl-break-a ili se može >> nekako preusmeriti (promeniti default) rutina za obradu break >> stanja? INT 23h Break address. Zar nije to što ti treba?
unknown.370 max.headroom, -> #364, ppekovic
> A ako staviš broj umesto count, onda program radi upravo Sorry, u pravu si za zamenu "count" u "broj". Ali, rezultat je i dalje: 7 6 5 4 3 2 1 0 1 2 3 4 5 6 7 Zanimljivo, ha? :)
unknown.371 mjova, -> #369, dzakic
> INT 23h Break address. Zar nije to što ti treba? ne znam, ali moraću da probam. isključivanje nije problem, ali neki put reba napraviti lep prekid, a ne kao default što odštampa ^C. ružno deluje ako se neki proces prekine i onda se pojavi takvo nešto na ekranu. SY
unknown.372 ppekovic, -> #367, obren
>> Pretpostavljam da te interesuje kako da preuzmeš neki interapt. To >> imaš u help-u pa nema potrebe da ti pišem primer. Pogledaj example za >> funkciju keep. Inače, pošto si početnik u toj oblasti, savetujem ti >> da za početak nabaviš neku dobru knjigu. Teško da ćeš naučiti nešto >> više od osnova gledajući helpove ili hakerišući. Ima i zanimljiv tekst ZZivotic-a u jednom od prošlogodišnjih brojeva Računara. Takođe, na sezamu u RSOFT dir-u ima i primer iz tog teksta. Paya
unknown.373 prvul, -> #370, max.headroom
ŮSorry, u pravu si za zamenu "count" u "broj". Ali, rezultat je i Ůdalje: Ů▄▄ A šta si ti očekivao? Pa "izvlačenje" iz rekurzije ide po LIFO šemi... Prvul
unknown.374 max.headroom,
Help! Hoću da napišem program koji će da otvori ASCII fajl i da podatke koje pročita iz njega ispiše na ekran (ili prebaci u neki niz, još bolje), ali u BINARNOM obliku. Na primer, ako u ASCII fajlu piše: TRA LA LA On treba da mi ubaci u niz: 01100100011100100000101010010101010 (na primer) čelim da ostavim i space-ove, tj. sve kako jeste. Problem mi je što ne znam kako da pravilno otvorim datoteku za binarno čitanje, a i kada je tako otvorim - kako da sadržaj tog dela memorije (gde je ubačen sadržaj fajla) prebacim, npr., u niz, a sve to u Binarnom obliku.
unknown.375 obren, -> #372, ppekovic
> Ima i zanimljiv tekst ZZivotic-a u jednom od prošlogodišnjih > brojeva Računara. Takođe, na sezamu u RSOFT dir-u ima i primer iz > tog teksta. Da, zaboravio sam na taj tekst. Odličan je ali ne bih rekao da je namenjen totalnim početnicima. Sem toga ne verujem da čovek koristi Microsoft C.
unknown.376 obren, -> #371, mjova
> ne znam, ali moraću da probam. isključivanje nije problem, ali neki > put reba napraviti lep prekid, a ne kao default što odštampa ^C. > ružno deluje ako se neki proces prekine i onda se pojavi takvo nešto > na ekranu. Ako koristiš Turbo C/C++ imaš funkciju ctrlbrk koja radi upravo ono što ti treba. Imaš i primer u helpu.
unknown.377 dusanp, -> #374, max.headroom
=> Hoću da napišem program koji će da otvori ASCII => fajl i da podatke koje pročita iz njega ispiše na => ekran (ili prebaci u neki niz, još bolje), ali u BINARNOM => obliku. ************************************************************ #include <stdio.h> FILE *file; void translate (int ch) { if (ch & 128) {putch ('1');} else putch('0'); if (ch & 64) {putch ('1');} else putch('0'); if (ch & 32) {putch ('1');} else putch('0'); if (ch & 16) {putch ('1');} else putch('0'); if (ch & 8) {putch ('1');} else putch('0'); if (ch & 4) {putch ('1');} else putch('0'); if (ch & 2) {putch ('1');} else putch('0'); if (ch & 1) {putch ('1');} else putch('0'); } void main (int argc,char *argv[]) { long filelen,counter; int ch; if ((file=fopen(argv[argc-1],"r+"))==0) { perror (argv[argc-1]); exit (1); } fseek (file,0L,SEEK_END); filelen=ftell(file); fseek (file,0L,SEEK_SET); for (counter=1;counter<=filelen;counter++) { ch=fgetc(file); printf ("\nChar #%ld = %i = ",counter,ch); translate(ch); } fclose (file); } ************************************************************ Mislim da ces lako da se snadjes...
unknown.378 max.headroom, -> #373, prvul
> A šta si ti očekivao? Pa "izvlačenje" iz rekurzije ide po > LIFO šemi... Ok, interesuje me gde se smešta ona promenljiva "broj" za svaki "nivo" rekurzije, jer se očigledno svaki put, kako se program vraća iz rekurzije, on povećava za jedan (ona stara vrednost sa tog "nivoa" je negde smeštena, ali gde?) Kako kompajler zna sa kog je nivoa npr. "broj=4" i kako ne pomeša promenljivu sa vrednostima sa drugih nivoa?
unknown.379 prvul, -> #378, max.headroom
Ů> A šta si ti očekivao? Pa "izvlačenje" iz rekurzije ide po Ů> LIFO šemi... Ů ŮOk, interesuje me gde se smešta ona promenljiva "broj" za svaki Ů"nivo" rekurzije, jer se očigledno svaki put, kako se programŮ▄▄▄ Na steku (u stvari, čim je LIFO u pitanju, mora da je tu negde i stek). Sada, postoji više šema pokojima se to može stvarno realizovati, ali jedan od najčešćih je sledeći: na steku se pri pozivu procedure ostavlja mesta za lokalne promenljive (osim ako su klase static). I onda, kada se upadne u drugi nivo rekurzije, na steku se opet alocira mesto za lokalne promenljive tako da funkcija više ne "vidi" lokalnu promenljivu iz prethodnog nivoa... kada se vrati iz unutrašnjeg nivoa rekurzije, oslobađa se to mesto na steku i time ponovo "otkriva" promenljive iz prethodnog nivoa... Prvul
unknown.380 mjova, -> #376, obren
> Ako koristiš Turbo C/C++ imaš funkciju ctrlbrk koja radi > upravo ono što ti treba. Imaš i primer u helpu. da, da, koristim, ali ni sa ovim ne mogu da sredim lako problem. ovim mogu da sredim problem delimično. ipak ću morati da isključim ctrl-break. u onoj gomili C programčića (sa sezama SNAP ili tako nekako) našao sam kako može da se presretne break. naravno da sam morao to malo da izmenim, ali ko zna da li i to valja. meni se komp par puta blokirao, možda je razlog u tome što su silni TSR-ovi u memoriji. (mada me ne zanima me da li je do njih, jer mi oni više znače. ;) deo koda je ovakav (ovuda prolazi samo ako je pritisnut ctrl): b= inp(0x61); outp(0x61, b | 0x80); // disable keyboard outp(0x61, b); // enable keyboard outp(0x20, 0x20); ???????? 0x20 je intr kontroler, ali u HelpPC-u sam našao da na taj port ne ide više od 0x1f ima li neko podatak šta se ovde dešava? SY
unknown.381 dgrbic, -> #380, mjova
:: outp(0x20, 0x20); :: :: ???????? 0x20 je intr kontroler, ali u HelpPC-u sam našao da na taj :: port ne ide više od 0x1f ima li neko podatak šta se ovde dešava? Interapt kontroler se resetuje da bi mogao da generiše naredni interapt. Ako ovo ne staviš, zaludeće se tastatura, sat i sve ostalo što pokuša da prekine procesor.
unknown.382 ppekovic, -> #378, max.headroom
>> Ok, interesuje me gde se smešta ona promenljiva "broj" za svaki >> "nivo" rekurzije, jer se očigledno svaki put, kako se program >> vraća iz rekurzije, on povećava za jedan (ona stara vrednost sa >> tog "nivoa" je negde smeštena, ali gde?) Kako kompajler zna sa >> kog je nivoa npr. "broj=4" i kako ne pomeša promenljivu sa >> vrednostima sa drugih nivoa? žuva se na stack-u. Paya
unknown.383 obren, -> #380, mjova
> da, da, koristim, ali ni sa ovim ne mogu da sredim lako problem. > ovim mogu da sredim problem delimično. ipak ću morati da isključim > ctrl-break. Napiši šta TAžNO želiš da se dogodi kada pritisneš CTRL-BREAK - možda mogu da ti pomognem. Ne znam jel ti hoćeš da se tog trenutka izađe u dos uz neku lepu poruku ili želiš da se onda izvrši neka funkcija pa da se nastavi rad programa? Ili je možda nešto treće? Pozdrav, Dragan
unknown.384 mjova, -> #383, obren
> Napiši šta TAžNO želiš da se dogodi kada pritisneš > CTRL-BREAK - možda ovo što ću sad da opišem rešio sam preuzimanjem int 9, ali to mi se ne dopada iz drugih razloga. u nekim slučajevima želim da onemogućim break, tako da se prekid ostvari kad ja hoću (ako treba), a ne u svakom slučaju. dobro, bolje je uvek zabraniti break nego ružan prekid u nezgodnom trenutku. ctrlbrk() je fina funkcija, ali proces se ipak prekida. evo glupe situacije. ne želiš da prekineš proces i daš da rutina za obradu prekida ima samo return(TRUE); probaš da prekineš i primetiš ^C na ekranu ;). ako štampaš nešto na ekran, onda će se štampanje prekinuti, ispisati ^C, pozvati rutina za obradu break-a i nastaviti program, ali ne tamo gde je prekinut! nego od sledeće linije koda. ovo je glup način za kontrolu break-a i zato sam od ovoga odustao. preuzimanje int 9 rešava ovaj problem u potpunosti ali mora velika pažnja da se obrati na oslobađanje istog pri izlasku. zsa ovo je zgodno koristiti konstruktor i destruktor. SY
unknown.385 radunovic, -> #384, mjova
Jesi li probao funkcije signal() i raise()?
unknown.386 mjova, -> #385, radunovic
> Jesi li probao funkcije signal() i raise()? nisam, probaću, ali iz čiste radoznalosti ;) jer sam problem rešio na drugi način koji mi se u potpunosti dopada. hvala na novoj ideji. nešto se sad setih, ako pozoveš neki program kao child process, onda se verovatno ne prenosi 'signal' pa to može da ima loše strane. SY
unknown.387 ljubao,
Oj, imam TC++ 1.0 i juče sam hteo da poludim. Naime, program je čitao iz datoteke stringove napisane kao 'tekst'\n, a u programu je bilo fscanf(fp,"'%(^')' ",ptr); (male zagrade u format stringu su naravno srednje). Program lepo pročita prvi string i onda nikako nije hteo LF. Probao sam i \n i lupao svakakve gluposti i ništa. Na kraju sam morao da sa dva fgetc pređem na sledeći string. Takođe, nije čitao drugi string kada su bili u istom redu razdvojeni blankovima. Sada, zašto ovo ne radi (bag ili šta je već razlog), jer na Atariju ovako čitanje je u redu, a i koliko ja znam, onaj blanko na kraju format stringa treba da preskoči sve blankove, tabove i ostala čuda. I na kraju, da li mogu (ako da, kako) da kažem linkeru koje biblioteke da mi linkuje ili to C radi sam, tj. ako postoji funkcija iz neke LIB u programu automatski je linkuje. Ljuba
unknown.388 mjova, -> #387, ljubao
> Program lepo pročita prvi string i onda nikako nije hteo > LF. Probao sam i \n i lupao svakakve gluposti i ništa. Na > kraju sam morao da sa dva za rad sa tekstovima imam neke rutine koje služe za uzimanje cele linije, znaka, broja itd. ono što tebi treba je sledeća fn. obično datoteke koje su ul/izl baferišem pre toga, radi brzine. a liniju uvek učitam u buffer (ceo red) i ako nisu baferisane onda se ovim dovoljno lepo radi.. char input_line[81]; //-------------------------------------------- get_ch // uzimanje tekućeg karaktera, // ako je kraj onda vraca CR (ako naiđe na \0 onda LF) char get_ch(void){ if(!input_line[ch_add]) return(LF); return(input_line[ch_add]); } //-------------------------------------------- get_nx // uzima PRVI sledeci char // vraca char, LF ako je kraj reda i CR ako je kraj fajla // ovo možeš u c++ da razdvojiš na dve fn (overload) char get_nx(int n){ // default n= 1 if(!n) return(get_ch()); while(n) { n--; ch_add++; if(strlen(input_line) < ch_add) get_nl(); } return(get_ch()); } //-------------------------------------------- get_nl // uzima ceo red i enter char *get_nl(void){ fscanf(text, "%[^\n]", input_line); // do entera fgetc(text); // i enter ch_add= 0; if(feof(text)) { input_line[0]= CR, '\0'; return(input_line); } line_add++; return(input_line); } SY
unknown.389 ljubao, -> #388, mjova
Mogao sam i ja da izvodim takve egzibicije, ali nije to to. Osim toga, pored stringova tu će se naći i neki brojevi, tako da ovo nema šanse. Najverovatnije ću na kraju da stavim da mi se blankovi i ostalo smeštaju u neki dummy string. I dalje me zanima, zašto TC kada naiđe u format stringu na space, ne preskače tabove i ostala čuda ? Ljuba
unknown.390 nandi, -> #387, ljubao
­> Sada, zašto ovo ne radi (bag ili šta je već razlog), jer na Atariju ­> ovako čitanje je u redu, a i koliko ja znam, onaj blanko na kraju format ­> stringa treba da preskoči sve blankove, tabove i ostala čuda. tc na atariju nije kompatibilan sa ovim tc na pc. napr: neki životićevi trivijalni primeri iz računara (baš nešto u vezi učitavanja stringova) na atariju nisu radili korektno. ­> I na kraju, da li mogu (ako da, kako) da kažem linkeru koje ­> biblioteke da mi linkuje ili to C radi sam, tj. ako postoji funkcija ­> iz neke LIB u programu automatski je linkuje. otvoriš projekt, i samo navedeš biblioteku koju koristiš. ovo je potrebno samo ako koristiš neke lib-ove sa strane (mislim da se kod atarija trebala navoditi svaka biblioteka, ovde samo one koje ne idu uz paket tc). nandi
unknown.392 ppekovic, -> #389, ljubao
>> I dalje me zanima, zasto TC kada nai|e u format stringu na space, ne >> preskace tabove i ostala cuda ? ? Pa zar nije tako logicno. Space je space a tab je tab. Ako bi sve radilo po tvojoj ideji, onda bi nastao problem prvi put kada bi ti bilo vazno sta je space a sta je tab. A kad smo vec kod formata u scanf-u, mene je bas ovih dana namucio sledeci problem. Trebao mi je jedan programcic koji bi analizirao fajl sa pristiglim mail-ovima (na XENIX-u). Poruka se sastoji iz header-a i tela poruke s tim, da bi se razlikovalo sta je sta, ova dva dela su odvojena praznim redom, iliti jednim newline-om. Tj. ne{to ovako: Heder_red1\n heder_red2\n \n telo_red1\n telo_red2\n Ako sa sledecim programom krenem da citam fajl: while(!feof(mail)) { fscanf(mail,"%[^\n]",str_red); printf("%d %s\n",++line,str_red); } program ce pronaci 4 linije, tj. zanemarice onaj prazan red. Ako u formatu dodam \n na kraju reda, ostaje sve isto. Ostalo mi je jedino, da posle scanf, uradim: ch1=fgetc(mail); ch2=fgetc(mail); ungetc(ch,mail); ungetc(ch,mail); pa da ispitujem da li je ch2=='\n' Jel ima neko neko pametnije resenje? Paya
unknown.393 ljubao, -> #390, nandi
** otvoriš projekt, i samo navedeš biblioteku koju koristiš. ovo je ** potrebno samo ako koristiš neke lib-ove sa strane (mislim da se kod ** atarija trebala navoditi svaka biblioteka, ovde samo one koje ne idu ** uz paket tc). Na Atariju sam mogao ručno da biram koje će sistemske biblioteke da se linkuju. A što se tiče PC-ja, znači on sam linkuje potrebne sys biblioteke. Ljuba
unknown.394 ljubao, -> #392, ppekovic
** ? Pa zar nije tako logicno. Space je space a tab je tab. Ako bi ** sve radilo po tvojoj ideji, onda bi nastao problem prvi put kada bi ti ** bilo vazno sta je space a sta je tab. Ma može da bude kako hoćeš, samo da on preskače npr. sve blankove kada mu stavim blanko u format string. ** Ostalo mi je jedino, da posle scanf, uradim: ** ** ch1=fgetc(mail); ** ch2=fgetc(mail); Zbog toga sam ja i kukao između ostalog. Neće nikako da pročita new line, već moram to da uradim 'ručno' (kao ti). Ljuba
unknown.395 ljubao,
Kakav je ono fajl u info direktorijumu ? Običan help ili nešto drugo i da li vredi da ga DL ? Ljuba
unknown.396 mjova, -> #389, ljubao
> Mogao sam i ja da izvodim takve egzibicije, ali nije to > to. Osim toga, pored stringova tu će se naći i neki > brojevi, tako da ovo nema šanse. u prinpicu ;) standardne funkcije mi služe samo za proveru algoritma. ono što sam ti dao je deo rutina koje uključujem ako je potrebno da pročitam bilo kakav tekst. volim da program javi tačno mesto greške, a to je moguće samo (meni je bar lakše) posebnim rutinama. veoma retko se smisao prenosi u sledeći redi ili još gore da se smisao protumači posle drugog reda, a da se onda mora čitati prvi radi skupljanja potrebnih podataka. ono što htedoh reći, treba imati neke fn() koje će čitati tekući znak, sledeći, sledeću reč, broj, niz do znaka itd. nema toga puno, a kasnije olakšava posao. SY
unknown.397 bulaja, -> #395, ljubao
│Kakav je ono fajl u info direktorijumu ? Obican help ili nesto drugo │i da li vredi da ga DL ? └─── Koji file? BCHelp? Vredi.
unknown.398 ppekovic, -> #394, ljubao
>> Ma moze da bude kako hoces, samo da on preskace npr. sve blankove >> kada mu stavim blanko u format string. Pa to i radi ;) Npr. ako stavis sscanf(str1," %s",str2); a str1=" bla_bla", str2 ce biti = "bla_bla". Dakle, ovo radi, medjutim, ti si prvo pitao zasto kad se stavi blanko ne preskace i tab-ove. Ovo je vec logicno sto ne radi. >> Zbog toga sam ja i kukao izmedju ostalog. Nece nikako da procita new >> line, vec moram to da uradim 'rucno' (kao ti). file: R E D _ 1 \n R E D _ 2 \n \n R E D _ 3 \n Ako das: fscanf(file,"%[^\n]",str1); u str1 ce biti "RED_1" a filepointer ce pokazivati na newline na kraju prvog reda. Biser je sto ako zadam opet isti fscanf, on procita i drugi red, iako mu u formatu nigde nisam dao da cita onaj new_line. Ako pa zadas fscanf(file,"%[^\n]\n",str1); u str1 ce opet biti "RED_1", ali }e fp pokazivati na pocetak red_2. Ako opet ponovis istu komandu, str1="RED_2", a fp->RED_3. Znaci fscanf cita! new_line, al ga ne pamti nigde ;(((( dgrbic i mjova su mi rekli da postoje izvesne razlike izmedju MSC- a i TC-a. Ovo sto sam ja naveo vazi za C na Xenix-u. Paya
unknown.399 nesavic,
Ako li ko ima neki lepi modul sa prozorima na Cu, neka mi posalje... Unapred zahvalan, NeŠa!
unknown.400 janko, -> #388, mjova
> //-------------------------------------------- get_nl > // uzima ceo red i enter :( Ja nikad ne bih koristio takvu rutinu, kakvu si ti predložio, u svom programu, iz prostog razloga što ova, i ekvivalentne koje koriste standardne rutine C-a 'nemaju meru.' Znači da će ti program SIGURNO poludeti ako mu poturiš dovoljno dugu liniju :) A već sam pisao da je i upotrebna vrednost gets f-je, u kojoj se navodi dužina linije, takođe diskutabilna, jer ta f-ja nekada pročita NL a nekad ne, kako joj se svidi, pa dolazi do nepredvidivog ponašanja kada su linije u tekstu duže nego parče što mi želimo da učitamo. Rešenje: lepo uzmeš pa napišeš gets_j, koja u petlji koristi smo getc naredbu, a ostalo radi sama. I ne može da se zbuni. I čita (i prepoznaje) i one linije koje su prazne. Itd. itd. Stvarno nije neka velika mudrost, to bi svaki C programer trebalo da može da uradi kao vežbicu, pre doručka. :) (A i uklapa u 6 linija koda, koje su dnevna produktivnost onih Microsoftovih programera, i u moju tvrdnju da je moja produktivnost jedna procedura/fja dnevno ;> ------Ovde iseci----- int fgets_j( char* s, int n, FILE* f ) ??< register char* p=s; register int c; if (feof(f)) ??< *p=0; return EOF; ??> for (c=fgetc(f); c!=EOF && c!='??/n'; c=fgetc(f)) if (p-s<n) *p++=c; *p=0; return p-s; ??> ------Ovde iseci------ Ko kaže da ne može i C i juski zajedno? :) Ne znam za MSC, ali za BC pre prevođenja ovu rutinu propustite kroz TRIGRAPH program. BACITE pogled i na prilično lep rezultat prevođenja ove rutine pomoću BC 2.0, u small modelu, koji je ipak gori od ljudskog. Uspeo je da samo jednom ima sekvencu poziva fgetc, i da van petlje stavi dodelu fajl pointera, ali.. Promenljiva c je mogla da se smesti u, naprimer, BX registar, bez problema, a nije umeo (iako je prevođen sa tom opcijom) da optimizuje korišćenje registara ni kada proverava EOF i NL, što je dosta čudno. Takođe, bilo bi bolje da se tako elemetarna funkcija kao fgetc realizuje inline, dakle, da nema overheda CALL sekvence, što bi bilo moguće, jer fgetc može biti kratka, sama po sebi. Zaključak: moglo bi još malo da se optimizuje, ali i ovako je, ipak, lepo. Neko je rekao da današnji C kompajleri daju bolji kod od 90% asemblerskih programera. Za BC, ipak, to još ne važi. Ako nekog ne mrzi, nek pusti ovu rutinu i kroz MSC 6.0, sa uključenim svim optimizacijama i small modelom pa da uporedimo koji je bolji. Isto važi i za korisnike BC 3.0, iako vrlo verovatno da nema razlike. (Priložen samo relevantan deo) ; register char* p=s; register int c; mov si,word ptr Šbp+4Ć ;jedan red, kao i Bog sto bi uradio :) ; if (feof( fp )) š *p=0; return EOF; ć test word ptr Šdi+2Ć,32 ; if feof(f) .. je short č1č74 mov byte ptr ŠsiĆ,0 ; *p=0 mov ax,65535 ; EOF jmp short č1č242 č1č74: jmp short č1č146 č1č98: ; for (c=fgetc(fp); c!=EOF && c!='Đn'; c=fgetc(fp)) if (p-s<n) *p++=c; mov ax,si ; if (p-s<n) sub ax,word ptr Šbp+4Ć ; p-s cmp ax,word ptr Šbp+6Ć ; <n ? jge short č1č146 mov al,byte ptr Šbp-2Ć ; al = c mov byte ptr ŠsiĆ,al ; *p = al inc si ; p++ č1č146: push di ; c=fgetc(f) call near ptr _fgetc ; primetite da je poziva samo na jednom inc sp ; mestu! inc sp ; mov word ptr Šbp-2Ć,ax ; if ( c!=EOF && c!=NL ) cmp word ptr Šbp-2Ć,65535 ; da je ovde AX, bio bi genije! je short č1č218 ; a ovako... cmp word ptr Šbp-2Ć,10 ; isto i ovde... jne short č1č98 č1č218: ; *p=0; return p-s; mov byte ptr ŠsiĆ,0 ; *p=0 mov ax,si ; p sub ax,word ptr Šbp+4Ć ; -s č1č242: ; ć
unknown.401 mjova, -> #400, janko
prvo ću da skratim tvoju fn u jedan red, a onda malo da se raspišem: - tvoja fn je samo osakaćena fscan: fscanf(f, "%n[^\n]", s); ┌───────┘ └── ovo je broj, treba staviti cifre (dužina buffer-a). > Ja nikad ne bih koristio takvu rutinu, kakvu si ti pa naravno, od tebe me to i ne čudi ;). kako si počeo poruku mislio sam da ću videti nešto novo... kad ono jok. već u prvoj liniji primetio sam nešto što mi je ukazalo na to šta mogu da očekujem posle ;). znak '*' se obično piše uz onu promenljivu koju treba da definiše. ako napišeš: char* s, p, t; onda možeš da previdiš činjenicu da 'p' i 't' nisu pointeri, a po pisanju tako deluje. unarni operatori se uvek pišu uz promenljivu, samo radi čitljivijeg koda. ti, naravno, piši kako voliš, ovo ti dajem mali savet. a sad što se tiče tvoje fn(). ono što mi se ne dopada to je brdo parametara koji su, po meni, mnogobrojni. one fn koje sam izložio ovde dovoljno su skraćene (jer nema potrebe da ih pišem u celosti samo da bih pokazao algoritam). pa mi je promakla jedna brojka: fscanf(text, "%80[^\n]", input_line); // do entera onaj broj (80) je u stvari broj kojim sam definisao maksimalnu dužinu bafera. a kasnije ima još nekoliko redova koji sređuju promenljive (line_add), uzimanje '\n', itd.. pri sledećem pozivu ove fn, učitava se nastavak reda. ako učita menje od 80 znakova (vraća broj pročitanih znakova) onda uzimam '\n', uvećavam line_add itd. glupo mi je da pozivam fn sa mnogo parametara. to mi se ni malo ne dopada. kad vidim sarmu u deklaraciji odma mi se smuči. zato i koristim c++ jer ima default vrednosti parametara, overload fn i još dosta toga. SY
unknown.402 wizard, -> #400, janko
>> Rešenje: lepo uzmeš pa napišeš gets_j (...) gets_j(anko)? :) <<Nenad<<
unknown.403 ljubao, -> #398, ppekovic
** Pa to i radi ;) Npr. ako stavis sscanf(str1," %s",str2); a ** str1=" bla_bla", str2 ce biti = "bla_bla". Dakle, ovo radi, ** medjutim, ti si prvo pitao zasto kad se stavi blanko ne preskace i ** tab-ove. Ovo je vec logicno sto ne radi. Radi na početku teksta i kod mene. Verovatno sam posle stringa imao i tabove pa nije radilo. U svakom slučaju, probaću večeras. A što se tiče LF-a, nikako nisam mogao da ga pročitam, mada nisam čitao sa "%[^\n]" (probaću još jednom ako budem imao vremena da se zezam). Ljuba
unknown.404 janko, -> #402, wizard
>>> Rešenje: lepo uzmeš pa napišeš gets_j (...) > > gets_j(anko)? :) Naravno. Kako bih razlikovao moju f-ju od bibliotečke? Slobodno je nazovi gets_n, ili bilo kako drugačije. :)
unknown.405 amilanov,
Jedna interesantna stvar mi se "slučajno" iz zaboravnosti dogodila. Sledeći "program" se bez problema kompajlira u svim Borlandovim C++ kompajlerima od 1.0 preko 2.0 do 3.0 : #include <dos.h> int main (void) š clrscr(); printf ("Hello, world /n"); getch(); return 0; ć Omaškom sam zaboravio da includujem conio.h, gde se nalazi deklaracija za clrscr(), ali sve je prošlo bez worningsa, a kamoli bilo kakvih errora. Primer je dat bez veze, ali gde god da zovnem clrscr() f-ciju, iz bilo kog programa, ovo ovako BEZ conio.h radi odlično. Gde mi je deklaracija za clrscr() ? Zar je moguće da negde postoji pointer na ovu funkciju, i bez deklaracije, što bi bilo krajnje začuđujuće, da ne kažem bezobrazno :)) ! Dali je clrscr() tolko specijalna f-cija, da joj ne treba deklaracija ? Dosad se nisam susreo sa nekim "vanzemaljskim" opisom ove funkcije, sem normalnog i klasičnog, šta radi, gde joj je deklaracija i sl. Dali postoji nešto što ja neznam, ili nisam saznao ? Razmišljanja ??? pozdrav milanov P.S. Izgleda šašavo, ali meni je EXE cod kraći ( a i radi ) ! :)))))) !
unknown.406 dusanp, -> #405, amilanov
=> deklaracija ? Dosad se nisam susreo sa nekim => "vanzemaljskim" opisom ove funkcije, sem normalnog i => klasičnog, šta radi, gde joj je deklaracija i sl. Dali => postoji nešto što ja neznam, ili nisam saznao ? => Razmišljanja ??? To se i meni dešava, i to sa puno f-ja (radi se o BC++ 2.0) To mi se toliko dopalo da sad programe pišem otprilike ovako: Napišem program bez include direktiva, pa ga iskompajliram. Ako ne prijavi greške, ok, a ako prijavi onda uradim još prljaviju stvar. Naime, u helpu postoji i kompletna deklaracija f-je, koju ja dopisem na početak programa. To radi 100%, a vreme kompajliranja je dosta smanjeno, jer se ne usporava nepo- trebnim funkcijama.
unknown.407 mjova, -> #405, amilanov
> Omaškom sam zaboravio da includujem conio.h, gde se nalazi > deklaracija za clrscr(), ali sve je prošlo bez worningsa, > a kamoli bilo kakvih errora. probao sam i ne radi tj. ne kompajlira do kraja. kuka da nisu deklarisane neke fn. mislim da bi ipak trebalo da vodiš računa o tome da uključiš sve potrebne *.h jer može doći do čudnih (sasvim logičnih) bagova. dovoljno je bar da upišeš kako izgleda sintaksa. ako ne upišeš to, onda se parametri mogu pogrešno tumačiti... SY
unknown.408 amilanov, -> #406, dusanp
>> To se i meni dešava, i to sa puno f-ja (radi se o BC++ >> 2.0) To mi se toliko dopalo da sad programe pišem >> otprilike ovako: Napišem program bez include direktiva, >> pa ga iskompajliram. Ako ne prijavi greške, ok, a ako Pa dobro bre ljudi, jer nas to Borland vuče za nos, ili ... :))) Sad umesto OOP, Borland lansira FOP ( Function Oriented Programing :)) ), uz koncepciju IIWIW ( If It Works It Works ) dodajući TBC ( Try Before Compile ) opciju :))) ! Interesantno, veoma interesantno. Šta kažu iskustva drugih o ovom "fenomenu" ?? Jasno je da je portabilnost ovakvog sourcea == 0 , ali ako radi sa puno funkcija, ćemu hederi i deklaracije pa i pointeri na te funkcije koji troše memoriju "bespotrebno". Ako je budućnost C jezika C+++ na bazi FWD ( Functions Without Declarations ) ja sam ZA :)))) ! Lakše je za pisanje, a i kod je kraći :))) ! Kako stoje stvari kod MS C ? Is this a bug or feature ?? pozdrav amilanov P.S. Sve korišćene skraćenice su Copyright amilanov :))))) !
unknown.409 amilanov, -> #407, mjova
>> probao sam i ne radi tj. ne kompajlira do kraja. kuka da >> nisu deklarisane neke fn. mislim da bi ipak trebalo da >> vodiš računa o tome da uključiš sve potrebne *.h jer može >> doći do čudnih (sasvim logičnih) bagova. dovoljno je bar >> da upišeš kako izgleda sintaksa. ako ne upišeš to, onda >> se parametri mogu pogrešno tumačiti... Ha, otkrio sam u ćemu je stvar, mada eto čovek se može i ovako opeći. U meniju OPTIONS/COMPILER/C++ OPTIONS, TREBA podesiti switcher kod opcije Use C++ Compiler na C++ Always. Do rešenja sam došo uz pomoć nandija, koji mi je ovo reko u private mailu, ali sam ja nešto zabrljao oko switchera, pa prvi put nije išlo. Znači stavite opciju USE C++ COMPILER na CPP EXTENSION pa uživajte u compilovanju "BEZ" hedera :)))) ! Usput, ova opcija je kod mene DEFAULT pri instalaciji. Baš stoga ostaje "gorak ukus" da C++ "propušta" stvari koje ne sme da radi, a na kraju sve to i radi :). Mogli su ( po meni ) da DEFAULT stave na C++ Always. Ustvari, kad bolje razmislim, oni to sve lepo opisuju u manualu !!!! Ah, da manual ... :))))))))))))))))))))) ! P.S. Jedno iskustvo više, nije na odmet. Naučili smo gde "curi", pa sad možemo i da "zatvorimo slavine" :))). P.P.S. U pravu si da može doći do čudnih, i sasvim logičkih bagova. To sam i bio tražio, prosto vapio da dobijem, ali ništa od toga. I posle kažu da su DEFAULT opcije (gotovo) idealno izabrane. SVAŠTA ! :))) ! pozdrav amilanov
unknown.410 janko, -> #405, amilanov
> programa, ovo ovako BEZ conio.h radi odlično. Gde mi je > deklaracija za clrscr() ? Zar je moguće da negde postoji > pointer na ovu funkciju, i bez deklaracije, što bi bilo > krajnje začuđujuće, da ne kažem bezobrazno :)) ! Dali je > clrscr() tolko specijalna f-cija, da joj ne treba > deklaracija ? Dosad se nisam susreo sa nekim > "vanzemaljskim" opisom ove funkcije, sem normalnog i > klasičnog, šta radi, gde joj je deklaracija i sl. Dali > postoji nešto što ja neznam, ili nisam saznao ? > Razmišljanja ??? Nema tu razmišljanja, 'nagazio' si na našto što bi moglo da se nazove 'opšta kultura C-a.' Ništa specijalno a kamoli vanzemaljski. Stari, K&R C je zamišljen kao jedan jako mali programski jezik, u kome se mnogo toga podrazumevalo. Konkeretno, nije bilo potrebno da funkcija deklariše, ako je vraćala int i ako su, koliko se sećam, parametri u pozivu svi int, ma koliko ih bilo. Problem je bio taj što tako kompajler nije mogao da proverava da li smo napisali ono što smo želeli, ili smo mislili jedno a napisali drugo, u pozivima f-ja. Na svu sreću, postojao je poseban program, koji je dosta toga umeo da otkrije. Da ne dužim, to što ti to uspeva je rudiment, jer ANSI je predvideo da prevodioci po ANSI standardu prevode programe starog stila. Da si pisao C++ program, (ekstenzija .cpp) prevodilac bi ti javio GREŠKU bez pardona, jer C++ prevodilac nije dužan da 'miluje' stare programe. Inače u .H datotekama se nekakvi pointeri na f-je NE deklarišu. Ako imaš nameru da ozbiljno pišeš (znači više od par stotina linija) na C-u, trebalo bi da dobro shvatiš i koncept .H datoteka. U onom programu ti fali i #include <stdio.h> (za printf) a #include <dos.h> ti je suvišno (druge dve f-je su iz conio.h). Bottom line: možeš tako da radiš, (što si i sam otkrio) ali to je, po današnjim merilima, 'hakerisanje.' Da bi ti sve bilo jasnije, preporučujem ti da proučavaš knjige 'The C Programming Language,' Brian W. Kernighan, Dennis M. Ritchie, first edition, a zatim i knjigu istog naslova, ali second edition. U 1st ed. je upravo 'definisan' (tj. predložen) ono što je posle nazvan "K&R C," a u 2nd ed. samo uključen ANSI C, koji je nastao mimo autora. Upravo u razlikama se kriju objašnjenja. Inače, bez poznavanja njih, ili nekih adekvatnih knjiga tog nivoa, teško da možeš da kažeš da znaš C.
unknown.411 amilanov, -> #410, janko
>> Nema tu razmišljanja, 'nagazio' si na našto što bi moglo >> da se nazove 'opšta kultura C-a.' Ništa specijalno a >> kamoli vanzemaljski. Ma, to o vanzemaljskim, sam namerno stavio u navodnike, više da "popalim strasti" (kako bi inače drugi probali isti primer ;)) ), nego da bilo šta prejudiciram. Šta je bilo posredi pojasnio sam u prethodnoj poruci, koju si pročitao ( valjda :) ). O 'opštoj kulturi C-a', ;)), ne bi sada, ovde. Pre bi se reklo da je u pitanju večna boljka, (ne)imanje manuala, u kome je sve lepo opisano, po pitanju switchera, zar ne. >> Stari, K&R C je zamišljen kao jedan jako mali programski >> jezik, u kome se mnogo toga podrazumevalo. Konkeretno, >> nije bilo potrebno da funkcija deklariše, ako je vraćala >> int i ako su, koliko se sećam, parametri u pozivu svi >> int, ma koliko ih bilo. >> Problem je bio taj što tako kompajler nije mogao da >> proverava da li smo napisali ono što smo želeli, ili smo >> mislili jedno a napisali drugo, u pozivima f-ja. Na svu >> sreću, postojao je poseban program, koji je dosta toga >> umeo da otkrije. Hvala, na digresiji ! Ovo nisam znao. Mlada sam ti ja "klasa" :)) ! >> Da ne dužim, to što ti to uspeva je rudiment, jer ANSI je >> predvideo da prevodioci po ANSI standardu prevode >> programe starog stila. Da si pisao C++ program, >> (ekstenzija .cpp) prevodilac bi ti javio GREŠKU bez >> pardona, jer C++ prevodilac nije dužan da 'miluje' stare >> programe. Pa to sam baš i u prethodnoj poruci kritikovao. Borland prodaje C++ kompajler, pa je logično da DEFAULT postavi C++ kompajliranje, tojest Use C++ Always. Kako ne volim previše ( bez uputstava ) da čačkam po switcherima, ja skoro uvek ( iz iskustva ) ostavim osim par stvari koje sigurno znam šta rade, DEFAULT. To je cela priča. Ah da program je bio .c, u pravu si ono za .cpp. Al možda je ovako i bolje, čovek uči ( bez manuala :)) ) dok je živ. >> Inače u .H datotekama se nekakvi pointeri na f-je NE >> deklarišu. Ako imaš nameru da ozbiljno pišeš (znači više >> od par stotina linija) na C-u, trebalo bi da dobro >> shvatiš i koncept .H datoteka. U pravu si. Ništa bez dobrog poznavanja .h datoteka. Kad njih skratim, tojest izbacim deklaracije funkcija koje ne koristim u zadatom programu kod izađe kraći. Upravo radim na programu koji bi trebao da pravi leksičku analizu .h datoteka, i da (ako uspem :)) ) pre kompilacije, "izbaci" nepotrebne prototipe, ostavljajući samo onaj deo .h koji zaista koristim u programu, pa to i includuje. Možda to i prodam Borlandu :))))) ! Naravno tad nema precompile headere, ali ... Nobody is perfect Automen :)) ! E, da. Nismo se razumeli. U "panici" sam pitao gde mi je pointer na funkciju ( ne u .h nego naravno u memoriji, a gde bi ;)) ). >> U onom programu ti fali i #include <stdio.h> (za printf) >># a include <dos.h> ti je suvišno (druge dve f-je su iz >> conio.h). Tačno ! Primer sam Cut & Paste direktno iz jednog malo većeg (mojeg ;) ) programa, u editor, pa dodao klasiku od HELLO WORLD, tek da se nadje :)) ! Pri tom sam zaboravio da dodam prave hedere. Al i bez njih je TO išlo ko što treba. >> Bottom line: možeš tako da radiš, (što si i sam otkrio) >> ali to je, po današnjim merilima, 'hakerisanje.' Fakat ! A i ne isplati se tako, nije p(rofi)ortabilno :))) ! >> Da bi ti sve bilo jasnije, preporučujem ti da proučavaš >> knjige 'The C Programming Language,' Brian W. Kernighan, >> Dennis M. Ritchie, first edition, a zatim i knjigu istog >> naslova, ali second edition. U 1st ed. je upravo >> 'definisan' (tj. predložen) ono što je posle nazvan "K&R >> C," a u 2nd ed. samo uključen ANSI C, koji je nastao >> mimo autora. Upravo u razlikama se kriju objašnjenja. >> Inače, bez poznavanja njih, ili nekih adekvatnih knjiga >> tog nivoa, teško da možeš da kažeš da znaš C. Ovom tvom savetu za početnike u C programiranju, dodao bih i izvrsnu knjigu "C++ Programing Language" gurua, i oca C++ jezika, Bjarnea Stroustrupa. Izvrsna je ( a i programi su .cpp, pa nema za**bancije sa .h datotekama :))) ). NARAVOUžENIJE ( po 1000.. put ) : When everything fails, read the manual ! Korolar AMILANOVA: If you have manual ! :)))) ! Pozdrav amilanov !
unknown.412 dusanp, -> #411, amilanov
=> Pa to sam baš i u prethodnoj poruci kritikovao. Borland => prodaje C++ kompajler, pa je logično da DEFAULT postavi => C++ kompajliranje, tojest Use C++ Always. Kako ne volim => previše ( bez uputstava ) da čačkam po switcherima, ja => skoro uvek ( iz iskustva ) ostavim osim par stvari koje => sigurno znam šta rade, DEFAULT. To je cela priča. Ah da => program je bio .c, u pravu si ono za .cpp. Al možda je => ovako i bolje, čovek uči Ne slažem se da je C++ Always logično. Recimo da pišeš par projekata, jedan u C-u a drugi u C++. Ako ne bi bilo "C++ extensions only" onda bi morao da svaki čas /dobro, kad se umoriš od jednog programa i radiš drugi/ ulaziš u options itd,itd. Ovako, samo jedan program bude .c a drugi .cpp i Borland sam dalje brine o prevođenju. Takođe, neke stvari je lakše uraditi u standardnom C-u negu u C++, bar dok OOP ne uđe pod kožu. Nemo' neko Borland da mi dira...
unknown.413 pmsimic,
Napisao sam program za zastitu od kopiranja u TC++ 2.0 . Molio bih da mi neko objasni kako napraviti od toga odgovarajucu funkciju za CLIPPER koja se moze pozvati sa CALL iz CLIPPER-a. Molim primer. Molim i primer za linkovanje za PLINK86 ili kako vec treba. Unapred zahvalan PMSIMIC iz Pristine
unknown.414 bambi,
Da li neko zna kako da uklonim bedni cursor u Turbo C-u?
unknown.415 dusanp, -> #414, bambi
=> Da li neko zna kako da uklonim bedni cursor u Turbo C-u? Sa _setcursortype (_NOCURSOR) uklanjas kursor. Sa _setcursortype (_NORMALCURSOR) vracas kursor na normalu. Sa _setcursortype (_SOLIDCURSOR) kursor prelazi u pun kvadrat.
unknown.416 janko, -> #414, bambi
> Da li neko zna kako da uklonim bedni cursor u Turbo C-u? Evo rešenja nezavisnog od jezika: Pozivom BIOS interapta 10 sa ah=1 ch=20h cl=0 Ne sećam se da li je TC 2.0 imao _setcursortype f-ju. Potraži u helpu, pa ako nema, uradi ovo gore. BC 2.0 ima.