PCPROG.3

26 Jul 1993 - 22 Apr 1994

Topics

  1. algoritmi (290)
  2. dizajn (19)
  3. ms.dos (270)
  4. windows (360)
  5. asembler (213)
  6. basic (10)
  7. jezici (148)
  8. pascal (878)
  9. cccc (554)
  10. cpp (195)
  11. clipper (1125)
  12. baze.podataka (232)
  13. razno (540)

Messages - pascal

pascal.1 mmile,
E i ja da otvorim ...:) CONF JOIN PC.PROG.2 CONF REPLY 6.1307 │ Jel ima neko sve extended kodove za tipke na tastaturi? │ Pronašao sam u jednom unitu (tpw60) neke kojih nema u uputstvu. │ Tablica u uputstvu ima sledeće rupe 0-14 (izuzev 3), 26-29, │ 39-43, 51-58, 69, 70 i eventualno 141+. Ako bi neko znao da │ popuni rupe... └────────── CTRL+<Neko_slovo> daje vrednost ord(upcase(slovo)) - 64 Napravis ovako nesto : begin repeat writeln(ord(readkey)); until false; end. I saznas sve kodove SEM F11, F12 i sl. Drugi nacin je da (ako imas AT) ocitas i F11 i F12 i Enter na num. tastaturi koji se razlikuje od Entera na "glavnoj" tastaturi i ... var r:registers; begin repeat r.ah:=1; intr($16,r); (* Citanje karaktera sa prosirene tastature *) writeln(r.ah:10,r.al:10); until false; end.
pascal.2 bole,
Ljudi... Kako da neki string koji otkucam ubacim u fajl?
pascal.3 isekulovic,
>> CTRL+<Neko_slovo> daje vrednost ord(upcase(slovo)) - 64 Da, ali to nisu extended kodovi. >> Drugi nacin je da (ako imas AT) ocitas i F11 i F12 i Enter na num. Prvi način znam ali bi mi trebalo u obrnutom smeru, a za ovaj nisam znao, će da probam. Hvala!
pascal.4 isekulovic,
>> Kako da neki string koji otkucam ubacim u fajl? Ubaciš u fajl? Ako misliš samo da napraviš fajl u koji ćeš smestiti string onda ide ovako: Var f : text; s : string; begin Readln (s); Assign (f,'filename.ext'); Rewrite (f,1); writeln (f,s); end; A ako već imaš fajl pa hoćeš da dodaš na kraju: Var f1 : text; f2 : text; st : string; begin Assign (f1,'filename.ext'); Reset (f1); Assign (f2,'TempFile.$$$'); (* Praviš privremeni file. *) Rewrite (f2); While not( eof(f1) ) Do begin readln (f1,st); (* Prepisuješ originalni u privremeni file. *) writeln (f2,st); end; writeln (f2,'Ovaj string dodaješ'); (* Dodaješ stringove u *) writeln (f2,' .... i ovaj .... '); (* privremeni file. *) Close (f1); Close (f2); Erase (f1); (* Brišeš orignalni file. *) Rename (f2,'filename.ext'); (* Privremeni preimenuješ u originalni. *) end; A ako hoćeš da ubaciš u sredinu slično je ubacivanju na kraj samo, što ne prepisuješ do kraja datoteke već prepišeš jedan deo, pa dodaš string, pa prepišeš ostatak.
pascal.5 dejanr,
>> Kako da neki string koji otkucam ubacim u fajl? var ff: text; red: string; begin assign(ff,'ime.txt'); rewrite(ff); readln(red); writeln(ff,red); close(ff); end. Bole, bilo bi ti krajnje vreme da počneš sa čitanjem neke knjige o Turbo Pascalu, malo prelistaš uputstvo i naučiš da koristiš HELP. Ovako sa pitanjima za svaku sitnicu nećeš daleko stići sa učenjem paskala. Ne što je nama teško da odgovaramo, nego zato što tako učiš neke "mrvice" umesto da shvatiš celinu.
pascal.6 ssokorac,
─┼┤ Kako da neki string koji otkucam ubacim u fajl? var f:text; st:string; begin assign(f,'tekst.txt'); rewrite(f); readln(st); (* otkucas string *) writeln(f,st); close(f); end; Posle ga čitaš ovako: var f:text; st:string; begin assign(f,'tekst.txt'); reset(f); readln(f,st); writeln(st); (* ispise string *) close(f); end;
pascal.8 ficus,
Umesto onog prepisivanja iz jednog u drugi fajl, bilo je bolje dumesto Rewrite(fajl2) ka`e{ Append(fajl2)...
pascal.9 dejanr,
>> Umesto onog prepisivanja iz jednog u drugi fajl, bilo je bolje dumesto >> Rewrite(fajl2) ka`e{ Append(fajl2)... Append je dosta glupo koncipirana funkcija. Ono što bih ja od nje hteo je da ako ima fajl, nastavi na njega, a ako nema, da ga napravi. Ali jock, ako nema fajla ona prijavi grešku :( Zato je zgodno koristiti sledeće: {$I-} append(ime); if ioresult<>0 then begin rewrite(ime); if ioresult<>0 then begin writeln('*jebi ga'); halt(1); end; end; PS Postavio sam ti SET CODE na yuscii, behu kuke i kvake u porukama :(
pascal.10 isekulovic,
Ajde ljudi pomagajte da se ratosiljam bede. Od svih mogućih stvari koje mogu da zakažu u programu meni se dogodilo sledeće. Writeln neće da mi ispiše string pa da se ubijem, ni na ekran ni u file. Watchujem ;) lepo promenljivu tipa string, vidim lepo njen sadžaj ali jednostavno writeln ne daje ništa. Ajde molim vas napregnite mozgove šta bi sve moglo da bude. Inače ako nešto znači u pitanju je editorčić, učita text file u dinamičku dvostruko povezanu listu, malo editujem i kada treba iz te liste da se snimi ponovo u file cvrc. Lepo prođe program kroz celu listu, string dobija ok vrednosti ali jednostavno neće da ih zapiše.
pascal.11 bole,
>> A ako vec imas fajl pa hoces da dodas na kraju: Ma provalio sam, a zar nije bolje umesto tog brisanja rinejmovanja, da umesto sa reset file otvoris sa append?
pascal.12 bole,
Thanx dr. Uradio sam to, dobio knjigu onu crvenu od duska savica TURBO PASCAL
pascal.13 ssokorac,
─┼┤ A ako već imaš fajl pa hoćeš da dodaš na kraju: Uh, baš ga zakomplikova :). Dodavanje na kraj se vrši pomoću append. begin assign(f,'teskt.txt'); append(f); writeln(f,st); close(f) end; Jedino se u slučaju ubacivanja na pola datoteke mora pisati u drugi fajl.
pascal.14 milos,
Pa, ovako }emo te{ko da shvatimo o ~emu se radi, mogao bi malo da nam po{alje{ source (ili barem deo njega ukoliko je tajna) ta da pogledamo. Ina~e, problema mo`e biti mnogo... Jednostavno ne mogu da pretpostavim o ~emu se radi... Dakle, {alji source i 100% }e sve biti OK...
pascal.15 beast,
>> Uradio sam to, dobio knjigu onu crvenu od duska savica TURBO >> PASCAL Ako ti išta bude jasno, javi meni, ja ništa ne razumem :)) Bolje bre uzmi onu standardnu od žabarkape, objekti su za malo iskusnije (a iz te knjige za mnooogo iskusnije :)
pascal.16 dejanr,
>> Writeln neće da mi ispiše string pa da se ubijem, ni na ekran ni u file. Stavi na početak programa {$I+} i izbaci sve {$I-} koje si eventualno stavio. Onda pusti program, i videćeš na kojoj liniji nastupa greška i koja je greška u pitanju. Kada to otkloniš, verovatno i taj writeln proradi. Ako imaš {$I-} onda posle *svake* operacije koja išta piše po fajlovima ili čita iz njih treba da pročitaš i ioresult. Ako to ne uradiš, obično se dešavaju takve stvari, neka read/write naredba na stotom mestu ne radi ili radi čudno.
pascal.17 adiklic,
> Ajde ljudi pomagajte da se ratosiljam bede. Od svih mogućih stvari .. > string dobija ok vrednosti ali jednostavno neće da ih zapiše. Evo prikačeni primer programčić testira da li datoteka već postoji, otvara ako ne postoji, upisuje komentar, upisuje string i lista datoteku na kraju. Nadam se da će to pomoći. (TP 6.0) primer.pas
pascal.18 isekulovic,
>> Umesto onog prepisivanja iz jednog u drugi fajl, bilo je bolje dumesto >> Rewrite(fajl2) ka`e{ Append(fajl2)... Moglo je, samo što Append(fajl) radi samo ako već postoji fajl, pa bi morala da se doda provera o postojanju fajla i još jedan ceo primer o dodavanju u sredinu fajla, što mislim da bi suviše zakomplikovalo celo poruku i da je ovako jasnija bila suština.
pascal.19 ssokorac,
─┼┤ liste da se snimi ponovo u file cvrc. Lepo prođe program kroz celu ─┼┤ listu, string dobija ok vrednosti ali jednostavno neće da ih zapiše. Pa, sad, može svašta da bude. Najbolje da pošalješ taj deo koji ide kroz listu i piše pa ćemo onda otkriti :).
pascal.20 m.hristodulo,
>> Uradio sam to, dobio knjigu onu crvenu od duska >> savica TURBO PASCAL Predlažem prevod žuto-plavog priručnika za TP6.0, izdanje mi-knjige. Ja sve nejasno, razjašnjavam iz nje...
pascal.21 isekulovic,
>> Ako imaš {$I-} onda posle *svake* operacije koja išta piše po >> fajlovima ili čita iz njih treba da pročitaš i ioresult. Ako to ne >> uradiš, obično se dešavaju takve stvari, neka read/write naredba na >> stotom mestu ne radi ili radi čudno. Ovo je bilo u pitanju, nikad mi ne bi palo napamet. Hvala!
pascal.22 milos,
Isto mislim da je TP 6.0 od Mikro knjige jedna od najboljih, ako ne i najbolja knjiga iz ove oblasti... Iz nje se mo`e super nau~iti kako za po~etnike tako iza one vrlo iskusne... Ipak, nije idealna, ko{ta 27 DM... :(
pascal.23 bole,
Ljudi jel ima neko neki UNIT ili neki obj sas kojim mogu da pustam semplove (.voc ili neki drugi oblik) na sb-u, covoxu, kao onaj MOD-OBJ.OBj samo ne za modove nego za semplove! Ps. Ovo pitanje se prihvata, zar ne?
pascal.24 drpr,
-> Iz nje se može super naučiti kako za početnike tako iza one -> vrlo iskusne... Ipak, nije idealna, košta 27 DM... :( Da tu si u pravu i ja sam je nabavo ali u sretnija vremena i preporučujem je svakom ko nije baš "duduk" za programiranje i koji tek počinju. Cena je stvrano ono što boli u celoj stvari a baš me i zanima gde nađoše toliku cenu kad se štampa ovde, da je na engleskom pa i da shvatim,kupili su je tamo pa imaju maržu, ovako.... cope
pascal.25 broker,
> Ljudi jel ima neko neki UNIT ili neki obj sas kojim mogu > da pustam semplove (.voc ili neki drugi oblik) na sb-u, > covoxu, kao onaj MOD-OBJ.OBj samo ne za modove nego za > semplove! Ja sam pisao jedno programče koje je sviralo na COVOX-u. Imaš na Oreska BBS-u i sors. Datoteka je SHOWS*.* (eto, zaboravio sam...) Vrlo je kratko. broker
pascal.26 ndragan,
/ da mi ispiše string pa da se ubijem, ni na ekran ni u file. Watchujem / ;) lepo promenljivu tipa string, vidim lepo njen sadžaj ali Ili ti stražar daje tačnije rezultate nego writeln (da nije onaj nulti dužinski bajt u tom stringu ostao nula?), ili je tebi stdio preusmeren u nešto drugo - ko zna gde on to piše. Šta sve imaš otvoreno u tom trenutku? Kad pre toga poslednji put nešto ispiše? Kad prestaje?
pascal.27 ssokorac,
─┼┤ Ili ti stražar daje tačnije rezultate nego writeln (da nije onaj nulti ─┼┤ dužinski bajt u tom stringu ostao nula?), ili je tebi stdio preusmeren Ako je nulti bajt nula onda će i stražar :) da pokazuje samo ''.
pascal.28 dgrbic,
:: Moglo je, samo što Append(fajl) radi samo ako već postoji :: fajl, pa bi morala da se doda provera o postojanju fajla :: i još jedan ceo primer o dodavanju u sredinu fajla, što :: mislim da bi suviše zakomplikovalo celo poruku i da je :: ovako jasnija bila suština. Pogledaj u staroj pc.prog (čini mi se prvoj) par poruka od GROM-a, ima tu okačeno nekih procedura za umetanje u i brisanje iz fajla. Velika je budževina, ali radi jako brzo (osim kad zatvara fajl, jer tek onda stvarno radi prepisivanje).
pascal.29 bole,
E ovako: Kako da recimo, imam neki fajl i ocu da mi ispise svaki red, u kome se barem jedanput pojavljuje zadati string. recimo: zadam BOL i gde god da pise BOLESTAN od taj red da mi baci na ekran... (recimo da je sve sa upcase da bi bilo lakse..) ps. a da taj red koji pretrazuje bude string (sto je normalno:))
pascal.30 dejanr,
>> Kako da recimo, imam neki fajl i ocu da mi ispise svaki red, u kome se >> barem jedanput pojavljuje zadati string. žitaš fajl tako kako ga već čitaš, i onda kada si pročitao red kažeš: if pos(strng, red)<>0 then writeln(red);
pascal.31 ssokorac,
─┼┤ Kako da recimo, imam neki fajl i ocu da mi ispise svaki red, u kome se ─┼┤ barem jedanput pojavljuje zadati string. var f:text; tr,st:string; begin assign(f,'text'); reset(f); write('String: '); readln(tr); while not eof(f) do begin readln(f,st); if pos(tr,st)>0 then writeln(st); end; close(f) end; Pogledaj u knjizi koju imaš nešto o POS-u, ili u TP-ovom HELP-u (hi, ndragane:), sve ćeš uvek naći...
pascal.32 peca.st,
!-> Kako da recimo, imam neki fajl i ocu da !-> mi ispise svaki red, u kome se barem !-> jedanput pojavljuje zadati string. Ovo kucam napamet, ali mora da je tako :) Var f : text; s : string; Begin Assign (f, 'ime.ext'); Reset (f); špretpostavlja se da postoji fajl 'ime.ext'ć While not eof(f) do begin ReadLn (f, s); If Pos ('BOL', S) <> 0 then WriteLn (S); End; Close (f); End. Sve rešava funkcija POS (a, b : string) - ona vraća prvu poziciju stringa a u stringu b, a ako se a ne sadrži u b onda vraća 0. Peđa.
pascal.33 bole,
>> Pogledaj u knjizi koju imas nesto o POS-u, ili u TP-ovom HELP-u >> (hi, ndragane:), sve ces uvek naci... o nemojte da se ljutite.. nisam znao da postoji funkcija pos........
pascal.34 ilotina,
HI! Danas sam nešto petljao pao pascal-u, i malo mi je trebalo da izbacim komp kroz prozor. Pisao sam neki jednostavni programčić koji očita datum i pretvori ga u sledeći oblik: godina*10000+mesec*100+dan, i sve to smešta u promenljivu tipa longint. I ja tako sav srećan startujem prg., kad ono ne leži vraže, on mi izbaci sasvim neku neočekivanu cifru. E i na tom mestu sam poludeo, ali sam ipak otkrio da treba da prebacim onu godinu u naku drugi promenljivu tipa longint i tek onda da je množim sa 10000. Pozdrav, Ivan! P.S. Meni je ovo izgledalo zanimljivo:) P.P.S. Naravoučenije za one koji ovo nisu znali (ja nisam), ako želite da množite promenjljivu tipa word (pa makar i u stilu writeln(godina*10000)), prebacite njen sadržaj u promenljivu tipa longint pa je onda množite ;)
pascal.35 isekulovic,
>> Ili ti stražar daje tačnije rezultate nego writeln (da nije onaj nulti Proradilo je već, hvala.
pascal.36 dejanr,
>> P.P.S. Naravoučenije za one koji ovo nisu znali (ja nisam), ako >> želite da množite promenjljivu tipa word (pa makar i u stilu >> writeln(godina*10000)), prebacite njen sadržaj u promenljivu tipa >> longint pa je onda množite ;) Da... mada mislim da ne mora tako, može i writeln (longint(godina)*10000). Ovo davno nisam probao, ali nekada je (v.3.0) moglo, valjda može i sada.
pascal.37 ssokorac,
─┼┤ o nemojte da se ljutite.. nisam znao da postoji funkcija pos........ Ma, nema ljutnje, samo rekoh da pogledaš, da ne moramo da ti objašnjavom šta ona radi, sad kada znaš za nju :). Samo ti pitaj kada nije jasno.
pascal.38 ssokorac,
─┼┤ P.P.S. Naravoučenije za one koji ovo nisu znali (ja nisam), ako ─┼┤ želite da množite promenjljivu tipa word (pa makar i u stilu ─┼┤ writeln(godina*10000)), prebacite njen sadržaj u promenljivu tipa Ja sam imao sličnih problem sa oduzimanjem wordova. Recimo, a i b su wordovi, a integer, a ovo ne radi c:=abs(a-b); ukoliko je b manje od a. Tačnije, za abs(3-5) daje -2 :). Naravno, stvar je u zapisu wordova i integera, ali čini mi se da se moglo srediti...
pascal.39 bole,
Evo vam jedan "problem" pa resavajte dok se je ne vrnem sa mora... kako da pravim neku bazu, u kojoj se podaci menjaju recimo: IME ARTIKLA CENA KOLICINIA i da mogu da menjam cenu i kolicinu nesto slicno naredbi FIELD u basicu
pascal.40 dejanr,
>> kako da pravim neku bazu, u kojoj se podaci menjaju recimo: >> IME ARTIKLA CENA KOLICINIA >> i da mogu da menjam cenu i kolicinu >> >> nesto slicno naredbi FIELD u basicu Napraviš record: type artt = record ime: string; cena: longint; kolicina: longint; end; artft= file of artt; var art: artt; artf: artft; otvoriš fajl: assign(artf, 'ime.dat'); reset(artf); i sada da bi pročitao peti artikl kažeš: seek (artf,5); read (artf, art); promeniš šta ima, recimo: art.cena:=art.cena*100; i onda upišeš u fajl: seek (artf, 5); write (artf, art); na kraju sve zatvoriš: close(artf);
pascal.41 kuki,
ljudi, ima li neko ideju zašto ovaj program ne radi kako treba? ---- program trt; uses dos; var fajl:file ; naziv:string; c1:array [1..5000] of char; nmax:word; f:word; begin naziv:='trt.mrt'; assign (fajl,naziv); reset (fajl); blockread(fajl,c1[1],5000,nmax); for f:=1 to nmax do write (c1[f]); close (fajl); readln (naziv); end. ---- e sad, šta se desi? desi se da kad program dođe do onog blockread qemm ispiše nešto u stilu procesor has informed qemm that an attempt was made to execute an ilegal instruction... ili nešto slično. Inače, pascal je turbo pascal 5.5, a fajl je veći od tih 5000 bajtova kolko sam ja njemu dao da pročita... naravno, fajl postoji :) a što je najgore, kad sam stavljao veće brojke od 5000 čak sam i dobijao neki ispis... npr, za 60000 sam dobijao prvih 96 (?) bajtova fajla...
pascal.42 dejanr,
>> ljudi, ima li neko ideju zašto ovaj program ne radi kako treba? Zbog: >> reset (fajl); Umesto toga, stavi: reset(fajl,1)
pascal.43 drpr,
-> blockread(fajl,c1[1],5000,nmax); ono što ti je daejan rekao i mislim da treba blockread(fajl,c1,5000,nmax) a ja još preporučujem pošto ćeš verovatno menjati veličinu c1 da se ne bi mučio blockread(fajl,c1,sizeof(c1),nmax) toliko od mene :) cope
pascal.44 ssokorac,
─┼┤ reset (fajl); RESET ima i drugi parametar koji možeš da menjaš veližInu bloka kod čitanja fajla (u bajtovima). Ovako stoji neka default vrednost, a ako staviš reset(F,1); onih 5000 će značiti 5000 bajtova i sve će raditi kako treba.
pascal.45 kuki,
> ono što ti je daejan rekao i mislim da treba > blockread(fajl,c1,5000,nmax) a ja još preporučujem pošto ćeš > verovatno menjati veličinu c1 da se ne bi mučio > > blockread(fajl,c1,sizeof(c1),nmax) thanx svima na brzim odgovorima :) A inače, što se tiče onog sizeof(c1), to sam rešio tako što sam na početku stavio jednu konstanticu, koju po potrebi menjam :))
pascal.46 mzdravkovic,
Kako mogu iz nekog Pascal programa da ispitam da li ima diskete u A: ili B: drajvu ?
pascal.47 milos,
E, ovo je malo žešće. U BC-u postoji funkcija koja čita status drajva, i koja vraća rešku ako nema diskete (biosdisk), ali sam se uvek pitao da li postoji nešto slično i u TP-u... SSokorac , na tebe je red...
pascal.48 beast,
>> E, ovo je malo žešće. U BC-u postoji funkcija koja čita status >> drajva, i koja vraća rešku ako nema diskete (biosdisk), ali sam >> se uvek pitao da li postoji nešto slično i u TP-u... Ma nek jednostavno uradi ChDir('A:\'); (sa {$I-}) i vratiće mu se stanje drajva preko ioresulta...
pascal.49 eagle,
> Kako mogu iz nekog Pascal programa da ispitam da li ima diskete > u A: ili B: drajvu ? if disksize(n) = -1 then nema_diskete n=1 za A: n=2 za B: ...
pascal.50 dejanr,
>> E, ovo je malo žešće. U BC-u postoji funkcija koja čita status drajva, i >> koja vraća rešku ako nema diskete (biosdisk), ali sam se uvek pitao da li >> postoji nešto slično i u TP-u... Pa, može se pozvati odgovarajuća DOS funkcija ali ja radim to ovako: repeat writeln ('Insert diskette no ', ndisket, ' in drive ', rezdisk); write ('Press any key to copy'); readln (dummy1); size:=disksize (diskno); until size>0;
pascal.51 broker,
> datum i pretvori ga u sledeći oblik: > godina*10000+mesec*100+dan, i sve to smešta u promenljivu > tipa longint. I ja tako sav srećan startujem prg., kad ono > ne leži vraže, on mi izbaci sasvim neku neočekivanu cifru. > E i na tom mestu sam poludeo, ali sam ipak otkrio Imao sam slična iskustva i došao do zaključka da je to najverovatnije bubica Turbo Paskala. ja sam imao jedan veeliki broj smešten u 4 bajta i kad sam napravio malo matematike da to odjednom smesti u LongInt dobijao sam takodje bezvezne rezultate. Morao sam da računam iz dva puta, prvo u Word tipu, pa tek onda da množim i smeštam u LongInt. broker
pascal.52 mmile,
Da li nekog zanima pisanje BBS Door-ova i izrade biblioteke procedura koja bi olaksavala ovakav posao ? Ako ima nekog mail pa da pravimo grupu :).Naravno sve je za Pascal.
pascal.53 draganm,
Nasao sam kako RA 2.00 pretvara sifre u crc... Pa ako nekoga interesuje neka ostavi poruku ... -=>Phantom Lord<=-/.CoRRoSioN.
pascal.54 ssokorac,
Kako iz TP-a startovati neki .BAT program?
pascal.55 dejanr,
>> Kako iz TP-a startovati neki .BAT program? Direktno se ne može startovati. Ali, možeš funkcijom exec pozvati command.com, pa onda command.com da startuje program. Nešto kao: exec('C:\DOS\COMMAND.COM', '/C TEST'); trebalo bi da izvrši TEST.BAT.
pascal.56 mmile,
│ │ Kako iz TP-a startovati neki .BAT program? │ └─────────── Pa valjda kao i svaki obican program (?) Procedure Exe( command : string ); begin SwapVectors; Exec(GetEnv('COMSPEC'), '/C ' + Command); SwapVectors; end; Gore stavis uses dos i š$M .... ć i onda pozoves sa exe('IME.BAT'); Bolje je da kucas IME.BAT nego samo IME jer se (valjda) prvo izvrsavaju .EXE & .COM programi pa tek onda .BAT tj. Ako imas i IME.COM i IME.EXE i IME.BAT i stavis exe('ime') onda ce se prvo izvrsiti ime.com ili ime.exe.
pascal.57 milos,
Možeš sa EXEC, ali preko COMMAND.COM /C. Ovo /C je vrlo važno da bi se izvršio samo taj beč fajl i da bi se kontrola vratila tvom programu... Inače, valjda će se dobiti isti efekat kao i da si rekao DOS Shell (čisto COMMAND.COM, s tim što bi se izvršio i beč fajl), ali bi kontrola ostala na sekundarnom komandnom procesoru, pa bi bilo neizbežno ono EXIT...
pascal.58 kuki,
>>> Kako iz TP-a startovati neki .BAT program? > exec('C:\DOS\COMMAND.COM', '/C TEST'); trebalo bi da izvrši TEST.BAT. ili, univerzalnije rešenje :))) exec (GetEnv('COMSPEC'),' /c test');
pascal.59 ssokorac,
─┼┤ exec('C:ĐDOSĐCOMMAND.COM', '/C TEST'); trebalo bi da izvrši TEST.BAT. Da znam za to, ali se desi da nema memorije za učitavanje command-a, a kako je jedan već učitan, nadao sam se da se on može iskoristiti... Ok, hvala.
pascal.60 dejanr,
>> > exec('C:\DOS\COMMAND.COM', '/C TEST'); trebalo bi da izvrši TEST.BAT. >> >> ili, univerzalnije rešenje :))) >> >> exec (GetEnv('COMSPEC'),' /c test'); Izgleda univerzalnije, ali to meni nije radilo na jednom računaru na kome je inače instaliran 4DOS. Pošto mi je taj računar bio dosta važan (tamo sam instalirao neki svoj softver a oni su meni u džep instalirali pare), privremeno sam stavio kod sebe 4DOS i probao, i kod mene je, čini mi se, radilo. Onda sam prepravio program u pomenuto C:\DOS\COMMAND.COM i posle toga je radio i kod mene i na tom računaru. U dalje istraživanje se nisam upuštao, pošto je problem bio rešen.
pascal.61 dejanr,
>> Da znam za to, ali se desi da nema memorije za učitavanje command-a, a >> kako je jedan već učitan, nadao sam se da se on može iskoristiti... Na žalost ne može, COMMAND.COM je taj koji izvršava linije iz .BAT fajla. Ako nema njega, nema ko da interpretira komande.
pascal.62 mjova,
> exec('C:\DOS\COMMAND.COM', '/C TEST'); trebalo bi da > izvrši TEST.BAT. bolje je uzeti comspec env pa iz nje saznati gde je command.com. ako je nema onda je u C:\.
pascal.63 vitez.koja,
#=> Kako iz TP-a startovati neki .BAT program? exec('command.com','/c žaklina.bat');
pascal.64 isekulovic,
Text file unosim red po red u dvostruko povezanu dinamičku listu. Da li je moguće nekako da svaki red zauzme tačno mesta koliko mu treba a ne kao da je u pitanju string maksimalne dužine? Jedino što mi pada na pamet je da od string napravim jednostruku dinamičku listu kraćih stringova, ima li boljih ideja?
pascal.65 eagle,
> Text file unosim red po red u dvostruko povezanu dinamičku > listu. Da li je moguće nekako da svaki red zauzme tačno mesta > koliko mu treba a ne kao da je u pitanju string maksimalne > dužine? Možeš da u listi čuvaš promenljive tipa pointer, a da čitanje/upisivanje u listu radiš preko nekog pomoćnog stringa. type x = record red:pointer; (* jedan red teksta *) ... end; procedure string2pointer(var s:string; var p:pointer); begin getmem(p,ord(sŠ0Ć)+1); move(s,p,ord(sŠ0Ć)+1); end; procedure pointer2string(var p:pointer; var s:string); begin move(p,s,memŠseg(p):ofs(p)Ć+1); end; Ovako se pamti i dužina svakog stringa, što je valjda suvišno... ne znam kako se može odrediti dužina bloka na koji pokazuje p (sizeof(pž) uvek vraća nulu).
pascal.66 vitez.koja,
#=>>> Da znam za to, ali se desi da nema memorije za #=>>> učitavanje command-a, a kako je jedan već učitan, #=> nadao sam se da se on može iskoristiti... #=> #=> Na žalost ne može, COMMAND.COM je taj koji izvršava #=> linije iz .BAT fajla. Ako nema njega, nema ko da #=> interpretira komande. Njega uvek ima :) Jer neki COMMAND.COM je morao i taj tvoj program da učita... Probaj sa interaptom 0x2E...
pascal.67 dejanr,
>> > Na žalost ne može, COMMAND.COM je taj koji izvršava >> > linije iz .BAT fajla. Ako nema njega, nema ko da >> > interpretira komande. >> >> Njega uvek ima :) Jer neki COMMAND.COM je morao i taj tvoj program da >> učita... Da, ali kao što možda znaš, COMMAND.COM (ili bar njegov deo) se eventualno uklanja iz memorije da bi oslobodio prostor za program. Sada to možda i nije toliko bitno, ali nekada na 16 ili 64 K je itekako bilo. Po izlasku iz programa proverava se da li je COMMAND.COM "čitav" i ako nije, učitava se ponovo. Zato se ponekad program na izlasku zaglavi sa cannot load command, system halted (ili tako nešto). Dok se izvršava tvoj program, ne možeš računati sa tim da je čitav COMMAND.COM u memoriji.
pascal.68 ssokorac,
─┼┤ Dok se izvršava tvoj program, ne možeš računati sa tim da je čitav ─┼┤ COMMAND.COM u memoriji. Zahvaljući isekulovicu koji je našao int 2E :) evo procedure koji izvršava batch fajl bez potrebe za učitavanjem novog COMMAND.COM-a. procedure ExeBat(ime:string); var r:registers; begin with r do begin ds:=seg(ime); si:=ofs(ime) end; intr($2E,r); end; Važno je da se program koji poziva ovu proceduru ne bude startvona iz batch (beč:) fajla jer onda dolazi do, kako piše, nepredvidljih posledica :). Naravno, potrebno je i jedno $M na početku...
pascal.69 isekulovic,
>> Možeš da u listi čuvaš promenljive tipa pointer, a da >> čitanje/upisivanje u listu radiš preko nekog pomoćnog stringa. Hvala veliko, radi savršeno. Malo sam se namučio dok nije proradilo, ali sada radi ko sat, kvaka je bila u tome što u recordu moraju prvo da stoje pointeri na prethodnu i sledeću liniju, pa tek onda pointer na tekst reda.
pascal.72 djelovic,
> Važno je da se program koji poziva ovu proceduru ne bude startvona iz > batch (beč:) fajla jer onda dolazi do, kako piše, nepredvidljih posledica :). Posledice nisu nepredvidive, već kako kaže HelpPC: " before returning to the parent program this interrupt will attempt to execute the "current" batch file (if the parent or any ancestors were invoked from a batch file. This can cause remaining lines in a batch file to execute before the parent program finishes and fragment memory " Takođe, postoji još nekoliko važnih činjenica: - command string must be terminated with a CR - all registers including SS & SP are destroyed; SS & SP should be preserved in your own code segment - incompatible under some software multitasking systems Koliko mi se čini, ipak je praktičnije koristiti pozive kroz COMMAND.COM nego kroz ovaj ograničeni poziv :).
pascal.73 eagle,
> Hvala veliko, radi savršeno. Malo sam se namučio dok nije > proradilo, ali sada radi ko sat, kvaka je bila u tome što u > recordu moraju prvo da stoje pointeri na prethodnu i sledeću > liniju, pa tek onda pointer na tekst reda. Kvaka je u tome što uopšte ne radi kako treba, već trpa stringove na pogrešno mesto. Treba da stoji: move(s,pž,ord(sŠ0Ć)+1) move(pž,s,memŠseg(pž):ofs(pž)Ć+1) Ovako ih čuva u prostoru koji je određen sa "getmem", a onako od adrese pointera pa preko pokazivača na linije i ko zna još čega..
pascal.74 nikac,
Imam jedno pitanje. Ne spada bas u cist pascal, ali nema veze, valjda ce neko da zna odgovor. Daklem, sledeci program proizvodi veoma cudne efekte, tj. pre prvog slova ispise neki ascii karakter(primetio sam da se menja karakter u zavisnosti od duzine stringa), a na kraju ispise dva puta isto slovo. Takodje ponekad ispise string, pa odmah iza njega opet taj isti string ali otprilike od pola. Sta bi to moglo da bude, tj. gde je greska jer ocigledno postoji... Program glasi ovako: uses crt,dos; var s:string; r:registers; p:pointer; begin clrscr; s:='Ovo je probni string'; r.ah:=$09; p:=čs; r.dx:=ofs(pž); r.ds:=seg(pž); intr($21,r); end.
pascal.75 nikac,
Jos pitanja... Kako da prosledim neku ansi sekvencu do drivera? Nije vazno da li je resenje u pascalu, c-u ili uopsteno objasnjenje, sve se prihvata. Probao sam iz pascala i on mi kao rezultat programa: write(chr(27)+'Š10;10H') žžžžžžž to mu dodje ascii kod od esc umesto da kurzor bude na pozociji <10,10> on mi ispise ceo taj string (a esc interpretira kao strelicu???) Dakle, kako da iskoristim neku ansi sekvencu (proverio sam instaliran je ansi.sys, nije tako glupo objasnjenje).
pascal.76 dejanr,
Probaj da izbaciš uses crt sa početka programa, možda ti ispis ide direktno na ekran a ne preko DOS-a. Ako ti baš treba uses crt zbog drugih stvari, bilo je pre jedno pola godine u "Bajtovima lične prirode" kako se ipak preusmerava read/write na DOS. žini mi se da se kaže reset(input) i rewrite (output), a pre toga možda assign(input,''); i assign(output,'') ili tako nešto.
pascal.77 eagle,
> Daklem, sledeci program proizvodi veoma cudne > efekte, tj. pre prvog slova ispise neki ascii karakter(primetio > sam da se menja karakter u zavisnosti od duzine stringa), a na > kraju ispise dva puta isto slovo. > s:='Ovo je probni string'; > p:=čs; Taj karakter na početku predstavlja dužinu stringa. Svaki string ima i nulti član u kome se pamti njegova prava dužina, pa kad staviš p:=čs daješ pointeru adresu baš tog nultog člana. Treba da stoji p:=čsŠ1Ć
pascal.78 nikac,
E pa da odgovorim odjednom na oba odgovora. za dejanr: probao sam i lepo radi sa assign(input,'') itd. za eagle : Da pretpostavio sam da je ono duzina stringa a u medjuvremenu sam resio sve dileme. Ali ima jos jedna zamba... Dakle evo greske (ako nekom mozda zatreba nesto slicno): uses dos,crt,stdio; var s : string; p : pointer; r : registers; begin clrscr; s:='probni string$'; ž ovo je veoma vazno p:=čsŠ1Ć; žžžžžž kao i ovo r.ds:=seg(pž); r.dx:=ofs(pž); r.ah:=$9; intr($21,r); wait; end. Ono čsŠ1Ć smesta adresu stringa (bez duzine u sŠ0Ć) u pointer p. Medjutim ako se na kraju stringa ne stavi ono '$' dos jednostavno ne zna dokle je string i ide i pise neke nebuloze. E tu mi je odmah palo na pamet kako se to radi u assembleru, pa reko sto da ne, ajde da probam, kad ono radi! Eto toliko za ovaj put...
pascal.79 broker,
> Da li nekog zanima pisanje BBS Door-ova i izrade > biblioteke procedura koja bi olaksavala ovakav posao ? Ako > ima nekog mail pa da pravimo grupu :).Naravno sve je za > Pascal. Ja verovatno mogu biti od koristi, bar kao Beta tester, mada imam i iskustva u pisanju Door programa. Sysop Oreska BBS-a, brokerč38:101/101%setnet.oreska
pascal.80 broker,
> Da znam za to, ali se desi da nema memorije za učitavanje > command-a, a kako je jedan već učitan, nadao sam se da se > on može iskoristiti... Mozda će te zanimati: RemoteAcess 1.11 kada ide u DOS SHELL ostavlja rezidentno samo 3K. Rađen je u TP5.5 broker
pascal.81 ssokorac,
─┼┤ Koliko mi se čini, ipak je praktičnije koristiti pozive kroz ─┼┤ COMMAND.COM nego kroz ovaj ograničeni poziv :). Kako kad, nema se uvek memorije :). Usput, u inter33 je pisalo da su posledice nepredvidive, pa sam zato takoi napisao :). Tamo je lista ograničenja i posledica, zato, nešto veća pa ću staviti ovde čim andilitujem fajlove :).
pascal.82 ssokorac,
─┼┤ Mozda će te zanimati: RemoteAcess 1.11 kada ide u DOS SHELL ─┼┤ ostavlja rezidentno samo 3K. Rađen je u TP5.5 Hvala, ima i programa koji zauzimaju manje ;). Sve što mi treba je .bat fajl, ali je to u medjuvremenu rešeno. Svopovanje nije nikakav problem.
pascal.83 vitez.koja,
#=> Dok se izvršava tvoj program, ne možeš računati sa tim #=> da je čitav COMMAND.COM u memoriji. Ako se neko koristio pomenutim interaptom 2E, imam nekoliko pitanja: U HELP PCu koji koristim za informacije te vrste piše da taj "neobavezni" deo komandnog interpretera mora biti učitan ako nije (ceo) rezidentan. Kako proveriti da li je ceo komandni interpreter prisutan u memoriji, i šta će da se desi ako aktiviram ovaj interapt, a interpretera nema tamo ? I još malo pitanja :) Da li je funkcija zahteva saradnju samog komandnog interpretera, i da li je 4DOS podržava (nedokumentovana je) ?
pascal.84 ssokorac,
─┼┤ interpretera, i da li je 4DOS podržava (nedokumentovana je) ? Za ostalo ne znam, ali sa 4DOS-om radi potpuno ok.
pascal.85 sbrk,
>> 4.560 PC.PROG:pascal >> isekulovic, 07.07.92. 01:12, 268 chr >> --------------------------------------------------------- >> Da nije neko slucajno skinuo pre blokade sledece fajlove sa tricklea? >> -stay42.arc ('How to write a TSR program in Turbo Pascal') >> -tp55tsr.zip ('TSR units for Turbo Pascal 5.5 applications') >> -tppop16.arc ('TPUs and ASM for popup and TSR programs') Bazajući po starim porukama, naletim i na ovo :) Da stvarno neko nema ova druga dva? Jer stay42.arc nam je neko već nabavio. Skerl?
pascal.86 skerl,
tppop16.arc je zakacen u PC.PROG.2 uz poruku br 6.360 Pozdrav, Skerl :)
pascal.87 skerl,
>> >> -tp55tsr.zip ('TSR units for Turbo Pascal 5.5 applications') Jedva ga iskopah na starim, prasnjavim disketama :) Pozdrav, Skerl. tp55tsr.zip
pascal.88 broker,
> ─┼┤ Mozda će te zanimati: RemoteAcess 1.11 kada ide u DOS > SHELL ─┼┤ ostavlja rezidentno samo 3K. Rađen je u TP5.5 > > Hvala, ima i programa koji zauzimaju manje ;). Sve što mi > treba je .bat fajl, ali je to u medjuvremenu rešeno. > Svopovanje nije nikakav problem. Izgleda da si me pogrešno protumačio?. Nisam mislio ništa drugo do da navedem podatak. Kad smo već tu, pretpostavljam da si svoj BBS program radio u TP-u, pa me zanima kako si rešio svopovanje, rad pod mrežom, multitasking i tako to... broker
pascal.89 niklaus,
> ─┼┤ Mozda će te zanimati: RemoteAcess 1.11 kada ide u DOS SHELL > ─┼┤ ostavlja rezidentno samo 3K. Rađen je u TP5.5 > > Hvala, ima i programa koji zauzimaju manje ;). Sve što mi treba je > .bat fajl, ali je to u medjuvremenu rešeno. Svopovanje nije > nikakav problem. Na primer odlični SCREEN THIEF (najbolji scr-capture po meni) koji zauzima 2160 b... (:niklaus:)
pascal.90 niklaus,
_____ > uses dos,crt,stdio; Deder, objasti mi ovo... ili samo mnogo dobro znaš TP i C. (:niklaus:)
pascal.91 ssokorac,
─┼┤ TP-u, pa me zanima kako si rešio svopovanje, rad pod mrežom, ─┼┤ multitasking i tako to... Dok sam pisao program, pod utiskom sezamovih problema sa memorijom, štedeo sam memoriju maksimalno (tj. skoro maksimalno, uvek može bolje:), tako da potrebe za svopovanjem nemam - rade arj i zip, kao i command, samo što sam sada našao rešenje za redirekciju bez njega, a i copy više nema potrebe za njim, tako da taj deo ide brže. E, sa, mreža i slično - tu ima mnogo priče, ali ima dosta u INTER33, plus sam uzeo neke primere iz Matimetičkog instituta, pa se složilo ponešto :).
pascal.92 bulaja,
**** new file **** R:\IBMPC\PASCAL\*.* ---------------------- gtmous13 zip 85523 GTMouse, unit za rad sa misem (TP/BP 6.0 & 7.0) GTMOUSE is a Borland Pascal 6.0 & 7.0 Unit for mouse handling. GTMouse is not a mouse driver, it works over any standard mouse driver. If included it converts standard block mouse cursor in smoothly moving across the screen arrow-like mouse cursor in TEXT MODE of video adapter. This is similar to Norton Utilities 6.0, PCTools 7.0 and some others programs. GTMouse will make your application program much more attractive and professionally looking. This is possible only for EGA or VGA adapters, it don't do anything on others adapters.
pascal.93 nikac,
>■ > uses dos,crt,stdio; >■ žžžžžž >■ Deder, objasti mi ovo... ili samo mnogo dobro znaš TP i C. Ma to ti je user unit (moje procedure, zaboravio sam da ga izbrisem iz listinga). A sta cu, ovako mahinalno na pocetku svakog prg-a kucam uses ili include, svejedno, stdio :) (sto dzabe da zamaram moje vijuge :)
pascal.94 broker,
> E, sa, mreža i slično - tu ima mnogo priče, ali ima dosta > u INTER33, plus sam uzeo neke primere iz Matimetičkog > instituta, pa se složilo ponešto A jesu li ti primeri dostupni smrtnicima? broker
pascal.95 ssokorac,
─┼┤ A jesu li ti primeri dostupni smrtnicima? Naravno da jesu, ali su na papiru, i to A4 nekih 10 listova, a to mi se baš ne ukucava, bar ne sve :(. Ali, ako hoće neko da ukuca, mogu da mu dam papire da ih fotokopira, a ako je bliži kenzi, može da fotokopira i od njega :). A možda neko već ima tako nešto ukucano?
pascal.96 niklaus,
>>> >> -tp55tsr.zip ('TSR units for Turbo Pascal 5.5 applications') > > Jedva ga iskopah na starim, prasnjavim disketama :) žesto mi se dešava da razne PD extra biblioteke koji pokupim su već iskompajlirane u units-e. Kako sam na Borland Pascal-u 7.0 izvesno vreme, često mi se pojavljuje problem nekompatibilnosti UNIT struktura između TPU7 i TPU(4-6). Da li postoji neki programčić spasilac koji će da izvrši potrebnu konferziju. ...ili ću moram da listam one silne dokumentacije o UNIT strukturi. (:niklaus:)
pascal.97 drpr,
-> ...ili ću moram da listam one silne dokumentacije o UNIT -> strukturi. Moraćeš , a da li ćeš uspeti ne znam :(( Elem to je stvarno veliki problem o kome smo pričali već u ovoj conf. Uniti nisu kompatibilni u raznim verzijama nadajmo se da je samo u hederima :( cope
pascal.98 niklaus,
> veliki problem o kome smo pričali već u ovoj conf. Uniti nisu > kompatibilni u raznim verzijama nadajmo se da je samo u > hederima :( I ja se nadam... Počinjem sa listanjem DOC-ova... ): )8 niklaus 8(
pascal.99 predragd,
> ...ili ću moram da listam one silne dokumentacije o UNIT strukturi. Da li se nekako može doći do te dokumentacije. I mene interesuje tvoj problem. Imam dosta unit-a na starijim verzijama TP-a koji naravno ne rade na BP-u. Bio bih rad na napišem neki konverter, ali mi nedostaje dokumentacija. Naime, imam podatke samo o .TPU fajlovima za TP6. Ako uspeš bar donekle da rešiš ovaj problem mislim da bi ti mnogi TP-ovci bili zahvalni. Peđa.
pascal.100 bulaja,
││ili cu moram da listam one silne dokumentacije o UNIT strukturi. │└─── │ Da li se nekako moze doci do te dokumentacije. └──── R:\IBMPC\PASCAL\*.* ---------------------- twu1 zip 151084 Objasnjenje strukture TPU datoteka (TP 6.0, TPW 1.0)
pascal.101 broker,
> ─┼┤ A jesu li ti primeri dostupni smrtnicima? > > Naravno da jesu, ali su na papiru, i to A4 nekih 10 > listova, a to mi se baš ne ukucava, bar ne sve :(. Ali, > ako hoće neko da ukuca, mogu da mu dam papire da ih > fotokopira, a ako je bliži kenzi, može da fotokopira i od > njega :). A možda neko već ima tako nešto ukucano? Moze li u mail tvoj phone no. pa da ja zaduzim nekog od prijatelja.... broker
pascal.102 ssokorac,
─┼┤ Moze li u mail tvoj phone no. pa da ja zaduzim nekog od ─┼┤ prijatelja.... Može, šaljem. Problem je što se tako dobija zavisnost od Novella pa program ne radi na jednom compu u DV-u, recimo... Zato sam, pre nego što sam to završio ipak pisao komunikaciju pomoću fajlovanja, lokovanja :), šerovanja i sl. :)
pascal.103 ndragan,
/ Ako je nulti bajt nula onda će i stražar :) da pokazuje samo ''. Pobrkao sam lončiće... kad sam ono čačkao paskal... 89?
pascal.104 bigbrada,
> veliki problem o kome smo pricali vec u ovoj conf. Uniti nisu > kompatibilni u raznim verzijama nadajmo se da je samo u > hederima :( > > cope Dzabe se nadas... Probal sam da stavim drugi heder, i pogodi sta se desilo :((((( NE radi:(((( BIG
pascal.105 bole,
E ovako: Kako da saljem nesto na modem ali da radi na comu 3 i 4 recimo budem na sezamu, pa udjem u dos pa pustim program a on na modem posalje recimo OVDE BOLE hvala u napred ps. uzeo sam onaj pcl4p i nema pomoci :)
pascal.106 niklaus,
> ││ili cu moram da listam one silne dokumentacije o UNIT strukturi. > │└─── > │ Da li se nekako moze doci do te dokumentacije. > └──── > R:ĐIBMPCĐPASCALĐ*.* > ---------------------- > twu1 zip 151084 Objasnjenje strukture TPU datoteka (TP 6.0, > TPW 1.0) Još samo da doživim i pojašnjenje strukture ... za BP 7.0... (;niklaus;)
pascal.107 dcolak,
│ ps. uzeo sam onaj pcl4p i nema pomoci :) Kako bre nema pomoći, evo ja napisah chat door a ti... So, zar ne radi Sioputc() ? Da li si uradio prvo SioReset(COM4, -1) ? -1 za preuzimanje porta (mada radi i sa Baud9600) ? Ne odustaj može! :) Sledge DAMMIR!
pascal.108 valhala,
>###### Jer stay42.arc nam je neko vec nabavio. Ovo bi me interesovalo. Gde? Val.
pascal.109 pedjak,
> Može, šaljem. Problem je što se tako dobija zavisnost od Novella pa > program ne radi na jednom compu u DV-u, recimo... Zato sam, pre nego > što sam to završio ipak pisao komunikaciju pomoću fajlovanja, > lokovanja :), šerovanja i sl. :) žek, ček... nije mi sad nešto jasno. Jel' ti imaš rutine razvijene u paskalu za zaključavanje fajlova, podelu pristupa i sl. ? Ako imaš, daj nabaci ideju kako je to uradjeno. Pozivaš DOSove funkcije ?
pascal.110 mmile,
│ Kako da saljem nesto na modem ali da radi na comu 3 i 4 └───────── Nabavi program ADDPORT ili ADD34 ili sl. i staruj ga. Zatim iz dosa uradis echo OVDE BOLE >COM3.Jedini problem je sto na adrese 0:404h i 0:406h treba upisati adrese kom. portova kako bi BIOS bio u stanju da koristi com 3 i 4 a to rade gore navedeni programi.
pascal.111 bearboy,
Jel' iko video DOBRE rutine za komunikaciju sa kom. portovima za paskal ? (tu ne računam ASYNC, pošto njegove rutine nisu dobre :). PS. Sors po ISO-u u prednosti !
pascal.112 peca.st,
!-> Može, šaljem. Problem je što se tako !-> dobija zavisnost od Novella pa program ne !-> radi na jednom compu u DV-u, recimo... !-> Zato sam, pre nego što sam to završio !-> ipak pisao komunikaciju pomoću !-> fajlovanja, lokovanja :), šerovanja i sl. !-> :) SSovac, jel onda ono što si ti meni napričao u stvari rađeno bez Novella? Hoćeš da kažeš da si ti išao MNOGO komplikovanijim putem? (s tim što dobijaš nezavisnost od novella) Peđa.
pascal.113 sbrk,
>> >###### Jer stay42.arc nam je neko vec nabavio. >> >> Ovo bi me interesovalo. Gde? ..co jo 21 (pc.prog) ..co li /a /t i dobijes: >> 4.562 ->560 pascal mensi 07.07.92. 16:16 stay42.arc OK?
pascal.114 bole,
E otkrio sam otkriveno :) Pokusao sam da otvorim COM2 (umesto com4(jel sa com4 nece da radi)) kao fajl sa append i onda uzem WRITELN (F,'CAO'); i ispise se cao na modm!
pascal.115 ssokorac,
─┼┤ žek, ček... nije mi sad nešto jasno. Jel' ti imaš rutine razvijene ─┼┤ u paskalu za zaključavanje fajlova, podelu pristupa i sl. ? Ako Pa, u INTER33 postoje svi potrebni interapti i opisi za zaključavanje i podelu pristupa... Samo pozoveš šta ti treba :).
pascal.116 ilazarevic,
Jedno pitanje: kako da postignem da TSR program zauzme što manje memorije? :) Naime, ja sam seo i napisao jedno programče (probe radi) koje očitava miša, te prepoznaje koji je taster pritisnut. To i nije bog zna šta, ali je program (TP 6.0) zauzeo čitavih 13 K! Ima li rešenja, sem da pređem na asembler?
pascal.117 isekulovic,
>> Ovo bi me interesovalo. Gde? Pc.prog: 8.562 by mensi.
pascal.118 eagle,
Kako se u paskalu presreću prekidi od 10h pa naviše (konkretno 13h) ? Ili: kako ispravno napisati interapt proceduru, u kojoj se poziva stara procedura kojoj je važan sadržaj registara ?
pascal.119 predragd,
> twu1 zip 151084 Objasnjenje strukture TPU datoteka > (TP 6.0, TPW 1.0) To je na žalost opis struktura za TPU9 (TP 6.0). Kada bi još imali opis nekde druge strukture, pa da pišemo konverter. Peđa.
pascal.120 ssokorac,
─┼┤ Hoćeš da kažeš da si ti išao MNOGO komplikovanijim ─┼┤ putem? (s tim što dobijaš nezavisnost od novella) Ako to zoveš mnogo komplikovanijim, onda jesam :).
pascal.121 bole,
Ljudi ocu da neki fajl recimo duzine 100 linija ucitam u 100 stringova (a[1]..a[100]) ali da mogu da recimo a[2] pristupim trecem slovu a[2][3] (recimo) ali me zeza zato jel kaze kada napisem type a=array [1..100,1..80] of string STRUCTURE TO LARGE. tj. (tako sam ja shvatio) string moze do 255 a 100*80>255 e sad moze to da se uradi sa charom ali je mnogo teze i nije mi bas jasno, pa nek neka dobra dusa mi malo razjasni!
pascal.122 eagle,
> Ljudi ocu da neki fajl recimo duzine 100 linija ucitam u 100 > stringova (aŠ1Ć..aŠ100Ć) > ali da mogu da recimo aŠ2Ć pristupim trecem slovu aŠ2ĆŠ3Ć > (recimo) ali me zeza zato jel kaze kada napisem type a=array > Š1..100,1..80Ć of string STRUCTURE TO LARGE. tj. (tako sam ja > shvatio) string moze do 255 a 100*80>255 String je sam po sebi niz od 256 bajtova , pa si ovako definisao strukturu (trodimenzionalni niz) veličine oko 2Mb (!!). Treba da stoji a=arrayŠ1..100Ć of stringŠ80Ć , gde je 80 maksimalna dužina stringa.
pascal.123 draganm,
*> Jel' iko video DOBRE rutine za komunikaciju sa kom. portovima *> za paskal ? (tu ne racunam ASYNC, posto njegove rutine nisu *> dobre :). Ja sam video DOBRE rutine, ali nisu u obliku sorce-a nego se dobijaju kao TPU ... inace radi se o BBSKIT-u ... u unitu imas sve sto ti treba, ukljucujuci Y i X modem protokole. -=>Phantom Lord<=-/.CoRRoSioN.
pascal.124 draganm,
*> Jedno pitanje: kako da postignem da TSR program zauzme sto *> manje memorije? :) Naime, ja sam seo i napisao jedno programce *> (probe radi) koje ocitava misa, te prepoznaje koji je taster *> pritisnut. To i nije bog zna sta, ali je program (TP 6.0) *> zauzeo citavih 13 K! Ima li resenja, sem da predem na *> asembler? Najjednostavnije resenje je da predjes na asembler. -=>Phantom Lord<=-/.CoRRoSioN.
pascal.125 ilazarevic,
> Najjednostavnije resenje je da predjes na asembler. Što će reći, sedi i uči :) Moraću, sve mi se čini...
pascal.126 peca.st,
!-> ali da mogu da recimo aŠ2Ć pristupim !-> trecem slovu aŠ2ĆŠ3Ć (recimo) ali me zeza !-> zato jel kaze kada napisem type a=array !-> Š1..100,1..80Ć of string STRUCTURE TO !-> LARGE. tj. (tako sam ja shvatio) string !-> moze do 255 a 100*80>255 e sad moze to da !-> se uradi sa charom ali je mnogo teze i !-> nije mi bas jasno, pa nek neka dobra dusa !-> mi malo razjasni! To definišeš ovako type trtmrt = array Š1..100Ć of stringŠ80Ć; (sori na yuscii) Ovo što si napisao "100*80>255 itd..." nema veze sa ovom porukom. Ovu poruku ti prijavljuje zato što si ti, ovako kako si definisao napravio 100*80=8000 stringova default dužine - znače dužine 255. To je onda 256*8000 = 2 048 000 karaktera što daleeeeeeeeeeko prelazi dozvoljenu strukturu od 64K. Osim toga, ovako kako si definisao ne bi dobio ono što si hteo, jer bi dobio 100*80 stringova, a ne 100 stringova dužine 80. Valjda je jasno? Peđa.
pascal.127 ssokorac,
─┼┤ ali da mogu da recimo aŠ2Ć pristupim trecem slovu aŠ2ĆŠ3Ć (recimo) ali ─┼┤ me zeza zato jel kaze kada napisem type a=array Š1..100,1..80Ć of ─┼┤ string Samo deklariši kao type a=arrayŠ1..100Ć of stringŠ80Ć, ili type a=arrayŠ1..100,1..80Ć of char ŠĆ su srednje zagrade. Bolja je prva varijanta jer možeš da pišeš aŠ2ĆŠ3Ć a i writeln(aŠ2Ć), dok u drugoj ne možeš...
pascal.128 snemcev,
>> Treba da stoji a=array[1..100] of string[80] , gde je 80 maksimalna >> dužina stringa. Nisam siguran dal' će Pascal to da proguta, možda ćeš morati prvo da definišeš nov tip string[80] pa onda da staviš array[...] of taj_nov_tip.
pascal.129 djelovic,
> Najjednostavnije resenje je da predjes na asembler. Nije valjda da nemate nikakav TSR unit koji swap-uje veći deo programa u EMS ili na disk? Mislim da će mu se prelazak na C++ isplatiti više od prelaska na assembler :-).
pascal.130 eagle,
>>> Treba da stoji a=arrayŠ1..100Ć of stringŠ80Ć , gde je 80 >>> maksimalna dužina stringa. > Nisam siguran dal' će Pascal to da proguta, možda ćeš morati > prvo da definišeš nov tip stringŠ80Ć pa onda da staviš > arrayŠ...Ć of taj_nov_tip. Progutaće, kao što bi progutao tip=arrayŠ..Ć of arrayŠ..Ć of ...itd
pascal.131 v.nesic,
> Nisam siguran dal' će Pascal to da proguta, možda ćeš morati prvo da > definišeš nov tip string[80] pa onda da staviš array[...] of taj_nov_tip. Turbo paskal to guta još u onoj verziji koja radi na Tim 011.
pascal.132 pedjak,
> Jedno pitanje: kako da postignem da TSR program zauzme što manje > memorije? :) Naime, ja sam seo i napisao jedno programče (probe > radi) koje očitava miša, te prepoznaje koji je taster pritisnut. To > i nije bog zna šta, ali je program (TP 6.0) zauzeo čitavih 13 K! Ima > li rešenja, sem da pređem na asembler? Ako već nisi, smanji stek na minimum i ukini korišćenje dinamičke memorije, ukini proveru steka, uopšte sve provere, to bi trebalo da malo smanji kod. Za neke veće uštede moraš uzeti asembler u ruke :)
pascal.133 bearboy,
> E otkrio sam otkriveno :) > > Pokusao sam da otvorim COM2 (umesto com4(jel sa com4 nece da > radi)) kao fajl sa append i onda uzem WRITELN (F,'CAO'); i > ispise se cao na modm! Pokušaj da ispišeš nešto dugačko 5-6K.
pascal.134 niklaus,
> Nije valjda da nemate nikakav TSR unit koji swap-uje veći deo > programa u EMS ili na disk? Mislim da će mu se prelazak na C++ > isplatiti više od prelaska na assembler :-). Od drugara sam saznao za neku šemu povezivanja C (++) sa TP-om. Tačnije, to je valjda podržano nekim bibliotekicama i primerima pride... Dobra alternativa za lenje kojima se ne uči (buba) nova sintaksa. Ovo ću da izvidim kako šljaka... Druga alternativa (koju ja donekle, u posebnim prilikama, primenjujem) je linkovanje C .OBJ (hi .obj) datoteka u pascal programe. Ovu drugo svakako valja isprobati... (:niklaus:)
pascal.135 ilazarevic,
> Ako već nisi, smanji stek na minimum i ukini korišćenje dinamičke > memorije, ukini proveru steka, uopšte sve provere, to bi trebalo da Sve ovo uradim, naravno :) Stek stavim na kilobajt, ali čini mi se da može i manje. Izgleda da mi može pomoći samo asembler.
pascal.136 draganm,
*> Sto ce reci, sedi i uci :) Moracu, sve mi se cini... Pa ako znas asm za neki drugi procesor (recimo MC 68000) to ne bi trebao da bude neki problem, jedini problem je sto kad predjes sa motorole na intel osecas se ko da si presao sa konja na magarca. :( -=>Phantom Lord<=-/.CoRRoSioN.
pascal.137 mmile,
│ > Pokusao sam da otvorim COM2 (umesto com4(jel sa com4 nece da │ > radi)) kao fajl sa append i onda uzem WRITELN (F,'CAO'); i │ > ispise se cao na modm! │ │ Pokušaj da ispišeš nešto dugačko 5-6K. └─────────── Radio sam neki com program i u njemu stavio mogucnost izlaska u dos tj. covek koji pozove izadje u dos na racunaru koji je zvao i onda tu nesto radi.To sam uradio sa exec('COMMAND <COM1 >COM1 ') ali se posle dva-tri minuta rada obavezno zaglavljivalo.Zasto ?
pascal.138 sbrk,
>> To sam uradio sa exec('COMMAND <COM1 >COM1 ') ali se >> posle dva-tri minuta rada obavezno zaglavljivalo.Zasto ? Proveri da se nije prepunio buffer modema.
pascal.139 ilazarevic,
> Pa ako znas asm za neki drugi procesor (recimo MC 68000) to ne bi Ne znam nikakav asm :(
pascal.140 broker,
> Može, šaljem. Problem je što se tako dobija zavisnost od > Novella pa program ne radi na jednom compu u DV-u, > recimo... Zato sam, pre nego što sam to završio ipak pisao > komunikaciju pomoću fajlovanja, lokovanja :), šerovanja i > sl. :) To me i zanima, kako si rešio problem rada pod Novell, DeskView-om i slicnim situacijama... broker
pascal.141 bearboy,
> Ja sam video DOBRE rutine, ali nisu u obliku sorce-a nego se > dobijaju kao TPU ... inace radi se o BBSKIT-u ... u unitu imas > sve sto ti treba, TPU... Bljaaaah :) Apsolutno nekorisno :( Da napomenem, meni trebaju samo OSNOVNE rutine (ono što imaju fosili, ništa više).
pascal.142 ssokorac,
─┼┤ To me i zanima, kako si rešio problem rada pod Novell, ─┼┤ DeskView-om i slicnim situacijama... Pa, toga nema u primerima. Radiš dosta jednostavno - otvoriš fajl sa odgovarajućim parametrima (za čitanje, pisanje, čitanje/pisanje, pristup ostalih svemu, pristup čitanju, pristu pisanju, nikakav pristup i sl.), kada pišeš nešto u fajl lokuješ taj deo fajla, kada završiš odlokuješ i sl. Ipak, ja nisam neko ko bi o tome mogao mnogo da priča, ovde sigurno ima mnogo više ljudi koji to znaju mnogo, mnogo bolje od mene :).
pascal.143 niklaus,
> TPU... Bljaaaah :) Apsolutno nekorisno :( Da napomenem, meni > trebaju samo OSNOVNE rutine (ono što imaju fosili, ništa više). Ako te zanimaju samo source-ovi XModem-a i YModem-a imam ih! Za ZModem source si verovatno načuo (u C++ obliku) -imam i to, međutim malo je teorije po kojoj bi je prebacio u TP formu. (:niklaus:)
pascal.144 draganm,
*> tu nesto radi.To sam uradio sa exec('COMMAND <COM1 >COM1 ') *> ali se Dovoljno je da stavis exec(getenv('comspec'),'com1') i sve bi trebalo da radi ok ... -=>Phantom Lord<=-/.CoRRoSioN.
pascal.145 draganm,
*> Ako te zanimaju samo source-ovi XModem-a i YModem-a imam ih! *> Za ZModem source si verovatno nacuo (u C++ obliku) -imam i to, *> medutim malo je teorije po kojoj bi je prebacio u TP formu. Ima li neko DETALJAN opis zmodema ? Ako ima dobrovoljno se javljam da napisem zmodem u pascalu. -=>Phantom Lord<=-/.CoRRoSioN.
pascal.146 broker,
> Pa, toga nema u primerima. Radiš dosta jednostavno - > otvoriš fajl sa odgovarajućim parametrima (za čitanje, > pisanje, čitanje/pisanje, pristup ostalih svemu, pristup > čitanju, pristu pisanju, nikakav pristup i sl.), kada > pišeš nešto u fajl lokuješ taj deo fajla, kada završiš > odlokuješ i sl. Ipak, ja nisam neko ko bi o tome mogao > mnogo da priča, ovde sigurno ima mnogo više ljudi koji to > znaju mnogo, mnogo bolje od mene :). Znaci dovoljno je voditi računa? Samo da što manje držim otvorene datoteke i da obavezno zaključavam slog kad ga menjam? To je Ok. Ali pod DeskView-om ima i drugih problema, ne samo sa datotekama, tu je tastatura, ekran i ostale sitnice... Što se tiče onih koji mnogo više znaju, ja ih ne računam dok se ne jave. Trenutno si se samo ti javio da nešto znaš o ovim stvarima, i kao takav, trenutno najviše znaš :) broker
pascal.147 ssokorac,
─┼┤ Ali pod DeskView-om ima i drugih problema, ne samo sa datotekama, ─┼┤ tu je tastatura, ekran i ostale sitnice... Što se tiče ekrana - ne diraj gotoxy i slične :). Isključivo ANSI, i sve će raditi ok. Tastatura? U čemu je tu problem? Onaj prozor koji je aktivan će dobijati taster od DV-a a ostale baš briga :). Valjda :). Nisam probao da chatujem sa nekim iz DV-a :). ─┼┤ ne jave. Trenutno si se samo ti javio da nešto znaš o ovim ─┼┤ stvarima, i kao takav, trenutno najviše znaš :) Ok, ali to je nešto-ništa (citat geografičarke iz oš kada nemaš pojma posle odgovaranja:).
pascal.148 bearboy,
> > TPU... Bljaaaah :) Apsolutno nekorisno :( Da napomenem, meni > > trebaju samo OSNOVNE rutine (ono što imaju fosili, ništa > više). > > Ako te zanimaju samo source-ovi XModem-a i YModem-a imam ih! > Za ZModem source si verovatno načuo (u C++ obliku) -imam i to, > međutim malo je teorije po kojoj bi je prebacio u TP formu. Fosili nemaju stvarčice kao što su XYZmodem :) X i Y me ne interesuju, al' onaj Z bih voleo da pogledam. Koja je verzija ?
pascal.150 v.nesic,
> Ali pod DeskView-om ima i drugih problema, ne samo sa datotekama, > tu je tastatura, ekran i ostale sitnice... Pod DeskView-om nema nikakvih problema. Ti program najnormalnije pišeš kao za DOS, o ostalom brine DV. Kako bi inače radila gomila programa koja nije predviđena za njega? Jedino što stvarno može da napravi problem su duplo otvoreni fajlovi i programi pisani da preuzimaju delove sistema.
pascal.151 v.nesic,
> Ima li neko DETALJAN opis zmodema ? Ako ima dobrovoljno se javljam da > napisem zmodem u pascalu. Pogledaj u R:\COM\ZMODEMC.ZIP, tamo bi trebalo da ima.
pascal.152 niklaus,
>*> Za ZModem source si verovatno nacuo (u C++ obliku) -imam i to, >*> medutim malo je teorije po kojoj bi je prebacio u TP formu. > > Ima li neko DETALJAN opis zmodema ? Ako ima dobrovoljno se javljam > da napisem zmodem u pascalu. žini mi se da nemam takvo nešto, ali se dobrovoljno javljam da dešifrujem _ono_ u C++ obliku (uz pomoć, naravno). (:niklaus:)
pascal.153 niklaus,
> aktivan će dobijati taster od DV-a a ostale baš briga :). Valjda > :). Nisam probao da chatujem sa nekim iz DV-a :). Ne bi trebalo da ima problema. Jedino što valja default-ovati pri takvim radnjama je smanjiti tick-ove za prioritete (tako da odnos fore:bckground bude isti). Poznati su već prijavljivani problemi sa ZModemom pod DV-om. (Inače, radim pod DV/X-om, a ne DV, gde je problem i pretvaranje text-a u GUI prozore) (:niklaus:)
pascal.154 zdule,
╠═══ fore:bckground bude isti). Poznati su već prijavljivani ╠═══ problemi sa ZModemom pod DV-om. Koji su to problemi ? Ja radim na 286 :( sa GSZ-om pod Dv-om i nikada nije zezao. ZDule...
pascal.155 broker,
> ─┼┤ Ali pod DeskView-om ima i drugih problema, ne samo sa > datotekama, ─┼┤ tu je tastatura, ekran i ostale sitnice... > > Što se tiče ekrana - ne diraj gotoxy i slične :). > Isključivo ANSI, i sve će raditi ok. Tastatura? U čemu je > tu problem? Onaj prozor koji je aktivan će dobijati taster > od DV-a a ostale baš briga :). Valjda :). Nisam probao da > chatujem sa nekim iz DV-a :). A pisanje na lokalni ekran. Neću valjda i to preko ANSI-ja? A šta je sa time slicing-om? I oko toga treba voditi računa, kad se radi pod DV-om. broker
pascal.156 broker,
>> Ali pod DeskView-om ima i drugih problema, ne samo sa >> datotekama, tu je tastatura, ekran i ostale sitnice... > > Pod DeskView-om nema nikakvih problema. Ti program > najnormalnije pišeš kao za DOS, o ostalom brine DV. Kako > bi inače radila gomila programa koja nije predviđena za > njega? Jedino što stvarno može da napravi problem su duplo > otvoreni fajlovi i programi pisani da preuzimaju delove > sistema. ne treba da naravim program koji će eto da radi i pod DV-om, već koji će pouzdano da radi. Iz dokumentcije za X00 sam video da DV ume da napravi probleme kod preuzimanja interapta, pa onda, šta ako aplikacija stoji i ne radi ništa pametno? Zašto bi i dalje oduzimala silno vreme DV-u? Sigurno ima metod da se to oslobodi. broker
pascal.157 broker,
Ima li neko TP source nekog arhivera? Nije bitno koji je i kakav je (dobro de, ne treba da bude baš neki očajno loš). broker
pascal.158 v.nesic,
> pametno? Zašto bi i dalje oduzimala silno vreme DV-u? Sigurno > ima metod da se to oslobodi. Univerzalni metod koji važi sa 99,9% multi taskera ja da izvršiš HALT instrukciju mikroprocesora i čekaš da te pozove interapt za tastaturu ili šta već čekaš da se odazove. Naravno, za svaki postoji API koji pruža dodatne mogućnosti ali je to retko kada vredno truda, pogotovo u našim uslovima. BTW, gomila komercijanih programa koji recimo znaju da provale da se nalaze pod DV-om to uopšte ne uzima u obzir da paralelno njima radi još taskova. Šta više, ja još nisam naišao ni na jedan...
pascal.159 bearboy,
>> Što se tiče ekrana - ne diraj gotoxy i slične :). > A pisanje na lokalni ekran. Neću valjda i to preko ANSI-ja? Ne vidim razlog zašto bi radio preko ANSI-ja. DV presreće sve pozive, pa i gotoxy, i uraki ih kako njemu odgovara.
pascal.160 ssokorac,
─┼┤ Ne vidim razlog zašto bi radio preko ANSI-ja. DV presreće sve pozive, ─┼┤ pa i gotoxy, i uraki ih kako njemu odgovara. Ok, onda piši gotoxy kada si u lokalu a ANSI kada šalješ remote ako ti je zgodnije ;). Više volim da pišem samo ANSI pa da radi svuda :).
pascal.161 broker,
>> pametno? Zašto bi i dalje oduzimala silno vreme DV-u? >> Sigurno ima metod da se to oslobodi. > > Univerzalni metod koji važi sa 99,9% multi taskera ja da > izvršiš HALT instrukciju mikroprocesora i čekaš da te > pozove interapt za tastaturu ili šta već čekaš da se > odazove. Hvala, ovo je jos jedan trag za pipanje po mraku. :) > BTW, gomila komercijanih programa koji recimo znaju da > provale da se nalaze pod DV-om to uopšte ne uzima u obzir > da paralelno njima radi još taskova. Šta više, ja još > nisam naišao ni na jedan... A kako program može da sazna da je pod DV-om? RemoteAcess (BBS program) to radi. Kad čeka da se javi sledeći korisnik prepusti vreme DV-u. Doduše, ne radi to zbog drugih programa, već drugih nodova na istom BBS-u. :) broker
pascal.162 rcolic,
Vozdra. Ja reko da pitam neke stvarcice... Elem, nabavih .TPU za sviranje ´╗Îmodula i sada se pitam nesto: da li nekako mogu da preskocim pattern u modulu unapred ili unazad? nisam nasao nijednu komandu te vrste u dokumentaciji a to mi je preko potrebno... Zatim, interesuje me da li postoji neka naredba kojom bih mogao da promenim video page ( u modu 320x200x256 ) radi animacije pojedinih sprajtova. 'vala unapred svakom ko mi da bilo kakvo resenje ovih problemcica... Rcolic
pascal.163 niklaus,
> Fosili nemaju stvarčice kao što su XYZmodem :) X i Y me ne > interesuju, al' onaj Z bih voleo da pogledam. Koja je verzija ? Izvini da 'delayed' odgovoru (digitron mi je bio u out-u). ): Kod ZModem-a (i komunikacionih protokola) važi pravilo "verzija k'o verzija" , odn. nova verzija neće doneti ništra extra novo. Tačnije, što se same komunikacije tiče - neće doneti NIŠTA novo, jer kod kom. protokola ne važi logika kao kod, na primer, fajl-kompresora gde nova varijanta donosi bolju kompresiju i ovo&ono (zajedno sa vertikalnom kompaibilnošću). Dakle jedina poboljšanja su (možda) brže pražnjenje bafera (brža obrada prispelih podataka), mada manje verovatno, i eventualno neke manje-više suvišne stvari (prezentirane u vidu perve- rzija) - ovde mi pade na pamet SuperZModem. Ako te i dalje zanima koja je verzija u pitanju, možeš dl-nuti odavdeN iz dira ('R:ĐIBMĐCOMĐZMODEMC.ZIP', ili '..ĐC') pa vidi... (:niklaus:)
pascal.164 niklaus,
> koja nije predviđena za njega? Jedino što stvarno može da napravi > problem su duplo otvoreni fajlovi i programi pisani da preuzimaju > delove sistema. Za SHARING pod DV(/X)-om se ti uopšte ne moraš brinuti, kao ni za ubrzavanje rada sa diskom i sličnih stvari, koje inače dobijaš (doduše, u lošijem stanju) u obliku raznih DOS utility-ja. (:niklaus:)
pascal.165 niklaus,
> A kako program može da sazna da je pod DV-om? > > RemoteAcess (BBS program) to radi. Kad čeka da se javi sledeći Radi i ZBTET, naprimer. (: Ako nemaš "DOS Refference" obavezno ga nabavi (tamo ćeš na par mesta naći dosta stvari vezanih za DV/X, uključujući i detekciju). Imao sam žlju da to ovde napišem, međutim nisam našao jedan DOS program (odnosno za DV(/X) ) koji se buni ako nije izvršen iz DV DOS prozora, a DOSRef nemam kod kuće. (:niklaus:) P.S. Inače 'jedan program' se zove CRON*.* i ima ga na FON (možda i ovde, ali nisam siguran), a uz sebe ima source, doduše bez _tog_ vi- talnog heder-fajla. Služi za inicijalizaciju više DV taskova pozivanjem dotičnog programa iz DOS prozora (zanimljivo). Da bi ga i mi (smrtnici) mogli nedostaju (barem meni) sledeće bibliotekice: <tvapi.h> - po source-u ja bih ovo trebao da imam uz svoj TC 2.0 (MS C). "pif.h" - po mojoj proceni služi za rad sa DVP datotekama (jer je moguće pozivanje programa i na osnovu njihovog DesqView PIF-a) "getopt.h" - pitaj Boga čemu služi (možda je tu ono - int DVInit() iz koje se vraća 0, ako se ne CRON poziva iz DV)
pascal.166 djelovic,
> <tvapi.h> - po source-u ja bih ovo trebao da imam uz svoj > "pif.h" - po mojoj proceni služi za rad sa DVP datotekama > "getopt.h" - pitaj Boga čemu služi Ovo su include datoteke iz BC++ paketa.
pascal.167 niklaus,
> P.S. Inače 'jedan program' se zove CRON*.* i ima ga na FON (možda Sad pogledah - zove se DVCRON21.ZIP. Obavezno ga snimi (probaj. I source naravno - poučan je. (:niklaus:) P.S. Pogledao sam u svom spisku sa SEZAMovog dira i - nema ga. Upućujem poziv bulaji... (:
pascal.168 v.nesic,
> A kako program može da sazna da je pod DV-om? Preko nekog interapta, imaš u onom Ralf Braunovom spisku interapta sve što može da ti zatreba samo je jako konfuzno. DV je uglavnom pod 15h, ali pogledaj i ostale.
pascal.169 v.nesic,
> Za SHARING pod DV(/X)-om se ti uopšte ne moraš brinuti, > kao ni za ubrzavanje rada sa diskom i sličnih stvari, koje inače > dobijaš (doduše, u lošijem stanju) u obliku raznih DOS utility-ja. Ako otvorim dva taska koja intenzivno menjaju jedan te isti fajl koristeći interne bafere imam šta da brinem, a nemam više ničeg korisnog u tom fajlu :(
pascal.170 niklaus,
>> <tvapi.h> - po source-u ja bih ovo trebao da imam uz svoj >> "pif.h" - po mojoj proceni služi za rad sa DVP datotekama >> "getopt.h" - pitaj Boga čemu služi > > Ovo su include datoteke iz BC++ paketa. Sve tri? Šalji u mail, please (ako ne zahteva ++, kao što ne bi trebalo). (:niklaus:)
pascal.171 niklaus,
> Ako otvorim dva taska koja intenzivno menjaju jedan te isti fajl > koristeći interne bafere imam šta da brinem, a nemam više ničeg > korisnog u tom fajlu :( Pa ispričaj mi detalje - šta ti se dešava? (:niklaus:)
pascal.172 v.nesic,
> Pa ispričaj mi detalje - šta ti se dešava? Najbanalnije, uzmeš qedit i njime u dva različita taska otvoriš isti fajl i menjaš ga, ali u jednom taku pišeš jedno, u drugom drugo. Pošto qedit drži ceo tekst u memoriji na disku će ti promene koje su uneo u tasku koji je poslednji zatvoren i to je najmanja šteta koja može da ti se desi. Da sada ne vadim programe iz malog mozga, razmisli šta se dešava kada bi umesto qedita startovao neko čudo koje deo falja drži u memoriji, pa kad ga obradi zapiše, pa malo produži fajl, pa ga malo skrati... Ako programi ne rade zaključavanje slogova ili bar ekskluzivno otvaranje fajlova koje menjaju možeš da ne bude ništa, da imaš nekonzistentne podatke ili pogubljene klastere u najgoroj varijanti.
pascal.173 pedjak,
> Elem, nabavih .TPU za sviranje ´╗Îmodula i sada se pitam nesto: Kako se zove taj TPU ?
pascal.174 isekulovic,
>> A kako program može da sazna da je pod DV-om? Ima negde :) na sezamu unit mulaware, koji prepoznaje win,dv i još ponešto. Ako se dobro sećam ima i sors.
pascal.175 broker,
> P.S. Inače 'jedan program' se zove CRON*.* i ima ga na FON > (možda i ovde, ali nisam siguran), a uz sebe ima source, > doduše bez _tog_ vi- Potrazicu ga. Mnogo hvala. Konci se sve brze odmrsuju :) broker
pascal.176 broker,
Nekome sam obecao funkcije za formatiranje datuma i vremena za TP. Evo, uz ovu poruku sam zakacio datoteku sa sorcetom Unit-a i malim demoom. Funkcije su vrlo zgodne jer omogućavaju da se datum i vreme ispišu u proizvoljnom formatu. Jednostavno se u string stave makroi koji će biti zamenjeni odgovarajućim podacima. Nadam se da će nekome biti od koristi. Pozdrav, brokerč38:101/101%setnet.oreska str100.zip
pascal.177 niklaus,
>> Elem, nabavih .TPU za sviranje ´╗Îmodula i sada se pitam nesto: > > Kako se zove taj TPU ? U stvari je OBJ - dakle može i C i Pas. (: Još ga nisam isprobao, ali to može samo ili da radi (da peva) ili ne. (: (:niklaus:)
pascal.178 .ristan.,
Zdravo, Evo i mog prvenca u Vašoj konferenciji. U multitasking operacionim sistemima se za pristup svakog taska zajedničkim resursima koristi tehnika semafora. Task koji prvi "uzme" npr. štampač ili file postavi semafor ( crveno ) i kad mu više ne treba on ga vrati ( zeleno ). Za to vreme ostali ( pa i oni VIŠEG prioriteta ) čekaju na red. Time se postiže ekskluzivnost pristupa. Kako Vaš-Naš DOS nije napisan za takve primene on na ćoravo uzima šta stigne i brlja kao prase. Zato pomaže samo jednostruko startovanje DOS-a recimo preko taska koji tu jedno- strukost kontroliše. Pozdrav svima
pascal.179 .bale.,
> primene on na ćoravo uzima šta stigne i brlja kao prase. Zato pomaže Lepo rečeno! :-)
pascal.180 a.kircanski,
_-=> Nabavi program ADDPORT ili ADD34 ili sl. i staruj ga. _-=> Zatim iz dosa uradis echo OVDE BOLE >COM3.Jedini problem _-=> je sto na adrese 0:404h i 0:406h treba upisati adrese kom. _-=> portova kako bi BIOS bio u stanju da koristi com 3 i 4 a to (izvinite, sto odgavaram na stare poruke, ali dugo sam bio u kanadi, pa sam skino sve iz pc.prog.3/pascal) Imam ja taj addport, i on je by me.:-) Samo treba da se promeni nekoliko lokacijica u memoriji i sve je OK. PS poslacu ako je neko zainteresovan. sale.
pascal.181 bearboy,
> "verzija k'o verzija" , odn. nova verzija neće doneti ništra > extra novo. Nemoj tako :) Evo, onaj opis u ZMODEMC je iz '86, pa nema opis za Zmodem sa 32-bitnim CRC, etc. Sad se samo nadam da na mestu CRC-a ima 2 bajta viska i nista vise ;)
pascal.182 niklaus,
>> "verzija k'o verzija" , odn. nova verzija neće doneti ništra >> extra novo. > > Nemoj tako :) Evo, onaj opis u ZMODEMC je iz '86, pa nema opis za > Zmodem sa 32-bitnim CRC, etc. Sad se samo nadam da na mestu CRC-a > ima 2 bajta viska i nista vise ;) Pa, to je nešto drugo. Vremenom je po računarima širom sveta preovladao CRC-32 ZModem protokol - zbog veće sigurnosti naravno (štaviše kod ovakvih čeksum provera verovatnoća greške je veoma bliska nuli - za ceo aktivni modema- ški život, ne bi trebalo išta liše da ti se desi). (: Druga stvar je što i dan danas u raznim kom. programima sem CRC-32 postoji i CRC-16 Zmodem (npr. Telemate koji ga uključuje po potrebi, odnosno zavisno od pošaljioca). Treća stvar je što je '86 ipak bila pre nekih 7 god. (: (:niklaus:)
pascal.183 oduz,
Kako da preuzmem INT 2Fh tako da ako je na ulazu AX=0200h na izlazu iz interapta AX bude FF00h? Ovo pitam bas za INT 2Fh zbog toga sto ista rutina koju kacim na INT 60h radi, a kada je zakacim (uz odredjene modifi- kacije) na INT 2Fh ne radi. Ogi
pascal.184 mjova,
> Kako da preuzmem INT 2Fh tako da ako je na ulazu AX=0200h > na izlazu iz interapta AX bude FF00h? Ovo pitam bas za INT > 2Fh zbog toga sto ista rutina koju kacim na INT 60h radi, > a kada je zakacim (uz odredjene modifi- kacije) na INT 2Fh > ne radi. ne znam kako je to rešeno u paskalu, ali verovatno nije daleko od rešenja ugrađenog u C. naime, o tome je bilo dosta diskusije u nekoj od ovih tema pa prelistaj cccc. problem je što se funkcije deklarisane sa interrupt smeštaju između push 'all' i pop 'all' (ovo 'all' je 'svi registri'). u tom slučaju kad se popuni neki registar u toj rutini on zapravo ne utiče na izlaz jer se pre jedne iret povrate (bljuagrrhh ;) svi registri u stanje pre ulaska. e, sad, to kvari koncepciju interapta koji treba da vrati izvesne podatke u nekim registrima. u C-u ima nekoliko rešenja, a pošto sam o jednom (težem ;) pisao jer nisam bio baš upućen u neke detalje, onda mogu da sad ukratko navedem šta je elegantnije rešenje. void interrupt far intNO(bp, di, si, ds, es, dx, cx, bx, ax) { ax= 0; } ono što je navedeno između zagrada () nisu sadržaji registara, već su to promenljive 'kao' i svake druge. 'kao' zato što se na ovaj način 'ciljaju' sadržaji registara na steku, pa se, razumljivo, mogu podesiti potrebni sadržaji. procedure IntProc(Flags, CS, IP, AX, BX, CX, DX, SI, DI, DS, ES, BP: Word); dakle, vrlo je slično C-u, osim bogatijeg izbora registara. no, pretpostavljam da nećeš menjati registre CS i IP. Mada, zašto da ne? obrati pažnju da su izvesni registri specijalne namene, pa im vrednost moraš čuvati. naravno, kako je to u C-u, promenljive će biti 'adresirane' preko BP, pa se meni to rešenje i ne dopada previše, ali za 'proveru algoritma' može lepo da posluži. fraza 'provera algoritma' je vrlo zanimljiva. njom se mogu izbeći razni pritisci koji teže pisanju programa na neki drugi način, možda onakav kakav bi se dopao izvoru pritiska. prvi put sam je čuo od gww.-a koji je pisao u C-u samo kad 'proveri algoritam' u paskalu ;). toliko mi se dopada da je i sam koristim da odbijem slutnje...
pascal.185 drassa,
>>> Kako da preuzmem INT 2Fh tako da ako je na ulazu >>> AX=0200h na izlazu iz interapta AX bude FF00h? Ovo pitam >>> bas za INT 2Fh zbog toga sto ista rutina koju kacim na >>> INT 60h radi, a kada je zakacim (uz odredjene modifi- >>> kacije) na INT 2Fh ne radi. Možda pomogne ovo: program tajitaj; var r:registers; axr,..r,..r,..r:word; Procedure blabla (var axr,..r,..r..r :word); var Boolean; r: registers; ... begin ... intr($2fh); axr:=r.ax; ako je axr=0200h onda axr:=ff00h; r.ax:=axr; intr($2fh); axr:=r.ax; kraj uslova kraj ili nastavak procedure... Nadam se da je pomoglo iako je malko naivno rešenje, ali bi trebalo da radi :)
pascal.186 pedjak,
> interapta AX bude FF00h? Ovo pitam bas za INT 2Fh zbog toga sto ista > rutina koju kacim na INT 60h radi, a kada je zakacim (uz odredjene > modifi- kacije) na INT 2Fh ne radi. 'Ajde nam bači ovde tu rutinu, pa da vidimo u čemu je problem.
pascal.187 bearboy,
> Vremenom je po računarima širom sveta preovladao CRC-32 ZModem > protokol - zbog veće sigurnosti naravno (štaviše kod ovakvih > čeksum provera verovatnoća greške je veoma bliska nuli - za ceo > aktivni modema- ški život, ne bi trebalo išta liše da ti se > desi). (: Što se CRC-a tiče, ja sam njega (a i druge metode za proveru/korekciju grešaka) pručavao dosta detaljno i došao do rezultata koji nisu zavidni... Jes' da je verovatnoća mala, ali je još uvek veća nego što bi trebalo. PS. Ako treba, mogu staviti na Sezam svoje programče koji testira CRC (i 16 i 32-bitnu varijantu), checksum i još neke manje poznate metode...
pascal.188 peca.st,
!-> PS. Ako treba, mogu staviti na Sezam !-> svoje programče koji testira CRC (i 16 i !-> 32-bitnu varijantu), checksum i još neke !-> manje poznate metode... Treba. Peđa.
pascal.189 v.nesic,
> PS. Ako treba, mogu staviti na Sezam svoje programče koji testira CRC (i 16 > i 32-bitnu varijantu), checksum i još neke manje poznate metode... Ako nije tajna, bolje okači rezultate testova :)
pascal.190 a.kircanski,
hi. Nabavio sam (najzad) TPU koji podržava com3 i com4. Zove se ltcomm, ili tako nekako. Naime treba mi pomoć, evo malo kvota iz help fajla, za koje mi treba objašnjenje: ------------------------------=-=-=-=-=-=-=------------------------------ FUNCTION FUNCTION ________ Changes one or more of the critical parameters for port COM3 or COM4. ------------------------------=-=-=-=-=-=-=------------------------------ critical parameters?? Šta mu to dođe? dalje: ------------------------------=-=-=-=-=-=-=------------------------------ DECLARATION DECLARATION ___________ Portchange(CPort:integer; NewBase:word; NewIrq, NewVector:byte) RESULT TYPE RESULT TYPE ___________ boolean REMARKS REMARKS _______ This function must be used before the port is opened to be effective. To leave any of the parameters at its default value, make the corresponding entry 0. Note that vector is a vector number, not an address or pointer. The irq parameter should not be taken to be the irq (interrupt request number), but rather the irq mask. For example, the correct value for irq4 is NOT 4, but a byte in which bit 4, using INTEL's bit numbering, is set to a value of 1. Thus, to use irq priority 4 as the irq for either COM3 or COM4, you would specify $10 as the value of irq when calling PortChange. If you intend to change the default irq settings, you MUST also make a corresponding change to the vector number. See the preceding section about using COM3 and COM4 for additional details. Failure to follow this rule may make the port appear to be non-functional. The PortChange function does NOT check to determine that you have provided both an IRQ mask AND a new vector number. PortChange returns a value of TRUE if the change was successful, false otherwise. --------------------------------=-=-=-=-=-=-=---------------------------- I šta je IRQ? (znam da je interrupt request number, al šta znači) I kako ja da mu promenim adresu i to da radi, ako imam com4? evo i example... ---------------------------------=-=-=-=-=-=-=------------------------- EXAMPLE EXAMPLE _______ Var Newbase : word; Newirq : byte; NewVector : byte; Begin Newbase := $03E8; Newirq := $10; NewVector := $0C; if PortChange(3, Newbase, Newirq, NewVector) then Writeln('Port 3 Changed') else Writeln('Error changing Port 3'); end;
pascal.191 oduz,
>**> naravno, kako je to u C-u, promenljive će biti 'adresirane' >**> preko BP, pa se meni to rešenje i ne dopada previše, ali za >**> 'proveru algoritma' može lepo da posluži. Znaci to bi islo nesto ovako: š$M 1024,0,0ć Uses Dos; Var OldInt2FP : Pointer; Procedure DoOldInt(IntPt : Pointer); INLINE ( $5B/ šPOP BXć $58/ šPOP AXć $89/ šMOV SP,BPć $EC/ $5D/ šPOP BPć $07/ šPOP ESć $1F/ šPOP DSć $5F/ šPOP DIć $5E/ šPOP SIć $5A/ šPOP DXć $59/ šPOP CXć $87/ šXCHG SP,BPć $EC/ $87/ šXCHG ŠBPĆ,BXć $5E/ $00/ $87/ šXCHG ŠBP+2Ć,AXć $46/ $02/ $87/ šXCHG SP,BPć $EC/ $CB); šRETFć Procedure Int2FHandler(Flags,CS,IP,AX,BX,CX,DX,SI,DI,DS,ES,BP:Word);interrupt; Var AH, AL : Byte; begin AH := Hi(AX); AL := Lo(AX); if (AH = $02) and (AL = $00) then begin asm mov AX,$00FF mov ŠBP+16Ć,AX end end else DoOldInt(OldInt2FP); end; BEGIN GetIntVec($2F, OldInt2FP); SetIntVec($2F, čInt2FHandler); Keep(0); END. Ogi
pascal.192 mjova,
> Znaci to bi islo nesto ovako: > INLINE ( > $5B/ šPOP BXć rekoh već da ne radim ništa u paskalu, ali nema veze (samo se ograđujem od mogućih bagova ;) ne znam zašto koristiš inline kad mi se čini da možeš sasvim lepo da pišeš u čistom asembleru i da to proteraš kroz paskal (asm). ako ti nije problem, baš me zanima. drugo, oni registi koji se navode u liniji deklaracije funkcije su zapravo promenljive čiji će sadržaj biti na ulazu jednak sadržajima registara pri prekidu, a vrednosti koje se u njima nalaze na kraju prekida biće postavljene u odgovarajuće registre pri izlazu. naime, svaka promena vrednosti sadržaja te promenljive *indirektno* će izazvati promenu tog registra. adresa promenljive je zapravo adresa na steku gde se nalazi njen sadržaj. aman ;), ni meni više nije jasno šta sam počeo da pišem ;) > if (AH = $02) and (AL = $00) then > begin > asm > mov AX,$00FF << > mov ŠBP+16Ć,AX << ovo nije potrebno. > end > end a nije potrebno jer je dovoljno da napišeš AX:= $00FF. možda je mehanizam prevođenja drugačiji, ali uz ovolike sličnosti sumnjam. tako da mislim da se ona fn za obradu interapta može napisati ovako: > Var > AH, AL : Byte; > begin > AH := Hi(AX); > AL := Lo(AX); > if (AX = $0200) then > AX:= $00FF > else > DoOldInt(OldInt2FP); > end; nemam baš vremena da probam, ali me zanima - u c-u radi sasvim dobro! treće, nije mi jasna upotreba procedure DoOldInt, da li je neophodna?
pascal.193 oduz,
>**> ne znam zašto koristiš inline kad mi se čini da možeš sasvim >**> lepo da pišeš u čistom asembleru i da to proteraš kroz >**> paskal (asm). ako ti nije problem, baš me zanima. Ako si primetio nigde nema BEGIN END ;) sto znaci da BP ne sredjuje nista sa stekom...Moglo je i u asembleru, ali bi onda (verovatno, nisam ja napisao tu proc. a nisam ni imao bas mnogo vremena da razbijam glavu oko toga - rad- ila mi je posao) bilo valjda malo vise posla. >**> registara pri prekidu, a vrednosti koje se u njima nalaze na >**> kraju prekida biće postavljene u odgovarajuće registre pri >**> izlazu. naime, Nisam znao :(( ... Ja mislio da mozes da ih menjas i koristis ali da ih na kr- aju vrati kao sto su bili pre ulaska... :( >**> a nije potrebno jer je dovoljno da napišeš AX:= $00FF. možda >**> je mehanizam prevođenja drugačiji, ali uz ovolike sličnosti >**> sumnjam. Dovoljno je prosto AX := $00FF...ALi, zasto ici lakse kad moze i teze ? ;) >**> treće, nije mi jasna upotreba procedure DoOldInt, da li je >**> neophodna? Pa, ukoliko se ne radi o funkciji koju koristi moj prg. mozda se radi o fun- kciji koju koristi neki drugi prg. Zato i pozivam "stariji" hendler. ODuzlevski
pascal.194 bearboy,
>! -> PS. Ako treba, mogu staviti na Sezam >! -> svoje programče koji testira CRC (i 16 i >! -> 32-bitnu varijantu), checksum i još neke >! -> manje poznate metode... > > Treba. Elem, evo programa ALI - juzer interfejs i nije neki (nema ga ;) sve dugmice cete morati da pohvatate (ima ih oko desetak). Ova verzija konkretno sluzi za testiranje 32bitnog CRC-a. Ako pokrenete program bez parametara, reci ce vam sta treba da se upise.
pascal.195 bearboy,
>> PS. Ako treba, mogu staviti na Sezam svoje programče koji >> testira CRC (i 16 i 32-bitnu varijantu), checksum i još neke > manje poznate metode... > > Ako nije tajna, bolje okači rezultate testova :) Pa ovako - Kad sam ga pustio da progura 10 mega pod VRLO lošim kvalitetom linije (zapravo nije bio problem u 'lošosti' linije već što sam postavio parametre da đubre nailazi u talasima), i sa blokovima od 256 bajtova, bilo 60 nedetkovanih grešaka.
pascal.196 paki,
Kako da u Paskalu deklarišem static promenljivu? Znači, treba mi promenljiva koja će zadržavati svoju vrednost i kada izađem iz funkcije u kojoj je definisana. Jedino što mi pada na pamet su globalne promenljive.
pascal.197 peca.st,
!-> Elem, evo programa Gde je? :( Peđa.
pascal.198 mjova,
> Pa, ukoliko se ne radi o funkciji koju koristi moj prg. > mozda se radi o fun- kciji koju koristi neki drugi prg. > Zato i pozivam "stariji" hendler. da, to je jasno, ali zar mora baš onako? u C-u to ide nekako ovako: void interrupt new_int_16(tra l a l a l a l registri) { // aok je moje onda đoram if(ax == 0x01) { drljaj nešto(); cx= 100; < - nizak udarac u sred steka ;) return; } // ne zanima me ništa, obradi strari old_int_16(); } nisam siguran da li treba navesti registre redom u onoj old_int_16(), ali za pristup 'bez uputstva' i ovo je super ;)
pascal.199 quale,
Interesujeme da li je neko imao iskustva sa: Skeniranjem, Svjetlosnom olovkom dakle podrazuš,ijeva s, Thanx in advance:)
pascal.200 sbrk,
>> Kako da u Paskalu deklarišem static promenljivu? >> Znači, treba mi promenljiva koja će zadržavati svoju vrednost i >> kada izađem iz funkcije u kojoj je definisana. Jedino što mi pada >> na pamet su globalne promenljive. Ako pitanje ima čisto teorijsko značenje, onda - žao mi je. Mislim da to u TP-u može da se izvede samo preko glob.promenljivih. Ako odgovor treba da posluži u praksi - šta fali dobrim, starim, glob.promenljivima?
pascal.201 asterix,
Da li funkcija u Pascal-u može da vrati pokazivač ? Function ABC (...) : nekakav_pointer ;
pascal.202 pedjak,
> Kako da u Paskalu deklarišem static promenljivu? > Znači, treba mi promenljiva koja će zadržavati svoju vrednost i > kada izađem iz funkcije u kojoj je definisana. Jedino što mi pada > na pamet su globalne promenljive. Tačno, jedino na taj način static promenljive možeš simulirati.
pascal.203 eagle,
> Da li funkcija u Pascal-u može da vrati pokazivač ? > Function ABC (...) : nekakav_pointer ; Naravno, samo je potrebno da prethodno definises tip pokazivaca, na primer: type pok=žinteger; function bezveze:pok; a ne može: function nemoguca:žinteger;
pascal.204 paki,
­> Ako odgovor treba da posluži u praksi - šta fali dobrim, starim, ­> glob.promenljivima? Ništa, ali sam mislio da bi onako bilo preglednije, lepše i ko-zna-šta-još :) Šalim se, globalne promenljive rade posao.
pascal.205 asterix,
> type pok=žinteger; > function bezveze:pok; > > a ne može: > > function nemoguca:žinteger; Da pa naravno :) da prethodno mora da se deklariše pokazivač :). Mislio sam da li je moguća konstrukcija tipa: Type pokazivac=^clan; clan=record ... end; Function nemoguca (...) ; Begin ... node^.levi:=nemoguca (...) ; ... End.
pascal.206 zokalezic,
Hi Sledeći program bi trebalo da preuzme int 21 i da odradi neki posao, međutim ovako napisan iz cuga zaglupi mašinu. E sad ako promenim interapt koji preuzima ( stavim bilo koji <> 21 ) onda radi bez problema. Zna li neko zašto ? {$B-,F-,R-,S-} {$M 1024,0,0} Program test; Uses dos,rezid; Var r:Registers; Old:Procedure; Procedure New;Interrupt; Begin Inline($9c); Old; End; Begin Swapvectors; GetIntVec($21,@Old); SetIntVec($21,@New); Keep(0); End.
pascal.207 pedjak,
> Da li funkcija u Pascal-u može da vrati pokazivač ? Može.
pascal.208 eagle,
> Sledeći program bi trebalo da preuzme int 21 i da odradi neki > posao, međutim ovako napisan iz cuga zaglupi mašinu. E sad ako > promenim U Tp-u nije baš onako jednostavno uraditi tako nešto. Proceduri koju si sklonio sa tog vektora je u najvećem broju slučajeva važan sadržaj registara, pa pre njenog poziva moraš ubaciti niz instrukcija u asembleru za skidanje sa steka sadržaja registara_pre poziva tvoje procedure. Zameni redove: inline($9C); old; procedurom DoOldInt iz poruke 8.191
pascal.209 niklaus,
(:> Elem, evo programa ALI - juzer interfejs i nije neki (nema ga (:> ;) sve dugmice cete morati da pohvatate (ima ih oko desetak). (:> Ova verzija konkretno sluzi za testiranje 32bitnog CRC-a. Ako (:> pokrenete program bez parametara, reci ce vam sta treba da se (:> upise. Nema sira? (; (;niklaus;)
pascal.210 niklaus,
(:> Kako da u Paskalu deklarišem static promenljivu? Pošto očekuješ nešto više od jednostavnog odgovora, predložiću ti nešto wadikalnije za pascal - rad sa stekom, jer to u stvari radi i C kompajler. Jedan od uslova da se stek na ovaj način bezbedno i isravno koristi, je da non-stop obraćaš pažnju na to da li neki "asm" segment koji primenjuješ za svaki PUSH ima i odgovarajući POP na kraju datog segmenta. Kako izgleda da programiraš u TP 4Win-u, i to tek od skora, "asm" sigurno ne koristiš. Mada će ti to biti dobra vežba za vežbanje "asm"-a i koncentrisanja na "sitnice" tipa PUSH&POP, štednja Code Segmenti (korišćenjem manje globalnih promenljivih)... (:niklaus:) PS Kako nemam nameru da koristim TPW (BPW), očekujem 32-bitni Pascal kompajler... (:
pascal.211 niklaus,
(:> Function nemoguca (...) ; (:> Begin (:> ... (:> nodež.levi:=nemoguca (...) ; (:> ... (:> End. Misliš li na rekurzione funkcije, koje se služe pokazivačima? I to je moguće! Primer je sastavljanje Hafmanovog stabla, kod mnogih algoritama za kompresiju. (:niklaus:) PS (za neupućene) Hafman (Huffman) stablo - binarno drvo koje se sastavlja na osnovu učestanosti pojavljivanja različitih karaktera u fajlu, koga analiziramo (a posle (de)kompresujemo). Ako da se šeta- mo kroz stablo dobijamo skraćeni kod za svaki od karaktera. Ako se iz roditeljskog stabla "skreće" u "levog" potomka, sledeći bit za reprezentaciju nekog karaktera će biti "1", a ako se "skreće" u desnog sledeći bit je "0". (ovo "1" i "0", naravno, nije dogma (; )
pascal.212 paki,
­> skora, "asm" sigurno ne koristiš. Mada će ti to biti dobra vežba za ­> vežbanje "asm"-a i koncentrisanja na "sitnice" tipa PUSH&POP, štednja ­> Code Segmenti (korišćenjem manje globalnih promenljivih)... Dobra ideja, ali ne verujem da ću je upotrebiti, bar ne u skorije vreme (već mi je dovoljno mučenje ovaj Windows ;). Možda kad se malo uhodam, pa kad dođe red i na optimizaciju programa... Thanx.
pascal.213 sbrk,
Dal' ima neko sve primere iz knjige TP6 - Kompletan vodič od O'Briena (Mikro Knjiga) na disketi? Knjigu sam kupio od Mikro Knjige odavno, a sada nemaju source na disketi.
pascal.214 ndragan,
/ ti nešto wadikalnije za pascal - Predložio bih da se dvostvuko v piše kao w, a jednostvuko kao v, ne zato što tako tveba, nego da možemo da napišemo dvostvuko gde zaista jeste tako, naprimer u reči 'watiti' (vvatiti) i slično.
pascal.215 drpr,
Haj, za sve one koji ne znaju c a želeli su da vide kako radi fejdovanje boja na ekranu u text režimu imaju fajl prikačen uz poruku. Fajl je u originalu napisao user Klisa a ja sam ga preveo i ostavio komentare tako da sad i vi možete da vidite kako se menjaju nijanse u paleti boja i da se sa tim poigravate :)) cope fade.zip
pascal.216 asterix,
Jedno skoro teorijsko pitanje :) U jednom trenutku u toku programa, poziva se rekurzivna funkcija koja može praktično da ide u dubinu rekurzivnosti dokle god veličina stack-a dozvoljava. Prekid rekurzivnosti se dešava proverom uslova koji je vezan za lokalnu promenljivu procedure koja zove rekurzivnu funkciju. Pitanje : Da li je sa stanovišta izvršavanja i racionalnog korišćenja stack-a bolje taj parametar prenositi iz jednog stepena rekurzije u drugi kao argument funckije (čime bi se možda dobilo na brzini izvršavanja) ili je bolje jednostavno koristiti taj parametar kad god je potrebno njegovim dohvatanjem tamo gde se nalazi (što bi svakako uzrokovalo koliko ja shvatam skakutanje po memoriji tamo-vamo ;) obzirom da bi on za rekurzivnu funkciju bio vidljiv, odnosno dostupan po oblasti važenja ?
pascal.217 .bale.,
> Da li je sa stanovišta izvršavanja i racionalnog korišćenja stack-a > bolje taj parametar prenositi iz jednog stepena rekurzije u drugi > kao argument funckije (čime bi se možda dobilo na brzini izvršavanja) > ili je bolje jednostavno koristiti taj parametar kad god je potrebno > njegovim dohvatanjem tamo gde se nalazi (što bi svakako uzrokovalo > koliko ja shvatam skakutanje po memoriji tamo-vamo ;) obzirom da bi > on za rekurzivnu funkciju bio vidljiv, odnosno dostupan po oblasti > važenja ? Svaka funkcija sa sobom vuče tzv. pristupnu listu, pokazivače na nelokalne promenljive. Ako tu promenljivu prenosiš kao argument rekurzivne funkcije, povećaćeš kôd za pripremu argumenata funkcije, a i više potrošiti prostora na steku, što znači usporenje. U drugom slučaju, funkcija nasleđuje pristupnu listu od procedure koja je statički obuhvata, tj. jedan isti pokazivač na tu promenljivu za bilo koju dubinu rekurzije. Dakle, ako ne buncam u 4:39 ujutro, bolje bi bilo da tu promenljivu dohvataš kao nelokalnu.
pascal.218 vvelisavljev,
žemu služe ovi kompajler prekidači u TP7 ? $P: Open String Parameters Switch $T: Type-Checked Pointers Switch Ono što piše u helpu mi nije baš najjasnije. :(
pascal.219 vvelisavljev,
Funkcija function Pos(Substr: String; S: String): Byte; je imala u ranijim verzijama Tubo Pascala jedan bag koji je bio veoma koristan. Ako je Substr = '' funkcija je, u ranijim verzijama, vraćala 1 što je bilo veoma zgodno kod raznih pretraživanja. U Turbo Pascalu 7.0 ova funkcija vraća 0 ako je Substr='' tako da moj program više ne radi onako kako je radio sa TP 6.0 :(( Ima li neko elegantnije rešenje od "rešenja" da napravim svoju funkciju POS?
pascal.220 eagle,
> Funkcija function Pos(Substr: String; S: String): Byte; > je imala u ranijim verzijama Tubo Pascala jedan bag koji je bio > veoma koristan. Ako je Substr = '' funkcija je, u ranijim > verzijama, vraćala 1 što je bilo veoma zgodno kod raznih > Ima li neko elegantnije rešenje od "rešenja" da napravim svoju > funkciju POS? Napišeš funkciju MyPos: function mypos(s1,s2:string):byte; begin if s1='' then mypos:=1 else mypos:=pos(s1,s2); end; I zameniš svako pos u tvom programu sa mypos... Zar postoji nešto elegantnije? :)
pascal.221 .bale.,
Hm, sada nije 5 ujutro, a kad sam video šta sam napisao, reko' bolje da ponovim, malo jasnije :) Ono što sam napisao za prenošenje te promenljive kao parametra, stoji. A kad iz neke funkcije koristiš nelokalnu promenljivu, koja je definisana u nekoj funkciji/proceduri koja ovu pomenutu statički obuhvata, posao povezivanja se obavlja pri samom prevođenju. Naime, nije potrebno da podatke o toj promenljivoj stavljaš na stek, već su sve informacije u samom kodu, a to su: broj "skokova" po pristupnoj listi, od *statičke* dubine ugnježdenja pomenute rekurzivne funkcije (dakle, prirodan broj) do *statičke* dubine ugnježdenja funkcije/procedure u kojoj je pomenuta promenljiva definisana (isto prirodan broj); i ofset unutar prostora na steku u kome su smeštene lokalne promenljive funkcije/procedure u kojoj je pomenuta promenljiva definisana (kako drugačije da objasnim, ako ne kucam ove kobasice? ;-) Dakle, kompajler obraćanje toj nelokalnoj promenljivoj prevodi kao niz skokova (ali nezavisan od dubine rekurzije) preko pokazivača i na kraju jedno indeksno adresiranje. Dakle, za slučaj paskala, u kome je opseg važenja statički, to tako izgleda, otprilike. Na steku se nalaze, u tzv. aktivacionom zapisu, samo lokalne promenljive _aktivacije_ funkcije/procudure, njeni argumenti i mesto za rezultat, malo prostora za rad, a za vraćanje kontrole pozivajućoj funkciji/proceduri se koristi ista pristupna lista koja se koristi za nelokalne promenljive. Ovo poslednje je isto u aktivacionom zapisu, mada postoje poboljšanja za pristup nelokalnim promenljivama (objasniću ako te interesuje), tako da je, u svakom slučaju, bolje da tu promenljivu dohvataš sa strane.
pascal.222 .bale.,
> $T: Type-Checked Pointers Switch Ovo je valjda za proveru tipova podataka na koje pokazuju pokazivači, pri dodelama, poređenju i sl.
pascal.223 janko,
> lista koja se koristi za nelokalne promenljive. Ovo > poslednje je isto u aktivacionom zapisu, mada postoje > poboljšanja za pristup nelokalnim promenljivama (objasniću > ako te interesuje), tako da je, u svakom slučaju, bolje da > tu promenljivu dohvataš sa strane. Mož' da bidne, al' ne mora da znači. Kompajleri su prilično pametni, pa umeju da prepoznaju da li funkcija pristupa nelokalnim promenljivama, pa ako uopšte ne pristupa, fino, unutar aktivacionog zapisa uopšte ne ubacuju pristupnu vezu do više funkcije, niti generišu kod koji to treba da obezbedi. U tom slučaju, i ako je kritična promenljiva jednake veličine kao pointer, ne može se primetiti ni promena u potrošnji memorije na steku, a, čak, u zavisnosti od implementacije, može da se dobije u brzini. žesto je višestruko pristupanje nelokalnoj promeljivoj operacija koja troši više računarskog vremena od jednog kopiranja i, posle, pristupa lokalnoj promenljivoj. To zavisi od implementacije, kvaliteta optimizacije koda same funkcije, i, naravno, procesora (na 80x86 su neke optimizacije nemoguće zbog premalog broja registara). Odgovor je, dakle: Zavisi od toga šta radiš. Ako je potencijalna nelokalna promenljiva jedna jedina takva u funkciji, i ako nije velika, onda je isplativo i da se prenosi kao parametar funkcije. Ako je funkcija takva da treba da menja nelokalnu promenljivu, onda, potencijalna nelokalna mora da bude nelokalna. Ako je potencijalna nelokalna takva, da će kopiranja potrošiti više vremena nego rad sa njom (oko ovoga se, u praksi, ne vredi zamajavati), ili, da će se previše angažovati prokleto mali stek na 80x86 procesorima, (vrlo bitno ograničenje, na to treba paziti uvek) i onda je preporučljivo da nelokalna ostane nelokalna.
pascal.224 fole,
Da li se neko bavi Paradox Engine-om za TP (BP)?
pascal.225 .bale.,
Al' ga razradi! :)
pascal.226 asterix,
> promenljivama (objasniću ako te interesuje), tako da je, u svakom Interesuje me :)
pascal.227 predragd,
> Da li se neko bavi Paradox Engine-om za TP (BP)? Bavim se. Peđa.
pascal.228 .bale.,
>> promenljivama (objasniću ako te interesuje), tako da je, u svakom > > Interesuje me :) OK, daklem. Da prvo kažem da sam napravio greščicu kada sam (ako se dobro sećam) napisao da se u paskalu (u standardnoj implementaciji) poklapaju kontrolna veza i pristupna veza nelokalnim promenljivama. To važi u jezicima sa dinamičkim opsegom važenja (na primer, lisp), u paskalu ne. Najbolje da dâm primer, ne vredi da pišem onolike kobasice. Na primer, dat je program sledeće strukture: A def: a, x B ... endB C def: x D ... x, a ... endD E ... a, v D ... endE endC endA Kada se pristup nelokalnim promenljivama vrši preko pristupnih veza, pri prevođenju se može saznati, na primer, da će se u funkciji E pod imenom "a" podrazumevati promenljiva "a" definisana u A, dva nivoa iznad (jedan skok preko pristupnih veza, tj. jednostruke liste pokazivača, jer prvi u listi pokazuje na jedan statički nivo iznad), sa tim-i-tim ofsetom. Ukoliko se unutar E poziva funkcija D, to će se prevoditi tako da se izračuna broj potrebnih skokova niz pristupne veze (broj skokova = nivo E - nivo D + 1 = 1), pa se generiše kôd koji se "spusti" taj broj puta niz pristupne veze i tamo gde se zaustavi, to je aktivacioni zapis na koji će pokazivati pristupna veza u aktivacionom zapisu funkcije D (tačnije, pokazivaće na sledeći pokazivač u listi, a koji se nalazi u tom aktivacionom zapisu), a u kodu za D je već definisan pristup nelokalnim promenljivama, kao u opisanom slučaju (E, a). Ukoliko se šalju funkcije kao parametri, i njihove pristupne veze moraju da se šalju. Drugi način je pomoću tzv. displeja. Displej predstavlja niz pokazivača na najsvežije aktivacione zapise na pojedinim statičkim nivoima ugnježdavanja. Na primer, ako je E na nivou 3, displej[1] i displej[2] će pokazivati na poslednje aktivacije funkcija na nivoima 1 i 2, redom, a koje statički obuhvataju E (ne može a da ne obuhvataju). Algoritam ažuriranja sadržaja displeja je sledeći: Kada se aktivira funkcija na statičkom nivou ugnježdavanja "i", radi se sledeće: 1) Sačuva se stara vrednost displej[i] u aktivacionom zapisu, 2) U displej[i] se smešta adresa novog (najsvežijeg) aktivacionog zapisa. Pri povratku se sačuvana vrednost vraća u displej[i]. To je to, valjda nisam negde pobrljavio :)
pascal.229 kenza,
Hi! Zna li neko kako da odredim gde mi pocinje heap? Treba mi u stvari da odredim da li mi pokazivac pokazuje na heap. Program mi javlja run time error 204-invalid pointer operation, help kaze da je to zato sto radim dispose od nil-a ili sto ide dispose pokazivaca koji ne pokazuje na heap.prvo nije , kako da saznam da li pokazivac pokazuje na heap? Hvala & cu
pascal.230 eagle,
> Zna li neko kako da odredim gde mi pocinje heap? > Treba mi u stvari da odredim da li mi pokazivac pokazuje na > heap. Program mi javlja run time error 204-invalid pointer > operation, help kaze da je to zato sto radim dispose od nil-a > ili sto ide dispose pokazivaca koji ne pokazuje na heap.prvo > nije , kako da saznam da li pokazivac pokazuje na heap? Uđeš u editor , ukucaš "heap" , pritisneš Ctrl-F1 i eto... ;) Dakle, imaš promenljive: Heaporg - pointer na početak heap-a Heapend - pointer na kraj heap-a Heapptr - pointer na vrh heap-a Gore pomenuta poruka se javlja kada pointer ne pokazuje na lokaciju između početka i vrha heap-a, što se lako utvrđuje: if seg(pž)*16 + ofs(pž) in Šseg(heaporgž)*16 + ofs(heaporgž) .. seg(heapptrž)*16 + ofs(heapptrž)Ć then Jeste; Btw, zašto ti ovo treba? :)
pascal.231 valhala,
>###### I sta je IRQ? (znam da je interrupt request number, al >###### sta znaci)
pascal.232 kenza,
(;> if seg(pC)*16 + ofs(pC) in (;> Sseg(heaporgC)*16 + ofs(heaporgC) .. seg(heapptrC)*16 + (;> ofs(heapptrC)C then Jeste; .................... (;> Btw, zasto ti ovo treba? :) Pisem neki program koji koristi TOT (TechnoJock'sObjectToolkit) za menije , maske i uopste user-interface.I onda se javlja error 204 kada dva puta za redom pozovem istu masku za unos?! Ako pozovem tu masku samo jednom , sve je o.k., isto je sve u redu ako pozovem neki drugi deo tot-a izmedju 2 poziva "problematicne" maske. Hvala ti puno ;)
pascal.233 peca.st,
!-> Pisem neki program koji koristi TOT Ma TOT je i inače prilično bagovit, pogotovu po pitanju hot-keya. Bez veze što su uradili tako puno dobrih stvari, ali dosta površno i izgleda bez testiranja. Peđa.
pascal.234 niklaus,
(:> Pisem neki program koji koristi TOT (:> (TechnoJock'sObjectToolkit) za menije , maske i uopste (:> user-interface.I onda se javlja error 204 kada dva puta za (:> redom pozovem istu masku za unos?! Ako pozovem tu masku samo (:> jednom , sve je o.k., isto je sve u redu ako pozovem neki (:> drugi deo tot-a izmedju 2 poziva "problematicne" maske. Ako ti eagle ništa ne kaže, ja kažem sledeće: "Probaj sa dummy procedurom, onaj fazon begin end;" Ajd' probaj, lako je... (:niklaus:)
pascal.235 drpr,
Danas sam nešto muljao oko pascala i naiđoh u O'Brien-ovom vodiču na funkciju PORT ali nigde ne nađoh da li je ona zamena za IN/OUT u asembleru ili šta je? U On line helpu pascala ne piše ništa o ovoj fj-i a TP je kompajlira bez problema pa ide pitanje zna li neko o ovome ponešto? cope
pascal.236 bole,
Hi ljudi, evo ja napisah jedan prg. A to je Modul Player zvani BOMP (BOlex Modul Player) bomp.arj
pascal.237 eagle,
> Danas sam nešto muljao oko pascala i naiđoh u O'Brien-ovom > vodiču na funkciju PORT ali nigde ne nađoh da li je ona zamena > za IN/OUT u asembleru ili šta je? U On line helpu pascala ne > piše ništa o ovoj fj-i a TP je kompajlira bez problema pa ide > pitanje zna li neko o ovome ponešto? To ti se ovako radi: Napišeš jednostavan programčić tipa begin portŠ1Ć:=portŠ2Ć; end. prevedeš ga, i pogledaš .exe nekim disassemblerom (ili debugom). Parče koda za ovaj red programa izgleda ovako: IN AL,02 OUT 01,AL Btw, TP kompajler tretira port kao niz, ne kao funkciju. Dakle: y:=portŠxĆ je zamena za IN portŠxĆ:=y je zamena za OUT
pascal.238 dejanr,
>> Danas sam nešto muljao oko pascala i naiđoh u O'Brien-ovom >> vodiču na funkciju PORT ali nigde ne nađoh da li je ona zamena >> za IN/OUT u asembleru ili šta je? Jeste. Umesto što bi rekao iz asemblera OUT 12, 123, kažeš port[12]:=123 Isto tako i za IN, samo što fiktivni niz port[] stoji sa desne strane :=
pascal.239 kenza,
(;> Ma TOT je i inace prilicno bagovit, (;> pogotovu po pitanju hot-keya. Bez veze sto su Hot Keyove (;) sam izbacio, a bug po bug ispravljam... Beyond 2000 ce da bude o.k. ;)
pascal.240 kenza,
(;> Ako ti eagle nista ne kaze, ja kazem sledece: (;> "Probaj sa dummy procedurom, onaj fazon begin end;" Ona f-ja koju mi je Eagle ostavio izgleda da je resila stvar. Dummy sam vec ranije probao, i nije vredelo ;)
pascal.241 a.kircanski,
_-=> Hi ljudi, evo ja napisah jedan prg. A to je Modul Player _-=> zvani BOMP (BOlex Modul Player) Axa, a koji unit si koristio? Nemoj samo da kažeš da si sam napisao algoritam za mod datoteke ;-) sale.
pascal.242 ognjen,
Evo, i ja poceh da malo ucim PASCAL, ali mi nesto nikako ne ide u glavu (valjda od posledica BASICa ;) : WHILE A<=3 DO itd. !!!! Dok je A manje ili jednako 3 radi to i to i to... (ovo je ok, ne razumem ovo sto sledi: ) FLAG:=TRUE WHILE FLAG DO blabla !!!! Ovo ne kapiram! Zar ne bi trebalo da stoji WHILE FLAG:=TRUE DO blabla??? Dakle, dok je flag Ok, radi blabla, a, kad se flag promeni pici dalje, zar ne? Ali, po datom primeru, reklo bi se, NE! Gornja petlja bi onda bila DOK_JE_FLEG_RADI_blabla?!? Dok je flag, STA? Dok je flag TRUE ili FALSE ili STA???? HELP!
pascal.243 bulaja,
│FLAG:=TRUE │WHILE FLAG DO blabla │!!!! │Ovo ne kapiram! Zar ne bi trebalo da stoji WHILE FLAG:=TRUE DO blabla??? │Dakle, dok je flag Ok, radi blabla, a, kad se flag promeni pici dalje, │zar ne? Ali, po datom primeru, reklo bi se, NE! Gornja petlja bi onda │bila DOK_JE_FLEG_RADI_blabla?!? Dok je flag, STA? Dok je flag TRUE ili │FALSE ili STA???? HELP! └─── WHILE petlju posmatraj kao while (<uslov>), gde je <uslov> logicki izraz, sto znaci da njegove vrednosti moug biti true ili false. Potpuno je svejedno da li je taj logicki izraz prost (npr. ispituje se stanje samo jedne promenljive tipa Boolean kao u tvom slucaju) ili slozen (kao sto je (a<=3) - vazan je rezultat logickog izraza. Konkretno, u tom tvom primeru petlja ce se vrteti dokle god je vrednost izraza (flag) jednaka true, sto prakticno znaci isto sto i while (flag == true).
pascal.244 peca.st,
!-> WHILE FLAG:=TRUE DO blabla??? Dakle, dok !-> je flag Ok, Prvo što moraš da naučiš je da razlikuješ naredbu dodele ( := ) i logičko jednako ( = ) Dakle, ovo što si napisao gore nikako ne bi moglo da stoji. Moglo bi da stoji While flag = true do blabla ali nije potrebno jer je "While flag = true" ekvivalentno sa "While flag", a "While flag = false" ekvivalentno sa "While not flag". Ako ti je lakše, slobodno možeš da piše tako, potpuno je svejedno. Ali, ne zaboravi, a := b NIJE ISTO ŠTO I a = b Peđa.
pascal.245 peca.st,
!-> while (flag == true). Hm, hm, neće biti "==" :) (to bi bilo za C) Peđa.
pascal.246 draganm,
*> Axa, a koji unit si koristio? Nemoj samo da kazes da si *> sam napisao algoritam za mod datoteke ;-) Nije unit nego OBJ, tacnije mod-obj :)) -=>Phantom Lord<=-/.CoRRoSioN.
pascal.247 draganm,
*> Ovo ne kapiram! Zar ne bi trebalo da stoji *> WHILE FLAG:=TRUE DO blabla??? Dakle, dok je flag Ok, *> radi blabla, a, kad se flag promeni pici dalje, zar ne? *> Ali, po datom primeru, reklo bi se, NE! Gornja petlja *> bi onda bila DOK_JE_FLEG_RADI_blabla?!? Dok je flag, STA? *> Dok je flag TRUE ili FALSE ili STA???? HELP! Flag ti je promenjiva boolean tipa, on moze da ti zameni bilo koji logicki izraz (npr. a>3) i u ovom primeru se ono sto je iza while izvrsava dok je flag=TRUE, ako flag promeni vrednost u FALSE program izlazi iz WHILE petlje. -=>Phantom Lord<=-/.CoRRoSioN.
pascal.248 predragd,
Zašto neke MS-DOS funkcije (IOCTL, čitanje/setovanje serijskog broja diska) ne rade u protected modu (BP 7.0). Dok na primer funkcija $41 - brisanje fajla, takođe u protected modu, radi odlično. Sa druge strane sve te funkcije u real modu (takođe BP 7.0) rade potpuno ispravno. Peđa.
pascal.249 paki,
­> WHILE FLAG DO blabla ­> !!!! ­> Ovo ne kapiram! Zar ne bi trebalo da stoji ­> WHILE FLAG:=TRUE DO blabla??? Dakle, dok je flag Ok, ­> radi blabla, a, kad se flag promeni pici dalje, zar ne? ­> Ali, po datom primeru, reklo bi se, NE! Gornja petlja ­> bi onda bila DOK_JE_FLEG_RADI_blabla?!? Dok je flag, STA? ­> Dok je flag TRUE ili FALSE ili STA???? HELP! Dok je fleg True. Evo i malog objašnjenja: Recimo da se logička promenljiva (tj. flag) zove SunceSija. Tada, ako napolju sija sunce, napišeš 'SunceSija:=True'. Dalje u programu ti treba da vidiš da li sunce sija. Ispitaćeš sa 'if SunceSija then...'. Vrednost SunceSija je logički izraz koji može biti tačan ili netačan. Isto tako si mogao da napišeš 'if 2>3 then...', i u ovom slučaju je '2>3' logički izraz koji vraća vrednost False (jer 2 nije veće od 3). Dakle, podrazumeva se da, ako napišeš 'while Flag', misliš na 'while Flag=True'. Takođe, umesto 'while Flag=False' možeš pisati 'while not Flag'. Npr. ako sunce ne sija, sigurno ti je razumljivije ako napišeš 'if not SunceSija' nego 'if SunceSija=False'.
pascal.250 magician,
­=> !-> WHILE FLAG:=TRUE DO blabla??? Dakle, dok... ­=> ­=> Prvo što moraš da naučiš je da razlikuješ naredbu dodele ( := ) ­=> i logičko jednako ( = ) ­=> Dakle, ovo što si napisao gore nikako ne bi moglo da stoji. Pascal nemam pojma, ali u C-u bi moglo da stoji i while (FLAG = TRUE) // '=' čitaj kao ':=' Jeste da u ovom slučaju nema mnogo smisla, ali nije neispravno. Da li je u Pascalu neispravno prvo dodeliti vrednost promenljivoj, pa onda ispitivati njenu logičku vrednost?
pascal.251 snemcev,
>> !-> while (flag == true). >> >> Hm, hm, neće biti "==" :) (to bi bilo za C) I za Clipper! ;)))
pascal.252 peca.st,
!-> Da li je u !-> Pascalu neispravno prvo dodeliti vrednost !-> promenljivoj, pa onda ispitivati njenu !-> logičku vrednost? Ma, u Pascalu ne možeš ko u Cu da u sred nekog izraza dodeljuješ vrednosti. Dodeljivanje vrednosti mora (valjda) da se vrši u posebnoj naredbi, posebnom redu. Peđa.
pascal.253 pedjak,
> WHILE FLAG DO blabla > Ovo ne kapiram! Zar ne bi trebalo da stoji > WHILE FLAG:=TRUE DO blabla??? Dakle, dok je flag Ok, Nikako ne može da stoji while flag:=true ,može jedino while flag=true ili skraćeno while flag.
pascal.254 eagle,
> Kako da u Paskalu deklarišem static promenljivu? > Znači, treba mi promenljiva koja će zadržavati svoju vrednost i > kada izađem iz funkcije u kojoj je definisana. Jedino što mi > pada na pamet su globalne promenljive. Ovo sam danas sasvim slučajno otkrio, i to zato što mi je pravilo probleme u jednom programu. Dakle, deklarišeš promenljivu sa const: const promenljiva : tip = pocetna_vrednost; Na primer: procedure proba; const i:byte=0; begin inc(i); writeln(i); end; BEGIN while true do proba; END.
pascal.255 dejanr,
>> const promenljiva : tip = pocetna_vrednost; Dodao bih još jednu sitnicu - ako je "konstanta" string, onda *ne* treba pisati: const ime: string = 'Pera' nego const ime: string[5] = 'Pera'. Inače u .EXE fajlu (kada ga napravi) ostavi stringčinu od 256 nula bajtova, što možda i ne smeta mnogo ali deluje malo glupo. Naravno, ako će "konstanta" posle menjati vrednost, onda mora da se stavi maksimalna moguća dužina, pa kolko nula mora, mora.
pascal.256 v.nesic,
> ............................................................... Da > li je u Pascalu neispravno prvo dodeliti vrednost promenljivoj, pa > onda ispitivati njenu logičku vrednost? U čemu je ovde poenta ?
pascal.257 a.kircanski,
_-=> WHILE FLAG DO blabla To ti je isto što i While flag = true do blablabla _-=> WHILE FLAG:=TRUE DO blabla??? Dakle, dok je flag Ok, ------ Ne treba while flag:=true do, nego while flag=true do. := je dodeljivanje. sale.
pascal.258 magician,
­=>> ............................................................... Da ­=>> li je u Pascalu neispravno prvo dodeliti vrednost promenljivoj, pa ­=>> onda ispitivati njenu logičku vrednost? ­=> ­=> U čemu je ovde poenta ? žini mi se da sam lepo napisao, ali... Obrati se na pažnji: if( (KlaraMandic = Read(...)) != SlobodankaGruden) Ovde se prvo promenljivoj Klara dodeljuje neka vrednost pa se tek onda ispituje njena log. vrednost. Poentu izvuci sam...
pascal.259 vitez.koja,
#=> neispravno. Da li je u Pascalu neispravno prvo dodeliti #=> vrednost promenljivoj, pa onda ispitivati njenu logičku #=> vrednost? Kratko rečeno, jeste. Razlika je, zapravo, suštinska, i to u funkcionisanju parsera za ova dva jezika i evaluiranju izraza. U Cu ce izraz evaluria s desna na levo (naravno uzimajući u obzir prioritete operanda), čak sam stekao utisak da se cela jedna naredba (između dva ';') može sa stanovišta Ca posmatrati kao brojni izraz. Za paskal nisam siguran kako stvar izgleda, ali verovatno je mnogo stroža i ograničavajuća. Pitanje za one koji su se malo bavili samim jezikom, ne samo programiranjem u njemu : zar vam se ne čini da je u Cu 'void' tip kršenje principa zarad lakšeg korišćenja (programiranja) ? Naime, da nema ovog tipa (a pre ANSI standarda nije ga ni bilo) bilo koji C programski izraz mogao bi se obrađivati kao aritmetiči izraz, jer _svi_ članovi tog izraza ili imaju aritmetičke vrednosti ili su operacije; rekao bih da su od takve koncepcije pošli i tvorci Ca.
pascal.260 debelijencija,
Ovome je ovdi mesto! :) !=?> programiranjem u njemu : zar vam se ne čini da je u Cu !=?> 'void' tip kršenje principa zarad lakšeg korišćenja !=?> (programiranja) ? Naime, da nema ovog tipa (a pre ANSI !=?> standarda nije ga ni bilo) bilo koji C programski izraz void tip je postojaoi pre ANSI standarda, u nekim implementacijama. K&R i kažu da su to usvojili pošto su se lično, u radu uverili da je to korisna stvar. Uostalom, šta ti fali? :) Zar nije ovako bolje? (da ga ima, nego da ga nema) !=?> mogao bi se obrađivati kao aritmetiči izraz, jer _svi_ !=?> članovi tog izraza ili imaju aritmetičke vrednosti ili su !=?> operacije; rekao bih da su od takve koncepcije pošli i !=?> tvorci Ca. Pa, čekaj, ti ne možeš da deklarišeš promenljivu tipa void. Stoga ona i ne može da se pojavi u izrazu. Dakle, svaki izraz možeš tako da posmatraš... Možda i ne možeš, ali ondak ne zna koji je taj. Iskreno rečeno, pojma nemam od kakve su koncepcije pošli tvorci Ca (tačnije tvorac Ca, pošto je Kernighan samo pomagao u knjizi), ali nije loše ispalo, zar ne? :)
pascal.261 paki,
­> Ovo sam danas sasvim slučajno otkrio, i to zato što mi je pravilo ­> probleme u jednom programu. Dakle, deklarišeš promenljivu sa const: ­> ­> const promenljiva : tip = pocetna_vrednost; Super :) Ja sam to video na par mesta, ali sam mislio da služi samo da se promenljivoj dodeli početna vrednost :)
pascal.262 bojanp,
>>> const promenljiva : tip = pocetna_vrednost; > > Dodao bih još jednu sitnicu - ako je "konstanta" string, onda *ne* > treba pisati: const ime: string = 'Pera' nego const ime: string[5] = > 'Pera'. Inače u .EXE fajlu (kada ga napravi) ostavi stringčinu od 256 nula > bajtova, što možda i ne smeta mnogo ali deluje malo glupo. Ako se želili minimalno memorijsko zauzeće onda je u gornjem primeru ipak prihvatljivije napisati const ime : string[4] = 'Pera', jer je dužina ovoga stringa 4 a ne 5. Kod Turbo Pascala se navodi maksimalna dužina stringa i u nju ne treba uračunati byte u kome se čuva trenutna dužina (za razliku od C gde treba alocirati jedan byte više za nul karakter na kraju). Pozdrav, Bojan
pascal.263 v.nesic,
> ­=> U čemu je ovde poenta ? > žini mi se da sam lepo napisao, ali... Pretpostavio sam da to misliš, ali mi je zvučalo skroz drugojačije.
pascal.264 vitez.koja,
#=> može da se pojavi u izrazu. Dakle, svaki izraz možeš #=> tako da posmatraš... Ma ni blizu: while(e++%=25 ? e : clrscr()); Zaista nemam pojma čemu bi ovaj izraz služio, ali da ne radi - ne radi.
pascal.265 ognjen,
)-> Ne treba while flag:=true do, nego while flag=true do. := je )-> dodeljivanje. sale. Ok, nemoj mo zameriti, novi sam :)
pascal.266 ognjen,
)-> Nikako ne može da stoji while flag:=true ,može jedino while )-> flag=true ili skraćeno while flag. Thanks, samo jos nesto. Da li je skraceno flag po difoltu =true ili mu je true vrednost dodeljena u nekom od prethodnih redova?
pascal.267 peca.st,
!-> Thanks, samo jos nesto. Da li je skraceno !-> flag po difoltu =true ili mu je true !-> vrednost dodeljena u nekom od prethodnih !-> redova? Uvek je true. Pakijev primer ti je najbolji i najlakše ćeš shvatiti tako. "U duhu jezika" je da se piše "if flag", ili "if not flag", a ne drugačije. Peđa.
pascal.268 broker,
> Dodao bih još jednu sitnicu - ako je "konstanta" string, > onda *ne* treba pisati: const ime: string = 'Pera' nego > const ime: stringŠ5Ć = 'Pera'. Inače u .EXE fajlu (kada ga > napravi) ostavi stringčinu od 256 nula bajtova, što možda > i ne smeta mnogo ali deluje malo glupo. > > Naravno, ako će "konstanta" posle menjati vrednost, onda > mora da se stavi maksimalna moguća dužina, pa kolko nula > mora, mora. Da, ali je tada jednostavnije da se promenljiva deklariše na uobičajeni način, pa da joj se vrednost dodeli na početku programa. Tada će u exe-u da zauzima minimalan prostor, a neće biti ograničenja da se dužina kasnije poveća. broker
pascal.269 broker,
> FLAG:=TRUE > WHILE FLAG DO blabla U ovakvom slučaju ja bih upotrebio repeat until petlju. U gornjem slučaju očigledno je da se u petlju ulazi bar jednom, a tada je repeat until petlja zgodnija. broker
pascal.270 broker,
> Pascal nemam pojma, ali u C-u bi moglo da stoji i > > while (FLAG = TRUE) // '=' čitaj kao ':=' C je u tome malo slobodan pa se pod TRUE uglavnom smatra ono sto je različito od FALSE, a FALSE se obično smatra da je nula. Obratiti pažnju na ono 'obično'. :) Negde se smatra da je FALSE ono sto nije TRUE, a opet TRUE moze da se smatra da je 1... Sad ima ono 'može'. :) Zato ja i volim Paskal. Jeste da je tvrd, ali brate znaš na čemu si. broker
pascal.271 eagle,
> Da, ali je tada jednostavnije da se promenljiva deklariše na > uobičajeni način, pa da joj se vrednost dodeli na početku > programa. Tada će u exe-u da zauzima minimalan prostor, a neće > biti ograničenja da se dužina kasnije poveća. Ali tada ne bismo imali STATIC promenljivu.
pascal.272 pedjak,
> Thanks, samo jos nesto. Da li je skraceno flag po difoltu =true > ili mu je true vrednost dodeljena u nekom od prethodnih redova? Ne dodeljuje se flagu nikakva vrednost, nego se njegova vrednost ispituje, znači while flag do ... je isto što i while flag=true do ... Ok?
pascal.273 dejanr,
>> Da, ali je tada jednostavnije da se promenljiva deklariše na >> uobičajeni način, pa da joj se vrednost dodeli na početku programa. >> Tada će u exe-u da zauzima minimalan prostor, a neće biti >> ograničenja da se dužina kasnije poveća. Dosta diskutabilno, tj. decidiran odgovor bi zahtevao proučavanje načina na koji turbo pascal generiše izvršni kod. Naime, ako kažem: var p: string; begin p:='pera'; ... end. biće u data segmentu alocirano 256 bajta za string p, ali još negde mora da stoji tekst 'pera'. E sad, moglo bi se zamisliti (tako su i radili neki od "poslednjih" bejzika na osmobitnim računarima) da se p nanišani tako da pokazuje na string 'pera' u memoriji, pa tek ako se nekada taj string promeni, da se alocira prostor na drugom mestu. Međutim sumnjam da Turbo Pascal tako radi, verovatno je tekst 'pera' negde u kod segmentu, a alocirani prostor je u data segmentu. Sve u svemu, ako bih ovako dodelio puno dugačkih promenljivih, to bi dalo relativno kratak EXE fajl, ali bi u trenutku izvršavanja em ceo taj fajl stajao u memoriji, em bi stringovi bili još na jednom mestu, u data segmentu. Dakle, trošila bi se memorija više nego što mora, tj. u zbiru bi bilo manje prostora na heap-u. Sa druge strane, ako stavim: var p: string[5]:='Pera'; (može i string[4], kako neko reče, ali ja obično stavim bajt-dva više, za svaki slučaj, naročito otkad me je jednom dimenzionisanje "u bajt" koštalo 800 dem) onda će se alocirati u data segmentu 5 (tj. 6 jer ima i dužina) bajta za promenljivu, i odma tu piše početna vrednost. U zbiru, ušteda na heap-u. Osim svega toga, meni je nekako preglednije kada vidim dodeljenu vrednost odmah, a ne moram da gledam "dole" u program.
pascal.274 .obj,
> Međutim sumnjam da Turbo Pascal tako radi, verovatno je tekst 'pera' > negde u kod segmentu, a alocirani prostor je u data segmentu. U pravu si, ne postoji razlog da se promenljivoj naknadno dodeljuje vrednost. Samo bi se dodatno trošila memorija u CODE segmentu, gde TP smešta konstantne stringove. A osim toga, i nije pregledno. :) Eventualno bi kao argument bio da je odgovarajući EXE kraći, ali... PKLITE rules. ;)
pascal.275 .obj,
> Samo bi se dodatno trošila memorija u CODE segmentu, gde TP > smešta konstantne stringove. Nisam, kao i obično, bio precizan: TP stringove iz CONST-a smešta u DATA segment (zajedno sa "nulama":), a ("konstantne") stringove koje koristi u toku izvršavanja programa (pri dodeljivanju, konkatenaciji itd.) smešta u CODE segment.
pascal.276 bole,
Jao! Ovako: Ocu da napravim neki prg. (recimo) koji ce da upisuje u fajl podatke bilo kakve a da posle mogu da ih menjam. E to mora (koliko ja znam) da se radi sa RECORDIMA e posto jos nisam svatio kako se sa njima radi, MOLIM VAS pomoZITE Hvala unapred i unazad! bolE
pascal.277 dejanr,
>> E to mora (koliko ja znam) da se radi sa RECORDIMA e posto jos nisam >> svatio kako se sa njima radi, MOLIM VAS pomoZITE Možda da pročitaš umetak o Paskalu iz prošlih (septembarskih) "Računara", tamo je to objašnjeno dosta detaljno? Kratko rečeno, napraviš record, na primer type telt = record ime: string; brtel: longint; end; onda definišeš promenljivu i fajl: var tel: telt; telf: file of telt; u programu otvoriš fajl: assing (telf, 'telefoni.dat'); reset (telf); i onda kada hoćeš da promeniš deseti (broji se od nule) telefon kažeš: seek (telf,10); read (telf, tel); tel.brtel:=123456; seek (telf,10); write (telf, tel); i na kraju zatvoriš fajl close (telf);
pascal.278 peca.st,
!-> Ocu da napravim neki prg. (recimo) koji !-> ce da upisuje u fajl podatke bilo kakve a !-> da posle mogu da ih menjam. E to mora !-> (koliko ja znam) da se radi sa RECORDIMA !-> e posto jos nisam svatio kako se sa njima !-> radi, MOLIM VAS pomoZITE Ako hoćeš da menjaš podatke u fajlu, oni u opšte ne moraju biti neki slog. Mogu biti bilo kog tipa. Evo kako bi to izgledalo na uopštenom primeru: f : file of bilokojitip; bkt : bilokojitip; ... (ovde ide ono assign, reset, pa šetanje po fajlu, bilo šta...) read (f, bkt); .... (promena sadržaja promenljive "bkt") seek (f, filepos (f) - 1); (da se vrati tamo gde je malopre pročitao) write (f, bkt); ... Eto, ako još uvek nije jasno, pitaj. Peđa.
pascal.279 nikac,
Jedno pitanje za poznavaoce TVISION-a. Kako da saznam ime trenutno aktivnog prozora u Editoru?
pascal.280 niklaus,
(:> C je u tome malo slobodan pa se pod TRUE uglavnom smatra ono (:> sto je različito od FALSE, a FALSE se obično smatra da je (:> nula. (:> Zato ja i volim Paskal. Jeste da je tvrd, ali brate znaš na (:> čemu Što jes' - jes! Poznata mi je (kao mnogima) definicija (aksiom?) FALSE je 0, a TRUE ponekad -1 (ovako beše u BASIC-u), nekad 1, nekad x!=0 (u C-u). I pored toga sam x puta morao da pogledam u onaj TurboC-ov Help, za naredbu _if_ - koji blok naredbi se izvršava za rezultat "zero", ili "nonzero". (:niklaus:)
pascal.281 vvelisavljev,
Kako rešavate štampanje iz TPa? Mene onaj standardni printer unit baš i ne zadovoljava. Nema kontrole da li je štampač uključen i sl. Da li postoji neki unit ovde na sezamu koji rešava stvar. Da li taj unit ima nešto više od jednog Assign(lst, prn)? Za neka duža štampanja koistim dos print. (napunim tekst fajl i onda pozovem print tekst.txt) Da li mogu nekako da u svom programu dobijem informacije o tome da li je određena datoteka odštampana, da li je uključen štampač i sl. a da ne koristim trik "print > trt.txt".
pascal.282 dejanr,
>> Kako rešavate štampanje iz TPa? U prošlomesečnim (septembarskim) "Računarima", u okviru umetka, diskutovano je i o štampanju iz paskala. Varijanta sa Assign(lst, prn), bilo preko printer unita ili direktno, ne zadovoljava ni za šta što nije tekst - pojedini karakteri (a naročio chr(26)) se kod takve štampe gube. Tamo je data procedura koja sprečava taj gubitak znakova (dos_rowmode), uz nju se može relativno pristojno štampati iz paskala. Jedno nešto drugačije rešenje (koje, inače, i ja koristim) dato je u "Računarima 85", u okviru umetka o laserskim štampačima. Isto, naravno, funkcioniše i na matričnom printeru. Ideja je da se sa štampačem komunicira preko BIOS-a, tamo imaš proceduru kojom se testira da li je štampač spreman, šalje znak itd. Primere iz jednog i drugog umetka imaš i u direktorijumu RSOFT: R094PAS.ZIP odnosno R055LAS.ZIP.
pascal.283 fole,
> Jedno pitanje za poznavaoce TVISION-a. > Kako da saznam ime trenutno aktivnog prozora u Editoru? Pročitaj naziv prozora :) Evo ja sam nešto izmajmunisao. Radi, ali rešenje je prilično neelegantno. Uz poruku je zakačen modifikovan TVEDIT.PAS iz TP 6.0. Izmene su ozna- čene sa (***********). Voleo bi kad bi neko uradio to jednostavnije (čitaj: elegantnije). ed.zip
pascal.284 predragd,
> Jedno pitanje za poznavaoce TVISION-a. > Kako da saznam ime trenutno aktivnog prozora u Editoru? Funkcijom GetTitle (MaxSize: Integer) iz TEditWindow objekta. MaxSize predstavlja maksimalnu dužinu imena prozora. Iako koliko sam ja uspeo da zakljucim iz fajla EDITORS.PAS MaxSize ne igra nikakvu ulogu. Peđa.
pascal.285 eagle,
> Evo ja sam nešto izmajmunisao. Radi, ali rešenje je prilično > neelegantno. Uz poruku je zakačen modifikovan TVEDIT.PAS iz TP Jednostavnije ne može, ali ovako ipak neće raditi baš u svim programima. Može da se desi da aktivan pogled nije prozor. Doduše, u većini programa se direktno u desktop ubacuje isključivo Pwindow ili njegovi potomci (Pdialog, Peditwindow...) ali može neko da direktno iz Pviewa napravi svoj pogled, na primer neki terminal, i u tom slučaju bi program otišao na ko zna koju adresu, pošto je twindow.gettitle virtuelan. Ja sam smislio jedan način kojim možeš da pristupaš svim poljima bilo kog objekta iz desktopa. Na primer, treba mi dužina bafera iz aktivnog editora. Pošto ne postoji način da saznam da li je aktivan pogled editor ili npr. dijalog, umesto Teditwindow napravim svoju klasu koja je nasleđuje, i u toj klasi redefinišem neki metod sa parametrima, koji potiče iz Tview-a (zato što je desktop^.current^ tog tipa), na primer handleevent, tako da za neku cm vrednost upisuje u neku globalnu promenljivu polje bufsize iz svog objekta, a za druge vrednosti poziva teditwindow.handleevent. Pomenuta dužina se saznaje na sledeći način: duzina:=0; (* duzina je globalna promenljiva *) event.command:=cmDajMiBafer; desktop^.current^.handleevent(event); U slučaju da je duzina ostala na istoj vrednosti, znači da aktivan prozor nije editor, u svim ostalim slučajevima je sigurno pozvan metod tMyeditwindow.handlevent koji radi duzina:=bufsize; Dakle, ovako je moguće proveriti i tip aktivnog pogleda. Način je potpuno legalan, radi uvek, a treba dopisati ne više od desetak redova. Evo šiljem uz poruku ovako promenjen tvedit.pas , bitno je da vraća title samo ako je u pitanju editor, što je i trebalo uraditi. ed1.zip
pascal.286 djelovic,
> Iako koliko sam ja uspeo da zakljucim iz fajla EDITORS.PAS MaxSize ne igra > nikakvu ulogu. Rekao bih da je to uvedeno čisto zbog kompatibilnosti sa TurboVisionom za C++, koji je od C-a nasledio te nesrećne stringove.
pascal.287 djanjusevic,
Evo jednog problema na pascalu: Uz poruku ide i fajl sa source-om programa.Dati program bi trebao da nacrta jedan svemirski brodic.U zavisnosti od ugla Alfa brodic bi trebao da bude u sasvim drugom polozaju od pocetnog(tj. da sve koordinate budu rotirane za ugao Alfa u odnosu na centar rotacije(xcor,ycor). Pocetne koordinate svih tacaka nalaze se u fajlu podaci.dat,koji program koristi.Sve koordinate su sigurno dobre,ali ja ne znam u cemu je problem. HHHHEEEELLLPPP!!!!!! Mansell pascal.arj
pascal.288 ognjen,
Da li se pri ponovnom izvršavanju nekog programa u Pascalu stare vrednosti promenjlivih ostaju iste izuzev ako nisu "resetovane" u samom programu? Uf, ala sam ga zavukao... Dakle, da li se prilikom rešavanja jednacine Z=1/2 * 2/3 *...* 99/100 dva puta (dva puta se startuje program) dobija resenje 1/10000 umesto 1/100??? A, da, naravno, Z nije dobijalo nijednu određenu vrednost, što znači da se jednačina ustvari rešavala _DVA_ puta...
pascal.289 dejanr,
>> Da li se pri ponovnom izvršavanju nekog programa u Pascalu stare >> vrednosti promenjlivih ostaju iste izuzev ako nisu "resetovane" u >> samom programu? Ne znam da li sam dobro razumeo - ako recimo imaš program TEST.EXE, startuješ ga, on nešto mulja i završi, ili ga prekineš, pa onda ponovo startuješ TEST, vrednosti promenljivih naravno neće biti sačuvane, izuzev ako je sam program preduzeo neko njihovo snimanje u datoteku itd.
pascal.290 zdule,
Zna li neko kako da izmerim vreme pisanja neke reči ili rečenice od pritiska prvog tastera do pritiskanja enter-a? ZDule...
pascal.291 ognjen,
)-> Ne znam da li sam dobro razumeo - ako recimo imaš program )-> TEST.EXE, startuješ ga, on nešto mulja i završi, ili ga )-> prekineš, pa onda ponovo startuješ TEST, vrednosti )-> promenljivih naravno neće biti sačuvane, izuzev ako je sam )-> program preduzeo neko njihovo snimanje u datoteku itd. Da, to sam hteo da kažem... Ali vidi, kad sam startovao program: ----------------------------------------------------------------- program Simple (input, output); var z: real; b,i: integer; begin b:=1; i:=2; z:=1/2; repeat begin b:=b+1; i:=i+1; z:=z*(b/i); end; until b=100; writeln (z); writeln (1/10); if z<1/10 then writeln ('Tacno!') else writeln ('Nije tacno!') end. ----------------------------------------------------------------- Koji bi, kao sto vidiš, trebao da izračuna vec pomenutu jadnačinu, rešenje je bilo SVAKI PUT DRUGAžIJE (!?!) ! Kako je to moguće? (Exponent se povećavao uvek za -2, što znači da se dobijeni broj množio sa rešenjem jednačine 1/100, što znači da se ista jednačina izračunavala više puta! (onoliko puta koliko sam startovao program)).
pascal.292 peca.st,
!-> Koji bi, kao sto vidiš, trebao da !-> izračuna vec pomenutu jadnačinu, !-> rešenje je bilo SVAKI PUT DRUGAžIJE (!?!) Ako si ga startovao iz editora onda je moguće. Ako ga kompajliraš na disk, pa startuješ ga kao exe (ono što je dejan napisao) onda se to ne može (hvala Bogu) desiti. Peđa.
pascal.293 a.kircanski,
_-=> Zna li neko kako da izmerim vreme pisanja neke reči ili _-=> rečenice od pritiska prvog tastera do pritiskanja enter-a? Lako: Kad ovaj pritisne prvo slovo(sa npr. keypressed proveravaš), onda uzmeš vreme sa gettime. (ne znam tačno sintaksu, ali ima nešto kao gettime. onda, kad lupi enter, uzmeš gettime u drugu varijablu, i onda lepo uzmeš delta(sati) i delta(minuti) B-) poz, sale.
pascal.294 zdule,
╠═══ Kad ovaj pritisne prvo slovo(sa npr. keypressed proveravaš), Ma probao sam ja sa if keypressed then gettime() ali sam kao rezultat dobio neke nebuloze od brojeva. :((( ZDule...
pascal.295 asterix,
Da li u MS FORTRAN-u 5.1 postoji ekvivalentna funkcija koja vraća pritisnuti taster ? Odnoso da li se u FORTRAN-u može napraviti sledeća struktura: Program ... ; uses crt; Var c : char; Begin ... c:=Readkey <--- da li postoji ovakva konstrukcija u MSF5.1 ? ... End. Pozdrav Nenad :)
pascal.296 maksa,
<><> Da li u MS FORTRAN-u 5.1 postoji ekvivalentna funkcija <><> koja vraća pritisnuti taster ? Odnoso da li se u <><> FORTRAN-u može napraviti sledeća struktura: Ne znam je l' baš insistiraš na onome 5._1_ (u 5.0 definitivno ne postoji) a ako se ne pojavi neko ko kaže da postoji, pomaže ti samo ovo: Nađeš neku dobru dušu koja će ovo da ti izasemblira MASM-om: (ja bih rado, al' nemam MASM) PUBLIC GETCHR GETCHR PROC FAR PUSH BP MOV AH, 08H INT 21H MOV BP, SP LES BP, BP+6 XOR AH, AH MOV ES:BX, AX POP BP RET 04H GETCHR ENDPR i ubažiš, to jest povežeš sa tvojim programom. Koristilo bi se ovako nekako: PROGRAM TASTPROBA C--------------------------------- malo kozmetike :) INTERFACE TO INTEGER*2 GETCHR(M) INTEGER*2 M END C INTEGER*2 N WRITE(*,*) 'Pritisni nesto, sa Ctrl-C zavrsavas' 10 CONTINUE CALL GETCHR (N) WRITE(*,*) 'Nagazio si taster ',N,' ' GO TO 10 END Znam, znam, strašno. :( Sve ovo da bi dobio kôd jednog bezveznog tastera.
pascal.300 andrejt,
Kako da otvorim fajl za upis/citanje u TSR-u.I, usput kako da proverim tastere (sve sem onih koji mogu da se provere prekidom $16), takodje u TSR-u.
pascal.301 ognjen,
)-> Ako si ga startovao iz editora onda je moguće. )-> Ako ga kompajliraš na disk, pa startuješ ga kao exe )-> (ono što je dejan napisao) onda se to ne može (hvala Bogu) )-> desiti. Kako da sredim da mi iz editora daje istu vrednost...?
pascal.302 janko,
> Ma probao sam ja sa if keypressed then gettime() ali sam > kao rezultat dobio neke nebuloze od brojeva. :((( Najlakše je da napišeš svoju rutinu za input.
pascal.303 a.kircanski,
Kako da pročitam sadržaj FAT-a? Ili da ga uništim. Prilog u ASMu je dobrodošao, također :-) poz, sale.
pascal.304 bulaja,
│Kako da procitam sadrzaj FAT-a? Ili da ga unistim. └─── Najbolje za strukturu FAT-a, Boot sektora i slicnih stvari pogledaj neki od fajlova u INFO direktorijumu, npr. DosRef, HelpPC, TechRef i slicno. Ukratko, FAT obicno pocinje na prvom logickom sektoru (pise u boot sektoru gde tacno pocinje), citas ga funkcijama za absolut disk read (ne znam koja je f() u TP za to, ali imas i INT 25h). Dakle najbolje pogledaj opise strukture u tim INFO fajlovima, ako negde zapne pitaj :).
pascal.305 bole,
>> Kad ovaj pritisne prvo slovo(sa npr. keypressed proveravas), >> onda uzmes vreme sa gettime. (ne znam tacno sintaksu, ali >> ima nesto kao gettime. onda, kad lupi enter, uzmes gettime Prosto napravis 8 wordova i 4 (ili 3 zavisno od preciznosti koja ti treba) integera pa das: GetTime (Hour, Min, Sec, Sec100); Pa posle gettime (hour2, min2, sec2,sec1002) pa das integer1:=hour2-hour ....pa prebacujes do 60 je jedan pa....
pascal.306 dr.grba,
Imam mladog druga, srednjoškolca, prilično zagrejanog za neke napredne tehnike u programiranju. Već je prilično verziran u Turbo Pascalu, a ja mu dođem nešto poput podstrekača, jer mu ponekad postavljam neke probleme na razmišljanje. Iz svega toga - pre ili kasnije - treba da se izrodi i korist, moja jer ću doći do nekog alatićA po narudžbi, a njegova jer će nešto da nauči i to upotrebi u budućnosti... Postavio sam mu problem u kome se još nije snašao: editovanje .EXE fajla, pisanog u Pascalu ili čak u nepoznatom razvojnom okruženju. I to sve u dva smera: sa jedne tačke kako pronaći neki deo koda i izmeniti mu neki if() uslov, a sa druge strane kako postaviti nove default vrednosti "zamrzavanjem" opcija datim na komandnoj liniji. Nešto, dakle, poput novih defaulta u programu FDS, viđenom na Sezamu. Stoga vas molim da ovde ili u mail na moje ime ostavite neku korisnu referencu, savet ili primer. Zahvaljujem se unapred na pomoći bilo koje vrste.
pascal.307 dejanr,
>> sa jedne tačke kako pronaći neki deo koda i izmeniti mu neki if() >> uslov... Ovo bi i mene zanimalo. >> a sa druge strane kako postaviti nove default vrednosti Nije poseban problem - pre neki dan baš to napravih u Prvoj Srpskoj Elektronskoj Kihalici (IBMPC\FUN\KIHALICA.ZIP). Staviš neki karakterističan string u program (npr. const default: string[12]:='TRALALA#$XXX'), onda otvoriš EXE fajl kao i svaki drugi (imaš ime u PARAMSTR(0)), nađeš string TRALALA#$$ i umesto XXX upišeš novu vrednost. Nije baš u duhu "čistog i kulturnog" programiranja, ali radi posao :) Mislim da je zzivotic pisao o ovome pre par meseci u "Računarima".
pascal.308 peca.st,
!-> I to sve u dva !-> smera: sa jedne tačke kako pronaći neki !-> deo koda i izmeniti mu neki if() uslov, Pa ovo ne verujem da se može uraditi bez disasemblera, a to em što više nije pascal, em što više nije humano raditi (u nekim malo dužim primerima). Peđa.
pascal.309 mjova,
> smera: sa jedne tačke kako pronaći neki deo koda i > izmeniti mu neki if() uslov, a sa druge strane kako > postaviti nove default vrednosti "zamrzavanjem" sumnjam da ćeš išta uspeti da uradiš, naročito iz paskala. niko ne garantuje šta će prevodilac napraviti od nekog if(), a tek kad se umeša i exe loader stvar postaje zbrljanija ;). ono što ja radim se svodi na običan run-time poke na pravu adresu. to se u C-u lako izvodi, a što se tiče paskala nisam baš u toku.
pascal.310 dr.grba,
>> string u program (npr. const default: stringŠ12Ć:='TRALALA#$XXX'), >> onda otvoriš EXE fajl kao i svaki drugi (imaš ime u PARAMSTR(0)), >> nađeš string Hvala, pogledaću. Tj, preneću čoveku na razmatranje. >> Mislim da je zzivotic pisao o ovome pre par meseci u "Računarima". BTW, (nije mesto, ali... ) koliko bi trajalo da DL-jem ceo RIND? I da li bi postojao neki valjan način dopune istog po ažuriranju (upit po broju časopisa)? Na kraju, odgovor u Sezam:razno ako nije teško (:
pascal.311 niklaus,
(:> Elektronskoj Kihalici (IBMPCĐFUNĐKIHALICA.ZIP). Staviš neki (:> karakterističan string u program (npr. const default: (:> stringŠ12Ć:='TRALALA#$XXX'), onda otvoriš EXE fajl kao i (:> svaki drugi (imaš ime u PARAMSTR(0)), nađeš string I ne samo tako... Moguće upisivati iza kraja fajla (pos := eof(f)+a) do mile volje... (:niklaus:)
pascal.312 dejanr,
>> Moguće upisivati iza kraja fajla (pos := eof(f)+a) do mile volje... Hmmm... a šta kada se nešto od parametara menja, morao bi se se prvo proveravati kraj fajla da nije već jednom dopisano. Inače bi fajl porastao k'o da ga je napao neki loše pisan virus.
pascal.313 niklaus,
(:> Moguće upisivati iza kraja fajla (pos := eof(f)+a) do mile volje... ISPRAVKA: eof(f)+1 Šta mi bi? (:niklaus:)
pascal.314 snemcev,
>> Moguće upisivati iza kraja fajla (pos := eof(f)+a) do mile volje... Meni se ovo nimalo ne sviđa. Šta ako (jeste da je mala verovatnoća, ali ipak postoji) se fajl završava na samom kraju klastera? Ovako ćeš prepisati podatke iz sledećeg i time uništiti ko zna šta.
pascal.315 niklaus,
(:> Hmmm... a šta kada se nešto od parametara menja, morao bi se (:> se prvo proveravati kraj fajla da nije već jednom dopisano. (:> Inače bi fajl porastao k'o da ga je napao neki loše pisan (:> virus. Eeee, i za to ima leka... Pre nego što se iskompajlira poslednja verzija EXE programa, ostavi se mesta za konstantu koja označava dužinu fajla (za nas: od kog mesta smemo da započnemo upisivanje parametara, koje želimo očuvati do sledeće upotrebe). ...zatim iskompajliramo, konstatujemo dužinu EXEa, u sorsu promenimo vrednost dotične konstante na odgovarajuću vrednost, i eto veselja... Naravno, sve ovo (sa konstantom) služi u korist nekog podprogramčića, koji po želji upisuje na kraj fajla željene podatke... Inače, da bi ustanovili da li je na kraj fajla već upisivano, postoji nekih 3-4 načina, koji meni trenutno padaju na pamet, a i ti ćeš doći do par njih očas posla... Evo o'ma' jednog (zanimljivog?) predloga - promeniti redosled slova 'M' i 'Z' na početku fajla - EXE je i dalje "izvršljiv" ((:. (:niklaus:)
pascal.316 niklaus,
(:> ipak postoji) se fajl završava na samom kraju klastera? Ovako (:> ćeš prepisati podatke iz sledećeg i time uništiti ko zna šta. Otkud? Nije li ovo zapravo klasični "append". Prilikom dopisivanja, u slučaju da je zadnji klaster dotičnog fajla prebukiran, prelazi se na prvi sledeći, koji je po FATu slobodan, a ne prvi sledeći iza klastera, koji je obeležen kao EOF (kraj fajla o kome sve vreme govorimo). (:niklaus:)
pascal.317 vitez.koja,
#=> Moguće upisivati iza kraja fajla (pos := eof(f)+a) do #=> mile volje... Ne, nije. Ja probao, ne radi (tj. mogu da ti dam .exe fajl koji kad mu dodaš 4000 bajtova kaže "bad format", a kad mu dodaš još samo 13 potpuno zaglupi računar).
pascal.318 vitez.koja,
#=> Meni se ovo nimalo ne sviđa. Šta ako (jeste da je mala #=> verovatnoća, ali ipak postoji) se fajl završava na samom #=> kraju klastera? Ovako ćeš prepisati podatke iz sledećeg #=> i time uništiti ko zna šta. Nešto si se zbunio... da je tako, nikada ne bismo smeli da nastavljamo ni jedan fajl.
pascal.319 niklaus,
(:># => Moguće upisivati iza kraja fajla (pos := eof(f)+a) do (:># => mile volje... (:> (:> Ne, nije. Ja probao, ne radi (tj. mogu da ti dam .exe fajl (:> koji kad mu dodaš 4000 bajtova kaže "bad format", a kad mu (:> dodaš još samo 13 potpuno zaglupi računar). E, nije ni to. Sve programe koje sam (za pare) radio imaju zaštitu, zasnovanu na ovom sistemu... Nijedan ne puca (barem ne zbog "repa"). (; Biće da si upisivao _preko_ zadnjeg karaktera u fajlu. Pošalji izvorni kod, pa da vidimo... (:niklaus:)
pascal.320 snemcev,
>> Prilikom dopisivanja, u slučaju da je zadnji klaster dotičnog fajla >> prebukiran, prelazi se na prvi sledeći, koji je po FATu slobodan, a >> ne prvi sledeći iza klastera, koji je obeležen kao EOF (kraj fajla o >> kome sve vreme govorimo). Da, ali kad datoteku regularno otvoriš za WRITE, a meni se činilo da se radi o "prljavim" metodama direktnog pisanja po disku. Jel ima neko živaca i vremena da proba iz programa najobičnije seek na kraj, pa write, al' kad je fajl dug tačno 4096 (ili neki sl. broj).
pascal.321 niklaus,
(:> Da, ali kad datoteku regularno otvoriš za WRITE, a meni se (:> činilo da se radi o "prljavim" metodama direktnog pisanja po (:> disku. Bez obzira da li fajl otvaraš za "append"-ovanje (upis _iza_ kraja fajla) ili za (klasični) upis, ali iza zadnjeg karaktera u fajlu (dakle, došetaš do EOF, pa šaraj), stvar radi apsolutno normalno. Da nije tako, DOS (konkretno mislim na FAT organizaciju diska) ne bi bio ono što jeste (nemojte reći baš "deep shit"). Inače, u pitanju nije nikakva "prljava" metoda. Jedino što je ovde prljavo je štos o kome pričam - dozvoljeno je pisa- ti ljubavnih pričica iza kraja "normalnog" fajla, a da se Vaša žena (ili vaša devojka) ne naljuti. (; (:niklaus:)
pascal.322 snemcev,
>> Bez obzira da li fajl otvaraš za "append"-ovanje (upis _iza_ kraja >> fajla) ili za (klasični) upis, ali iza zadnjeg karaktera u fajlu >> (dakle, došetaš do EOF, pa šaraj), stvar radi apsolutno normalno. >> Inače, u pitanju nije nikakva "prljava" metoda. Da, ali šta se pri tome dešava sa dužinom fajla i to onim podatkom o dužini koji je zapisan u direktorijumu? Ako se on promeni, bilo koji antivirus program koji ima mogućnost praćenja promene izvršnih datoteka će se pobuniti. Mislim da bi bilo mnogo bolje ovo izbeći.
pascal.323 dejanr,
>> Da, ali šta se pri tome dešava sa dužinom fajla i to onim podatkom o >> dužini koji je zapisan u direktorijumu? Promeni se dužina, naravno. Sve to DOS sam sređuje, to je regularan način za produženje fajla. >> Ako se on promeni, bilo koji antivirus program koji ima mogućnost >> praćenja promene izvršnih datoteka će se pobuniti. Mislim da bi >> bilo mnogo bolje ovo izbeći. Svaki antivirus program prati promenu dužine datoteka, i svakako će se pobuniti. No, iole bolji antivirus program prati i promenu checksuma datoteka, pa će se pobuniti i na bilo kakvu promenu bilo kog EXE fajla. Pošto ovde diskutujemo baš o promenama u EXE fajlu, bojim se da se takav sukob sa antivirus programima ne može izbeći. Posle svega, i dalje ne vidim koji je argument u prilog upisu nekog statusa na kraj (tj. iza kraja) programa u odnosu na upis negde u samom programu, dakle u predviđeni prostor, bez promene dužine fajla. Moguća su oba metoda, kao što smo videli, dakle imalo bi smisla prodiskutovati o tome koji je pod kakvim okolnostima bolji.
pascal.324 vitez.koja,
#=> (:> Ne, nije. Ja probao, ne radi (tj. mogu da ti dam #=> .exe fajl (:> koji kad mu dodaš 4000 bajtova kaže "bad #=> format", a kad mu (:> dodaš još samo 13 potpuno zaglupi #=> računar). #=> #=> E, nije ni to. #=> Sve programe koje sam (za pare) radio imaju zaštitu, #=> zasnovanu na ovom sistemu... Nijedan ne puca (barem ne #=> zbog "repa"). (; Biće da si upisivao _preko_ zadnjeg #=> karaktera u fajlu. Eh, "ni jedan ne puca". Nije događaj kad pas ujede čoveka, nego kad čovek ujede psa. Na žalost, ja ne mogu da argumentujem svoju tvrdnju, mogu samo još jednom da je iznesem. Za dodavanje sam koristio dosov "copy /b", tako da poslednji karakter u fajlu nije prepisan. U međuvremenu problem sam rešio tako što sam taj blok ugradio u kod na "programski" način, a onih 13 dodatnih karaktera sam dodao bez problema. Stari izvršni fajl, kao ni sors kod koga se problem manifestovao (naravno) nemam, davno je zamenjen ovim novim.
pascal.326 snemcev,
>> Svaki antivirus program prati promenu dužine datoteka, i svakako će >> se pobuniti. No, iole bolji antivirus program prati i promenu >> checksuma datoteka, pa će se pobuniti i na bilo kakvu promenu bilo >> kog EXE fajla. Apsolutno saglasan. >> Pošto ovde diskutujemo baš o promenama u EXE fajlu, bojim se da se >> takav sukob sa antivirus programima ne može izbeći. Mislim da može. Šta ako ne otvoriš datoteku, već nađeš poslednji bajt koji pripada datoteci u poslednjem klasteru iste, pa narediš pisanje po sledećih 10 bajtova. Tada Dos ne menja podatak o dužini, a tako zapisanim podacima se bez problema može pristupiti. Jeste da je ovo direktno pisanje po disku, ali ko još ima rezidentan vshield? ;) Btw, i to se može izbeći ako se zahteva da instalacija programa počne boot-om sa diskete.
pascal.327 niklaus,
(:> Posle svega, i dalje ne vidim koji je argument u prilog upisu (:> nekog statusa na kraj (tj. iza kraja) programa u odnosu na (:> upis negde u samom programu, dakle u predviđeni prostor, bez (:> promene dužine fajla. Moguća su oba metoda, kao što smo (:> videli, dakle imalo bi smisla prodiskutovati o tome koji je (:> pod kakvim okolnostima bolji. E, da! Dakle, koliko sam (ne)upućen, od svih antivirus programa na domaćem "tržištu" sa čeksumom i ostavljanjem odgovarajućih lista čeksumova za svaki od ispitanih fajlova se bavi samo onaj Central Point-ov AntiVirus (CPAV). Mi, tačnije velika većina nas, koristi McAfee-ove produkte (sken,klin), kod kojih stvar (koliko ja znam - zna li tkogod detalje) ne funkcioniše na opisani, po meni solidan, ali ne "ultimate" izbor. Sa druge strane, dejane, upisivanje u fajl bez promene dužine dotičnog, opet može upasti CPAVu (i sličnim) u oko, promeniti čeksum, i napraviti uzbunu. Možda ovako - UPUTSTVO za upoterebu našeg (bilo kojeg) programa: "Potrebno je isključiti sve anit-virus programe, jer usporavaju rad (našeg) programa!" (:niklaus:)
pascal.328 niklaus,
(:> Na žalost, ja ne mogu da argumentujem svoju tvrdnju, mogu (:> samo još jednom da je iznesem. Za dodavanje sam koristio (:> dosov "copy /b", tako da poslednji karakter u fajlu nije (:> prepisan. U međuvremenu problem sam rešio tako što sam taj (:> blok Biće da DOSov "copy /b" ne čisti svu prljavštinu koji po prirodi stvari za sobom ostavlja upis iza kraja EXEa. Dakle, pošto je DOS misterija laicima, a nas programere ne oduše- vljava taj poziv da jurcamo bagove po jedno OSu, preostaje nam da koristimo naše Ce i Paskale i da se zlobno smešimo... <<; (:niklaus:)
pascal.329 jasicp,
Moze li neko na brzinu napisati koje su razlike izmedju Turbo Pascala 6.0 i Turbo Pascala 7.0 ?
pascal.330 vvelisavljev,
- 7.0 ima sintaksno farbanje programa, (ono ključne reči jednom bojom, stringovi drugom, ...) :) - 7.0 ima Turbo Vision 2.0 funkcije - poneki nov svič za kompajliranje - zauzima duplo više prostora na disku - brzina kompajliranja je i dalje OK - nema značajnih promena u brzini kompajliranja i u dužini koda - što se tiče brzine koda ne znam :(
pascal.331 eagle,
> - 7.0 ima Turbo Vision 2.0 funkcije Po čemu se razlikuje od prve verzije (iz TP 6.0) ?
pascal.332 vvelisavljev,
> Po čemu se razlikuje od prve verzije (iz TP 6.0) ? Ne znam, još ne plivam u objektnim vodama. :) Da li može neko da preporuči neku knjigu? Jel neko čitao onu elektrosnku knjigu TPRBOOK sa Sezama?
pascal.333 ndragan,
/ k'o da ga je napao neki loše pisan virus. Za kijavicu ne bih rekao da ima takvog uzročnika. Drži se već koju stotinu hiljada godina, preživljava sve promene OS, i redovno izbacuje nove verzije, sve iste do istije. Kihalica mi se sviđa, nego sam u jednoj poruci našao loš prevod prideva sa muškog na ženski rod :)
pascal.334 dzakic,
Dodaj tu i - novie naredbe za kontrolu cikličnih struktura: break i continue; - null-terminated stringovi kao u C-u (pchar).
pascal.336 andrejt,
Zbog malih problema postalo mi je potrebno da znam sl. stvari: 1. - Kako PKZIP pakuje sa sifrom 2. - Da li moze da se napravi program koji je skida 3. - Kako bi takav program izgledao Pa, ako neko zna nesto od ovoga neka kaze i drugima.
pascal.337 dragisha,
-> 1. - Kako PKZIP pakuje sa sifrom Pogledaj appnote.txt koji stiže sa distribucionim .EXE. -> 2. - Da li moze da se napravi program koji je skida Vjerovatno. Onaj konkurs se tiho završio, možda je neko i uspio. Ja imam sors tog šifrovanja, a i sam imam nekoliko .ZIP kojima sam zaboravio šifru. Ako želiš da se bakćeš s time... -> 3. - Kako bi takav program izgledao Ehhh:) Možda bi ličio na ono što je objavljeno u oct Računarima, pod uslovom da posjeduješ neki od tih fajlova u original formi.
pascal.338 bulaja,
**** new file **** R:\IBMPC\BBS\*.* ---------------------- tridv300 zip 150608 TriDoor v3.00, kreiranje BBS door-ova u Turbo Pascal-u Triumph Software's TriDoor v3.00 Create on-line doors quickly and easily in Borland Turbo Pascal 5.5, 6.0 and 7.0. Full communications support, easily adapted for use with any BBS door support file, built-in support for PCBOARD.SYS and DORINFO1.DEF. Many nice built-in features such as statusbar, chat-mode and complete user time handling routines. This is the BEST software of it's kind available on the market today!
pascal.339 predragd,
> - 7.0 ima sintaksno farbanje programa, (ono ključne reči > jednom bojom, stringovi drugom, ...) :) Zaboravio si ono najvažnije, DPMI. Peđa.
pascal.340 predragd,
> Jel neko čitao onu elektrosnku knjigu TPRBOOK sa Sezama? Moje mišljenje je da ova knjiga nije ništa posebno. Ono što nije opisano u knjizi (o TV) koja stiže uz TP 6.0 nije ni ovde opisano. Peđa.
pascal.341 jasicp,
> tridv300 zip 150608 TriDoor v3.00, kreiranje BBS door-ova u Turbo Pascal-u Sta su to door-ovi na BBS-u ? Ne racunam ulazna vrata BIGZ-a, na primer.
pascal.342 dejanr,
>> Sta su to door-ovi na BBS-u ? Door je neka vrsta eksternog programa koji se poziva iz BBS softvera. Procedura je obično sledeća - glavni BBS program se ukloni iz memorije, startuje se door, on preuzme COM port, radi dok korisnik želi da radi sa njim (ili dok mu ne istekne neka od kvota) i tada se door opet uklanja iz memorije da bi osnovni BBS program nastavio sa opsluživanjem korisnika. Većina door-ova radi sa svim važnijim BBS programima, a od posebnih uslova često se zahteva instaliran fosil drajver. Imaš više door-ova u direktorijumu BBS.
pascal.343 jasicp,
> tridv300 zip 150608 TriDoor v3.00, kreiranje BBS door-ova u Turbo Pascal-u Sta su to door-ovi na BBS-u ? Ne racunam ulazna vrata BIGZ-a, na primer.
pascal.344 rvpuzovic,
Kako da na PC-jevom zvucniku "odsviram" fajl, koji sam uzorkovao AD konvertorom (8-mo bitni).
pascal.345 paki,
U programu, zavisno od vrednosti neke promenljive, treba da pozovem određenu funkciju. Trenutno to izgleda otprilike ovako: case Parametar of CONST1: ... t:=Funkc1; ... CONST2: ... t:=Funkc2; ... i tako više puta (parče koda pre i posle 't:=...' je uvek isto). Pošto mogućih vrednosti ima više od 50, nepraktično je sve to raditi CASE naredbom. Palo mi je na pamet da koristim niz funkcija, ali, iako pomaže, ne rešava u potpunosti problem - opet moram da imam nešto tipa: Funkc[CONST1]:=Funkc1; Funkc[CONST2]:=Funkc2; čeleo bih da potpuno eliminišem ovo, tj. da direktno pišem Funkc[CONST1] (...) : word; Funkc[CONST2] (...) : word; Da li je nešto ovako moguće? Ako nije, kako bi se moglo simulirati?
pascal.346 eagle,
> U programu, zavisno od vrednosti neke promenljive, treba da > pozovem određenu funkciju. > FunkcŠCONST1Ć (...) : word; > FunkcŠCONST2Ć (...) : word; > Da li je nešto ovako moguće? Ako nije, kako bi se moglo > simulirati? Možeš da pamtiš u nekom nizu pokazivače na te funkcije. Dakle, jednostavno napišeš tih pedesetak funkcija, dodaš im zbog ovakvog pozivanja po jedno far iza zaglavlja, i njihove adrese smestiš u taj niz. Evo, nekako sam uspeo da napišem jedan mali primer, članovi niza su funkcije kvadrat i kub. Ako hoćeš funkcije sa različitim brojem parametara, ne znam kako bi drugačije sem case naredbom. function kvadrat(x:byte):byte; far; begin kvadrat:=x*x; end; function kub(x:byte):byte; far; begin kub:=x*x*x; end; const pom:arrayŠ1..2Ć of pointer=(čkvadrat,čkub); var funkc:arrayŠ1..2Ć of function(x:byte):byte absolute pom; begin writeln( funkcŠ1Ć(3) ); writeln( funkcŠ2Ć(3) ); end.
pascal.347 kriss,
Zanima me da li u .pas program mogu da se 'ulinkuju' biblioteke? Naime, ako postoji dosta eksternih procedura, da li je moguće da se sve 'spakuju' u jednu biblioteku koja će se kasnije priključiti programu, znaši nešto tipa š$L trtmrt.libć umesto š$L blabla1.obj, blabla2.obj ... ć Sorry na YUSCII-ju i nadam se da je neko shvatio o čemy se radi :)
pascal.348 pedjak,
> Zanima me da li u .pas program mogu da se 'ulinkuju' biblioteke? > Naime, ako postoji dosta eksternih procedura, da li je moguće da > se sve 'spakuju' u jednu biblioteku koja će se kasnije Ne može.
pascal.349 niklaus,
(:>> Zanima me da li u .pas program mogu da se 'ulinkuju' biblioteke? (:>> Naime, ako postoji dosta eksternih procedura, da li je moguće da (:>> se sve 'spakuju' u jednu biblioteku koja će se kasnije (:> (:> Ne može. Zašto ne, meni zvuči logično... Mada nemojte me držati za zna se šta, jer stvarno nisam probao. Stvarno, kriss, šta ti fali da imaš $L liniju za svaki od .OBJ fajlova. Kratko uputstvo za krissa: COPY 1.OBJ+2.OBJ+..+n.OBJ SKUP.LIB Sa druge strane, argument protiv (odn. da TP nije u stanju da prihvati .LIB, kao zdudane .OBJ fajlove) bio mogao biti taj da TP nema "inteligentni" (izem ti tak'u inteligenciju) linker. (:niklaus:)
pascal.350 kriss,
˙˙ Zašto ne, meni zvuči logično... Mada nemojte me držati za zna ˙˙ se šta, jer stvarno nisam probao. Stvarno, kriss, šta ti fali ˙˙ da imaš $L liniju za svaki od .OBJ fajlova. Pa recimo estetika i tendencija ka gubljenju u slučaju neke greške :) Dakle, stvar je u tome da imam nameru da u neki veeeliki program ubacim mali milion asemblerskih rutinica koje vrše posao brzo i zauzimaju malo memorije: recimo da želim da se tu nalaze programčići za gašenje kursora, njegovu promenu od veličine do oblika (polako, samo ideje :), zatim neke stvari sa ekranom itd. Zamisli kakvo bi to zaglavlje bilo: š$L nocursor,cursor1,cursor2,...,cursorn,scrsave,...ć i to recimo u 7-8 redova! (dobro, za sada još ne ali ... :))) ˙˙ Kratko uputstvo za krissa: COPY 1.OBJ+2.OBJ+..+n.OBJ SKUP.LIB Ma sve je to OK i sa jednim TLIB +1.obj +2.obj +... skup.lib što mi je i bila zamisao u početku :) A i nekako mi deluje sigurnije, nisam siguran da baš može da se napravi biblioteka sa jednim copy :) No, možda još ne znam sve cake :) ˙˙ Sa druge strane, argument protiv (odn. da TP nije u stanju da ˙˙ prihvati .LIB, kao zdudane .OBJ fajlove) bio mogao biti taj da ˙˙ TP nema "inteligentni" (izem ti tak'u inteligenciju) linker. E to baš i mene čudi ... ajd što ne može da pravi .OBJ-e, ali ni da ulinkuje biblioteke?
pascal.351 uobradovic,
Cao !Imam malo znanje iz pascala , nije da sam pocetnik,ali... Koju mi knjigu preporucujete da kupim i gde,a iz koje se moze dosta nauciti Pascal - ako ne i ceo. Unapred hvala ! uobradovic :)
pascal.352 djelovic,
> Cao !Imam malo znanje iz pascala , nije da sam pocetnik,ali... > Koju mi knjigu preporucujete da kupim i gde,a iz koje se moze dosta nauciti > Pascal - ako ne i ceo. Preporučujetim ti neki od Dejranovih umetaka, od kojih jedan imaš u INFO direktorijumu, a ostale (koji se bave *Turbo* Paskalom) potraži po ranijim "Računarima". Mislim da će ti ovo biti po meri pošto nisi početnik.
pascal.353 niklaus,
(:> E to baš i mene čudi ... ajd što ne može da pravi .OBJ-e, ali ni (:> da ulinkuje biblioteke? Nema ti druge... Probaj & referiši... (: Probaj i Turbo Linker i COPY /B, pa ako ima razlika, obavezno reci, da ne budem(o) u zabludi. (:niklaus:)
pascal.354 uobradovic,
Cujte !Uzeo sam vodic Pascala kao sto si rekao,ali necu to.Hocu cist Turbo Pascal,bez prelaska sa bejzika ili nekog drugog programskog jezika. Unapred hvala uobradovic :)
pascal.355 vitez.koja,
#=> Hocu cist Turbo Pascal Onda uzmi "Turbo Pascal 6: the complete reference". žini mi se da postoji i u SH prevodu.
pascal.356 vvelisavljev,
Primetio sam da u programima imam gomilu istih procedura koje rade sa različitim tipovima podataka (procedure za unos). Da li objektno programiranje omogućava da ja imam jednu proceduru za unos koja će da obrađuje sve moje podatke. Bio bih jako zahvalan ako bi neko ostavio neki primerčić (ako je moguće naravno).
pascal.357 kriss,
˙˙ (:> E to baš i mene čudi ... ajd što ne može da pravi .OBJ-e, ˙˙ ali ni (:> da ulinkuje biblioteke? ˙˙ ˙˙ Nema ti druge... Probaj & referiši... (: ˙˙ Probaj i Turbo Linker i COPY /B, pa ako ima razlika, obavezno ˙˙ reci, da ne budem(o) u zabludi. Ok, probaću sve što mi padne napamet - da .lib preimenujem u .obj, ba obj-e spojim sa copy /b pa da probam da ih promuvam u TP, znači sve srpske metode ;) žim budem imao i malo više vremena - eto izveštaja ovdi :)
pascal.358 d.petrovic,
Ă> Onda uzmi "Turbo Pascal 6: the complete reference". žini mi se da Ă> postoji i u SH prevodu. a? di si to vid'o? koliko mu njemackih valuta to dodje?
pascal.359 d.petrovic,
Rec je o RA 2.00 Zna li neko kako se koriste indeksi za RA 2.00? Fajl USERS.BBS sadrzi sve podatke o korisniku, osim njega postoje i: USERSIDX.BBS i USERSXI.BBS i imaju luuudo zabavnu strukturu ;)))) ===================================== USERSIDXrecord = record NameCRC32, HandleCRC32 : LongInt; end; USERSrecord = record Name : MSGTOIDXrecord; š ovo izostavljeno je valjda nebitno, ima gomila podataka ć end; USERSXIrecord = record FreeSpace : ArrayŠ1..200Ć of Byte; end; ===================================== ocigledno je da su ova dva fajla indeksi, neznam cemu bi inace sluzili ni kako bi inace indeksirao bazu korisnika. Zar mu je taj CRC (ako je stvarno CRC ;)) ) koji koristi toiko pouzdan (???!!!) da se ne moze desiti da pera mikic i mika peric imaju isti broj?
pascal.360 uobradovic,
Hi Deda mi ide za jedno desetak dana u Nemacku,koje casopise da mu trazim da mi kupi.Podrazumaju se neki dobri. Ako ima jos nesto korisno da se kupi recite mi,ali da nije previse skupo. Pozdrav Uros :)
pascal.361 marzi,
═> Cao !Imam malo znanje iz pascala , nije da sam pocetnik,ali... ═> Koju mi knjigu preporucujete da kupim i gde,a iz koje se moze dosta ═> nauciti Pascal - ako ne i ceo. Ja sam bio odgovorio na slicnu poruku (nesecam se kome) sa razlikom sto je bio u pitanju pocetnik. Imas u INFO direktorijumu fajl BAS2PAS.ZIP i predlazem ti da njega skines a ima jedna dobra knjiga koju imam a svakako ti je preporucujem a to je 'PASCAL Users Manual and Report' ili kako pise u prevodu 'PASCAL PRIRUCNIK' od Niklaus Wirth-a. Pozdrav, Marko.
pascal.362 uobradovic,
Cao ! Pitanje je sledece : - Koje su prednosti Turbo Pascala u odnosu na Turbo Basic. NAPOMENA : Nije za mene,za druga je !!!!!!!! Hvala Uros :)
pascal.363 peca.st,
!-> Zar mu je taj CRC (ako je stvarno CRC ;)) ) koji koristi toiko !-> pouzdan (???!!!) da se ne moze desiti da pera mikic i mika peric !-> imaju isti broj? Raspravu o prednostima i manama CRCa imaš u temi algoritmi, vođena je do pre petnestak dana... Peđa.
pascal.364 uobradovic,
Cao ! Molim vas da odgovorite na sledece pitanje sto je pre moguce - Koja je prednost Turbo Pascala u odnosu na Turbo Basic ? Napomena ! Nije za mene, za druga je (kladio se); Hvala Uros :)
pascal.365 m.hristodulo,
>> a? di si to vid'o? koliko mu njemackih valuta to >> dodje? Izdanje Mikro Knjige. Manje od 10 DEM.
pascal.366 dejanr,
>> - Koje su prednosti Turbo Pascala u odnosu na Turbo Basic. Uh, vrlo je teško odgovoriti na ovo pitanje. Pre svega, postojanje oba paketa je sumnjivo. Turbo Basic se "ne pravi" već nekoliko godina, Borland je vratio licencu originalnim autorima i program se prodaje (ako se uopšte prodaje) pod drugim imenom. Turbo Pascal i dalje postoji, kao jeftinije rešenje za one koji amaterski programiraju na paskalu. Za profesionalnu primenu zamenjen je paketom Borland Pascal with Objects, trenutno je i dalje aktuelna verzija 7.0. Pitanje prednosti Turbo Pascala u odnosu na Turbo Basic je u suštini pitanje prednosti paskala nad bejzikom (obe implementacije su sasvim pristojne). U osnovi je prednost veća koncepcijska doslednost - paskal je u startu zamišljen kao dobro strukturiran jezik, zapravo jezik na kome će se upoznavati tajne (tadašnje) kompjuterske nauke. Bejzik je zamišljen kao mali interaktivni jezik, a docnije je dobijao razne elemente modernijeg programiranja, ali je to malo po malo "krpljeno" na njega, tako da mnoga rešenja nisu dosledna, iste stvari mogu da se rade na razne načine itd. Mislim da za kontakt s programiranjem treba preporučiti paskal, a ne bejzik. Za komercijalno programiranje verovatno nisu posebno pogodni ni jedan ni drugi, ali mislim da je Turbo Pascal (odnosno Borland Pascal) pogodniji.
pascal.367 d.petrovic,
Ă> Raspravu o prednostima i manama CRCa imaš u temi algoritmi, Ă> vođena je do pre petnestak dana... Grrrrrrrr, ma pitao sam nešto sasvim drugo, ovo sam samo napomenuo. Šta ga ja znam: ja sam nov u paskalu, možda je to neki standardan način indeksiranja nekim standardnim CRC-om za koji ja u životu nisam čuo pa da ne izmišljam toplu vodu i pravim svoje indekse pored već postojećih. Osim toga, to mi treba za door za remote održavanje BBS-a, da mogu brzo i efikasno da promenim neke podatke o korisniku ili konjferenciji. To mu opet dodje na to da bih morao pri svakom ulasku u door da reindeksiram što mu onda izlazi da mi je bolje da čačkam po bazi brez indeksa jerbo je velika verovatnoća da u tooku jednog poziva jednom udjem u door da bih izvršio (pogađaš ? ;) ) 'jednu' inkriminisanu radnju.
pascal.368 dekiper,
> a? di si to vid'o? koliko mu njemackih valuta to dodje? E, imaš je u CET-u i to verzija na Srpskom za 20 DM :) Pozdrav, Deki
pascal.369 dr.grba,
>> Izdanje Mikro Knjige. Manje od 10 DEM. Rekao bih da je malo skuplje.
pascal.370 uobradovic,
Cao ! Deda mi ide za jedno desetak dana u Nemacku.Treba mi spisak dobrih casopisa koje bi mu trazio da mi kupi. Ako ima jos nesto pametno slobodno reciteů.To je bilo 1. pitanje ,a sada drugo.Na kojoj frekvenciji se nalazi emisija BAJT92 ,u koliko sati i kojim danom. Puno hvala Uros
pascal.371 ognjen,
)-> - Koje su prednosti Turbo Pascala u odnosu na Turbo Basic. )-> NAPOMENA : Nije za mene,za druga je !!!!!!!! Pa, jedna od mana TBa je što na početak svakog EXE fajla stavi gomilu kavih "kontrolnih" karaktera (oko 50 Kb) tako da će ti program od jedne jedine linije (npr. CLS) zauzimati oko 50 Kb, a program od oko hiljadu linija tek koji kilobajt više... Turbo Basic kao sâm program nema mnogo mana (možda ni jednu izizev već navedene), ali koncepcija Basica (bilo kog - GW, Q i sl.) je loša (u odnosu na Pascal). Zašto? Pa, kao prvo, kada startuješ neki Basic program on se učitava liniju po liniju, tj., posle svake učitane linije (ili bolje reći instrukcije) se izvršava ta linija, pa onda sledeća, itd. Dok se u Pascalu ceo program učitava u memoriju, što prouzrokuje višestruko brže izvršavanje programa... U nekim slučajevima i do 1000 (slovima: hiljadu) puta! Na primer, ako napraviš (ne baš smislen) program, koji na ekranu crta tačkice na slučajno odabranim koordinatam, sve dok ne ispuni ceo ekran, u pascalu će se to izvršiti u roku od 3-4 sec. dok u basicu to traje čitavu večnost (oko 7-8 min!)! Neću mnogo da davim sa prednostima pascala nad basicom, glavnu sam naveo, ako te baš mnogo zanimaju, nabavi umetak iz prtprošlog broja računara ("Moja škola PASCALa") ili skini sa sezama fajl BAS2PAS.ZIP (iliti kako preći sa BASICa na PASCAL). Pozdravi druga, i reci mu da mu predlažem da pređe na Pascal. Pozred svega, pascal programi su (po pravilu) mnogo pregledniji, i nemaju zamršene GOTO "petlje" koje estetski uništavaju program. Pozdrav, Ogi...
pascal.372 a.kircanski,
_-=> i nemaju zamršene GOTO "petlje" koje estetski uništavaju _-=> program. Pa, ako si bejzikaš i prelaziš na paskal, onda ćeš koristiti label-e, isto ti se 'vata. :)
pascal.373 lucas,
Imam mali problem, počeo sam da radim mali programčić u turbo pascalu v6.0, da budem precizniji u turbo viziji, i sve ide ok ali ne mogu da ga nateram (zapravo neznam) da mi pokaže vreme (Hr:Min) u desnom gornjem uglu gde sam mu postavio meni liniju, jer on ne dozvoljava ništa osim novi padajućih menija. Ako neko zna .... p.s. Možda nisam bio jasan pa ako neko želi da pomogne detaljnjije ću opisati šta sam radio i šta hoću.
pascal.374 dvesic,
>> poceo sam da radim mali programcic u turbo pascalu v6.0, da >> budem precizniji u turbo viziji, i sve ide ok ali ne mogu da >> ga nateram (zapravo neznam) da mi pokaze vreme (Hr:Min) u >> desnom gornjem uglu gde sam mu postavio Pa sad postoje dva radikalnija resenja : - Pogledaj TVRDEMO.PAS; u njemu ti je dat primer koriscenja sata. Samo okvirna ideja : organizuj glavnu petlju koja bira opcije menija tako da trenucima praznog hoda (Idle) ispisuje sat u gornjem desnom uglu. Nije bas trivijalno, al' se da izvesti. - Preko ASM direktive ubaci mali programcic koji preuzima interapt 9h i ispisuje stalno vreme. Jedan takav programcic (istina, ne sa tom namerom :) sam poslao pre dva - tri dana u PC.PROG (Clipper) - Ako bas nista od ovoga ne uspes da uradis, mail write dvesic pa cemo vec nesto smisliti Pozdrav, Dejan.
pascal.375 eagle,
> Imam mali problem, > počeo sam da radim mali programčić u turbo pascalu v6.0, da > budem precizniji u turbo viziji, i sve ide ok ali ne mogu da ga > nateram (zapravo neznam) da mi pokaže vreme (Hr:Min) u desnom > gornjem uglu gde sam mu postavio meni liniju, jer on ne > dozvoljava ništa osim novi padajućih menija. Da, ako hoćeš da nešto ispišeš u redu u kom su meniji ili statusline mora se ići ubadanjem u desktop sa writestr i sličnim metodima. Da ne tupim, imaš primer (u stvari kompletan unit za satić i free heap) u tvdemosĐgadgets.pas, a kako se koristi možeš videti u tvdemosĐtvdemo.pas programu. Ukratko: staviš inicijalizaciju negde na početak programa, a u IDLE ubaciš pozive update metoda. Idle se poziva od strane tapplication.handleevent svaki put kad se ne desi ništa, tj. kada getevent prijavi EvNothing.
pascal.376 .bale.,
> reciteů.To je bilo 1. pitanje ,a sada drugo.Na kojoj frekvenciji se > nalazi emisija BAJT92 ,u koliko sati i kojim danom. žetvrtkom u 18:30 na 92.5 MHz.
pascal.377 pedjak,
> Pa, ako si bejzikaš i prelaziš na paskal, onda ćeš koristiti > label-e, isto ti se 'vata. :) Ne, nemoj koristiti labele, trudi se da promeniš način razmišljanja.
pascal.378 pedjak,
> - Preko ASM direktive ubaci mali programcic koji preuzima > interapt 9h i ispisuje stalno vreme. Jedan takav programcic -- 8h.
pascal.379 dr.grba,
>> sl.) je loša (u odnosu na Pascal). Zašto? Pa, kao prvo, kada >> startuješ neki Basic program on se učitava liniju po liniju, tj., >> posle svake učitane linije (ili bolje reći instrukcije) se >> izvršava ta linija, pa onda sledeća, itd. Dok se u Pascalu ceo >> program učitava u memoriju, što prouzrokuje višestruko brže Ti govoriš o Basic interpreterima, a ovde je reč o Basic kompajlerima.
pascal.380 a.kircanski,
_-=> Ne, nemoj koristiti labele, trudi se da promeniš način _-=> razmišljanja. Nisam rekao da koristim label-e.. nikad nisam koristio basic, i zato mi ni ne pada na pamet da radim to, čak ni sintaksu ne znam :)))
pascal.381 dvesic,
>> 8h. U pravu su. Hvala i izvinite zbog dezinformacije. Pozdrav, Dejan.
pascal.382 paki,
­> Pa, ako si bejzikaš i prelaziš na paskal, onda ćeš koristiti ­> label-e, isto ti se 'vata. :) Ne vredi da prelaziš na Paskal ako ćeš da koristiš labele.
pascal.383 janko,
> Turbo Basic kao sâm program nema mnogo mana (možda ni > jednu izizev već navedene), ali koncepcija Basica (bilo > kog - GW, Q i sl.) je loša (u odnosu na Pascal). Zašto? > Pa, kao prvo, kada startuješ neki Basic program on se > učitava liniju po liniju, tj., posle svake učitane > linije (ili bolje reći instrukcije) se izvršava ta > linija, pa onda sledeća, itd. Dok se u Pascalu ceo > program učitava u memoriju, što prouzrokuje > višestruko brže izvršavanje programa... U nekim > slučajevima i do 1000 (slovima: Turbo Bejzik je kompajler, pa ne postoji baš klasična interpretacija "linije po linije." Dosta je brz. Zar Kju bejzik takođe nije kompajler? > Pozred svega, pascal programi su (po pravilu) mnogo > pregledniji, i nemaju zamršene GOTO "petlje" koje estetski > uništavaju program. Turbo Bejzik ima naprednije kontrolne strukture, uključujući procedure i funkcije. Program na TB može da izgleda lepše nego na Paskalu, jer može da bude znatno kraći. Izbor jezika, odavno pričam, treba da zavisi od primene. TB je za učenje programiranja (uz uputstva, ili uz pomoć nekog ko zna) po meni, vrlo dobar. Lično sam ga "otkrio" relativno skoro, kada sam hteo da brata naučim elementarnom programiranju. Jedina sitna mana je slab "trejs mod" tj. TP lepše izvršava liniju po liniju nego što to ume TB (a baš mi je tako nešto trebalo). > Pa, jedna od mana TBa je što na početak svakog EXE fajla > stavi gomilu kavih "kontrolnih" karaktera (oko 50 Kb) > tako da će ti program od jedne jedine linije (npr. CLS) > zauzimati oko 50 Kb, a program od oko hiljadu linija tek > koji kilobajt više... Nije reč o kontrolnim karakterima, već o ran tajm kodu.
pascal.384 vita,
EJJJJJJJJJJJJ LJUDI BASIC je BASIC...........a PASCAL je PASCAL... nebih da navodim nista dalje......nadam se da ste svi svesni ove cinjenice!! Vita
pascal.385 kriss,
Evo da vas pitam nešto: :) Koji pascal mi preporučujete za upotrebu? Treba da pravi uslovno 'komercijalne' programe, znači što kraći.brži kod (posebno akcenat na kraći) ... Hvala :)
pascal.386 dejanr,
>> Koji pascal mi preporučujete za upotrebu? Treba da pravi uslovno >> 'komercijalne' programe, znači što kraći.brži kod (posebno >> akcenat na kraći) ... Hvala :) Nema mnogo izbora - ili uzmi Turbo Pascal 6.0 ili, ako hoćeš da radiš veće programe i pod Windows-om, Borland Pascal 7.0. Da, postoji valjda i Turbo Pascal 7.0, ali ga nisam video pa ne mogu da ga (ne)preporučujem.
pascal.387 lucas,
-> Imam mali problem, -> počeo sam da radim mali programčić u turbo pascalu v6.0, da budem p Problem je rešen, hvala eaglu i dvesicu koji su pomogli. Sada naravno imam novi problem koji bi trebao biti lakši ali .... naime treba da ili 1. Ispišem tekstualni string (npr."Pera") na statusnoj liniji skroz desno i d a to ne reaguje ni našta (miš ili taster) 2. Da napravim prazno mesto iza poslednjeg statusnog tastera (recimo 5 m esta) i da ta praznina opet ne reaguje ni na šta, a da na samoj desnoj strani stavi m novi statusni taster koji bi reagovao kao svaki drugi. Pozdrav LUCAS .... p.s. Unapred hvala svima koji mi žele pomoći. p.s.II. možda nisam bio jasan sa drugom molbom pa ću malo opširnije: recimo: Statusna linija izgleda ovako F1-Help F2-Open F3-Close F4-Info F5-Edit Pera ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Prazan prostor koji ne reaguje
pascal.388 d.petrovic,
Ufff, zaboravio da stavim qute ;)) TP 7.0, prvi koji sam ikad koristio :), lepo farba ključne reči (kao BC 3.1) i radi slično kao TP 6.0. Ide na dve 1.2 diskete.
pascal.389 eagle,
> Nisam rekao da koristim label-e.. nikad nisam koristio basic, > i zato mi ni ne pada na pamet da radim to, čak ni > sintaksu ne znam :))) Labele mogu biti i korisne, na primer za brzo iskakanje iz velikih petlji, kao break u C-u.
pascal.390 eagle,
> naime treba da ili > 1. Ispišem tekstualni string (npr."Pera") na statusnoj liniji > skroz desno i da to ne reaguje ni našta (miš ili taster) Postoji više načina. Prvi je istovetan ispisu sata u vrhu ekrana, ostala dva se svode na redefinisanje TStatusLine u npr. TMyStatusLine i naravno zamenom istih u InitStatusLine. Predviđeno je ispisivanje komentara u statusnoj liniji iza poslednjeg StatusItema, i taj komentar je odvojen vertikalnom crtom. Išlo bi otprilike ovako: function tmystatusline.hint(AhelpCtx: Word): String; begin hint:='Pera'; end; Ako statusnu liniju menjaš tokom izvršenja programa, gore ubaciš case AhelpCtx of...itd. Drugi način je upotrebljiv ako imaš samo jednu statusnu liniju u celom programu: procedure tmystatusline.Draw; var R:Trect; begin tstatusline.draw; writestr(74,0,'Pera',1); end; > 2. Da napravim prazno mesto iza poslednjeg statusnog tastera > (recimo 5 mesta) i da ta praznina opet ne reaguje ni na šta, a da na > samoj desnoj strani stavim novi statusni taster koji bi reagovao > kao svaki drugi. Ovo je nemoguće bez ozbiljnih zahvata na tstatusline.
pascal.392 kenza,
(;> Da, postoji valjda i Turbo Pascal 7.0, ali ga nisam video pa (;> ne mogu da ga (ne)preporucujem. TP 7.0 je deo Borland Pascal-a 7.0. (Sestica je bolja ;)
pascal.393 vitez.koja,
#=> Koji pascal mi preporučujete za upotrebu? Treba da pravi #=> uslovno 'komercijalne' programe, znači što kraći.brži #=> kod (posebno akcenat na kraći) ... Hvala :) Turbo Paskal, naravno. Ako ti ne trebaju ekstravagantne opcije koje nudi BP 7.0, prava stvar za tebe je TP 6.0. Pravi veoma kratak kod, posle njega me srce zaboli ;) kad pustim neki C program da se kompajlira.
pascal.394 spantic,
> BASIC je BASIC...........a PASCAL je PASCAL... nebih da navodim nista > dalje......nadam se da ste svi svesni ove cinjenice!! Xm, koji BASIC i koji Pascal? :) Ako govorimo o Visual Basic-u isti je promenio moj tretman Basic-a.
pascal.395 janko,
>>> 'komercijalne' programe, znači što kraći.brži kod >>> (posebno akcenat na kraći) ... Hvala :) > Nema mnogo izbora - ili uzmi Turbo Pascal 6.0 ili, ako > hoćeš da radiš veće programe i pod Windows-om, Borland > Pascal 7.0. A šta beše sa onom firmom koja pravi bolje TP prevodioce od Borlanda? Sećam se _formule_ na reklami, ali me mrzi da jurim sad po časopisima... Znam da su skuplji od Borlanda, ali, čini mi se, kod je kraći, pa brži, pa može .OBJ (ne .obj ;) )... Zna li neko nešto više o tome (idealno: ima li program?)
pascal.396 lucas,
-> function tmystatusline.hint(AhelpCtx: Word): String; -> begin -> hint:='Pera'; -> end; Upalio je, Hvala. -> procedure tmystatusline.Draw; -> var R:Trect; -> begin -> tstatusline.draw; -> writestr(74,0,'Pera',1); -> end; I ovo je upalilo. Pozdrav LUCAS ....
pascal.397 kriss,
˙˙>> Koji pascal mi preporučujete za upotrebu? Treba da pravi ˙˙>> uslovno 'komercijalne' programe, znači što kraći.brži kod ˙˙>> (posebno akcenat na kraći) ... Hvala :) ˙˙ ˙˙ Nema mnogo izbora - ili uzmi Turbo Pascal 6.0 ili, ako hoćeš ˙˙ da radiš veće programe i pod Windows-om, Borland Pascal 7.0. (Da ne bude zabune bole - Deki se zbunio, ovo je replaj na moje pitanje :)
pascal.398 dtadic,
>> A šta beše sa onom firmom koja pravi bolje TP prevodioce od >> Borlanda? Verovatno misliš na Stony Brook Pascal. Ima veću brzinu kompajliranja od TP-a, 100% kompatibilan sa njim, ima memorijske modele, pravi .OBJ fajlove... žini mi se da je o njemu svojevremeno bilo priče na Sezamu i da je zaključeno da ga niko nema u ovim krajevima.
pascal.399 dejanr,
>> A šta beše sa onom firmom koja pravi bolje TP prevodioce od >> Borlanda? Sećam se _formule_ na reklami, ali me mrzi da jurim sad >> po časopisima... Znam da su skuplji od Borlanda, ali, čini mi >> se, kod je kraći, pa brži, pa može .OBJ (ne .obj ;) )... Stony Brook paskal? Video oglase, ali ko još oglasima veruje :) Svojevremeno je firma izrazila raspoloženje da pošalje primerak programa "Računarima" na test, ali upravo onda dođoše sankcije i... ništa. žisto sumnjam da će neko "na neviđeno" da kupi program, dakle, bojim se, ništa od neposrednih iskustava. Ostaje Turbo Pascal i Borland Pascal.
pascal.400 vita,
> Xm, koji BASIC i koji Pascal? :) Ako govorimo o Visual Basic > promenio moj tretman Basic-a. Svka cast Visual Basicu , ali ja pricam o ovim ostalim Basicima i Pascalima u Dosu!!! Jel iko ikada probo da radi 3d grafiku u Basicu??? nije??? Mislim da je stvar jasna i da dileme nema!!!! VitaK
pascal.401 djelovic,
> Jel iko ikada probo da radi 3d grafiku u Basicu??? nije??? > > Mislim da je stvar jasna i da dileme nema!!!! Ne vidim zašto bi za 3D grafiku dobar Basic kompajler bio nešto lošiji nego neki Pascal kompajler? Basic je danas evoluirao do modernog, brzog i efikasnog jezika i ne vidim zašto postoji toliko predubeđenje da on a priori ne valja. BTW, što se tiče 3D animacije Bejzik bi tu mogao da bude isto toliko dobar kao i Pascal. Mada, ni jedan od ta dva jezika za tako nešto nije dovoljno dobar, čak se i C tu loše pokazuje. Ipak se neke osnovne rutine moraju napisati u asembleru :(.
pascal.402 vita,
> Ne vidim zašto bi za 3D grafiku dobar Basic kompajler bio > neki Pascal kompajler? Basic je danas evoluirao do modernog, b > jezika i ne vidim zašto postoji toliko predubeđenje da on a pr Za neupuce│yow é Za neupucene Basic je N (n tezi beskonacnosti) sporiji od C-a ... u 3D grafici...a C je k puta (k tezi 10) sporiji od pascala!!!!!!!!!!!!!!!!!!!! Cisto da se zna!!! ...... tako da mi molim niko ne pominje Basic kao nesto u cemu moze da se pise noramlan software.. zato sto sam ja piso CAD u Basicu i znam koliko je bila ista stvar brza kad sam je napiso u C-u .... Vita
pascal.403 djelovic,
> Za neupucene Basic je N (n tezi beskonacnosti) sporiji od C-a ... u 3D > grafici...a C je k puta (k tezi 10) sporiji od pascala!!!!!!!!!!!!!!!!!!!! > Cisto da se zna!!! ...... tako da mi molim niko ne pominje Basic kao nesto > u cemu moze da se pise noramlan software.. zato sto sam ja piso CAD u > Basicu i znam koliko je bila ista stvar brza kad sam je napiso u C-u .... :) Prvo, ti si verovatno imao neki Basic kompajler, kao što je Turbo ili Quick Basic, a koji nije namenjen za profesionalnu upotrebu tako da mu brzina bude jaka strana. Na tržištu postoje i kompajleri namenjeni profesionalnim korisnicima koji daju rezultate sasvim približne najboljim C kompajlerima. Drugo, moja poruka se odnosila na programske jezike kao takve, a ne na konkretne implementacije. Paskal kao programski teško da bi se i danas primenjivao da Borland nije napravio Turbo Pascal koji je odlična *nadgradnja* Pascala. Jedina mana Basica u odnosu na Pascal jeste automatska deklaracija promenljivih koja se u modernim verzijama može po želi isključiti. Treće, C nije sporiji od Pascala već je brži. Ako i uzmemo da je to bio lapsus, tj. da si hteo da kažeš da je "Pascal sporiji od C-a", tvoja procena od deset puta (!) je totalno pogrešna. O onom "beskonačno" ne vredi ni pričati. I četvrto, tvoje poruke ne liče ni na šta. Pune su uzvičnika koje čitaocu ostavljaju utisak da mu se dereš u lice, da ne spominjemo da predstavljaju prave enciklopedije jezičkih anomalija. Iako nam je svima drago što nam se priključio još jedan dobar programer, tvoj stil pisanja čini razgovr sa tobom veoma napornim :(.
pascal.404 spantic,
> Jel iko ikada probo da radi 3d grafiku u Basicu??? nije??? Kakve to veze ima? Za prikaz 3D grafike su ti neophodni algoritmi a implementacija zavisi samo od tebe.
pascal.405 zolika,
>>#=> Koji pascal mi preporučujete za upotrebu? Treba da pravi >>#=> uslovno 'komercijalne' programe, znači što kraći.brži >>#=> kod (posebno akcenat na kraći) ... Hvala :) Ne mogu da odolim... :-) Uzmi TopSpeed Modulu-2, i batali Paskale, to je preživljeno...
pascal.406 vita,
> predstavljaju prave enciklopedije jezičkih anomalija. Iako nam > drago što nam se priključio još jedan dobar programer, tvoj st > čini razgovr sa tobom veoma napornim :(. Pa nemoj da se vređamo. (tačka za promenu) :) Salim se ... nisam mislio nista ozbiljno! Ne zelim nisakim da ulazim u konflikt! Što se tiče mojih jezičkih anomalija, Svestan sam istih i trudim se koliko toliko da ih ispravim. (opet tačka) :) So, don't worry be happy :) > Prvo, ti si verovatno imao neki Basic kompajler, kao što j > Quick Basic, a koji nije namenjen za profesionalnu upotrebu ta > brzina bude jaka strana. Na tržištu postoje i kompajleri namen ####### Kom tržištu ??? Ja kad sam se bavio BASIC-om jurio sam neki TRUE BASIC (tako nekako) čuvši iz pete ruke da je to neki haos BASIC.. ok ako kazes da ih ima za prof. upotrebu, ali gde su ??? Koristio sam Microsoft Basic PROFESIONAL Dev. System 7.0... i pogodi sta...spor je ko puz..iako je solidno dobar. > Treće, C nije sporiji od Pascala već je brži. Ako i uzmemo > lapsus, tj. da si hteo da kažeš da je "Pascal sporiji od C-a", Ne, greska gusteru.. (ovo sa se tek salio i nemoj da se vređaš) Mislio sam ono i sto sam reko. Ja se inače bavim 3D grafikom i sl. stvarima na tom polju. Elem , isti algoritam za RAY TRACING u Pascalu i C-u se u C-u BUKVALNO izvrsavao 10 puta sporije! ... Ni ja nisam verovo! Mnogi ljudi mi nisu verovali, so ... morao sam da im demonstriram, ostali su bez daha. Ali nije to jedina stvar gde mi se pokazalo da je (Turbo) Pascal brzi od (Borland) C-a. Ima ih još. Vita P.S. Nemam običaj da pišem duge poruke, ali eto desilo se , so i'm very sorry! P.P.S. Što se tiče mog pravopisam , znam da je užasan i da nestavljam šćžč itd. tamo gde bih trebao, ali šta ću, vremenom će i to da se ispravi (ja sam nov ovde (tek nekih 7 dana))
pascal.407 .bale.,
> Ne, greska gusteru.. (ovo sa se tek salio i nemoj da se vređaš) > Mislio sam ono i sto sam reko. Ja se inače bavim 3D grafikom i sl. > stvarima na tom polju. Elem , isti algoritam za RAY TRACING u Pascalu > i C-u se u C-u BUKVALNO izvrsavao 10 puta sporije! ... Ni ja nisam > verovo! Dobro, bre, dokle? ;-) Totalno je besmisleno reći da je Pascal brži od C-a, isto kao i da je C brži od Pascal-a. To su programski jezici, a kompajleri koji ih implementiraju su nešto sasvim drugo. Moguće je napraviti (a ubeđen sam da su napravljeni i postoje) C kompajler koji neke programe prevodi tako loše da se oni izvršavaju 10 puta sporije od istih programa koje prevodi neki Pascal kompajler, kao i obrnuto (dakle, dva para primera). Veruj! :) Pozdrav, Bale
pascal.408 saricl,
Vec par dana razmisljam u koju conf da stavim ovaj problem, a posto imam TP v6.0 odlucio sam se za ovu. Hocu da napravim karticu sa PI/O cipom za PC.Doticna ce da koristi samo osam bitni prikljucak.Izmadju raznih cipova odlucio sam se za Z80-PI/O. Odgovara mi iz vise razloga a najaci je taj sto ih imam povecu kolicinu na lageru. Problem je u sledecem: Doticni PI/O radi na 2.5MHz a magistrala na 8MHz (ako je neko nabudzi i vise) Dakle procesor kada adresira cip ocekuje odziv real time odziv a cipu za tako nesto treba cetiri puta vise vremena.Zanima me dali je moguce softverski po adresiranju cipa zadati procesoru neku instrukciju da se vrti u mestu dok nedobije odziv od PI/O.Nesto kao wait ili sl. NARAVNO DOTICNA INSTRUKCIJA BI MORALA ZADRZATI SVE PODATKE NA MAGISTRALAMA ZA VREMA IZVRSAVANJA DOTICNE WAIT INSTRUKCIJE. Dakle prcesor adresira PI/O postavi zahtev za citanje i ceka odredjeni broj takt ciklusa a svo vreme su mu adrese i zahtevi za citanje postavljeni. Pre svega zanima me dali je to uopste moguce resiti softverski ili cu morati da pribegnem hard resenjima,mozeli to iz TP v6.0 ili mora neki drugi prog. jezik. Svaka ideja dobrodosla . P.S od literature imam TURBO PASKAL 6.0 OD STEPHENA O'BRIENA. SARICL.
pascal.409 ndragan,
/ izizev već navedene), ali koncepcija Basica (bilo kog - GW, Q i / sl.) je loša (u odnosu na Pascal). Zašto? Pa, kao prvo, kada Ova priča nema veze sa odnosom bejzik-paskal, nego sa odnosom interpreter - kompajler. Turbo bejzik je bio kompajler kao i turbo paskal, prema tome nije to razlika. Razlika je u tome što su svi sadašnji bejzici poprilične budževine, prepuni istorije i stvari koje se više ne rade tako. Sam bog zna šta u sadašnjim bejzicima znači "Open #3", da li to poziva neko pravljenje FCBa, ili drške (hendl, georg fridrih), i koliko taj broj ima veze sa nekakvim sistemskim brojevima. Da ne spominjem koncepciju komon zona, koja se vuče još od prastarih fortran kompajlera itd. Jedini bejzik koji se meni i dan danas sviđa je GfA bejzik. Sa novostima koje su najavljene za poslednju verziju, to će zaista biti jezik tipa "kome uopšte treba C". Bar je tako na Atariju, PC verziju nisam video. Paskal je, s druge strane, formalizovan jezik, sa minimumom budževina. Ono što je u Turbo paskalu budženo, to je prilagođavanje Virtove koncepcije DOSovim bubama.
pascal.410 vita,
> Dobro, bre, dokle? ;-) Totalno je besmisleno reći da je Pascal > brži od C-a, isto kao i da je C brži od Pascal-a. To su > programski jezici Svaka čast za odgovor, podrazumeva se da sam govorio o BORLAND-u... A ako neko zna neki Compiler (Pascal ili C) koji je brzi od gore pomenutih, neka to javno saopšti, bio bih mu vrlo zahvalan. Vita
pascal.411 djelovic,
> Dobro, bre, dokle? ;-) Totalno je besmisleno reći da je Pascal brži od > C-a, isto kao i da je C brži od Pascal-a. Nije to toliko glupo. Ta dva jezika jednostavno u nekim delovima imaju različite filozofije rada, od kojih neka može da daje bolje, a neka lošije rezultate. Na primer, C sa stringovima operiše isključivo preko pointera za razliku od recimo Borlandove implementacije Pascala, i tu se uvek pokazuje brži, mada i komplikovaniji za upotrebu.
pascal.412 paki,
­> Svaka čast za odgovor, podrazumeva se da sam govorio o BORLAND-u... ­> A ako neko zna neki Compiler (Pascal ili C) koji je brzi od gore ­> pomenutih, neka to javno saopšti, bio bih mu vrlo zahvalan. Samo nemoj reći da su spori...
pascal.414 niklaus,
(:> tom polju. Elem , isti algoritam za RAY TRACING u Pascalu i C-u se (:> u C-u BUKVALNO izvrsavao 10 puta sporije! ... Ni ja nisam verovo! Pitanje je kolika je analogija između ta dva programa. Možda bi naj- bolja usporedba bila ta da si C listing dobio uz pomoć jednog iole kvalitetnog TP->TC konvertora. Index odnosa brzine TC:TP ne možeš formirati na osnovu tog usamljenog primera. (:niklaus:)
pascal.415 niklaus,
(:> A šta beše sa onom firmom koja pravi bolje TP prevodioce od (:> Borlanda? Sećam se _formule_ na reklami, ali me mrzi da jurim sad Stony Brook Pascal+. Ništa extra. Što se mene tiče, bolje da ostanem u Porcshe-u. (: (:> Zna li neko nešto više o tome (idealno: ima li program?) Ne, nemam ga. Kad smo se dotakli Paskalja, evo još jednog aduta: QuikByte PASCAL (Quik, bez 'c'). Evo čime nas mami reklama: - Miscrodoft object code compatible .OBJ interface to MASM, MS C, BASIC, FORTRAN, COBOL - True Pascal - ISO/ANSI standards Switch selectable language expresions - Superb math library Unequaled for the PC, in line code generation - Ultra smart optimizing linker for smaller .EXE files (prim. nik. ovo bi moglo da reši krissov problem (:) - Turbo-SC (Turbo Super-Charger) Turbo dialect to QuikByte PASCAL translator (:niklaus:)
pascal.416 .bale.,
> Nije to toliko glupo. Ta dva jezika jednostavno u nekim delovima imaju > različite filozofije rada, od kojih neka može da daje bolje, a neka > lošije rezultate. Na primer, C sa stringovima operiše isključivo preko > pointera za razliku od recimo Borlandove implementacije Pascala, i tu > se uvek pokazuje brži, mada i komplikovaniji za upotrebu. Hm, zaista. C je, pošto je prljav, osuđen da sa stringovima radi preko pointera i to se teško drugačije može implementirati (?). Pascal je malo višeg nivoa i, pretpostavljam, moguće su razne implementacije raznih stvari. Pa sad, ako C ne može biti u radu sa stringovima brz kao Pascal, onda Pascal može biti spor kao C :) Ali, na kraju, ta razlika u radu sa stringovima se vidi na nivou izvornog koda, tj. sami programi se uglavnom razlikuju. Da bi se testirali sami kompajleri, trebalo bi napraviti iste programe: ili da se Pascal uspori, tj. ne koriste njegovi stringovi nego pointeri, ili da se u C-u definiše nova struktura string, ista kao ona u Pascal-u...
pascal.417 ppekovic,
>> Hm, zaista. C je, pošto je prljav, osuđen da sa stringovima radi preko >> pointera i to se teško drugačije može implementirati (?). Koristeći C++ možeš definisati String klasu koju možeš napraviti da radi potpuno isto kao Pascal tip string. Paya
pascal.418 vita,
> bolja usporedba bila ta da si C listing dobio uz pomoć jednog > iole kvalitetnog TP->TC konvertora. Index odnosa brzine TC:TP > ne možeš formirati na osnovu tog Pa jel imas neki "iole kvalitetan TP->TC konverter" ?? BTW, original source je pisan u Pascalu, a C source je bukvalno Pascal source sa prepravljenim jezičkim nesuglasicama(pr:begin->š) Ajd sad.. Vita
pascal.419 vita,
> izvornog koda, tj. sami programi se uglavnom razlikuju. Da bi > se testirali sami kompajleri, trebalo bi napraviti iste > programe: ili da se Pascal uspori, tj. ne koriste njegovi > stringovi nego pointeri, ili da se u C-u definiše nova > struktura string, ista kao ona u Pascal-u... Pa zasto bi se Pascal NAMERNO usporava da bi se spustio na nivo C-a???? Ako je jezik brzi, onda je BRZI! Merite vi brzinu algoritama i tako nekih stvari, TO presuđuje! Uvek odaberi jezik koji će odgovarati tvom trenutnom poslu! (i tako on odabra C iako Pascal brze renderiše :) ) Vita
pascal.420 vitez.koja,
#=> Pa zasto bi se Pascal NAMERNO usporava da bi se spustio #=> na nivo C-a???? To nije usporavanje, to je realno odmeravanje snaga pri istim uslovima. Primer sa stringovima ide možda u korist TURBO paskala, no nije teško naći primere gde je C 'na svome'. #=> Ako je jezik brzi, onda je BRZI! Ajde ?! :) #=> Merite vi brzinu algoritama i tako nekih stvari, TO #=> presuđuje! To ne može da se izmeri. Merljive su jedino brzine izvršavanja IMPLEMENTACIJA nekog algoritma u raznim programskim jezicima, gde ljudski (programerski) faktor itekako utiče na rezultat, svakako više nego sam jezik.
pascal.421 kriss,
˙˙ Kad smo se dotakli Paskalja, evo još jednog aduta: QuikByte ˙˙ PASCAL ˙˙ - Ultra smart optimizing linker ˙˙ for smaller .EXE files ˙˙ (prim. nik. ovo bi moglo da reši krissov problem (:) Toooooo! Što manji .EXE, pa pklite, pa samoraspakujući ZIP, pa će valjda da se sabije sve na par K a da ima menije, prozore, miša ... :)))) Šala, naravno, nego jel zna neko gde može da se nađe taj Pascal?
pascal.422 niklaus,
(:> Ajd sad.. Opet to ne mora da implicira (: zaključku da je TP 10x brži od TCa (čudi me što uopšte postoji situacija u kojoj se to (bez namere) može postići). Biće da se korišćene strukture bolje optimizuju (for speed) u TPu. Ako bi se potrudio, siguran sam da bi nešto mogao da učiniš i za C "ekivalent". (:niklaus:) ps Da ne bude zabune, favorit Niklausa je TP. (: pps Pošalji, pa da vidimo šta si uradio. Naravno ako je PD. (;
pascal.423 .bale.,
> Koristeći C++ možeš definisati String klasu koju možeš > napraviti da radi potpuno isto kao Pascal tip string. Pa to sam i napisao, otprilike...
pascal.424 .bale.,
> Pa zasto bi se Pascal NAMERNO usporava da bi se spustio na nivo > C-a???? vitez.koja ti je odgovorio. Ne bih imao šta posebno da dodam. Mojne da se žestiš, budi strpljiv :)
pascal.425 ognjen,
)-> Pa, ako si bejzikaš i prelaziš na paskal, onda ćeš koristiti )-> label-e, isto ti se 'vata. :) Jok, ja mrzim GOTO petlje... Iako sam bej... (ne smem da izgovorim ;) i prelazima na Pascal... :)
pascal.426 ognjen,
[ja] )-> >> je loša (u odnosu na Pascal). Zašto? Pa, kao prvo, )-> >> kada startuješ neki Basic program on se učitava liniju po )-> >> liniju, [dr.grba] )-> Ti govoriš o Basic interpreterima, a ovde je reč o Basic )-> kompajlerima. [ndragan] )-> Ova priča nema veze sa odnosom bejzik-paskal, nego sa odnosom )-> interpreter - kompajler. Turbo bejzik je bio kompajler kao i )-> turbo paskal, prema tome nije to razlika. Zez, sorry, pokrivam se ušima... :)
pascal.427 djelovic,
> To nije usporavanje, to je realno odmeravanje snaga pri istim uslovima. > Primer sa stringovima ide možda u korist TURBO paskala, no nije teško naći > primere gde je C 'na svome'. Ma ne znam kako ste uopšte došli do ovoga. C stringovi su BRčI, baš zbog rada sa pointerima. Jedino što su i mnogo teži za upotrebu :(.
pascal.428 madamov,
> Ako je jezik brzi, onda je BRZI! Ne postoji takav kriterijum kojim bi izmerio koji je jezik brži. Možeš sam da meriš koji kompajler pravi brže programe.
pascal.429 vitez.koja,
#=> Ma ne znam kako ste uopšte došli do ovoga. C stringovi #=> su BRčI, baš zbog rada sa pointerima. Jedino što su i #=> mnogo teži za upotrebu :(. ################ <- unapred se ograđujem, možda i ne znam šta pričam :) Kako se stiglo do toga da su TP operacije sas stringovi brže, ne znam. Samo sam hteo da kažem kako, ako su stingovu u paskalu i brži, nije teško naći nešto u Cu što šije paskal po brzini. Drugo, kako 0 završeni stringovi mogu biti brži od TP-like stringova ? Uzmimo kao primer kopiranje jednog stringa u drugi. Šta se dešava: TP C memcpy(str2, str1, *str1+1); while(*str2++=*str1++); Prvi (TP) način se realizuje pomoću REP MOVSB instrukcije, dok je za drugi potrebna nekakva JNZ petlja. Po mom skromnom znanju, prvi pristup je brži. Naravno, tu je i najdrastičniji primer - vraćanje dužine nekog stringa. Kod Ca i njemu sličnih ;) tu je potrebna petlja, kod TPa samo naredba dodele (len=string[0]).
pascal.430 djelovic,
> Drugo, kako 0 završeni stringovi mogu biti brži od TP-like stringov > Uzmimo kao primer kopiranje jednog stringa u drugi. Šta se dešava: > > TP C > > memcpy(str2, str1, *str1+1); while(*str2++=*str1++); > > Prvi (TP) način se realizuje pomoću REP MOVSB instrukcije, dok je z > drugi potrebna nekakva JNZ petlja. Po mom skromnom znanju, prvi pristup je > brži. > > Naravno, tu je i najdrastičniji primer - vraćanje dužine nekog stri > Kod Ca i njemu sličnih ;) tu je potrebna petlja, kod TPa samo naredba dodel > (len=string[0]). Well, jedna string naredba je u Paskalu očigledno brža od svog C pandana, ali prednost C-a je u tome što u jednoj ili dve kratke petlje začas može da uradi nešto za šta u Paskalu treba mnogo više. Recimo, ako trebaš da ubaciš neko slovo u string, ti ćeš u Paskalu preko left i right razdvojiti string pa ga opet sastaviti. C, naprotiv, ceo posao obavlja u jednoj petlji. Koliko je to brže od silnog kopiranja stringova (do čega zapravo dolazi pri pozivima funkcija left & right) ne treba posebno naglašavati.
pascal.431 spantic,
>#=> Merite vi brzinu algoritama i tako nekih stvari, TO >#=> presuđuje! > > To ne može da se izmeri. Merljive su jedino brzine izvršavanja > IMPLEMENTACIJA nekog algoritma u raznim programskim jezicima, gde ljudski > (programerski) faktor itekako utiče na rezultat, svakako više nego sam To nije baš tačno. Itekako su merljive brzine algoritama. Imaš analizu složenosti algoritama. Možeš imati vremensku složenost i prostornu složenost. U današnje vreme je kanda aktuelna samo vremenska ;) Nikako ti nije svejedno da li imaš polinomijalan ili eksponecijalni algoritam. Ma imao ti i najbolji prevodilac, isti ti nimalo neće pomoći ako koristiš neki eksponencijalni "žderač".
pascal.432 dejanr,
>> To nije baš tačno. Itekako su merljive brzine algoritama. Imaš analizu >> složenosti algoritama. Možeš imati vremensku složenost i prostornu >> složenost. U današnje vreme je kanda aktuelna samo vremenska ;) Slažem se. Zapravo, kompajleri vrše optimizacije i to se vidi kroz brzinu rada programa, ali su tu retki spektakularni dobici. Sa druge strane, zamena algoritma *zaista* može da dovede do spektakularnog dobitka, čak i do većeg nego kada se program sa XT-a prebaci na Pantium. Primera za to ima puno, recimo svojevremeno je jedan od zadataka bilo pronalaženje savršenih brojeva (broj koji je jednak zbiru svih svojih delilaca, recimo 28 = 1+2+4+7+14). "Zdravorazumskim" algoritmom je za pronalaženje svih savršenih brojeva u numeričkom opsegu rada računara bilo potrebno recimo par meseci "žvakanja" brojeva, a sa dobrim algoritmom par sekundi. Time, naravno, ne želim da umanjim značaj dobrih optimizacionih kompajlera.
pascal.433 uobradovic,
Ova formula mi je potrebna z Ova formula mi je potrebna za jedan program,mislim zadatak GLEDAJTE: a = 1 +(3 korena iz r) Kako se to pise na Pascalu ? )
pascal.434 dejanr,
>> GLEDAJTE: a = 1 +(3 korena iz r) Nešto kao: a:=1+exp(log(r)/3)
pascal.435 vita,
> Ne postoji takav kriterijum kojim bi izmerio koji je jezik > brži. Možeš sam da meriš koji kompajler pravi brže programe. Pa Naaravno, na to sam i mislio...ali ako si procito koju poruku pre ove... (mrzi me da trazim ko je reko) rece covek..sasvim ispravno Ideje nekih jezika su u startu slabije!, tako da ma koliko dobar komajler bio on ce morati da radi sporije.. (pr: C i Pascal , stringovi) Vita
pascal.436 peca.st,
!-> neko slovo u string, ti ćeš u Paskalu preko left i right !-> razdvojiti string pa ga opet sastaviti. C, naprotiv, ceo posao !-> obavlja u jednoj petlji. Koliko je to brže od silnog kopiranja !-> stringova (do čega zapravo dolazi pri pozivima funkcija left & !-> right) ne treba posebno naglašavati. Left i right? To je iz bejzika, u Pascalu to je Copy. :) Inače, to što kažeš može se u pascalu isto uraditi u jednoj petlji! Evo ovako: Procedure UturiSlovo (Var S : String; Gde : Byte; Sta : Char); Var i : byte; Begin Inc (SŠ0Ć); For i := Length (S) downto Gde + 1 do SŠiĆ := SŠi-1Ć; S ŠGdeĆ := Sta; End; Ovo je onako iz glave, valjda nisam pogrešio. :) (podrazumeva se da je ulazni string kraći od 255 karaktera, da bi mogao nešto da uturiš ;) u njega) Peđa. P.S. Sori na Yuscii.
pascal.437 peca.st,
!->>> GLEDAJTE: a = 1 +(3 korena iz r) !-> !-> Nešto kao: !-> !-> a:=1+exp(log(r)/3) !!! ! Zar ne ide ovde ln ? Osim toga, mislim da je njemu trebalo ovo: a := 1 + 3*sqrt(r); Dakle, mislim da je on tražio 3 * koren iz r, a ne treći koren iz r. Peđa.
pascal.438 eagle,
> a:=1+exp(log(r)/3) """ Lapsus, treba ln. Ako osnova nije navedena uzima se 10, ovde treba e. Btw, log za navedenu osnovu bi išao ovako: log(osnova,x) = ln(x)/ln(osnova)
pascal.439 dejanr,
>> Zar ne ide ovde ln ? Imaš pravo, sorry. Glupi Turbo Pascal ima samo ln... a i inače je dosta siromašan sa funkcijama, ne znam što mu ne dodaše arcsin, arccos, stepenovanje i slične potrebne stvari. >> Dakle, mislim da je on tražio 3 * koren iz r, a ne treći koren iz r. Možda... meni je pre ličilo na treći koren iz r. Sada ima i jedno i drugo, pa će uzeti šta treba :)
pascal.440 dejanr,
>> Lapsus, treba ln. Ako osnova nije navedena uzima se 10, ovde treba e. U pravu si za lapsus, ali ako osnova nije navedena (a ne može se ni navesti) uzima se e.
pascal.445 madamov,
> Ideje nekih jezika su u startu slabije!, tako da ma koliko dobar komajler bio > on ce morati da radi sporije.. (pr: C i Pascal , stringovi) I na osnovu toga zaključuješ da je Pascal brži od C-a na nivou jezika? Hm, nedovoljno parametara...
pascal.446 vitez.koja,
#=> uradi nešto za šta u Paskalu treba mnogo više. Recimo, #=> ako trebaš da ubaciš neko slovo u string, ti ćeš u #=> Paskalu preko left i right razdvojiti string pa ga opet #=> sastaviti. C, naprotiv, ceo posao obavlja u jednoj #=> petlji. Nisam čuo za funkcije Left i Right, a ovde govorimo isključivo o Turbo Paskalu u kome one ne postoje. Umesto toga, tamo imaš funkciju "insert" koja radi umetanje stringa u string, a sklon sam poverovati da je pisana u asembleru. Inače, sada kada sam malo razmislio o celoj stvari, koristeći svoja skromna znanja, prilično sam siguran da nećeš naći primer kod koga su C-like stringovi brži od TPovih.
pascal.447 vitez.koja,
#=> To nije baš tačno. Itekako su merljive brzine #=> algoritama. Imaš analizu složenosti algoritama. Možeš Da, ali nije bitno. Odgovarao sam na poruku iz čijeg konteksta se vidi da se misli na merenje brzine jednog algoritma u više jezika, a ne više algoritama u jednom jeziku. Nadam se da se slažeš da je u tom sučaju ljudski faktor presudan.
pascal.448 eagle,
>>> Lapsus, treba ln. Ako osnova nije navedena uzima se 10, ovde >>> treba e. > U pravu si za lapsus, ali ako osnova nije navedena (a ne može > se ni navesti) uzima se e. Rečenica se odnosila na log u tvojoj poruci :)
pascal.449 vita,
> I na osnovu toga zaključuješ da je Pascal brži od C-a na nivou > jezika? Hm, nedovoljno parametara... Neznam da li shavats o cemu smo pricali! Sto se tice stringova konkretno...jedan je jezik sigurno brzi od drugog , barem malo!...nisam reko koji i za koliko , ali sigurno jeste. Tako da u zavisnosti sta covek radi treba odabrati odgovarajuci jezik+Compiler... Vita
pascal.450 vita,
> misli na merenje brzine jednog algoritma u više jezika, a ne > više algoritama u jednom jeziku. Nadam se da se slažeš da je u > tom sučaju ljudski faktor presudan. E pa nece biti...ne zavisi sve od Ljuda :) koji se bavi programiranjem!! Od toga koliko dobro poznaje jezike i programiranje je solidan faktor. Ali kod klasicnog prevodjena negog algoritma iz jednog jezika u drugi (bez vecih promena ideje) je od presudnog znacaja koliko je jezik(compiler) dobar!!! Valjda se sa ovime slazes. Vita
pascal.451 uobradovic,
Hvala na pomoci,ali izgleda da ja to neznam da napisem ili me pascal zeza. Evo sta sam napisao : var a,r : integer; begin writeln ('unesi r '); readln (r); a := 1 + exp(ln(r)/3); writeln ('prvi broj je ',a); writeln ('drugi broj je ',a-1); end. I sta.On mi napise Type mismatch. Koji mu je K***C. Trazio sam treci koren iz r. Hvala na pomoci Uros :)
pascal.452 drpr,
-> Nešto kao: -> -> a:=1+exp(log(r)/3) Mislim da treba da se i ubaci i za znak jer treći koren se može vaditi i od negativnog broja znači valjda ide kao a:=1+ sgn(r)*exp(log(r)/3) cope
pascal.453 drpr,
-> var a,r : integer; -> a := 1 + exp(ln(r)/3); A nije integer , tj posle ove naredbe rezultat koji se dodeljuje u a će biti realan teko da je tu greška! cope
pascal.454 eagle,
> Mislim da treba da se i ubaci i za znak jer treći koren se može > vaditi i od negativnog broja znači valjda ide kao Može koren, ali ne može logaritam. Treba: a:= 1 + sgn(r) * exp(log(abs(r))/3)
pascal.455 eagle,
> Evo sta sam napisao : > var a,r : integer; > a := 1 + exp(ln(r)/3); var a: real;
pascal.456 peca.st,
!-> Ali kod klasicnog prevodjena negog algoritma iz jednog jezika u !-> drugi (bez vecih promena ideje) je od presudnog znacaja koliko je !-> jezik(compiler) dobar!!! Ne mora da bude. Kod koji si pisao u jednom kompajleru, dakle specijalno za njega, kada prevedeš sintaksno (ako je moguće) na kod koji će biti dostupan drugom kompajleru, ne mora da reprezentuje odnos brzine ta dva kompajlera, zato što si ti pri pisanju koristio neke mogućnosti prvog kompajlera, optimizovao si kod rukovodeći se kompajlerom, a u drugom kompajleru to se, recimo, sporije izvršava, ali postoji način da uradiš isto onako brzo kao u prvom komp., a možda postoji način da isto to uradiš i brže. Nije dovoljno samo sintaksno prevesti, moraju se vršiti semantičke optimizacije. Peđa.
pascal.457 peca.st,
!-> var a,r : integer; !-> a := 1 + exp(ln(r)/3); !-> I sta.On mi napise Type mismatch. !-> Koji mu je K***C. Logaritamska funkcija, tačnije u ovom slučaju funkcija korenovanja je, jasna stvar, realna a ne celobrojna. Ti pokušavaš da celobrojnoj promenljivoj dodeliš realan broj, a to neće ići. Promeni prvi red u "var a,r : real;" i radiće bez problema. !-> Trazio sam treci koren iz r. Ok, ja sam "3 korena iz r" shvatio drugačije. :) Peđa.
pascal.458 dejanr,
Odgovor u temi PC.PROG/dizajn, poruka 2.12
pascal.459 dejanr,
Prvo, pogrešno si deklarisao brojeve, treba da budu real ili još bolje extended (ako nemaš koprocesor, moraš emulaciju da uključiš, dakle na početku programa {$N+,E+} ili tako nešto. Drugo, ln je definisan samo za pozitivne brojeve, nulu bi morao da ispitaš sa if, a za negativne brojeve da koristiš abs() pa da posle pomnožiš sa znakom od broja.
pascal.460 mpaunovic,
Ova rasprava o trećem korenu me je podsetila na nešto što se valjda učilo iz matematike, ali ja mora biti da nisam bio na času ili sam igrao podmornica. Pa ako može neko da me prosvetli: Recimo x**3 = 1, rešenje je x=1, jeli tako? Jeste :) Medjutim to je i jednačina trećeg stepena, x**3 - 1 = 0 i ona bi znači trebala da ima tri rešenja. A nema. Da li ta jednačina je izuzetak od tog pravila, ili ima rešenja koja su jednaka sva tri?
pascal.461 dejanr,
>> Recimo x**3 = 1, rešenje je x=1, jeli tako? Jeste :) >> Medjutim to je i jednačina trećeg stepena, x**3 - 1 = 0 >> i ona bi znači trebala da ima tri rešenja. A nema. Da li >> ta jednačina je izuzetak od tog pravila, ili ima rešenja >> koja su jednaka sva tri? Dobro pitanje, ali ni jedan od dva ponuđena odgovora nije tačan ;) Prvo, pravilo da jednačina N-tog stepena ima tačno N nula je toliko fundamentalno da ga nazivaju "Osnovnim stavom algebre". Tu nema izuzetaka (ako izuzmemo recimo jednačinu n-tog stepena koja uz x^n ima koeficijent 0, jer to i nije jednačina n-tog stepena nego najviše (n-1)-og). Konkretno, jednačina trećeg stepena (a i pomenuta x^3-1=0 je svakako jednačina trećeg stepena) ima uvek tri nule. E sad, neke dve od te tri nule mogu izuzetno da budu jednake, a mogu i sve tri, u kom slučaju je u pitanju jednačina koja se može svesti na trivijalan oblik (x-a)^3=0. Međutim, data jednačina nema jednaka rešenja - ima ih tri i sva tri su različita! Sve to izgleda nemoguće ali nije - jedno rešenje je zaista x=1 a preostala dva su -1/2+j(sqrt(3)/2) i -1/2-j(sqrt(3)/2). Kao što se vidi, druga dva rešenja su kompleksni brojevi, pri čemu je j=sqrt(-1). Uopšte, ako se uzme neki kompleksan broj z=a+bj (a i realan broj je u opštem slučaju kompleksan, samo što je b=0) a zatim predstavi u obliku: Z=RO*(cos FI + j*sin FI) njegov n-ti koren imaće n vrednosti i one će glasiti Y1,2,...n = RO'*(cos ((FI+2*k*PI)/n) + j*sin ((FI+2*k*PI)/n)) gde je RO' n-ti koren iz RO, PI je broj Pi (3.1415...) a k uzima vrednosti 1, 2, ... n. Ako nekoga zanima, mogu da pošaljem (u PC.PROG/algoritmi) algoritam za rešavanje jednačine trećeg stepena i program koji je rešava. Za razliku od većine algoritama koje ćete naći po knjigama, ovde su pokriveni *svi* slučajevi, dakle i razni trivijalni koji se obično preskaču.
pascal.462 dvesic,
>> Ako nekoga zanima, mogu da posaljem (u PC.PROG/algoritmi) >> algoritam za resavanje jednacine treceg stepena i program koji >> je resava. Za razliku od vecine algoritama koje cete naci po >> knjigama, ovde su pokriveni *svi* slucajevi, dakle i razni >> trivijalni koji se obicno preskacu. Zanima ! Zanima !
pascal.463 madamov,
> Neznam da li shavats o cemu smo pricali! Shvatam ja, ali u tvojim porukama ne piše baš ono što hoćeš da kažeš. B) A tvoja poruka bi trebalo da bude otprilike: kada je o stringovima reč, Pascal bi zbog svoje organizacije podataka ovakvog tipa trebalo da bude brži od C-a. I to je diskutabilno, recimo operacija kopiranja stringa bi trebalo da bude iste brzine, dok bi po tom rezonu funkcije tipa strcat, strrchr i slične u C-u bile sporije, tj. sve one koje kao reper imaju kraj stringa. S druge strane, traženje karaktera sa leve strane u nekom stringu bi opet trebalo da ide istom brzinom. I za strcat je diskutabilno, C treba samo da nađe kraj stringa na koji lepiš drugi string i na tom mestu uradi strcpy, dok Pascal odmah zna gde je kraj stringa, ali mora da izbaci dužinu drugog stringa, zalepi ga na prvi i onda sabere njihove dužine i upiše na početak prvog stringa. Sve u svemu, mnogo priče da bi se dokazalo nešto što i pored svega navedenog ipak zavisi samo od implementacije jezika, tj. od kompajlera.
pascal.464 v.nesic,
> Ako nekoga zanima, mogu da pošaljem (u PC.PROG/algoritmi) algoritam za Zanima :)
pascal.465 paki,
­> Ako nekoga zanima, mogu da pošaljem (u PC.PROG/algoritmi) algoritam za ­> rešavanje jednačine trećeg stepena i program koji je rešava. Za razliku ­> od većine algoritama koje ćete naći po knjigama, ovde su pokriveni *svi* ­> slučajevi, dakle i razni trivijalni koji se obično preskaču. Bilo bi fino :) Nego, pade mi na pamet jedna stvar. Da li je operacija 'kvadratni koren' definisana i za brojeve manje od nule?
pascal.466 gavros,
> GLEDAJTE: a = 1 +(treći koren iz r) > Kako se to pise na Pascalu ? U Turbo Pascal-u bi to izgledalo ovako: var b:real; function treci_koren(a:real):real; begin if(a>0)then treci_koren:=exp(ln(abs(a))/3) else if(a<0) then treci_koren:=-exp(ln(abs(a))/3) else treci_koren:=0 end; begin readln(b); writeln(treci_koren(b)+1); end. Ovo je za probu,uneseš broj i rezultat će biti 1+treći koren(broj). Pozdrav.
pascal.467 spantic,
> misli na merenje brzine jednog algoritma u više jezika, a ne više > algoritama u jednom jeziku. Nadam se da se slažeš da je u tom sučaju > ljudski faktor presudan. Da, upravo tako. Dejanr je izneo primer koji nam je Joza stalno probijao uši sa časova iu PJMP-a oko alociranja manipulacije sa matricom. Mehaničko prebacivanje algoritma tu neće nimalo pomoći.
pascal.468 vita,
> isto onako brzo kao u prvom komp., a možda postoji način da > isto to uradiš i brže. Nije dovoljno samo sintaksno prevesti, > moraju se vršiti semantičke optimizacije. Na to sam mislio kad sam reko "bez veše promene ideje" Pod idejom sam smatrao program kakav je napisan u izvornom jeziku! Prevođenje programa iz C-a u Pascal ce ici mnogo bezbolnije i bez "veše promene ideje" nego prevođenje programa iz C-a u BASIC Vita
pascal.469 vita,
> Recimo x**3 = 1, rešenje je x=1, jeli tako? Jeste :) > Medjutim to je i jednačina trećeg stepena, x**3 - 1 = 0 > i ona bi znači trebala da ima tri rešenja. A nema. Da li Pa kako recimo kvadratna jednacina kad je Determinanta=0 ima samo jedno resenje! (dva ista) Eto ti odgovor. Vita
pascal.470 vita,
> priče da bi se dokazalo nešto što i pored svega navedenog ipak > zavisi samo od implementacije jezika, tj. od kompajlera. Cek malo.... Ali cela ideja ANSI C-a je u tome da stringovi budu onakvi kakvi jesu u C-u (isto vazi i za Pascal). Pa prema tome, neke stvari jednostavno su odredjene u napred i ma koliko dobar kompajler bio, one su jednostavno brče! (Pr: len() u C-u i Pascalu) Vita
pascal.471 pedjak,
> Nego, pade mi na pamet jedna stvar. Da li je operacija 'kvadratni > koren' definisana i za brojeve manje od nule? Nije u skupu realnih brojeva.
pascal.472 debelijencija,
Nije da se bunim, ali radi održavanja matematičke pismenosti... :) Ovo što si ti odgovorio čoveku odnosi se na polje kompleksnih brojeva. U polju realnih brojeva ova jednačina ima jedno rešenje i to baš 1. Jednostavno: xž3-1=0 <=> (x-1)(xž2+x+1)=0 <=> x=1 ili xž2+x+1=0. Sada imamo: xž2+x+1=(x+1/2)ž2+3/4 > 0, dakle, nema više rešenja. Ono što si rekao za polje kompleksnih brojeva tačno je, uz par sitnih prepravki koje slede... !=?> pravilo da jednačina N-tog stepena ima tačno N nula je !=?> toliko fundamentalno da ga nazivaju "Osnovnim stavom !=?> algebre". Tu nema izuzetaka (ako izuzmemo Pre svega, jednačina nema nule, nego rešenja, a polinom ima nule. Ipak, to nije toliko bitno koliko da to nije Osnovni stav algebre. Osnovni stav algebre je: Teorema: Svaki polinom sa realnim koeficijentima ima jednu kompleksnu nulu. Koristeći taj stav može se dokazati da ih ima onoliko koliki mu je stepen, pri čemu se koristi Bezuov stav, pa posle još preneti na oblast jednačina. Inače, vrlo je bitno da su svi koeficijenti realni! !=?> dva rešenja su kompleksni brojevi, pri čemu je j=sqrt(-1). U novijoj literaturi imaginarna jedinica se označava sa i, ali to nije toliko bitno koliko da ne može da se piše sqrt(-1)! Jednostavno, koren za negativne brojeve nije definisan. Doduše, ovo važi za realne brojeve, ali korenovanje kompleksnih brojeva nije funkcija, jer da ima više vrednosti za isti broj. (Interesanto je, da je u polju kompleksnih brojeva: sqrt(-1)=˝i ! :) Dakle, i je rešenje jednačine: xř=-1, tj.: Definicija: i je broj za koji važi iř=-1. Uopšte, jednačina xř=-1 je vrlo važna jednačina u razvoju matematike, jer su zbog nje izmišljeni kompleksni brojevi...
pascal.473 dejanr,
>> > Recimo x**3 = 1, rešenje je x=1, jeli tako? Jeste :) >> > Medjutim to je i jednačina trećeg stepena, x**3 - 1 = 0 >> > i ona bi znači trebala da ima tri rešenja. A nema. Da li >> >> Pa kako recimo kvadratna jednacina kad je Determinanta=0 >> ima samo jedno resenje! (dva ista) Eto ti odgovor. Nije to odgovor. Kvadratna jednačina koju opisuješ zaista ima dva jednaka rešenja, ali jednačina trećeg stepena koju je naveo ima tri rešenja, i to različita. Jedno od njih je realan broj, a preostala dva su kompleksni.
pascal.474 peca.st,
!-> Nego, pade mi na pamet jedna stvar. Da li je operacija 'kvadratni !-> koren' definisana i za brojeve manje od nule? Paki, učićeš to u trećoj godini, ima da ti bude muka. ;) So, jeste definisana u polju kompleksnih brojeva. Kako je i = sqrt (-1) (dejanr je ovo obeležavao sa j, mada su nas učili sa i) tako se sqrt(x), x<0, predstavlja kao i*sqrt(abs(x)) žemu ovo služi, osim da bi prvo tromesečje u trećoj godini iz algebre u MG bilo dosadno, pojma nemam. Peđa.
pascal.475 paki,
­> Teorema: Svaki polinom sa realnim koeficijentima ima jednu kompleksnu ­> nulu. Možda treba: '...ima _bar_ jednu kompleksnu nulu.'.
pascal.476 maksa,
>> nule. Ipak, to nije toliko bitno koliko da to nije Osnovni >> stav algebre. Osnovni stav algebre je: >> Teorema: Svaki polinom sa realnim koeficijentima ima jednu >> kompleksnu nulu. Digresija, šum & zanimljivost - OTA je inače bila Gausov doktorat.
pascal.477 niklaus,
(:> ima tri rešenja, i to različita. Jedno od njih je realan broj, (:> a preostala dva su kompleksni. I to da važi: x1=a+ib i x2=a-ib (x1,x2 ţ CĐR) (:niklaus:)
pascal.478 pedjak,
> Teorema: Svaki polinom sa realnim koeficijentima ima jednu > kompleksnu nulu. Ne. Teorema glasi: Svaki kompleksan polinom P, dg P ˛1 ima bar jedan koren.
pascal.479 vita,
> Nije to odgovor. Kvadratna jednačina koju opisuješ zaista ima > dva jednaka rešenja, ali jednačina trećeg stepena koju je naveo > ima tri rešenja, i to različita. Jedno od njih je realan broj, > a preostala dva su kompleksni. Ma ok u vezi toga. Ali sta ce uopste ovolika rasprava u PC.PROG.pascal????? :))))
pascal.480 vita,
> Paki, učićeš to u trećoj godini, ima da ti bude muka. ;) Za r neucismo mi to u II-oj??? kod nas u mg mislim.
pascal.481 madamov,
> Ali cela ideja ANSI C-a je u tome da stringovi budu onakvi kakvi jesu u C-u > (isto vazi i za Pascal). Tako je bilo od početka, nema veze sa ANSI C-om.
pascal.482 peca.st,
!-> Možda treba: '...ima _bar_ jednu kompleksnu nulu.'. Ne, gosn. Neša Lazarević insistira na tome da je dovoljno reći "ima jednu kompleksnu nulu" ! Peđa.
pascal.483 dekiper,
>! -> Nego, pade mi na pamet jedna stvar. Da li je operacija 'kvadratni >! -> koren' definisana i za brojeve manje od nule? Možda i jeste, ko zna. Bilo bi logično da ako je sqrt(9)=3, da je onda sqrt(-9)=sqrt(9)*sqrt(-1). Pošto se sqrt(-1) popularno zove i imagina- rna jedinica onda sve što treba da uradiš je da promeniš predznak iz - u + i da posle dodaš ovo sqrt(-1). Konkretno: program korenje; š :))))) ć Var broj:real; begin readln(broj); if broj > 0 then writeln(sqrt(broj)); else if broj=0 then writeln(0); else if broj < 0 then writeln(sqrt(-broj),'i'); end. Pozdrav, Deki BTW, ne zamerite na eventualnim sintaksnim greškama u prg-u. Šta ću, na- vikao sam se na C.
pascal.484 peca.st,
!-> Za r neucismo mi to u II-oj??? kod nas u mg mislim. Kompleksne brojeve smo učili ove godine, ili ja imam rupe u sećanju. ;) Peđa.
pascal.485 mpaunovic,
Zahvaljujem se svima na odgovoru oko kompleksnih brojeva i jednacine treceg stepena. Mnogo sam naucio novih stvari, a neke sam i znao ranije to jest predavane su na fakultetu ali je to davno bilo pa sam pozaboravljao. Inace i kod nas su imaginarnu jedinicu zvali j - valjda je tako zovu inzenjeri, a matematicari kazu i. Ne znam odakle razlika
pascal.486 paki,
­> Kako je i = sqrt (-1) (dejanr je ovo obeležavao sa j, mada su nas učili ­> sa i) tako se sqrt(x), x<0, predstavlja kao i*sqrt(abs(x)) Pa ne može ovako, komšija :) Nas profa uči da sqrt:R->R, a da je i*i=-1. Možda ćemo u trećoj godini proširiti definiciju, ali za sada je ovako :)
pascal.487 paki,
­> Možda i jeste, ko zna. Bilo bi logično da ako je sqrt(9)=3, da je onda ­> sqrt(-9)=sqrt(9)*sqrt(-1). Pošto se sqrt(-1) popularno zove i imagina- ­> rna jedinica onda sve što treba da uradiš je da promeniš predznak iz - ­> u + i da posle dodaš ovo sqrt(-1). E, tu sam te čekao :) A zašto je sqrt(-9) 3*i, a ne -3*i?
pascal.488 paki,
­> Ali sta ce uopste ovolika rasprava u PC.PROG.pascal????? Smeta li? :)
pascal.489 predragd,
> Zašto neke MS-DOS funkcije (IOCTL, čitanje/setovanje > serijskog broja diska) ne rade u protected modu (BP 7.0). > Dok na primer funkcija $41 - brisanje fajla, takođe u > protected modu, radi odlično. Sa druge strane sve te > funkcije u real modu (takođe BP 7.0) rade potpuno > ispravno. Prosto je neverovatno da na Sezam-u niko nije znao odgovor na ovo pitanje. No, kako bilo da bilo uspeo sam da dodjem do zadovoljavajuceg resenja. Ukoliko nekog interesuje ova problematika u prilogu sam ostavio primer pozivanja real mode interrupt-a iz DPMI-a. Programcic je skinut sa Borland download BBS-a, autor mi je nepoznat. Peđa. readwrte.arj
pascal.490 predragd,
> Primetio sam da u programima imam gomilu istih procedura > koje rade sa različitim tipovima podataka (procedure za > unos). Da li objektno programiranje omogućava da ja imam > jednu proceduru za unos koja će da obrađuje sve moje > podatke. Bio bih jako zahvalan ako bi Mogao bi da izvedes nesto kao to radi Turbo Vision 2. Svi podaci se unose kao stringovi, a moguce je definisati kakav ce biti format podataka za unos. Kasnije te podatke konvertujes u tebi potreban oblik. Pedja.
pascal.491 peca.st,
!-> Nas profa uči da sqrt:R->R, a da je i*i=-1. Tja, teoriju nikad nisam voleo, možda sam i pogrešio. Priznajem da tačnu definiciju broja i ne znam. Postoje dve mogućnosti, ili je rešenje jednačine i*i=-1, ili je i=sqrt(-1). Peđa. P.S. vicevi.esnafski: Ovo je pc.prog.pascal
pascal.492 peca.st,
!-> E, tu sam te čekao :) A zašto je sqrt(-9) 3*i, a ne -3*i? Paki, pazi malo! Koliko je sqrt(4)? Nemoj samo da kažeš plus/minus 2. sqrt(4) = 2, po definiciji koren vraća pozitivnu vrednost! Drugo je to što je (plus/minus 2) na kvadrat = 4. Ako imaš x na kvadrat = 4, odatle je x = +/- 2. Ali ako imaš x = sqrt(4), odatle je x = 2. Peđa.
pascal.493 paki,
­> Priznajem da tačnu definiciju broja i ne znam. Postoje dve ­> mogućnosti, ili je rešenje jednačine i*i=-1, ili je i=sqrt(-1). Ono prvo :) Pitao sam danas profu. Inače, ovo pitanje sam postavio zbog teksta u Računarima o MatematiKi 386 u kome se kaže otprilike 'Program je stvarno profesionalan, umesto da prijavi grešku na 'sqrt(-9)', kao digitroni, on vraća 3*i.', što mi je malko prismrdelo. ­> P.S. vicevi.esnafski: Ovo je pc.prog.pascal OK, nećemo više :)
pascal.494 uobradovic,
Hvala na odgovorima ! Video sam u cemu je greska. Imam dva pitanja : -> Sta je to Turbo Vision(video sam da postoji na pascalu) ali cemu sluzi -> kako se instalira emm386 Hvala Uros :)
pascal.495 eagle,
> -> Sta je to Turbo Vision(video sam da postoji na pascalu) ali > cemu sluzi Turbo Vision je biblioteka za kreiranje korisničkog interfejsa. Dakle, ako radiš u TV, programi će ti spolja izgledati isto kao standardni Borlandov IDE (prozori, meniji, dijalozi, editor...) Jako korisna stvar.
pascal.496 dragisha,
-> Hm, zaista. C je, pošto je prljav, osuđen da sa stringovima radi preko -> pointera i to se teško drugačije može implementirati (?). Pascal je Itekako može. Rješenje je ASCIIZ string + pojam dinamičkog niza. Takav sistem pri prosljeđivanju takvog niza kao parametra šalje prvo ukupnu veličinu, zatim pointer na sam niz tako da do proboja ne može doći. To slanje veličine je dio metoda i pravi (:) jezici to rade sami:). (znam da si ti ovo već čitao, ali zbog ostalih i zbog tvog upitnika ponavljam jopet:).
pascal.497 dragisha,
-> To nije usporavanje, to je realno odmeravanje snaga pri istim uslovima. -> Primer sa stringovima ide možda u korist TURBO paskala, no nije teško -> naći primere gde je C 'na svome'. Bilo bi zanimljivo da nam daš neki konkretan primjer kad ti već nije teško. Ja nemam ideje:).
pascal.498 dragisha,
-> Ne mogu da odolim... :-) Uzmi TopSpeed Modulu-2, i batali Paskale, to -> je preživljeno... (zdravo kolega:) Moja prva reakcija je isto to:), a druga (ono što čovjeka zanima:) je TopSpeed Pascal. TopSpeed Pascal je ISO Pascal, što znači da je "za nijansu" kompatibilniji sa ostatkom Pascala na tržištu nego Turbo Pascal koji je budževina koja će da radi na PCju i nigdje više! Ako je nekome vrhunska ambicija PC programiranje, samo naprijed. Dalje, TS Pas kompajlira u .OBJ, veže se sa C, C++, M2, ASM, ima memorijske modele (+overlay +DLL za DOS), OOP... Zauzima par megabajta zajedno sa IDE. Ima i TP2TS.
pascal.499 dragisha,
-> Imaš pravo, sorry. Glupi Turbo Pascal ima samo ln... a i inače je dosta ?????????????????? Postaje zabavno:). žemu da zahvalimo na ovom trenutku iskrenosti?:)
pascal.500 dejanr,
>> > Glupi Turbo Pascal ima samo ln... a i inače je dosta >> > ?????????????????? >> >> Postaje zabavno:). žemu da zahvalimo na ovom trenutku iskrenosti?:) Ne treba nikakva posebna iskrenost da se Turbo Pascalu zameri što nema dovoljno funkcija nego mora da se piše procedura i za takvu sitnicu kao što je arccos. Svakom jeziku (ili bar svakom koji sam ja video) mogu se sa pravom uputiti mnoge zamerke, i uvek ima mesta za njegova unapređenja. Recimo, stalno unapređujući TopSpeed Modulu 2, kroz dvadesetak godina će, ako se potrude, imati proizvod koji vredi onoliko koliko danas vredi Turbo Pascal ;>
pascal.501 lucas,
Mali problem u Turbo Visiji i Turbo Pascalu 6.0, elem, neće da mi pozove komande u dijalog box-u već pozima samo komande sa menija i statusne linije. npr. komadna cmQuit mi ne radi ako pritisnem button u dialog box-u, izgleda da sam ja glup :) a radi mi kada je pozovem na meniju ili pritisnem mišem na stasus line Pozdrav LUCAS ....
pascal.502 .bale.,
> -> Hm, zaista. C je, pošto je prljav, osuđen da sa stringovima radi > preko -> pointera i to se teško drugačije može implementirati (?). > Pascal je > > Itekako može. Rješenje je ASCIIZ string + pojam dinamičkog niza. Takav > sistem pri prosljeđivanju takvog niza kao parametra šalje prvo ukupnu > veličinu, zatim pointer na sam niz tako da do proboja ne može doći. To > slanje veličine je dio metoda i pravi (:) jezici to rade sami:). > > (znam da si ti ovo već čitao, ali zbog ostalih i zbog tvog upitnika > ponavljam jopet:). Može li malo detaljnije? Ja sam hteo da kažem da nema 'leba pored cast-a iz ko-zna-čega u char* ...
pascal.503 kriss,
˙˙ TopSpeed Pascal. TopSpeed Pascal je ISO Pascal, što znači da GDE može da se nabavi to čudo?
pascal.504 niklaus,
(:> E, tu sam te čekao :) A zašto je sqrt(-9) 3*i, a ne -3*i? Zato što... ű(-9) = ű(9*(-1)) = ű9 * ű(-1) = 3 * ű(-1) = 3 * i (:niklaus:)
pascal.505 niklaus,
(:>> Teorema: Svaki polinom sa realnim koeficijentima ima jednu (:>> kompleksnu nulu. (:> (:> Ne. Teorema glasi: Svaki kompleksan polinom P, dg P ˛1 ima bar (:> jedan koren. A kasnije ćete sa izvodima tačno znati koliko je kompleksnih, a koli- ko realnih korena... (: (:niklaus:)
pascal.506 dragisha,
-> Ne treba nikakva posebna iskrenost da se Turbo Pascalu zameri što nema -> dovoljno funkcija nego mora da se piše procedura i za takvu sitnicu kao -> što je arccos. Svakom jeziku (ili bar svakom koji sam ja video) mogu se Profesionalac će da plati matematičku biblioteku ili će to napraviti jednom za svagda u UNIT i završiti s time. Zar ne?:) -> Recimo, stalno unapređujući TopSpeed Modulu 2, kroz dvadesetak godina -> će, ako se potrude, imati proizvod koji vredi onoliko koliko danas vredi -> Turbo Pascal ;> žuo sam nešto da osvajaju tehnologiju TPU-a, i krešu opcije za rad sa memorijskim modelima da se koliko toliko približe Turbo Pascalu:). -- [A clear conscience is merely the result of bad memory.]
pascal.507 ilazarevic,
Kako da pozovem private proceduru u objektu? Totalni sam početnik što se objekata tiče... :)
pascal.508 kriss,
˙˙ TopSpeed Pascal. TopSpeed Pascal je ISO Pascal, što znači da GDE može da se nabavi to čudo?
pascal.509 paki,
­> Zato što... ­> ű(-9) = ű(9*(-1)) = ű9 * ű(-1) = 3 * ű(-1) = 3 * i žek, odakle ű(-1)=i? Zašto nije -i? Ali OK, nije ni važno.
pascal.510 dejanr,
>> Profesionalac će da plati matematičku biblioteku ili će to napraviti >> jednom za svagda u UNIT i završiti s time. Zar ne?:) 'oće, ako radi sa floating point brojevima. Meni dosta longint. >> > Recimo, stalno unapređujući TopSpeed Modulu 2, kroz dvadesetak godina >> > će, ako se potrude, imati proizvod koji vredi onoliko koliko danas vredi >> > Turbo Pascal ;> >> >> žuo sam nešto da osvajaju tehnologiju TPU-a, i krešu opcije za rad sa >> memorijskim modelima da se koliko toliko približe Turbo Pascalu:). Neka naprave da prevodi onoliko brzo koliko turbo pascal, pravi kod jednake dužine i da se taj kod jednako brzo izvršava, pa da pričamo dalje.
pascal.511 eagle,
> Kako da pozovem private proceduru u objektu? Ako private metod pozivaš unutar istog unita (ili programa), možeš ga pozivati kao običan metod. Izvan svog unita privatni metodi i polja su nedostupni.
pascal.512 eagle,
> Mali problem u Turbo Visiji i Turbo Pascalu 6.0, > elem, neće da mi pozove komande u dijalog box-u već pozima samo > komande sa menija i statusne linije. > npr. komadna cmQuit mi ne radi ako pritisnem button u dialog > a radi mi kada je pozovem na meniju ili pritisnem mišem na stasus line U principu, sve komande koje napravi neki element dijaloga obrađuju se u handleevent metodu tog dijaloga. Dakle cmquit u ovom slučaju, ili bilo koja komanda nekog dugmeta ne bi trebala da stigne do application.handlevent metoda, što se očigledno i ne dešava u tvom programu. Meniji i statusna linija pozovu putevent koji ubaci komandu u event, i tu komandu getevent pokupi u sledećem krugu i prosledi handleventu koji reaguje, na primer prekidom programa ako je cmquit. Dijalozi, pretpostavljam, obrišu event na kraju.
pascal.513 .bale.,
> žek, odakle ű(-1)=i? Zašto nije -i? Pa to mu je definicija...
pascal.514 paki,
­>> žek, odakle ű(-1)=i? Zašto nije -i? ­> ­> Pa to mu je definicija... Ne, definicija mu je i*i=(-1).
pascal.515 vitez.koja,
#=> Bilo bi zanimljivo da nam daš neki konkretan primjer kad #=> ti već nije teško. Ja nemam ideje:). Pointerska aritmetika, na primer.
pascal.516 .bale.,
> Ne, definicija mu je i*i=(-1). ? Pa ja sam živeo u zabludi decenijama... :)
pascal.517 dr.grba,
>> Ne, definicija mu je i*i=(-1). Rekao bih da nisi u pravu. Definicija imaginarne jedinice jeste "kvadratni koren iz -1". Formalno, ono što ti nazivaš definicijom nema logičku osnovu, pošto koristiš broj i da bi izveo -1. Ne ide tako, broj i moraš da imaš kao izvedenu vrednost.
pascal.518 ilazarevic,
> možeš ga pozivati kao običan metod. Izvan svog unita privatni > metodi i polja su nedostupni. Hm, nisam baš najbolje shvatio :) Kad iz svog programa pozivam neki unit, da li mogu da koristim privatne metode tog unita?
pascal.519 paki,
­>>> Ne, definicija mu je i*i=(-1). ­> ­> Rekao bih da nisi u pravu. Definicija imaginarne jedinice jeste ­> "kvadratni koren iz -1". Formalno, ono što ti nazivaš definicijom ­> nema logičku osnovu, pošto koristiš broj i da bi izveo -1. Ne ide ­> tako, broj i moraš da imaš kao izvedenu vrednost. Evo, citat (dobro, nije baš citat :) iz moje sveske: "Treba rešiti jednačinu x^2=-1. Uzmimo i takvo da je i^2=-1. ..." Jedino ako profesori iz MG loše predaju. Inače, ovo učim u drugoj godini. Možda se kasnije menja definicija (tj. proširuje), ali ne verujem.
pascal.520 eagle,
> Hm, nisam baš najbolje shvatio :) Kad iz svog programa pozivam > neki unit, da li mogu da koristim privatne metode iz tog unita? Ne možeš.
pascal.521 eagle,
> Rekao bih da nisi u pravu. Definicija imaginarne jedinice jeste > "kvadratni koren iz -1". Formalno, ono što ti nazivaš > definicijom nema logičku osnovu, pošto koristiš broj i da bi > izveo -1. Broj i je jedno rešenje jednačine sqr(x) + 1 = 0, iliti broj sa osobinom da je sqr(i) = -1. Pošto jednačina ima dva rešenja, (0,1) i (0,-1), uzima se da je i po definiciji kompleksan broj (0,1).
pascal.522 eagle,
> Evo, citat (dobro, nije baš citat :) iz moje sveske: > "Treba rešiti jednačinu xž2=-1. Uzmimo i takvo da je iž2=-1. Ovo je sasvim ispravno. Na primer, x=sqrt(-5) se rešava Ovako: A ne ovako: x=sqrt(-5) x=sqrt(-5) x=sqrt(sqr(i)*5) x=sqrt(-1)*sqrt(5) x=i*sqrt(5) x=i*sqrt(5)
pascal.523 nikac,
>■ Dalje, TS Pas kompajlira u .OBJ, veže se sa C, C++, M2, ASM, >■ ima memorijske modele (+overlay +DLL za DOS), OOP... Zauzima >■ par megabajta zajedno sa IDE. Ima i TP2TS. Sve sto si nabrojao ima i BP7.0 ... (naravno bez tp2ts ;)
pascal.524 nikac,
>■> Teorema: Svaki polinom sa realnim koeficijentima ima jednu >■> kompleksnu nulu. >■ >■ Ne. Teorema glasi: Svaki kompleksan polinom P, dg P ˛1 ima bar >■ jedan koren. Jok more vec je debelijencija u pravu. Ako imas nesto protiv toga zali profesorima iz Univerzitetu u Beogradu. Tacnije u zvanicnom udzbeniku gorepomenutog univerziteta, konkretno pise sledece(crno na belom): "Glavni stav algebre: Svaki polinom mora imati jedan koren, realan ili kompleksan" BTW. toliko o onoj raspravi da polinom ima nule a ne korene ;)
pascal.525 dragisha,
-> >> žuo sam nešto da osvajaju tehnologiju TPU-a, i krešu opcije za rad sa -> >> memorijskim modelima da se koliko toliko približe Turbo Pascalu:). -> -> Neka naprave da prevodi onoliko brzo koliko turbo pascal, pravi kod -> jednake dužine i da se taj kod jednako brzo izvršava, pa da pričamo -> dalje. Zašto jednake dužine, zar nije fora da je kraće a brže?:) A brzina kompilacije mi je sasvim dovoljna. Za vrijeme za koje mi prevede 600 Kb i pametno ga ulinkuje (da! postoji i smart link bez .TPU) ne mogu do WCa da odem kako treba. Osim toga, za onolike optimizacije, TRUE! .OBJ, vezu na TRUE! .LIB itt mogu da mu oprostim i manju brzinu kompiliranja/linkovanja. Osim toga, standard je standard. Meni PC nije vrhunska ambicija pa da se ubijam sa TP. BTW, koju si ono verziju TS ti evaluirao svojevremeno? -- [Tagline Disabled]
pascal.526 dragisha,
-> #=> Bilo bi zanimljivo da nam daš neki konkretan primjer kad -> #=> ti već nije teško. Ja nemam ideje:). -> -> Pointerska aritmetika, na primer. Fakat je nema, ali je fakat i da za njome nema previše potrebe. Većinu stvari koje se odrađuju pointerskom aritmetikom dobar optimizator će tako i uraditi ali programer neće morati da vodi računa o tome. Dobar primjer je ona poruka u dizajn temi od DejanR-a. Svaki C programer će da potrči i to radi pointerskom aritmetikom, jer TAKO TREBA:), a svaki Pascal programer će razmisliti par sekundi i odraditi ugnježđeni FOR i točka. Nagradno pitanje, šta je čitljivije? Dvije for petlje ili neka skalamerija sa pointerima? -- [What is the meaning of life in 50 words or less]
pascal.527 uobradovic,
Da li je problem da se na Turbo Pascalu naprave padajuci meniji i da se opcije skroluju.Ako neko ima algoritam nek ga posalje. Hvala :)
pascal.528 peca.st,
!-> Da li je problem da se na Turbo Pascalu naprave padajuci meniji i !-> da se opcije skroluju.Ako neko ima algoritam nek ga posalje. Što bi ti neko slao nešto što već imaš, a nisi svestan da imaš? ;) To se zove Turbo Vision i mnogo je dobra stvar. :) Sastavni je deo Turbo Pascal-a. Ako ti se to ne svidi (malkice je komplikovan za upotrebu) imaš u dir-u neke unite za to. (recimo, tot*.*) Ako ti se i to ne svidi, onda piši sam. :) Peđa.
pascal.529 pedjak,
>>■ Ne. Teorema glasi: Svaki kompleksan polinom P, dg P ˛1 ima bar >>■ jedan koren. > Jok more vec je debelijencija u pravu. Ako imas nesto protiv toga > zali profesorima iz Univerzitetu u Beogradu. Tacnije u Hm, teoremu sam prepisao iz Matematike I (ETF), pa sad ako oni lažu mene... :) MIslim da sam ipak u pravu...
pascal.530 dragisha,
-> >■ Dalje, TS Pas kompajlira u .OBJ, veže se sa C, C++, M2, ASM, -> >■ ima memorijske modele (+overlay +DLL za DOS), OOP... Zauzima -> >■ par megabajta zajedno sa IDE. Ima i TP2TS. -> -> Sve sto si nabrojao ima i BP7.0 ... (naravno bez tp2ts ;) Super. Ima i ISO i zauzima 2 mb na disku? -- [Castration takes balls.]
pascal.531 uobradovic,
-> To se zove Turbo Vision .... Ja znamda imam Turbo Vision i da je on zatakve sari i pravljen.Problem je u tome sto ja neznam da rad.Vision - u. A sto se ttot*.* gde ti se to nalaz. Uros :)
pascal.532 uobradovic,
Izvinite na greskama pri kucanju.
pascal.533 dejanr,
>> > Sve sto si nabrojao ima i BP7.0 ... >> >> Super. Ima i ISO i zauzima 2 mb na disku? Zauzima 5-6 mega ako se instalira samo DOS verzija. Deo od toga su HELP-ovi i druga on-line dokumentacija. Ako hoćeš i Windows, onda zauzima dosta više, jer ima raznoraznih alatki. A što se tiče ISO kompatibilnosti, ja za nju ne dajem ni koliko crno pod noktom. Ako nećeš da koristiš ekstenzije, ne moraš da ih koristiš. Ako ti trebaju, tu su. Doduše, tako program neće raditi na platformama na kojima ne postoji Turbo/Borland Pascal... pa šta, ne mora ni da radi. Ako nekome treba program za razne platforme, dakle neki potencijalno veoma obiman projekat, verovatno će ga i tako raditi u C++-u.
pascal.534 vitez.koja,
#=> Fakat je nema, ali je fakat i da za njome nema previše potrebe. Kako god kažeš...
pascal.535 djelovic,
> Fakat je nema, ali je fakat i da za njome nema previše potrebe. Većinu > stvari koje se odrađuju pointerskom aritmetikom dobar optimizator će tako i > uraditi ali programer neće morati da vodi računa o tome. Ne verujem da i jedan Pascal/Modula-2 komp ajler ima optimizator koji bi to uradio. Dakle, C još uvek vlada na polju brzine. (BTW, i turbo Turbo Paskal ima pointersku aritmetiku, mada nisam video još nijedan program koji bi je koristio.) Ono gde današnji optimizatori mogu da pomognu jeste zaista nepotrebno pokovanje više izraza u jedan što većina C programera i danas radi. To stvara nečitljiv kod, a, zahvaljujući optimizaciji, potpuno je nepotrebno.
pascal.536 isekulovic,
>> Da li je problem da se na Turbo Pascalu naprave padajuci meniji i da >> se opcije skroluju.Ako neko ima algoritam nek ga posalje. Da je problem i nije, da imam proceduru i nemam. Prvo pogledaj unit tpw60 koji ima procedure za crtkanje prozora i pravljenje menija (neskrolujićih). Procedure za prozore su sasvim ok, a procedura za meni je malo bagovita ako se otvori više prozora i ne podržava miša. Ja sam napisao svoju proceduru za menije (neskrolujuće) ali nije baš mnogo prenosiva. Osnovna ideja mi je bila da se proceduri proslede: koordinate prozora, niz od N stringova i broj opcija. Pri čemu je N gornja granica koliko može da se uzme opcija. I onda iscrtkaš prozor na tim koordinatama i iz niza stringa ispišeš onoliko opcija koliko treba. Onda tu ide klasično gore-dole vrćenje opcija dok se ne izabere jedna i onda smestiš broj te opcije u neku globalnu promenljivu. Ne bi trebalo da bude ništa komplikovanije napisati proceduru za skrolujuće menije, samo bi malo složenije bilo kretanje gore-dole kroz opcije ali nije uopšte neizvedivo.
pascal.537 bearboy,
>> ■ Dalje, TS Pas kompajlira u .OBJ, veže se sa C, C++, M2, ASM, >> ■ ima memorijske modele (+overlay +DLL za DOS), OOP... Zauzima >> ■ par megabajta zajedno sa IDE. Ima i TP2TS. > > Sve sto si nabrojao ima i BP7.0 ... (naravno bez tp2ts ;) Da, ali je n puta veći (gde n teži beskonačnom), glomazniji, etc. :)
pascal.538 dragisha,
-> Ne verujem da i jedan Pascal/Modula-2 komp ajler ima optimizator koji -> bi to uradio. Dakle, C još uvek vlada na polju brzine. (BTW, i turbo -> Turbo Paskal ima pointersku aritmetiku, mada nisam video još nijedan -> program koji bi je koristio.) Dobro ako ne vjeruješ. :) Jedan primjer, prije par sati sam pričao sa Janevom iz ISP. Kaže, imali su neki algoritam za ray tracing urađen u TP. Onda su iz zezanja stvar preveli (prilagodili) u TS Pas i dobili su ubrzanje od 104%. U pitanju je računanje sa ispisom rezultata u fajl. Toliko i o superiornosti TP koda, BTW. Drugi primjer, upravo sam pročitao tvoju poruku o Zortech C++. Kojom crnom magijom, ako već nije moguće boljim optimizacijama, postižu toliko bolje rezultate od konkurencije?:)) Zaključak. Oblast optimizacije nije ni blizu zasićenja tako da prostora za ogromne razlike ima i biće još dugo. Prijedlog, hoćemo li da nađemo te primjere kojima bismo koliko toliko smisleno mogli da izmjerimo sposobnosti pojedinih kompajlera na tržištu i pojedinih jezičkih konstrukcija i da utvrdimo ili pobijemo postojanje razlika u tehnologijama koje pojedine firme/jezici koriste? -- [I'm like a bad TSR; I keep popping up!]
pascal.539 dragisha,
-> ne mora ni da radi. Ako nekome treba program za razne platforme, -> dakle neki potencijalno veoma obiman projekat, verovatno će ga i -> tako raditi u C++-u. Pravovremena procjena? Previše često se ne desi na vrijeme. Ne rade se projekti baš uvijek sa pravovremenim saznanjem o kompleksnosti ili o konačnom izgledu proizvoda. Osim toga, code reuse je u zadnje vrijeme vrlo moderna stvar a njome se u suštini stimuliše sticanje "štetnih" navika. Jako teško će se odlučiti na mijenjanje alata neko ko već ima dosta razvijenog koda koji može da iskoristi u svakom novom projektu pod uslovom da ne mijenja jezik. -- [Never smirk at the judge..]
pascal.540 dragisha,
-> #=> Fakat je nema, ali je fakat i da za njome nema previše potrebe. -> -> Kako god kažeš... Na moje pitanje (konkretna prednost C-a) si odgovorio sa "pointerska aritmetika". Pošto sam imao priliku da istu koristim kao i da se snalazim bez nje, napisao sam šta sam napisao. Imaš li primjer koda koji pointerska aritmetika ubrzava toliko da se to osjeti ako pokušaš u nečemu drugom da uradiš isti posao? U svakoj knjizi gdje se spominje optimizacija (preporučujen Dragon Book) možeš vidjeti da su tehnike preveslavanja "običnih" indeksiranja na pointersku aritmetiku odavno sastavni dio optimizatora koda. -- [Boys and girls, can you say BUGGY???]
pascal.541 djelovic,
> Zaključak. Oblast optimizacije nije ni blizu zasićenja tako da prostora > za ogromne razlike ima i biće još dugo. Naravno da nije! Ja sam samo rekao da je današnji PC kompajleri rade loše ili nikako. > Prijedlog, hoćemo li da nađemo te primjere kojima bismo koliko toliko > smisleno mogli da izmjerimo sposobnosti pojedinih kompajlera na > tržištu i pojedinih jezičkih konstrukcija i da utvrdimo ili pobijemo > postojanje razlika u tehnologijama koje pojedine firme/jezici koriste? Prihvaća se! Dodouše, ja koristim C++ zato što mi odgovara kao jezik, i teško da bi se vratio na nešto drugo i ostao bez objekata, preklapanja operatora i sličnih poslastica, tako da mi brzina i nije mnogo bitna (20 posto tamo-vamo korisnik retko kada primeti). No, slažem se da je došlo kranje vreme da se utvrde gde koji današnji kompajleri i jezici stoje. Mogli bi čak da napravimo od toga neki lep članak za "Računare"? Evo, ja ću da pokrijem C/C++, ti TS Pascal, traži se još neko ko radi na BP 7.0.
pascal.542 djelovic,
> Drugi primjer, upravo sam pročitao tvoju poruku o Zortech C++. Kojom > crnom magijom, ako već nije moguće boljim optimizacijama, postižu t oliko > bolje rezultate od konkurencije?:)) Ne znam, nisam ga lično probao. Par puta sam se zeznuo sa alatima manjih firmi koji su na prvi pogled izgledali mnogo dobro ali su se u praksi pokazali kao nepouzdani i bagoviti pa se sada veoma teško odlučujem da kupim nešto što nije apsolutno provereno. Dakle, dok ne počne veća količina ljudi da ih koristi teško da ću i ja. Takođe, sećam se da su mnoge firme svojevremno davale benčmarke u kojima se pokazivalo da su neuporedivo bolji od Borlanda ili Microsofta, ali je to uvek u realnim uslovima ispadalo netačno. Ili su oni radili sa "naštelovanim" merenjima, ili nisu podržavali IEEE standarde za brojeve sa pokretnim zarezom, ili nešto slično, u svakom slučaju - Borland i Microsoft su uvek ispadali bolji. No, kao što rekoh u prethodnoj poruci, sasvim sam rad da napravimo test i utvrdimo tačno o čemu se radi.
pascal.543 zolika,
Dragišo, drž' se. >> Recimo, stalno unapređujući TopSpeed Modulu 2, kroz dvadesetak godina će, >> ako se potrude, imati proizvod koji vredi onoliko koliko danas vredi >> Turbo Pascal ;> Hm, DejanRe, jesi li probao da nešto programiraš na TopSpeed Moduli-2?
pascal.544 zolika,
>> Neka naprave da prevodi onoliko brzo koliko turbo pascal, pravi kod >> jednake dužine i da se taj kod jednako brzo izvršava, pa da pričamo >> dalje. Samo mi nije jasno zašto da TopSpeed ubuduće pravi SPORIJE programe nego sada?
pascal.545 zolika,
>> GDE može da se nabavi to čudo? TopSpeed Paskal je deo višejezičnog TopSpeed okruženja (tako nekako).
pascal.546 dejanr,
>> Hm, DejanRe, jesi li probao da nešto programiraš na TopSpeed Moduli-2? Pre jedno tri godine želeo sam da dam šansu Moduli 2. Mislio sam da je to jezik na koji bih mogao da pređem, da omogućava produktivnije programiranje nego paskal, dosta raspoloživih biblioteka itd, a opet da i dalje bude "strog" jezik, za razliku od C-a. U taj test uložio sam nekih mesec dana vremena, plus pare za kupovinu (verovali ili ne :) dve implementacije Module (Logitech i JPI). Završio sam teško razočaran kako u jezik tako (pogotovu) u implementacije, koje su se po svim parametrima pokazale imferiornim u odnosu na tadašnji Turbo Pascal. Bilo je, naravno, i sitnih prednosti (recimo, mogućnost generisanja .OBJ fajlova, za razliku od "slepog creva" kao što je TPU) ali je ono sa minus strane daleko pretezalo nad onim sa plus strane. Onda sam uradio potreban broj XRD-ova i zaboravio na Modulu 2. Možda su u međuvremenu napravili neke bolje implementacije (mada je i TP napredovao... :) ali ja nemam ni vremena ni novca da ih ponovo isprobavam. U zadnje vreme sve više koristim C, mada sam i dalje mišljenja da Turbo Pascal-u nema premca kada treba nešto brzo isprogramirati, testirati, dati u upotrebu i onda "zaboraviti". Ukoliko se, naravno, to nešto baš nikako ne može napisati na Clipper-u ;))))
pascal.547 spantic,
> No, slažem se da je došlo kranje vreme da se utvrde gde koji današnji > kompajleri i jezici stoje. Mogli bi čak da napravimo od toga neki lep Ja mislim da bi mogli da se obratite profesoru Jozi Dujmoviću, popularnom Hozeu :) koji je sada trenutno u Masačusetsu, čak iako Dejan baš i nema mnogo lepe uspomene na njega :)) Joza je baš pre godinu dana počeo merenje perfomansi prevodilaca na MSDOS platformi. Dosad je sigurno završio. Pošto smo mu odavde slali test primerke ovo što ste nabrojali je sigurno pokrio.
pascal.548 vitez.koja,
#=> Imaš li primjer koda koji pointerska aritmetika ubrzava #=> toliko da se to osjeti ako pokušaš u nečemu drugom da #=> uradiš isti posao? Nemam, još sam mlad i zelen. #=> možeš vidjeti da su tehnike preveslavanja "običnih" #=> indeksiranja na pointersku aritmetiku odavno sastavni #=> dio optimizatora koda. Ti mi daješ za pravo... Operacije sa nizovima se svode na pointersku aritmetiku, na ovaj ili onaj način. Da li je bolje da su takve suštinske tehnike dostupne programeru, ili ne ? Pitanje koncepcije... Imao sam, skoro, situaciju da treba da "protrčim" kroz niz bajtova (TPW), koji treba prethodno da napunim sa blockread. Ako tu strukturu deklarišem kao niz, onda ne mogu da je iskoristim za blockread - jer ovaj traži pointer. Ako definišem to kao pointer i s njim alociram potrebnu memoriju onda nema indeksiranja :((
pascal.549 bearboy,
> Jedan primjer, prije par sati sam pričao sa Janevom iz ISP. > Kaže, imali su neki algoritam za ray tracing urađen u TP. Onda > su iz zezanja stvar preveli (prilagodili) u TS Pas i dobili su > ubrzanje od 104%. U pitanju je računanje sa ispisom rezultata u > fajl. Toliko i o superiornosti TP koda, Mada se može desiti i obrnuto. Ja sam moj seminarski rad u Petnici "preveo" iz TP u TSP i usporilo se oko 5-6 puta (!!!). Ako se dobro sećam, glavni razlog je bila sporija (ali preciznija) funkcija RND-a u TSP-u.
pascal.550 igors,
Da li zanate kako mogu ucitati bilo koji graficki format iz Paskala, ako ste to uspeli javite mi, pokusavao sam sa fajlovima sa Sezama ali nisam uspeo jer im je uvek nesto nedostajalo. Igor Stankovic
pascal.551 vita,
> Sve sto si nabrojao ima i BP7.0 ... (naravno bez tp2ts ;) Kako pravis OBJ keve ti?
pascal.552 vita,
> kompajleri i jezici stoje. Mogli bi čak da napravimo od toga > neki lep članak za "Računare"? Evo, ja ću da pokrijem C/C++, ti > TS Pascal, traži se još neko ko radi na BP 7.0. Watcom C 386 pokriven. Vita P.S. A mogli bi i bugove da uporedjujemo.
pascal.553 vita,
> Mada se može desiti i obrnuto. Ja sam moj seminarski rad u > Petnici "preveo" iz TP u TSP i usporilo se oko 5-6 puta (!!!). > Ako se dobro sećam, Idi bre Atila, pa to mi nikada nisi pokazo... Ajde bre da ih testiramo. Vita
pascal.554 dragisha,
-> #=> možeš vidjeti da su tehnike preveslavanja "običnih" -> #=> indeksiranja na pointersku aritmetiku odavno sastavni -> #=> dio optimizatora koda. -> -> Ti mi daješ za pravo... Operacije sa nizovima se svode na pointersku -> aritmetiku, na ovaj ili onaj način. Da li je bolje da su takve suštinske -> tehnike dostupne programeru, ili ne ? Pitanje koncepcije... Ne dajem ti za pravo. Kažem, ako to već kompajler radi sam, bolje je da ja ipak svoj dio posla radim na "malo" višem nivou. Slijedeći gornju logiku, pravi izbor je asembler jer tamo BAŠ sve možeš (i moraš, BTW:)) da uradiš direktno. -> Imao sam, skoro, situaciju da treba da "protrčim" kroz niz bajtova -> (TPW), koji treba prethodno da napunim sa blockread. Ako tu strukturu -> deklarišem kao niz, onda ne mogu da je iskoristim za blockread - jer -> ovaj traži pointer. Ako definišem to kao pointer i s njim alociram -> potrebnu memoriju onda nema indeksiranja :(( TPW. Zar treba nešto više da se kaže?:) Postoji sigurno i u TP nešto što vraća adresu proizvoljnog objekta čime si mogao da odradiš posao. Osim toga, postoji i POINTER TO ARRAY [...], tj. kako se već piše u TP. Sve u svemu, rješenja ima raznih, a nek to mašina radi low level, tj. pointerskom aritmetikom. -> Nemam, još sam mlad i zelen. Nisi još izgubljen, misli na sebe dok imaš vremena:). Gre'ota je za matematičara da se zamlaćuje Com:). -- [Ahhhhhhhh, I forget what I was going to say ....]
pascal.555 dragisha,
-> Prihvaća se! Super:). -> No, slažem se da je došlo kranje vreme da se utvrde gde koji današnji -> kompajleri i jezici stoje. Mogli bi čak da napravimo od toga neki lep -> članak za "Računare"? Evo, ja ću da pokrijem C/C++, ti TS Pascal, traži -> se još neko ko radi na BP 7.0. Prvo primjeri, tj. kodovi koje neće biti problem portovati i koji nisu trivijalni. Ja ću da probam TS M2, Pascal, C i C++. Predlažem više primjera, a ne samo sieve i slične. Napravićemo EXEe i UL ih ovdje tako da može svako da proba na svojoj mašini svaki test. -- [I AM standing.]
pascal.556 dragisha,
-> Mada se može desiti i obrnuto. Ja sam moj seminarski rad u Petnici -> "preveo" iz TP u TSP i usporilo se oko 5-6 puta (!!!). Ako se dobro -> sećam, glavni razlog je bila sporija (ali preciznija) funkcija RND-a u -> TSP-u. To nema veze sa alatom, kao što si sam pojasnio. Primjer koji mi je dao Janev je čist algoritam, jedino što se poziva iz biblioteke je ispis u sekvencijalnu datoteku. -- [In Case of Fire, Log off Promptly]
pascal.557 dragisha,
-> i dalje bude "strog" jezik, za razliku od C-a. U taj test uložio sam -> nekih mesec dana vremena, plus pare za kupovinu (verovali ili ne :) dve -> implementacije Module (Logitech i JPI). Završio sam teško razočaran kako Sjećam se pomalo tog testa, čini mi se da si imao TS 2.nešto. Razlika između TS 2 i 3 je kao između TP 4.5 i BP 7.0, otprilike.:) -> i sitnih prednosti (recimo, mogućnost generisanja .OBJ fajlova, za -> razliku od "slepog creva" kao što je TPU) ali je ono sa minus strane -> daleko pretezalo nad onim sa plus strane. Onda sam uradio potreban broj -> XRD-ova Koji je to broj bio, da se podsjetimo? I šta je bilo na minus strani kad je toliko preteglo? -> Pre jedno tri godine želeo sam da dam šansu Moduli 2. Mislio sam da je Kad vidim šta misliš o 4dos, telemate i sličnima i koliko radiš u Klipanu, možda je i dobro za naše malo društvo što si se obeshrabrio "na vrijeme".:)) -- [OOPS: Not just for klutzes anymore]
pascal.559 dejanr,
>> > U taj test uložio sam nekih mesec dana vremena, plus pare za >> > kupovinu (verovali ili ne :) dve implementacije Module (Logitech >> > i JPI). Završio sam teško razočaran kako >> >> Sjećam se pomalo tog testa, čini mi se da si imao TS 2.nešto. Imao sam tekuće verzije svih kompajlera koje su postojale na tržištu. Teško sam mogao porediti ondašnji TP sa nekom M2 koja će da izađe kroz tri godine ;) >> I šta je bilo na minus strani kad je toliko preteglo? Već N puta sam rekao, ali ajmo još jednom: (1) sporije kompajlira (u odnosu na tada aktuelni TP) (2) pravi duži EXE fajl (u odnosu na tada aktuelni TP) (3) EXE fajl se sporije izvršava ( -"- ) Meni više od toga ne treba. Da bih prešao na tu platformu, uslov bi bio da po sva tri pomenuta uslova ona postiže *znatno* bolje rezultata. >> Kad vidim šta misliš o 4dos, telemate i sličnima i koliko radiš u >> Klipanu, možda je i dobro za naše malo društvo što si se obeshrabrio >> "na vrijeme".:)) Da... ovako nema ko da vam razbije iluzije o tome na šta ste sebe osudili ;> Inače, što se "klipana" tiče, ja ne krijem da kada programiram, uglavnom programiram *za pare*. Dakle, najbolji jezik je onaj koji mi omogućava da to što radim obavim najlakše, najbrže i sa najmanje problema. Kada bi jednom programiranje na M2 bilo isplativije od programiranja na Clipper-u i C-u (prema ranije pomenutim uslovima), o'ma bi prešao na nju.
pascal.560 vitez.koja,
#=> Slijedeći gornju logiku, pravi izbor je asembler jer #=> tamo BAŠ sve možeš (i moraš, BTW:)) da uradiš direktno. Naravno, asembler je pravo rešenje :) Svrha kompajlera je lakše pisanje programa, a ne "bolji mašinac od mašinca" ;)
pascal.561 niklaus,
(:> Mada se može desiti i obrnuto. Ja sam moj seminarski rad u Petnici (:> "preveo" iz TP u TSP i usporilo se oko 5-6 puta (!!!). Ako se (:> dobro sećam, glavni razlog je bila sporija (ali preciznija) (:> funkcija RND-a u TSP-u. Šta si pravio? Pogađanje brojeva? (; (:niklaus:)
pascal.562 dragisha,
-> Imao sam tekuće verzije svih kompajlera koje su postojale na tržištu. -> Teško sam mogao porediti ondašnji TP sa nekom M2 koja će da izađe kroz -> tri godine ;) Pitao sam te za verziju da bih sam pokušao da se prisjetim kako je to zaista izgledalo i da uradim sam poređenja. Ti si tada dao jedan primjer, a poznata je stvar kako se gleda na takve testove, tj. kako se komentarišu reklame u kojima se da jedan primjer i tu je kraj. -> >> Kad vidim šta misliš o 4dos, telemate i sličnima i koliko radiš u -> >> Klipanu, možda je i dobro za naše malo društvo što si se obeshrabrio -> >> "na vrijeme".:)) -> -> Da... ovako nema ko da vam razbije iluzije o tome na šta ste sebe -> osudili ;> ? Trudio sam se, ali ovo je zaista neprobojno za mene. Šta s' hotio rijet?:) -- [Bill Gates, have 'em write _real_ code...]
pascal.563 dejanr,
>> > Imao sam tekuće verzije svih kompajlera koje su postojale na tržištu. >> > Teško sam mogao porediti ondašnji TP sa nekom M2 koja će da izađe kroz >> > tri godine ;) >> >> Pitao sam te za verziju da bih sam pokušao da se prisjetim kako je to >> zaista izgledalo i da uradim sam poređenja. Tekstovi su objavljeni u "Računarima" 52, 54 i 55. Mislim da je JPI Modula 2 bila u verziji 1.12, Logitech modula 2 3.30 a Turbo Pascal 5.0. Možda sam kod neke od tih cifara pogrešio, teško se setiti precizno posle četiri godine. Razlike nisu bile takve da bi se uopšte moglo govoriti o nijansama. Recimo, TP je prevodio pola sekunda, Logitech pola minuta a JPI "negde između", recimo 10-15 sekundi. TP je napravio duplo kraći EXE od JPI, i izvršavao se valjda 3 puta brže. Međusobno poređenje dve Module pokazalo je da JPI brže prevodi, ali daje sporiji kod. Programi su takođe isprobani na velikom projektu, reda megabajt izvornog koda. Komercijalne biblioteke namenski pisane za Turbo Pascal, Logitech i JPI modulu 2. Odnosi što se tiče brzine prevođenja bili su još bolji, u korist Turbo Pascala. >> tj. kako se komentarišu reklame u kojima se da jedan primjer i tu je >> kraj. Reklama je ono što daje proizvođač, ovo je bio nezavisan i nepristrasan tekst. Izvoli nađi bilo kakav primer u kome se pokazuju suprotni odnosi.
pascal.564 lovro,
Kako da proveravam da li su stisnuta dva dugmeta istovremeno: strelica gore i strelica desno, na primer. Lovro
pascal.565 peca.st,
!-> Kako da proveravam da li su stisnuta dva dugmeta istovremeno: !-> strelica gore i strelica desno, na primer. Zar je moguće stisnuti dva dugmeta _istovremeno_ ? (a da to nije kombinacija sa alt ili ctrl) Mislim da je jedini način da gledaš vremenski razmak između pritiska na ta dva tastera, pa ako je manji od zadatog epsilon ;>>> onda su pritisnuti "istovremeno". Peđa.
pascal.566 mjova,
> Kako da proveravam da li su stisnuta dva dugmeta > istovremeno: strelica gore i strelica desno, na primer. moraš napraviti novu int 9 rutinu.
pascal.567 eagle,
> Kako da proveravam da li su stisnuta dva dugmeta istovremeno: > strelica gore i strelica desno, na primer. Ako ne postoji bolji način, možeš da dodeliš svakom tasteru po jedan ON/OFF flag za proveru da li je pritisnut ili ne. Onda na početku programa postaviš sve na OFF, i okačiš na int 9 proceduru koja ih postavlja/ukida.
pascal.568 lovro,
Od cega je kod 9Ch (inline($9C);)? Koja vrednost ostaje u portu[$60] posle otpustanja dugmeta? A za proveravanje da li su stisnuta dva odjednom ima sledeci problem: | Port[$60] -----------------------------------+------------------------------ pritisnem 'gore' | 72 drzim 'gore', pritisnem 'levo' | 75 otpustim 'gore' | 75 -----------------------------------+------------------------------ Kao sto vidimo, iz porta 60 se ne vidi da li je otpusteno dugme koje je prvo pritisnuto. Medjutim, da sam u trecem koraku otpustio 'levo' umesto 'gore', u portu bi se pojavio neki _teskoprovaljivi_ bajt... Lovro
pascal.569 v.nesic,
> Mislim da je jedini način da gledaš vremenski razmak između pritiska > na ta dva tastera, pa ako je manji od zadatog epsilon ;>>> Jel' si ti nekada igrao neku igricu preko tastature?
pascal.570 eagle,
> Od cega je kod 9Ch (inline($9C);)? pushf > Koja vrednost ostaje u portuŠ$60Ć posle otpustanja dugmeta? Vrednost veća za 128 od vrednosti za isto pritisnuto. > A za proveravanje da li su stisnuta dva odjednom ima sledeci > problem: Kao sto vidimo, iz porta 60 se ne vidi da li je > otpusteno dugme koje je prvo pritisnuto. Medjutim, da sam > u trecem koraku otpustio 'levo' umesto 'gore', u portu bi > se pojavio neki _teskoprovaljivi_ bajt... Vidi se u jednom trenutku, i onda tastatura nastavi da šalje signal za ono drugo (poslednje pritisnuto). Dovoljno da ga tvoja procedura iskljuci.
pascal.572 bearboy,
>> Mada se može desiti i obrnuto. Ja sam moj seminarski rad u >> Petnici "preveo" iz TP u TSP i usporilo se oko 5-6 puta (!!!). >> Ako se dobro sećam, > > Idi bre Atila, pa to mi nikada nisi pokazo... Jesam, zar se ne sećaš koliko sam jadikovao Ma$ketu zbog toga ? Mada pazi ovo - kad sam doneo programčiće kući, ponovo ih iskompajlirao (ovog puta na moju mašinu, tj. 486/33), TS verzija je bila oko 10-20% brža (uz zadržanu veću preciznost slučajnih brojeva).
pascal.573 bearboy,
> (:> Mada se može desiti i obrnuto. Ja sam moj seminarski rad u > Petnici (:> "preveo" iz TP u TSP i usporilo se oko 5-6 puta > (!!!). Ako se (:> dobro sećam, glavni razlog je bila sporija > (ali preciznija) (:> funkcija RND-a u TSP-u. > > Šta si pravio? Pogađanje brojeva? (; Još gore - simulacija telekomunikacionog kanala & testiranje algoritama za detekciju & korekciju grešaka :)
pascal.574 bearboy,
> 2 bila u verziji 1.12, Logitech modula 2 3.30 a Turbo Pascal > 5.0. Možda Vreme je za novo poređenje. v1.12 - Brrrrr :)
pascal.575 pedjak,
> moraš napraviti novu int 9 rutinu. Hm, a kako pročitati sa porta 60h da su pritisnuta dva tastera ? Uopšte, može li tastatura da pošalje takvu informaciju ?
pascal.576 dzakic,
> Hm, a kako pročitati sa porta 60h da su pritisnuta dva tastera ? > Uopšte, može li tastatura da pošalje takvu informaciju ? Tastatura generiše prekid (int 9) u trenutku kad taster pritisneš i u trenutku kad ga pustiš. Na portu se u prvom slučaju nađe scan vrednost pritisnutog tastera a u drugom slučaju (otpuštanje) ista vrednost samo sa setovanim sedmim bitom (+128). Treba dakle da napraviš tabelu (kao što je neko ovde pomenuo), postaviš sve na početku na 0 i okačiš se na int 9. Kad primiš vrednost manju od 128, setuj odgovarajući element niza, a ako je na portu 60h setovan sedmi bit, vrati ga na nulu. Kasnije u programu testiraj da li su ta_i_ta vrednost istovremeno postavljene na keca. Tako znaš da su oba tastera u tom trenutku pritisnuta. Na ovu foru i bios vodi računa o shift, ctrl i alt. Obrati samo pažnju na 'sive' tastere koji kod extended tastatura znaju da šalju po čitavu povorku signala, najčešće sa prefixom E0, ili sl. već sam zaboravio. žini mi se da je taster za pauzu rekorder: 4 int-a 9 za jedno stiskanje tastera i 4 za otpuštanje. zak ps. Srećna Nova!
pascal.577 eagle,
> Hm, a kako pročitati sa porta 60h da su pritisnuta dva tastera > ? Uopšte, može li tastatura da pošalje takvu informaciju ? Ne može. Evo ide mali primer preuzete int9 procedure, prikazuje sva četiri pritisnuta arrows tastera a da pritom ne smeta ostatku programa (može se držati pritisnuta strelica i kucati u pozadini). Jedino pravi probleme u slučajevima kad su istovremeno pritisnuti levi i desni sivi taster, inače za bele (2,4,6,8) radi normalno. arrows.zip
pascal.578 bearboy,
>> Mislim da je jedini način da gledaš vremenski razmak između >> pritiska na ta dva tastera, pa ako je manji od zadatog epsilon > ;>>> > > Jel' si ti nekada igrao neku igricu preko tastature? E, to je već druga priča (video sam negde rutine za to) - kad se pritisne taster za gore, to se zabeleži negde, a ako se pusti, mark obriše. E sad, ako je markiran taster na gore, a stigne signal za još neki taster, znači da su pritisnuti odjednom. Nadam se da je bilo razumljivo :)
pascal.579 andrejt,
Kako iz Turbo Pacala 6.0 napraviti .OBJ fajl ?
pascal.580 dejanr,
>> Kako iz Turbo Pacala 6.0 napraviti .OBJ fajl ? Nema načina.
pascal.581 lucas,
>> Kako iz Turbo Pacala 6.0 napraviti .OBJ fajl ? Nikako!
pascal.582 kriss,
Da li neko zna da li se pri 'linkovanju' unita u EXE ubacuju sve procedure, ili je kompajler dovoljno inteligentan pa 'vidi' one koje se u programu koriste, i samo njih 'vadi'? Naravno, TP 6.0 :)
pascal.583 niklaus,
(:> Kako iz Turbo Pacala 6.0 napraviti .OBJ fajl ? 1) Iz TP verzije 6.0, ja (za sada) nisam uspeo, ali moguće je za 5.0- verzije. Modifikovati .PAS fajl ubacivanjem INTERFACE dela (samo deklaracije svih procedura/funkcija) i službene reči IMPLEMENTATION. 2) Nakon toga sa SEZAMa skinuti fajl R:ĐIBMPCĐPASCAL.TPU2ASM.ZIP, i uz njegovu pomoć kovertovati .TPU u .ASM 3) TASMovati .ASM u .OBJ. 4) Voila! (:niklaus:) ps Program je napravila već veoma poznata firma u domenu TP biblioteka TurboPower, negde sredinom '89. Sigurno je da su razvijene i verzije za novije formate .TPU fajlova. Registracijom (ili sličnom metodom tipa 'money giveaway') ćeš verovatno doći do istih. (:
pascal.584 bole,
HI! Imam jedno interesantno pitanje (!) i TRAZIM KONKRETAN ODGOVOR ne neke ovo ovo.. :) Ovako, ocu da recimo na neki EXE zalepim parce koje ce se pustati pre svega, namena: Da recimo imam neki SJKL program i ocu kada ga pustim da se ispise DOBROJTRO pa da nastavi dalje... :) nesto kao virus ali da ne bude rezidentno... :) e sada lepo na posao, ja odo da se odmaram u Soko Banju vi lepo resite i iznenatite me.. recimo neka mi to bude za novu godinu ili za rodjendan! CU!
pascal.585 dejanr,
>> Da li neko zna da li se pri 'linkovanju' unita u EXE ubacuju sve >> procedure, ili je kompajler dovoljno inteligentan pa 'vidi' one >> koje se u programu koriste, i samo njih 'vadi'? Dovoljno je inteligentan, zato mu Borland tepa "Smart linker". Tako bar piše u uputstvu, ali nisam nešto mnogo detaljno proveravao.
pascal.586 vvelisavljev,
BP 7.0 Ako u Borland Pascalu 7.0 stavim compiler direktivu Target na Protected, imam izvesnih problema sa memorijom. Veći program koji usput koristi NEW i DISPOSE naredbe pri samom startovanju javlja Runtime error 216 (General Protection fault). Manje programe sam probao da kompajliram ovako i na prvi pogled rade dobro. Da li možda treba da intervenišem na nekim kompajler prekidačima? Da li je ikako moguće korišćenje prekidnih tačaka i postupnog izvršavanja programa ako se program kompajlira u protected modu? Primetio sam da BP ne trpi baš druge menadžere za memoriju. Kakva su vaša iskustva?
pascal.587 ognjen,
Kako reciti citanje recorda iz fajla? Naime, sta sam ja probao: --------------------------- type ReadLin = record broj: integer; str1: string[8]; str2: string[9]; str3: string[10]; end; var fi: file of ReadLin; Linija: ReadLin; pomocni: String; --------------------------- I, kako u programu da mu kazem da procita jedan record, ili da ga "pitam" sta se nalazi u stringu STR2 na tekucem recordu ili slicno...?
pascal.588 dejanr,
>> I, kako u programu da mu kazem da procita jedan record, >> ili da ga "pitam" sta se nalazi u stringu STR2 na >> tekucem recordu Recimo da bi učitao slog broj 10 (broji se od nula): seek(fi, 10); read(fi, linija); pomocni:=linija.str2;
pascal.589 predragd,
> Veći program koji usput koristi NEW i DISPOSE naredbe pri > samom startovanju javlja Runtime error 216 (General Da li je tvoj program izvršio te naredbe ili je pukao pre njih. Meni su se 216 greške najčešće javljale kod programa, pisanih za real mod, koji direktno pristupaju memoriji. Ako hoćeš pošalji deo source-a na kom program puca, pa ćemo da vidimo. > Da li možda > treba da intervenišem na nekim kompajler prekidačima? Do sada nisam imao uspeha sa njima. Uvek se ispostavilo da je problem u mom programu (nepoznavanju DPMI-a). > Da li je ikako moguće korišćenje prekidnih > tačaka i postupnog izvršavanja programa ako se program > kompajlira u protected modu? Ako koristiš TDX moguće je. > Primetio sam da BP ne trpi baš druge menadžere za > memoriju. HIMEM, QEMM ili bez ikakvih memory manager-a, BP mi do sada nije pravio probleme ni sa jednim od navedenih. Peđa.
pascal.590 niklaus,
(:> Veći program koji usput koristi NEW i DISPOSE naredbe pri samom (:> startovanju javlja Runtime error 216 (General Protection fault). Evo šta kaže BPov help... ┌─ │ ┌───────────────────────────┐ │ │ General Protection fault │ │ └───────────────────────────┘ │ │ his error results if you try to access memory that is not legal for your │ pplication to access. The operating system halts your application and tells │ ou that a general protection (GP) fault occurred, but your system does not │ rash. │ │ he following practices cause GP faults: │ │ ■ Loading constant values into segment registers │ │ ■ Performing arithmetic operations on segment registers of selectors │ │ ■ Using segment registers for temporary storage │ │ ■ Writing to code segments │ ║║ ■ Accessing memory beyond the local address space given to your application │ │ ■ Derefencing nil pointers └─ Verovatno si ovo video i sam, al' hteo_ne_ hteo prekršio si neki od ovih zakona. (: Tipujem na označeni... (:> Primetio sam da BP ne trpi baš druge menadžere za memoriju. Kakva (:> su vaša iskustva? Ja se u principu trudim da program najpre savršeno radi u 'Real' modu, a tek onda ga kompajliram za 'Protected' mod. Preporučujem ti da koristiš QEMM zajedno sa DPMI dodatkom za DPMI. (:niklaus:)
pascal.591 niklaus,
(:> var fi: file of ReadLin; (:> Linija: ReadLin; (:> pomocni: String; (:> I, kako u programu da mu kazem da procita jedan record, ili da ga (:> "pitam" sta se nalazi u stringu STR2 na tekucem recordu ili (:> slicno...? Read( fi, linija ); pomocni := linija.str2; (* Slično ide i za ostala polja u slogu *) (:niklaus:)
pascal.592 vvelisavljev,
> Do sada nisam imao uspeha sa njima. Uvek se ispostavilo da > je problem u mom programu (nepoznavanju DPMI-a). DPMI ?? Da li ima negde na Sezamu nešto detaljnije o ovome? žega bi trebalo da se pridržavam u svom programu? > Ako koristiš TDX moguće je. Ne, koristim BP.EXE. >> Primetio sam da BP ne trpi baš druge menadžere za >> memoriju. > > HIMEM, QEMM ili bez ikakvih memory manager-a, BP mi do > sada nije pravio probleme ni sa jednim od navedenih. Izgleda da nisam dobro objasnio šta me muči. Nešto mi olako BP javlja poruke da nema dovoljno memorije i sl. Imam 2 MB RAMa, a moj exe kompajliran u Real modu ima oko 130 kB a u protected oko 150 kB. Najbolje mi radi bez ikakvih menadžera, čak i bez HIMEMa. Kako treba da izgleda $M direktiva za protected mod? U real modu mi izgleda ovako : {$M 32768,0,131072}.
pascal.593 vvelisavljev,
> ║║ ■ Accessing memory beyond the local address space given > to your application > Verovatno si ovo video i sam, al' hteo_ne_ hteo prekršio > si neki od ovih zakona. (: Da video sam. :( Po mom prevodu to znači: "Pristup memoriji pre nego što je lokalni adresni prostor dodeljem mojoj aplikaciji." Tako nekako, ako sam dobro preveo. (?) Pa, kako ovo da izbegnem? > Ja se u principu trudim da program najpre savršeno radi u > 'Real' modu, a tek onda ga kompajliram za 'Protected' mod. U tome i jeste problem što on radi u Real modu, sad, dal je savršen ili ne. (?)
pascal.594 vvelisavljev,
> BP 7.0 Trebao sam biti nešto konkretniji. Program javlja: Runtime error 216 at 0002:31B2 pre nego što izvrši i jednu naredbu programa. :( Ustvari, i nije baš da ne izvši ni jednu nardbu. Našao sam grešku. :) :( :) :( :) :( Greška je u junitu TPW60 i to u proceduri TPWfill koja se izvršavala u inicijalnom delu junita. Procedura je definisana kao external. Verovatno da gađa direkt video memoriju i da ovaj zbog toga javlja grešku. :( Šta da radim? Da bacim TPW60 ili da ispravljam greške. Da li da napišem svoje ekvivalentne procedure za prozore ili ima nešto slično već napisano. Do sada nisam koristio ništa iz TVizije. :) Da li moguće bezbolno iskoristiti par procedura za rad sa prozorima iz TVa? Bio bih veoma zahvalan ako bi mi neko ovde napisao primerčić za pozivanje takvih procedura.
pascal.595 dejanr,
>> DPMI ?? Da li ima negde na Sezamu nešto detaljnije o ovome? žega bi >> trebalo da se pridržavam u svom programu? Imaš u direktorijumu INFO fajl DPMI_TXT.ZIP (ili tako nešto) sa DPMI specifikacijom. Takođe, mogli bi te zanimati tekstovi iz prošlih i ovih "Računara" koji se upravo time bave.
pascal.596 eagle,
> Šta da radim? Da bacim TPW60 ili da ispravljam greške. Da li da > napišem svoje ekvivalentne procedure za prozore ili ima nešto > slično već napisano. Do sada nisam koristio ništa iz TVizije. > Da li je moguće bezbolno iskoristiti par procedura za rad sa > prozorima iz TVa? Ili će ceo program biti u TV ili ništa od toga. Ako ćeš se baviti TV-om slobodno baci TPW60 i njemu slične.
pascal.597 ilazarevic,
> I, kako u programu da mu kazem da procita jedan record, ili da ga > "pitam" sta se nalazi u stringu STR2 na tekucem recordu ili > slicno...? Evo ti primer kako da otvoriš fajl i čitaš iz njega: š$I-ć Assign(fi,'proba.dat'); Reset(fi); š$I+ć if IOResult<>0 then begin WriteLn('Greška pri otvaranju fajla!'); Halt(1); end; Read(fi,linija); pomocni:=linija.str1; Izvini na juskiju.
pascal.598 kriss,
Ux, malo sam se igrao sa TP 6.0 i izgleda da ipak nije toliko pametan :( Međutim, nadam se da grešim :) Sledi izvod iz .MAP fajla (program je kompajliran sa TPCX) i koliko vidim, tu se nalazi ceo CRT unit, a ne samo delovi koji se koriste u programu. E sad, opet se nadam da grešim. Međutim: Start Stop Length Name Class 00000H 004B7H 004B8H TRTMRT CODE 004C0H 0051FH 00060H MAINUNIT CODE 00520H 017E5H 012C6H TPWX CODE (poboljšani tpw60) 017F0H 037A6H 01FB7H MMAGACIN CODE 037B0H 041C3H 00A14H MAGUNIT CODE 041D0H 047E3H 00614H CRT CODE 047F0H 05BD2H 013E3H SYSTEM CODE 05BE0H 06163H 00584H DATA DATA 06170H 0A16FH 04000H STACK STACK 0A170H 0A170H 00000H HEAP HEAP Address Publics by Value 0000:004F HEADER 0000:006A MKWIN 0000:01C4 MAG . . . 041D:0000 č 041D:016B TEXTMODE 041D:0180 WINDOW * 041D:01C0 CLRSCR 041D:01DA CLREOL * 041D:01EE INSLINE * 041D:01F3 DELLINE * 041D:0213 GOTOXY 041D:023F WHEREX * 041D:024B WHEREY * 041D:0257 TEXTCOLOR 041D:0271 TEXTBACKGROUND 041D:0289 LOWVIDEO 041D:028F HIGHVIDEO 041D:0295 NORMVIDEO 041D:029C DELAY 041D:02C7 SOUND 041D:02F4 NOSOUND 041D:02FB KEYPRESSED 041D:030D READKEY 041D:032F ASSIGNCRT * ... Procedure sa zvezdicama *sigurno* nisu korišćene, ali ipak su tu, tj. zauzimaju prostor (!?!). Zato sam i pitao pre par dana da li je kompajler dovoljno _smart_ pa da ume da profiltrira kôd. Međutim, pošto se ne razumem baš puno u te MAP fajlove ;) ostaje na nekom ko se razume. :) Odgovor mi je važan jer u slučaju da je pred AmNoM ne_smart kompajler, odoh da pravim svoj crt ...
pascal.599 kriss,
Ipak je glup. Dokaz je zakačen, da ne ovako, pa ko hoće nek se uverava. P.S. A sad na KrissCrt ;) glupi_tp.zip
pascal.600 peca.st,
Kako najbrže staviti pixel na ekran u rezoluciji 640*480*256? Mem Š$a000:xĆ radi samo do određene granice, zato što, naravno, obuhvata samo jedan segment od 64k. Dakle, koje su adrese ostalih segmenata video memorije? Peđa.
pascal.601 markom,
■■■ DPMI ?? Da li ima negde na Sezamu nešto detaljnije o ovome? ■■■ žega bi trebalo da se pridržavam u svom programu? Bilo je u nekom od prošlih Računara ... Marko
pascal.602 markom,
■■■ U tome i jeste problem što on radi u Real modu, sad, dal je ■■■ savršen ili ne. (?) Reci mi iskreno, da li si IKADA vide savršen program? Marko
pascal.603 markom,
■■■ external. Verovatno da gađa direkt video memoriju i da ovaj ■■■ zbog toga javlja grešku. :( žekaj, stani malo... Kaži mi da ako sa BP 7.x program prevedeš u protected modu, i iz njega probaš direktno da gađaš video memoriju, ovaj će da pukne ?!? Ako je to istina onde ću morati da pišem 99% programa iz početka :((( Marko
pascal.604 peca.st,
!-> Procedure sa zvezdicama *sigurno* nisu korišćene, ali ipak su tu, !-> tj. zauzimaju prostor (!?!). Zato sam i pitao pre par dana da li !-> je kompajler dovoljno _smart_ pa da ume da profiltrira kôd. O ovome je mislim već bilo reči... Uglavnom, ako se dobro sećam, zaključili smo da crt unit ima neku svoju inicijalizaciju i obavezno ubacuje parče koda. Napiši program koji izgleda ovako: uses crt; begin end. Onda napiši ovo: uses dos; begin end. I na kraju: begin end. Videćeš da su posledna dva .exe ista po dužini, a prvi je nešto duži. Peđa.
pascal.605 markom,
■■■ pred AmNoM ne_smart kompajler, odoh da pravim svoj crt ... Ajd' pa ga okači ;)) Marko
pascal.606 dejanr,
>> Ux, malo sam se igrao sa TP 6.0 i izgleda da ipak nije toliko >> pametan :( Međutim, nadam se da grešim :) >> Sledi izvod iz .MAP fajla (program je kompajliran sa TPCX) i >> koliko vidim, tu se nalazi ceo CRT unit, a ne samo delovi koji se Ne grešiš, što se CRT unit-a tiče. Ali, mislim da je on, kao sistemski unit, ipak priča za sebe. Probaj sa nekim svojim procedurama, recimo napraviš par potprograma koji u sebi imaju neke karakteristične tekstove ali se nikada ne pozivaju, prevedeš pa pogledaš ima li tih tekstova u EXE-u. Javi šta si ustanovio... da vidimo lažu li u dokumentaciji :)
pascal.607 kriss,
I još samo nešto O:) Da li postoji tpu2obj. Važno mi je da bude OBJ kako bi se sačuvale kompletne f-je (mislim sa sve imenima)? Tpu2asm iz dira radi samo sa tp 5.0 :(
pascal.608 markom,
■■■ Javi šta si ustanovio... da vidimo lažu li u dokumentaciji :) Ne znam šta kažu u dokumentaciji ;>>, ali nema ih :) Marko
pascal.609 ognjen,
)-> Read( fi, linija ); )-> pomocni := linija.str2; Ne radi. :( Daklem, procita ga Ok, ali kad mu kazem writeln(linija.str2) on ispise neke gluposti... Recimo umesto 3 karaktera, porcita 10 i ispise ih 4 puta... ???
pascal.610 andrejt,
Pa imas binobj nisam mnogo gledao ali trevalo bi da radi .
pascal.611 kriss,
Uh, moraću da se izvinim TP-u :) Glup je, al samo za crt. Inače je kompajler pametan, sad je provereno. :) MeĐuTiM ;) nije mi jasno zašto je tako. Neko je rekao da je CRT sistemski unit, međutim po tpumover-u su sistemski i DOS i PRINTER, pa ih ipak ne 'gura' u .EXE? Evo šta kaže isti: D:ĐTPĐUTILS>tpumover d:ĐtpĐturbo.tpl TPU Mover Version 6.00 Copyright (c) 1987,90 Borland International Unit Code Data Uses SYSTEM 21585 676 OVERLAY 1855 26 SYSTEM CRT 1556 20 SYSTEM DOS 1594 6 SYSTEM─┐ PRINTER 54 256 SYSTEM─┴ i ovi su/koriste system? P.S. E vala ću biti uporan ;)
pascal.612 vvelisavljev,
> žekaj, stani malo... Kaži mi da ako sa BP 7.x program > prevedeš u protected modu, i iz njega probaš direktno da > gađaš video memoriju, ovaj će da pukne ?!? To je samo pretpostavka. Zbog čega bi drugog pukla procedura koja puni deo ekrana jednim karakterom?
pascal.613 markom,
■■■ To je samo pretpostavka. Zbog čega bi drugog pukla procedura ■■■ koja puni deo ekrana jednim karakterom? Ako je iz TPW6, onda me ne čudi, jerbo je to PUNO bagova, ali direktno gađanje video memorije je osnova 60% mojih programa pisanih u TP 6 !! Ako to ne radi u sedmici, ostadoh ja na 6 :)) Marko
pascal.614 markom,
■■■ Daklem, procita ga Ok, ali kad mu kazem ■■■ writeln(linija.str2) on ispise neke gluposti... Recimo umesto ■■■ 3 karaktera, porcita 10 i ispise ih 4 puta... ??? žekaj malo, nadam se da si tu promenljivu FI, definisao kao FILE OF type, a ne kao TEXT, jerbo ako si je tako definisao nije ni čudo što ti ne radi ;) Marko P.S. Uz poruku je program koji SIGURNO radi! P.P.S. Naravno, podrazumeva se da fajl nije prazan :) slog.pas
pascal.615 ilazarevic,
> Daklem, procita ga Ok, ali kad mu kazem writeln(linija.str2) Ovo ne može da radi zato što je fajl sastavljen od rekorda. Dakle, ti možeš da upišeš samo jedan ceo rekord, čijim elementima dodeljuješ vrednosti. Da je tekst fajl, moglo bi.
pascal.616 isekulovic,
Da li je moguće kopirati sadržaj jedne grafičke stranice na drugu? Razmišljao sam o kopiranju video memorije, ali ne znam kako bi to išlo na ega/vga. I šta znači kad RegisterBGIFont javi grešku -13 InvalidFont, zaglavlje fonta nije prepoznato ?!?!
pascal.617 paki,
­> Glup je, al samo za crt. Inače je kompajler pametan, sad je ­> provereno. :) MeĐuTiM ;) nije mi jasno zašto je tako. Neko je ­> rekao da je CRT sistemski unit, međutim po tpumover-u su ­> sistemski i DOS i PRINTER, pa ih ipak ne 'gura' u .EXE? Evo šta Da nije zbog toga što CRT ima i inicijalizaciju?
pascal.618 vvelisavljev,
> Ako je iz TPW6, onda me ne čudi, jerbo je to PUNO bagova, > ali direktno gađanje video memorije je osnova 60% mojih > programa pisanih u TP 6 !! Ako to ne radi u sedmici, > ostadoh ja na 6 :)) To ne radi jedino ako u BP kompajliraš u protected modu. Ako radiš sa turbo ili ako u BP staviš Real sve će raditi isto kao i u TP 6.0.
pascal.619 peca.st,
!->> Daklem, procita ga Ok, ali kad mu kazem writeln(linija.str2) !-> !-> Ovo ne može da radi zato što je fajl sastavljen od rekorda. Dakle, !-> ti možeš da upišeš samo jedan ceo rekord, čijim elementima !-> dodeljuješ vrednosti. Da je tekst fajl, moglo bi. Il, nisi dobro video šta je napisao čovek. :) Piše: writeln(linija.str2), dakle, nije u fajl, nego na ekran. Peđa.
pascal.620 markom,
■■■ To ne radi jedino ako u BP kompajliraš u protected modu. Ako ■■■ radiš sa turbo ili ako u BP staviš Real sve će raditi isto ■■■ kao i u TP 6.0. Pa mene baš zanima da li mogu direktno da pucam u VM u protected modu, ako ne može, je*em ti taj program koji prozore crta sa WriteLn ;) Marko
pascal.621 kriss,
˙˙ Da nije zbog toga što CRT ima i inicijalizaciju? Misliš jedno Begin End. kao 'startujući deo'?
pascal.622 peca.st,
!-> Misliš jedno Begin End. kao 'startujući deo'? I nešto između tog Begin End. :) To sam ti rekao u klubu, i mislim da je to u pitanju. A šta tu radi - pojma nemam, verovatno nešto bitno, čim je tu. :) Peđa.
pascal.623 jovca.car,
/* Reci mi iskreno, da li si IKADA vide savrsen program? Windows 3.1? ;))))))))
pascal.624 markom,
■■■ Windows 3.1? ;)))))))) HAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHA, reče on ;> Marko
pascal.625 mzdravkovic,
Pisem jedno programce u Pascalu, ali zbog nedovoljnog znanja, potrebna mi je pomoc. Kako da program bude rezidentan u memoriji i da se stalno izvrsava ? HVALA !
pascal.626 andrejt,
===> Pisem jedno programce u Pascalu, ali zbog nedovoljnog znanja, potrebna ===>mi je pomoc. Kako da program bude rezidentan u memoriji i da se stalno ===>izvrsava ? U memoriju ga ostavljas sa Keep.Rezidentni programi se izvrsavaju tako sto se promeni vektorska tabela prekida,koja sadrzi adrese procedura koje se izvrsavaju posle odredjenog prekida. Recimo imas neku proceduru u tom tsru koja se zove proc_1 i hoces da se ona izvrsava na int9(tastatura) onda uradis : Getintvec(9,@StaraProcedura); {Gde je StaraProcedura : Procedure} Setintvec(9,@proc_1);{procedura koja se izvrsava na int9} Keep(0); Takodje je pametno posle izvrsenja proc_1 pustiti i StaraProcedura.
pascal.627 markom,
■■■ Pisem jedno programce u Pascalu, ali zbog nedovoljnog znanja, ■■■ potrebna mi je pomoc. Kako da program bude rezidentan u ■■■ memoriji i da se stalno izvrsava ? Koliko ja znam, sa KEEP ga napraviš rezidentnim, a to da se stalno izvršava mo- žeš da postigneš tako što ćeš da napraviš jednu interapt proceduru koja će da se izvršava recimo na svakom petom otkucaju sistemskog sata. Kako ovo uraditi i ne znam baš najbolje ... Marko
pascal.628 dr.grba,
>> /* Reci mi iskreno, da li si IKADA vide savrsen program? >> >> Windows 3.1? ;)))))))) ... Trgom se prolomi uzvik. "Tako je", povikaše seljaci, "ja i narod ćemo vikati!" ... (;║■
pascal.629 isekulovic,
Da li postoje neki neželjeni efekti ukoliko se umesto: st:=copy(st,1,x); uradi: st[0]:=x; ivan ps var st : string;
pascal.630 andrejt,
Evo tebe da dopunim to se radi (valjda) sa INT 8. (Mada postoje i neke funkcije za sat koje prate ta otkucavanja ali ovako je najlakse)
pascal.631 andrejt,
===>Da li postoje neki nezeljeni efekti ukoliko se umesto: ===>st:=copy(st,1,x); ===>uradi: ===>st[0]:=x; Za copy bas i ne znam ali st[0]:=x; sigurno nista nece da uradi zato sto(valjda) charovi u stringu idu od 1 do 255. P.S. Ali cini mi se da ti i ono st:=copy(st,1,x); nece raditi (valjda nije ta sintaksa) pa posto verovatno oba ne rade nista korisno nezeljenih efekata nece biti (u odnosu na st := copy(st,1,x);
pascal.632 predragd,
> DPMI ?? Da li ima negde na Sezamu nešto detaljnije o ovome? INTER37*.* > žega bi trebalo da se pridržavam u svom programu? Da ne pristupaš direktno memoriji (ako baš moraš poželjno bi bilo da pre toga konvertuješ segment adresu u descriptor, int 31h), da real mode interrupt-e pozivaš funkcijom koju sam nedavno ostavio u ovoj temi. Programi pisani u asembleru za real mode će morati pretrpeti neke izmene. Moguće je da ima još nekih pravila kojih se treba pridržavati, ali ja bar za sada nisam uspeo da ih pronađem. > Izgleda da nisam dobro objasnio šta me muči. Nešto mi > olako BP javlja poruke da nema dovoljno memorije i sl. > Imam 2 MB RAMa, a moj exe kompajliran u Real modu ima oko > 130 kB a u protected oko 150 kB. Najbolje mi radi bez > ikakvih menadžera, čak i bez HIMEMa. Da bi se uopšte pokrenuo BP zahteva minimum 2 Mb RAM-a, tako da nije ni malo čudno što se BP buni. U ovakvoj sutuaciji najbolje je raditi bez ikakvih menadžera i drajvera (ukoliko je to moguće). > Kako treba da izgleda $M direktiva za protected mod? U > real modu mi izgleda ovako : š$M 32768,0,131072ć. U protected modu se definiše samo veličina steka (max 64Kb). Ostale dve stavke se ne uzimaju u obzir. Peđa.
pascal.633 predragd,
> Preporučujem ti da koristiš QEMM zajedno sa DPMI dodatkom > za DPMI. Kako ti je uspelo da nateraš QEMM-ov QDPMI da radi da BP-om. Meni BP uvek pukne po startovanju i javi cd QDPMI sa nekom porukom o grešci. Peđa.
pascal.634 predragd,
> žekaj, stani malo... Kaži mi da ako sa BP 7.x program > prevedeš u protected modu, i iz njega probaš direktno da > gađaš video memoriju, ovaj će da pukne ?!? > > Ako je to istina onde ću morati da pišem 99% programa iz > početka :((( Mislim da nećeš imati toliko posla oko prepravljanja programa. Već sam to negde napomenuo, potrebno je samo konvertovati segment adresu u descriptor. INT 31 P - DPMI 0.9+ - SEGMENT TO DESCRIPTOR AX = 0002h BX = real mode segment Return: CF clear if successful AX = selector corresponding to real mode segment (64K limit) CF set on error AX = error code (DPMI 1.0+) (8011h) (see AX=0000h) Notes: multiple calls for the same real mode segment return the same selector the returned descriptor can never be modified or freed not supported by MS Windows 3.0 in Standard mode Peđa.
pascal.635 markom,
■■■ U protected modu se definiše samo veličina steka (max 64Kb). U TP-u 6.0 ne može svih 64K, već _samo_ 65520 b :) Marko
pascal.636 markom,
■■■ Mislim da nećeš imati toliko posla oko prepravljanja ■■■ programa. Već sam to negde napomenuo, potrebno je samo ■■■ konvertovati segment adresu u descriptor. Na žalost nisam te baš najbolje razumeo, ali ajde :( Pazi ovo: Definišem promenljivu VM, tipa ARRAY[1..4000] OF BYTE na adresi $B000:$8000, znači na adresi video memorije. Ako probam da pišem u taj niz, da li će prijavljivati grešku ? Marko
pascal.637 markom,
■■■ st[0]:=x; Ako ti je x integer, byte, ili slično, a to je iz datog primera očigldeno ;), onda postoje :)) Moraš da napišeš st[0] := Chr(x), jer st[0] je char, a ne broj :) Marko
pascal.638 peca.st,
!-> Da li postoje neki neželjeni efekti ukoliko se umesto: Ne bi trebalo, pod uslovom da je x <= Length (st) Ako je veće, onda se ćeš u ostatku stringa dobiti razno đubre. Inače, promena dužine stringa preko stŠ0Ć je, po meni, sasvim legalan put. Peđa.
pascal.639 dzakic,
> Da li postoje neki neželjeni efekti ukoliko se umesto: > st:=copy(st,1,x); > uradi: > st[0]:=x; Apsolutno ne! Drugi metod je daleko brži, kraći, meni i pregledniji. Nedavno sam gledao neke sorseve junita koje je sâm Borland pablikovao (ne mogu sad da se setim o čemu se radi) i vidim da i oni obilato koriste trikove tipa: inc(s[0]); s[length(s)]:=' '; umesto s:=s+' '; Drugi način je za početnike, kompajler tu poziva procedure za konkatenaciju ;) stringova, u code segmentu čuva konstantni string ' ' i brdo nepotrebnih stvari oko sitnice kao što je ova. Prvi način je daleko kraći, bukvalno se uradi jedan inc na bajt koji čuva dužinu stringa i na kraj se upiše potreban znak. Ne treba se plašiti 'funkcije' length koja izgleda rogobatno kad se kuca, njom se samo čita nulti bajt stringa, nije potprogram kao što mora da bude u C-u. Jedina razlika između ove dve stvari je što ne postoji kontrola dužine dobijenog stringa. U drugom slučaju se sigurno ne bi desilo ništa ružno: dodavanje na već pun string ne bi ga izmenilo, dok ako se ti onim s[0]:=chr(x) zaletiš pa upišeš dužinu veću od dozvoljene (deklarisane), može da bude svašta. Ukoliko si siguran šta radiš i naknadno proveravaš dužinu novodovijenog stringa, nema nikakvih problema.
pascal.640 dzakic,
>> st:=copy(st,1,x); >> st[0]:=x; Sad nešto gledam. Ovo će da radi samo ako string st treba skratiti. Ukoliko je x veće od prethodne dužine st, nije svejedno. Pretpostavljam da ti je jasno zašto.
pascal.641 dejanr,
>> Da li postoje neki neželjeni efekti ukoliko se umesto: >> st:=copy(st,1,x); >> uradi: >> st[0]:=x; Treba chr(x), inače će da prijavi grešku. Ako se to ne računa, metod ne da ne pravi štetu, nego izaziva ubrzanje. Koristi ga i Borland u raznim Toolkit-ima. Jedino moraš biti oprezan da tako ne "produžiš" string, pošto će "rep" imati slučajan sadržaj. Za razliku od toga, copy naredba kontroliše sve što treba.
pascal.642 markom,
■■■ Inače, promena dužine stringa preko stŠ0Ć je, po meni, sasvim ■■■ legalan put. Štaviše, ponekad i neophodan ;) Marko
pascal.643 markom,
■■■ dužinu stringa i na kraj se upiše potreban znak. Ne treba se ■■■ plašiti 'funkcije' length koja izgleda rogobatno kad se kuca, ■■■ njom se samo Da, ali se Length(s) lepo zameni sa jednim Ord(s[0]), a to je još lepše i kraće ze kucanje ;) Marko
pascal.644 bulaja,
**** new file **** R:\IBMPC\PASCAL\*.* ---------------------- tspa3370 zip 107638 Timo Salmi's TPU collection (Turbo Pascal 7.0) Prof. Timo Salmi's TPU collection of nearly 200 useful Turbo Pascal 7.0 routines for text-mode programs.
pascal.646 andrejt,
s[0] := 'A'; Ovo nista ne radi sem sto u s ubaci i neke dodatne charove.Zasto ?(s je string) Ja sam mislio da je to zbog toga sto su charovi od 1-255 ali onda stvarno nista ne bi trebalo da uradi ili bi izbacio gresku.
pascal.647 markom,
■■■ s[0] := 'A'; Ovo postavlja dužinu stringa s na 65 znakova. (ASCII kod 'A' = 65) Marko
pascal.648 pedjak,
> Da li postoje neki neželjeni efekti ukoliko se umesto: > st:=copy(st,1,x); > uradi: > stŠ0Ć:=x; Verovatno si mislio stŠ0Ć:=chr(x). Ekvivalentna stvar onom copy(st,1,x), samo brža.
pascal.649 dzakic,
> s[0] := 'A'; > Ovo nista ne radi sem sto u s ubaci i neke > dodatne charove.Zasto ?(s je string) Zato što jse u nultom bajtu stringa čuva njegova dužina.
pascal.650 eagle,
> Inače, promena dužine stringa preko stŠ0Ć je, po meni, sasvim > legalan put. A kako se inače menja dužina stringa? ;)
pascal.651 eagle,
> inc(sŠ0Ć); sŠlength(s)Ć:=' '; umesto s:=s+' '; > Drugi način je za početnike, kompajler tu poziva procedure za > konkatenaciju ;) stringova, u code segmentu čuva konstantni string Dobar kompajler bi sve izraze s:=s+... preveo na prvi način, kad već ne postoji funkcija adds(s1,s2) koja inline nadovezuje s2 na s1. TP slabo optimizuje, čak je i move potprogram.
pascal.652 isekulovic,
>> Getintvec(9,@StaraProcedura); {Gde je StaraProcedura : Procedure} >> Setintvec(9,@proc_1);{procedura koja se izvrsava na int9} >> Keep(0); Ima tu još dosta stvari da se uradi. Kao prvo proc_1 treba da se definiše kao interapt procedure tj. Procedure proc_1; interrupt; Dalje na početku procedure mora da se uradi Inline($9c); tj. pushf. Pošto DOS koristi isti prostor za stek za sve funkcije od $00 do $0C početak izvršavanja jedne funkcije dok se izvršava druga će izazvati blokiranja kompa kada se memorija bude vratila drugog funkciji da nastavi rad. Da se to ne bi dogadjalo potrebno je proveriti da li je aktivna već neka funkcija, a to se radi tako što se proverava vrednost tkzv. InDos flega. Ukoliko je 0 nijedna funkcija nije aktivna. Njegovu adresu vraća funkcija $34 u registrima ES:BX. Ipak ukoliko je InDos<>0 ipak u jednom specificnom slucaju smemo da izvrsimo nasu funkciju, a to je ako se trenutno izvrsava funkcija $06 koja čeka da korisnik nešto otkuca. Tada DOS (a i neki programi koji ne koriste dos-ove funkcije za ocitavanje tastature, npr. TP) stalno poziva prekid $28 tkzv. DOS Idle ili DosOK. Treba još preusmeriti i vektore koji su zaduženi za poruke o greškama, npr. $24 za presretanje greske u radu sa datotekama, da command.com ne bi ispisao ono nesretno Retry, Abort, Ignore, Fail? >> Takodje je pametno posle izvrsenja proc_1 pustiti i StaraProcedura. Zavisi od interpta koji preuzimamo. Npr. u slučaju $08, $09 mora se obavezno pozvati stara procedura. Ako program startujemo preko PrintScreen tastera ($05) onda nema potreba da zovemo staru proceduru. Kod $09 je jos kvaka da se stara procedura mora pozvati POSLE ocitavanja tastera sa porta $60 (ako hoćemo da program radi i na XT-u). Ivan
pascal.653 andrejt,
I jos da dodam da bi bilo pametno da se na pocetak stavi {$M} da ogranici koriscenu mem. na steku. (ako se ne stavi nece da radi uopste)
pascal.654 peca.st,
!->>> st:=copy(st,1,x); !->>> stŠ0Ć:=x; !-> !-> Sad nešto gledam. Ovo će da radi samo ako string st treba !-> skratiti. Ukoliko je x veće od prethodne dužine st, nije !-> svejedno. Pretpostavljam da ti je jasno zašto. Pa da, ali ni ono prvo ne bi ništa uradilo ako je x veće od prve dužine. Peđa.
pascal.655 dzakic,
> Pa da, ali ni ono prvo ne bi ništa uradilo ako je x veće od prve dužine. Copy('sezam',1,200) opet će biti 'sezam'. A ne 'sezamďň╠┼ž...' kao što bi bilo kad bi u s[0] upisao chr(200).
pascal.656 vitez.koja,
#=> Dalje na početku procedure mora da se uradi Inline($9c); #=> tj. pushf. Ne mora, čak ne sme. pushf treba ubaciti neposredno pred poziv rutine koja je ranije opsluživala prekid, i to samo ako je pozivaš pointerom na funkciju koji je implementiran u samom jeziku; ako koristoš neki drugi način potivanja, ko zna...
pascal.657 eagle,
> Dalje na početku procedure mora da se uradi Inline($9c); tj. pushf. Pushf se radi neposredno pre poziva _stare_ procedure, zato što se ista završava sa iret (ret far + popf). Pozivi preko proceduralnog tipa su uvek far, ostaje ti još da pokriješ popf. Ako ne pozivaš staru proceduru ne treba ti ni pushf. > Tada DOS (a i neki programi koji ne koriste dos-ove funkcije za > ocitavanje tastature, npr. TP) stalno poziva prekid $28. QEdit, na primer. Na osnovu čega si zaključio da TP poziva int 28h?
pascal.658 isekulovic,
>> QEdit, na primer. Na osnovu čega si zaključio da TP poziva int 28h? Pročitao u nekoj knjizi/časopisu/fajlu ne sećam se više.
pascal.659 peca.st,
!-> A kako se inače menja dužina stringa? ;) U, pa ima dosta načina: delete, copy, s1 := s1 + s2... O:) Peđa.
pascal.661 bearboy,
> Kako najbrže staviti pixel na ekran u rezoluciji 640*480*256? > Mem Š$a000:xĆ radi samo do određene granice, zato što, naravno, > obuhvata samo jedan segment od 64k. Dakle, koje su adrese > ostalih segmenata video memorije? A000:x, naravno :) Samo što treba da koristiš rutinu za menjanje stranica. Odmah da odgovorim na sledeće pitanje :) - Skini VGADOC2 sa Sezama, tamo imaš opis dosta video kartica & kako treba na njima menjati stranice.
pascal.662 andrejt,
Ako stavim finddirst('*.*',directory,dir); i posle par puta findnext(dir);write(dir.name); ispisace ne samo direktorijume.Pa pitanje je zasto ne razlikuje te ostale fajlove od direktorijuma ?(ako ih ne razlikuje) A 2. pitanje je dal' postoji neki nacin da ispisuje samo dirove a ne i ostale fajlove(sem da se stavi: if dir.attr = directory then write(dir.name);)?
pascal.663 isekulovic,
Ima li neko Timo Salmijeve unite, ali za TP 6.0?
pascal.664 peca.st,
!-> A000:x, naravno :) Samo što treba da koristiš rutinu za menjanje !-> stranica. Odmah da odgovorim na sledeće pitanje :) - Skini VGADOC2 !-> sa Sezama, tamo imaš opis dosta video kartica & kako treba na !-> njima menjati stranice. Hvala puno, skinuću, ako nešto bude nejasno biću slobodan da priupitam. :). Peđa.
pascal.666 eagle,
> Ako stavim finddirst('*.*',directory,dir); i posle > par puta findnext(dir);write(dir.name); ispisace > ne samo direktorijume.Pa pitanje je zasto ne razlikuje Obične fajlove sa atributom $20 uvek nalazi, a parametar attrib u findnext definiše dodatne flegove koje uzima u obzir, pored pomenutog. Verovatno nije bag u TP-u već tako radi odgovarajuća dosova funkcija.
pascal.667 dejanr,
>> Ako stavim finddirst('*.*',directory,dir); i posle >> par puta findnext(dir);write(dir.name); ispisace >> ne samo direktorijume.Pa pitanje je zasto ne razlikuje >> te ostale fajlove od direktorijuma ?(ako ih ne razlikuje) Tako je napravljena DOS funkcija - imaš mogućnost da maskiraš šta da se *ne* prikazuje ali fajlovi su uvek tu. Dakle, moraće sa IF
pascal.668 andrejt,
===>Tako je napravljena DOS funkcija - imas mogucnost da maskiras sta ===>da se *ne* prikazuje ali fajlovi su uvek tu. Dakle, morace sa IF Ipak nece morati sa IF jer (primetio sam) da ako stavim FindFirst('',Directory,Dir); ... FindNext(Dir); Write(Dir); ... ispisivce samo direktorijume.
pascal.669 andrejt,
Kako da izbacim TSR iz memorije ?
pascal.670 niklaus,
(:> A000:x, naravno :) Samo što treba da koristiš rutinu za menjanje (:> stranica. Odmah da odgovorim na sledeće pitanje :) - Skini VGADOC2 sa (:> Sezama, tamo imaš opis dosta video kartica & kako treba na njima (:> menjati stranice. Neophodno je (po potrebi) menjati banke video memorije (64kb blokovi), pa se upisuje normalno po apsolutnoj adresi $A000:0000. Ovo za VGADOC2 stoji, valja ga pročitati... (:niklaus:)
pascal.671 niklaus,
(:> ispisivce samo direktorijume. A ako ne budeš hteo da ne prikazuješ fajlove sa jednim atributom manje (recimo ARS, kada želiš samo Hidden i Direktorijume), moraćeš sa IFom... (:niklaus:)
pascal.672 predragd,
> Pazi ovo: Definišem promenljivu VM, tipa ARRAYŠ1..4000Ć OF > BYTE na adresi $B000:$8000, znači na adresi video > memorije. Ako probam da pišem u taj niz, da li će > prijavljivati grešku ? Naravno da hoće. Potrebno je da uz pomoc funkcije, koju sam ti poslao u prethodnoj poruci, konvertuješ segment adresu (u ovom slučaju $B000) u descriptor i tvoj program bi trebalo da radi bez problema. Ako ti ovo nije baš razumljivo, možda će ti primer koji sledi pomoći. Uses Dos; var Descriptor: Word; function Segment_to_Descriptor (RealModeSegment: Word; var DPMISegment: Word): Boolean; var Regs: Registers; begin FillChar (Regs, Sizeof (Regs), 0); Segment_to_Descriptor:=TRUE; With Regs do begin Ax:=$0002; Bx:=RealModeSegment; Intr ($31, Regs); If (Flags and 1) = 1 then š Error in Ax ć Segment_to_Descriptor:=FALSE else š No error ć DPMISegment:=Ax; end; end; begin If Segment_to_Descriptor ($B800, Descriptor) then Mem ŠDescriptor:$0000Ć:=Ord ('A'); end. Peđa.
pascal.673 ppekovic,
>> Kako da izbacim TSR iz memorije ? Ako sam tsr nema opciju uninstall, onda uz pomoć programa mark i release. Nalaze se u arhivi TSR???.zip. Potraži sa dir /s tsr*.*. Paya
pascal.674 andrejt,
Verovatno sam ja lose postavio pitanje ali to nije ono sto sam ja hteo da znam,mene zanima kako da izbacim svoj tsr iz memorije(uninstall) posto vratim sve int vektore kako su bili.
pascal.675 ndragan,
/ Da video sam. :( Po mom prevodu to znači: "Pristup memoriji pre nego / što je lokalni adresni prostor dodeljem mojoj aplikaciji." Tako Ne, nego _izvan_ lokalnog adresnog prostora dodeljenog aplikaciji. Profurao tarabu, zaglavio u jendek. Bue_ Ndragan
pascal.676 ndragan,
/ Glup je, al samo za crt. Inače je kompajler pametan, sad je Ne bih bio siguran. Ko zna šta koja od procedura iz crt.tpu poziva unutar samog crt.tpu? Uostalom, ubaci i neko farbanje ekrana i neko skrolovanje, pa ako se pojave neke nove rutine na mapi, onda znači da ti ipak nije onog prvog puta ubacio ceo crt. Bue_ Ndragan
pascal.677 dragisha,
-> Verovatno sam ja lose postavio pitanje ali to nije -> ono sto sam ja hteo da znam,mene zanima kako da -> izbacim svoj tsr iz memorije(uninstall) posto vratim -> sve int vektore kako su bili. Tako što oslobodiš memoriju koju isti zauzima odgovarajućim DOS pozivima. Prvo korak je da utvrdiš PSP koji je identifikacija tvog programa i kojim su potpisani MCBovi koje owniraš (ha:). Onda nedokumentovanim DOS pozivom 52H uhvatiš head spiska MCB-ova i nađeš svoj (ha2:) MCB. Kad hoćeš da to počistiš, počisti taj nađeni MCB. Mislim da i sljedeći MCB isto treba počistiti, ali najbolje da ovim kodom ispod prođeš *sve* MCBove i da ondak čistiš sve što je potpisano tvojim MCB. Ovo ispod su neki fragmenti koda iz mog TSR modula, a ako to nije dovoljno, mail me za ostatak. Sintaksa [mcb:3] je za mcb=03cH ustvari adresa 03ch:3. PROCEDURE NextMCB(mcb: CARDINAL): CARDINAL; TYPE CP=POINTER TO CARDINAL; BEGIN RETURN (mcb+[mcb:3 CP]^+1); END NextMCB; (* Get PSP *) R.AX:=5100H; Lib.Intr(R, 21H); ProgPSP:=R.BX; (* Current PSP *) (* Get first MCB *) R.AH:=52H; Lib.Intr(R, 21H); s:=[R.ES:R.BX-2 CP]^; (* Nađi MCB od PSP *) WHILE [s:0 BP]^=4DH DO IF [s:1 CP]^=ProgPSP THEN ProgMCB:=s; END; (* Next MCB *) INC(s, [s:3 CP]^+1); END; (* žišćenje. *) R.AH:=49H; R.ES:=ProgMCB+1; (* MCB+1 su podaci, sam Memory Control Block je jedan paragraf prije podataka. *) Lib.Intr(R, 21H); -- [Pave the bay.]
pascal.678 dragisha,
-> počistiš, počisti taj nađeni MCB. Mislim da i sljedeći MCB isto treba -> počistiti, ali najbolje da ovim kodom ispod prođeš *sve* MCBove i da Prvi MCB na koji naletiš je environment, drugi je program. Ili tako nešto:)). Zavisno od toga kako radi heap manager možeš da naletiš na još koji MCB, ali ne vjerujem da će to da ti se desi u TSR. -> ondak čistiš sve što je potpisano tvojim MCB. Tvojim PSP, ali nema veze:)). -- [There are so many upgrades, I am bankrupt.]
pascal.679 luks,
> Ima li neko Timo Salmijeve unite, ali za TP 6.0? Šta ima u tim unit-ima. Da ne skidam badava?
pascal.680 ognjen,
)-> Cekaj malo, nadam se da si tu promenljivu FI, definisao kao )-> FILE OF type, a ne kao TEXT, jerbo ako si je tako definisao )-> nije ni cudo sto ti ne radi ;) Naravno!!!! I dalje ne radi! ;( )-> P.S. Uz poruku je program koji SIGURNO radi! Ne radi!!!! Utata... :9 :P :b :) )-> P.P.S. Naravno, podrazumeva se da fajl nije prazan :) Prvo, kad sam mu dao fajl od 32b otptilige ovakav: ------------------ abcd efghijkl 1234 56789000 ------------------ Prijavio je da fajl ima 0 bajtova!!!! Dobro, gledam source, i mislim "Gde li je greska???!?!", ali greske prosto, naprosto, nema!!!!!!!! Jebote (sorry, moram :), kad mu kazem falesize(f) on kaze 0!!!! Kako NULA kad ima TRIDEST I DVA!!!! Dobro, kad sam se malo smirio, :) ubacio sam mu neki TEXTPAD (umesto proba.fil) od 170 Kilobajta, i uradio je isto sranje, kao program koji sam ja ranije napisao... Ispisivao je neke delove fajla... Tad sam uvideo gresku. Definisao si record od 2 stringa nedefinisane duzine... Probao sam da stavim s1, s2: string[5], ali je tad uradio sranje, koje ja u zivotu nisam video... Ispisao je (pomesano) delove fajla, i neke naucnofantasticne karaktere! Odokativno sve zajedno je iznosili 200 bajtova, ali kako 200 (!?!) kad sam mu ja rekao da ispise dva stringa po 5 bajtova.... U cemu je greska ("iksovati" tacan odgovor): [ ] U meni [ ] U programu [ ] U pascalu [ ] U wirthu [ ] Duhovi? [ ] Virus nove generacije? [ ] Nesto sedmo?
pascal.681 ognjen,
Ima li neko elegantnije resenje odo ovoga: var linija: integer; read_lin:string; f: text; bagin pardon, begin ;) assign (f, 'file.ext'); reset (f); while not eof(f) do begin readln(f, read_lin); linija:=linija+1 end; writeln ('U fajlu ima ', linija, 'linija :) '); end. Da se prebroje linije u fajlu?
pascal.682 dejanr,
>> Ima li neko elegantnije resenje odo ovoga: >> ... >> Da se prebroje linije u fajlu? Nema naročito elegantnijih, ali ima bržih. Najlakše je da napraviš jedan bafer, ili sa: var buf: array[1..10000] of byte ili, ako nećeš da opterećuješ data segment, na heap-u (ono sa getmem) i onda: assign (f, 'file.ext'); settextbuf(f,buf[1], 10000); reset(f); Ostalo je isto.
pascal.683 markom,
■■■ [X] U meni <-- tebi ■■■ [ ] U programu ■■■ [ ] U pascalu ■■■ [ ] U wirthu ■■■ ■■■ [ ] Duhovi? ■■■ [ ] Virus nove generacije? ■■■ [ ] Nesto sedmo? Kao prvo, ne možeš sam da napraviš fajl tipa File of <tip>, zato što ni sam ne znam kako to Pascal radi. Napravi jednu proceduru koja će u taj fajl da upiše slog. Filesize NE VRAĆA veličinu fajla u bajtovima, već u slogovima, i to isključivo za tipske i netipske datoteke, tj. neće da radi (prijavljuje grešku) sa fajlovima tipa TEXT. Dakle, ako već pričaš -- utata, ne radi --, moraš i znati neke stvari. Ako budeš imao još ovakvih problema, mailni me pa da ti na mail okačim program ... Marko
pascal.684 ajankovic,
Hi 2 all. Hitno potreban originalni Borlandov paket "Turbo Pascal for Windows v 1.5" Nov ili polovan :) Ponude na mail ..ma wr ajankovic..:) ili na 011/101-728 Sale...
pascal.685 ognjen,
Aha, dakle, malo mi se razbistrilo ono sa recordima... Pascal sâm ubacuje bajtove koji oznacavaju koliko je dugacak record... Npr: ------------------------------ [chr(3)]abc[chr(7)]1234567 ------------------------------ itd... Ali, sta ako imam fajl otprilike ovakvog izgleda: Petar Petrovic Njegos Jovan Bulajic Bulaja isl. ──────┬─────── ───┬── │ └── Nadimak └────────────── Ime (banalan primer) Racunajuci i space char izmedju ova dva recorda... Mogu li ovde da koristim recorde (u pascalu)? Tacnije da li je moguce rad sa recordima primeniti na DBF fajlovima?
pascal.686 kriss,
˙˙ Prijavio je da fajl ima 0 bajtova!!!! Dobro, gledam source, i ˙˙ mislim "Gde li je greska???!?!", ali greske prosto, naprosto, ˙˙ nema!!!!!!!! Jebote (sorry, moram :), kad mu kazem falesize(f) ˙˙ on kaze 0!!!! Kako NULA kad ima TRIDEST I DVA!!!! Eh, gde li mi se samo zaturi taj kod ;) U sred programa stoji jedno Readln(x); -> pri izvršavanju se preskoči (!!?!?!) Kada se stavi još jedno iza ovog prvog -> pita te 2 puta !!!!!!!! Zona sumraka, Turbo Pascal 6.0 :)
pascal.687 nikac,
Imas u nekom od dir-ova poveliki program (i to za c) za rad sa dbf bazama. I lepo neko rece NE MOZES ti da napravis file of nesto. Moze s da napises program koji ce pravi konverziju ascii->file_of. Na primer: ... Readln(S); i:=pos(' ',s)); slog.ime:=copy(s,1,i); s:=copy(s,i,length(s)-i)); slog.prezime:=... ... write(f,slog); ...
pascal.688 peca.st,
!-> U cemu je greska ("iksovati" tacan odgovor): !-> !-> Š Ć U meni Dafinitivno u tebi. :). Najbolje pošalji kompletan source i fajl nad kojim si ga probao (okači uz poruku, zipovano) pa ćemo da vidimo... Peđa.
pascal.689 peca.st,
!-> Kao prvo, ne možeš sam da napraviš fajl tipa File of <tip>, zato !-> što ni sam ne znam kako to Pascal radi. Pascal to radi ko i svi kompajleri. (i ne samo kompajleri) Slog je jednostavno skup bajtova, on te bajtove upiše u fajl i kraj. To što ti vidiš u fajlu kuke i kvake, to je druga stvar. Svaki broj zauzima 1, 2, ili 4 bajta (zavisno od tipa) pa to kad se pretvori u neki(e) znak(ove) ne izgleda baš kao broj. Peđa.
pascal.690 peca.st,
!-> I lepo neko rece NE MOZES ti da napravis file of nesto. Nije da ne može, ali će ići malo teže. :))). Peđa.
pascal.691 markom,
■■■ Pascal to radi ko i svi kompajleri. (i ne samo kompajleri) ■■■ Slog je jednostavno skup bajtova, on te bajtove upiše u fajl ■■■ i kraj. Hmm, mora da sam se pogrešno izrazio. Ovoliko sam i ja zna, ali ajde ti napravi fajl tipa Word i u njega upiši četiri prizvoljna broja, ali ručno iz nekog edi- tora. To sam mislio pod onim da ni meni nije jasno kako Pascal to radi :) Marko
pascal.692 markom,
■■■ Tacnije da li je moguce rad sa recordima primeniti na ■■■ DBF fajlovima? Teško, ali imaš u sezamovom direktorijumu, a i u nekom od FON-ovih TPU(ove) za rad sa DBF fajlovima. Ali ako već radiš iz TP-a, bolje ti je da praviš sam svo- je baze ... Marko
pascal.693 markom,
■■■ Nije da ne može, ali će ići malo teže. :))). Dobro, file of String će lako napraviti, ali ajde napravi file of word... Marko
pascal.694 markom,
■■■ ˙˙ nema!!!!!!!! Jebote (sorry, moram :), kad mu kazem ■■■ falesize(f) ˙˙ on kaze 0!!!! Kako NULA kad ima TRIDEST I ■■■ DVA!!!! ■■■ ■■■ Eh, gde li mi se samo zaturi taj kod ;) Nemoj komentarisati nešto što ne znaš. Filesize NE VRAĆA veličinu fajla u bajtovima nego u SLOGOVIMA. FileSize može da vrati 1 i na fajlu od 50 K, ako napraviš toliki slog.. Marko
pascal.695 eagle,
> Dobro, file of String će lako napraviti, ali ajde napravi file > of word... Kod stringova moraš uneti i dužinu, i napraviti razmak pre sledećeg stringa. File of word je lako napraviti ako imaš hex editor.
pascal.696 eagle,
> U sred programa stoji jedno Readln(x); -> pri izvršavanju se > preskoči (!!?!?!) Verovatno imaš negde pre toga još neko read ili readln.
pascal.697 ognjen,
Kad se vec govori o TSR programima, jasno je kako da se startuje na pritisak (bilo kog tastera), ali kako srediti da se startuje na pritisak odredjene kompinacije (Npr: Shft+Shft+Space), a kako da se startuje posle tacno odredjenog vremena...
pascal.698 ognjen,
)-> Nema narocito elegantnijih, ali ima brzih. Najlakse je da )-> napravis jedan bafer, ili sa: )-> ... Da, radi. :) Ali, mogu li sad da znam zasto? :) Mislim, zasto je ovo resenje brze...?
pascal.699 ognjen,
)-> Kao prvo, ne mozes sam da napravis fajl tipa File of <tip>, )-> zato sto ni sam ne znam kako to Pascal radi. Da, shvatio sam. :( )-> Napravi jednu proceduru koja ce u taj fajl da upise slog. E, to mi ne treba, jer fajl ne pravi _moj_ program, on je vec napraljen (mislim, fajl iz koga se cita), i najvise lici na DBF fajl... )-> Dakle, ako vec pricas -- utata, ne radi --, moras i znati )-> neke stvari. Ok, sorry, pretendovalo je da bude sala... :) )-> Ako budes imao jos ovakvih problema, mailni me pa da ti na )-> mail okacim program ... Ok... :)
pascal.700 andrejt,
Ne znam za ostale ali neke tastere imas na adresi $40:$17 (po bitovima : insert,caps-lock,num-lock,scroll-lock,alt, ctrl,levi shift,desni shift) pa njih mozes da proveris i kad je vise njih pritisnuto,za ostale ne znam :(.Posle tacno odredjenog vremena mozes da ga startujes ako radi na INT 8(ako napravis proceduru koja uvecava neku prom. za recimo 1 i kad dostigne recimo 200 pustis tsr da radi- ovo verovatno moze i bolje ali ne mogu da se trenutno setim niceg pametnijeg.
pascal.701 andrejt,
... ===> Da, radi. :) Ali, mogu li sad da znam zasto? :) Mislim, zasto ===>je ovo resenje brze...? Zato sto inace pri svakom citanju iz fajla on cita char po char, a ovako smesti recimo 512 charova u mem. pa radi sa memorijom sto je mnogo brze.
pascal.702 dejanr,
>> Da, radi. :) Ali, mogu li sad da znam zasto? :) Mislim, zasto >> je ovo resenje brze...? Zato što onako pozivaš DOS za svaki karakter (? ili nekoliko karaktera?) a ovako odmah prenese po 10-tak kilobajta (ili više) pa posle samo čita iz bafera. Dakle, štedi se pakovanje parametara, pozivi DOS funkcija itd. Razlika ume da bude drastićna. Plaćena je i određena cena... u tekst datoteci ne možeš da radiš seek! Osim pomoću trikova ;)
pascal.703 isekulovic,
>> Šta ima u tim unit-ima. Da ne skidam badava? Gomila stvari, ali veoma malo pametnih. Nažalost pobrisao sam verziju za sedmicu tako da nemam spisak svih procedura. Ono što mene interesuje je procedura SetEnv (kao pandan TP-ove GetEnv).
pascal.704 kriss,
˙˙ ■■■ Eh, gde li mi se samo zaturi taj kod ;) ˙˙ ˙˙ Nemoj komentarisati nešto što ne znaš. Filesize NE VRAĆA ˙˙ veličinu fajla u bajtovima nego u SLOGOVIMA. FileSize može da ˙˙ vrati 1 i na fajlu od 50 K, ako napraviš toliki slog.. Kao prvo nisam komentarisao filesize, već Bug turbo pascala koji se javljao na 3 (tri) različite mašine. Kao drugo - nema drugo :)
pascal.705 peca.st,
!-> fajl tipa Word i u njega upiši četiri prizvoljna broja, ali ručno !-> iz nekog edi- Word? žetiri broja? Ovako: Dopiši na kraj tog fajla 8 (4*2) bilo kojih znakova, i, eto, dopisao si mu 4 broja. A koje si brojeve dopisao, znaćeš tako što uzmeš prva dva broja, pa onda druga dva... i prvi od njih pomnožiš (Ord (ch1)) sa 256 i dodaš mu drugi (Ord (ch2)). Peđa.
pascal.706 peca.st,
!-> Plaćena je i određena cena... u tekst datoteci ne možeš da radiš !-> seek! Pa... za šta bi služilo seek u tekstualnoj? Mislim, na koju poziciju bi to trebalo da pomeri pointer? Eventualno da se kao jedna pozicija računa jedan red, ali je to onda teško (nemoguće?) izvodljivo. (zbog promenljive dužine reda) Peđa.
pascal.707 markom,
■■■ Ok, sorry, pretendovalo je da bude sala... :) Opraštam ti :) Marko
pascal.708 markom,
■■■ Kod stringova moraš uneti i dužinu, i napraviti razmak pre ■■■ sledećeg stringa. File of word je lako napraviti ako imaš ■■■ hex editor. Arrrrgggggghhhh!!!! Zar ti nije lakše da napraviš proceduru koja će to da radi? Ja sve vreme o tome pričam bre !! Marko
pascal.709 markom,
■■■ Kao prvo nisam komentarisao filesize, već Bug turbo pascala ■■■ koji se javljao na 3 (tri) različite mašine. Kao drugo - nema ■■■ drugo :) Ali to nije bug, to tako radi i gotovo... Marko
pascal.710 ognjen,
)-> Imas u nekom od dir-ova poveliki program (i to za c) za rad )-> sa dbf bazama. Ne programiram u cu :)
pascal.711 ognjen,
)-> Najbolje posalji kompletan source i fajl nad kojim si ga )-> probao (okaci uz poruku, zipovano) pa cemo da vidimo... Neah. Nije ni bitno, odustao sam od recorda... :)
pascal.712 isekulovic,
>> Tacnije da li je moguce rad sa recordima primeniti na DBF >> fajlovima? Ako ti već treba nešto za rad sa .dbf fajlovima potraži fajl dbasendx.arj uz poruku pc.prog.2 6.632 by pedjak.
pascal.713 isekulovic,
>> ali kako srediti da se startuje na pritisak odredjene kompinacije Npr. shift-ctrl-alt-spc kombinacija. Proveravaš port[$60] i registruješ svako pritiskanje/otpuštanje crtl/shift/alt tastera u nekim Boolean promeljivima, tako da znaš stalno šta je pritisnuto a šta nije. Kad se pritisne space proveriš da li su pritisnuti ctrl i shift i alt i ako jesu treba da se aktivira. >> a kako da se startuje posle tacno odredjenog vremena... Postaviš da procedura na int $08 uvećava neki brojač svaki put kada okine (18.2 puta u sekundi) i kada brojač dostigne neku vrednost tada program treba da se aktivira.
pascal.714 eagle,
> Postaviš da procedura na int $08 uvećava neki brojač svaki put > kada okine (18.2 puta u sekundi) i kada brojač dostigne neku > vrednost tada program treba da se aktivira. SIgurnije je svaki put pročitati vreme sa 40h:6Ch adrese.
pascal.715 eagle,
> uzmeš prva dva broja, pa onda druga dva... i prvi od njih > pomnožiš (Ord (ch1)) sa 256 i dodaš mu drugi (Ord (ch2)). Obrnuto.
pascal.716 markom,
■■■ Npr. shift-ctrl-alt-spc kombinacija. Ajde ako te ne mrzi nabaci primer ... Marko
pascal.717 kriss,
˙˙ Ali to nije bug, to tako radi i gotovo... Nije bug? Ok, možda ti to zoveš nekim drugim imenom, ali to je bag. Sad sam se setio da sam zbog toga i morao da pišem sopstvenu proceduru unos, tako da je definitno taj deo koda transformisan :( Šteta, inače bih ga poslao da se uveriš ;)
pascal.718 ognjen,
Znaci, SetTextBuf() sluzi za izdvajanje dela memorije u koji ce se citati x bajtova fajla... I, prvo se ucita u taj bafer prvih x bajtova, pa kada se oni privedu kraju, sledecih x... do kraja fajla... Jesam li dobro razumeo?
pascal.719 ognjen,
Kako se moze odsvirati neka melodijica u pascalu, ali tako da se ne koristi primitivno sound, nego, da li ima neka komanda, ekvivalentna basic komandi play?
pascal.720 andrejt,
QUOTE>> Kako se moze odsvirati neka melodijica u pascalu, ali tako da QUOTE>>se ne koristi primitivno sound, nego, da li ima neka komanda, QUOTE>>ekvivalentna basic komandi play? Ja mislim da nema niceg slicnog play,ali i sa sound mozes svasta da odsviras ako se potrudis,no imas negde(valjda na FENIXu a verovatno i na jos nekim mestima) neki tpu za odsviravanje pa cu videti da ga skinem i da ti dostavim preko maila.
pascal.721 isekulovic,
>> Ajde ako te ne mrzi nabaci primer ... Ceo program? Nemam ništa gotovo, što bi ličilo na nešto, a ni vremena da pišem. Evo kako bi izgledao delić koji bi trebao odlučivati da li da se aktivira. var Activate : Boolean; Ctrl, Shift, Alt : Boolean; InDos : ^Boolean; Old_Int9, Old_Int8, Old_int28 : procedure; Procedure posao; begin ovde_radis_sta_vec_hoces; activate := false; end;{posao} Procedure My_Int9; interrupt; begin case Port[$60] of 29: Ctrl := true; 157: Ctrl := false; 42: Shift := true; 170: Shift := false; 56: Alt := true; 184: Alt := false; 57: Activate := true; end;{case} Inline($9C); Old_Int9; end;{My_Int9} Procedure My_Int8; interrupt; begin Inline($9C); Old_Int8; if activate and not (InDos^) then posao; end;{My_Int8} Procedure My_Int28; begin Inline($9C); Old_Int28; if activate then posao; end;{My_Int28} var r:registers; begin r.ah := $34; MsDos(r); InDos := Ptr(r.es,r.bx); activate := false; Ctrl := false; Shift := false; Alt := false; Swapvectors; GetIntVec($08,@Old_Int8); GetIntVec($09,@Old_Int9); GetIntVec($28,@Old_Int28); SetIntVec($08,@My_Int8); SetIntVec($09,@My_Int9); SetIntVec($28,@My_Int28); Keep(0); end.
pascal.722 isekulovic,
>> SIgurnije je svaki put pročitati vreme sa 40h:6Ch adrese. A ako korisnik šteluje sat u medjuvremenu?
pascal.723 markom,
■■■ i na jos nekim mestima) neki tpu za odsviravanje pa cu videti ■■■ da ga skinem i da ti dostavim preko maila. Imaj i mene na umu ;) Marko
pascal.724 andrejt,
... QUOTE>>Imaj i mene na umu ;) Imam te ... ;)
pascal.725 ognjen,
)-> tpu za odsviravanje pa cu videti da ga skinem i da ti )-> dostavim preko maila. E, ejde, molim te, bas bi mi trebalo... Imam gomilicu pesmica iz Basica, pa mi zao da ih brisem... BTW, kako da saznam komande iz TPU-a? Ima li neki nacin (ne mislim na citanje txt fajla :)?
pascal.726 mzdravkovic,
Kako iz pascala da ocitam seriski broj diska ? Hvala
pascal.727 andrejt,
QUOTE>> Kako iz pascala da ocitam seriski broj diska ? Malo sam priglup,kakav serijski broj ?(Jel' iz setupa ?)
pascal.728 markom,
Potrebna mi je procedura za sortiranje dvostruko povezane liste pointera. Ako neko ima (zna) neka nabaci ovde ili na mail. Jako mi je hitno. Unapred zahvalan, Marko
pascal.729 mzdravkovic,
>> QUOTE>> Kako iz pascala da ocitam seriski broj diska ? >> >> Malo sam priglup,kakav serijski broj ?(Jel' iz setupa ?) Mislio sam na onaj serijski broj koji daje chkdsk .
pascal.730 postmast,
Path: fon!Osmeh.FON.Uni-BG.YU!dex From: dex@Osmeh.FON.Uni-BG.YU (Dejan Jakovljevic) Subject: Re: pascal Organization: Fakultet Organizacionih Nauka, Beograd Date: Fri, 28 Jan 1994 11:08:14 GMT Message-ID: <CKC6xr.251@fon> X-Newsreader: TIN [version 1.2 PL1] References: <sezam$pascal:01.095.3591@sezam> Sender: news@fon (News) Marko Mandic (markom@sezam.UUCP) wrote: : Potrebna mi je procedura za sortiranje dvostruko povezane liste pointera. Ako : neko ima (zna) neka nabaci ovde ili na mail. Jako mi je hitno. daj josx malo 'data' o listi, nekad sam znao...mog'o bi' da pomognem... ako vecy neko nije ..dex..
pascal.731 andrejt,
... QUOTE>>Mislio sam na onaj serijski broj koji daje chkdsk . Dakle to je ... Po HelpPCu 2.1 to ti je Boot Sector offset 27h.
pascal.732 janko,
> Mislio sam na onaj serijski broj koji daje chkdsk . Meni chkdsk ne daje nikakav serijski broj. Jesi li siguran da bi taj program radio na mom računaru? ;)
pascal.733 andrejt,
QUOTE>>Meni chkdsk ne daje nikakav serijski broj. Jesi li siguran da bi QUOTE>>taj program radio na mom racunaru? ;) Jesi li ti siguran da si chkdsk probao na 'pravom disku', to jest ne stacker drajvu i slicnim ?
pascal.734 markom,
■■■ Marko Mandic (markom@sezam.UUCP) wrote: ^^^^^^^^^^^^ ^^^^^^ AAAAAA, pa ja sam Marko Milivojević !!! :)) ■■■ daj josx malo 'data' o listi, nekad sam znao...mog'o bi' da ■■■ pomognem... ako vecy neko nije Bilo šta, treba mi samo algoritam i ništa više, ja ću to da preradim za moju listu. Marko
pascal.735 dejanr,
>> Meni chkdsk ne daje nikakav serijski broj. Jesi li siguran da bi >> taj program radio na mom računaru? ;) Mora biti da koristiš neku stariju verziju DOS-a (3.30? 3.31?). Inače, algoritam za čitanje serijskog broja diska dat je prošlog januara, u "Bajtovima lične prirode" ("Računari"). Preuzet je sa Sezama, ali ko bi sada našao poruku...
pascal.736 djelovic,
> Bilo šta, treba mi samo algoritam i ništa više, ja ću to da preradim za > moju listu. Ako znaš da "čitaš" C, onda pogledaj SNIPPETS arhivu u C direktorijumu. Ako me sećanje dobro služi, tamo ima alogritam za shell-sort duplo uvezanih lista.
pascal.738 eagle,
> Potrebna mi je procedura za sortiranje dvostruko povezane liste > pointera. Ako neko ima (zna) neka nabaci ovde ili na mail. Napravi proceduru za ubacivanje čvora u sortiranu listu na određenu poziciju, tako da lista ostane sortirana. Ako hoćeš da kreiraš sort. listu ubacuj nove članove preko te procedure. Ako već imaš listu i treba da je sortiraš, to bi išlo otprilike ovako: procedure SortList(var Pocetak: PList); var Old, Poc: PList; begin Poc := Pocetak; Pocetak := nil; while Poc <> nil do begin Old := Pocž.Sledeci; SortInsert(Pocetak, Poc); (* var Pocetak: PList; P: PList *) Poc := Old; end; end.
pascal.739 janko,
> QUOTE>>Meni chkdsk ne daje nikakav serijski broj. Jesi li > siguran da bi QUOTE>>taj program radio na mom racunaru? ;) > > Jesi li ti siguran da si chkdsk probao na 'pravom disku', > to jest ne stacker drajvu i slicnim ? Sigurno sam siguran. Serijski broj je izmišljotina novijih verzija Mesi dosa. Koliko je pametno onda pisati programe koji ne rade na starim dobrim verzijama?
pascal.740 janko,
>>> Meni chkdsk ne daje nikakav serijski broj. Jesi li >>> siguran da bi taj program radio na mom računaru? ;) > > Mora biti da koristiš neku stariju verziju DOS-a (3.30? > 3.31?). :) A baš su ljudi počeli da se pitaju kako to. Kvariš im zabavu. ;) > Inače, algoritam za čitanje serijskog broja diska dat je > prošlog januara, u "Bajtovima lične prirode" ("Računari"). > Preuzet je sa Sezama, ali ko bi sada našao poruku... Ma ja sam to pisao zbog toga, što sam se odmah pomislio, šta takve stvari daju kada čitaju 3.31 diskove i diskete (i diskete imaju SN, ili ne)? Da li zbog takve "pametne" mogućnosti iskaču sa porukom "treba vam dos 5.0?" Da neki programi domaćih programera ne pokušavaju i da pišu po tome? But sektor i susedstvo? Zgroz. Sad se setih. Kao, to su jedinstveni brojevi i tralala. Zna li neko algoritam po kome DOS pravi te brojeve? Da li negde drži neku semenku (seed) i od koliko bajtova, pa je lepo apdejtuje svaki put kad generiše novi broj? Ili izračunava fazu meseca pa nju upiše?
pascal.741 dr.grba,
>> Sad se setih. Kao, to su jedinstveni brojevi i tralala. Zna li neko >> algoritam po kome DOS pravi te brojeve? Da li negde drži neku >> semenku (seed) i od koliko bajtova, pa je lepo apdejtuje svaki put >> kad generiše novi broj? Ili izračunava fazu meseca pa nju upiše? Jednom sam otvorio 4 kutije novih disketa i krenuo u iscrpljujući posao formatiranja... DOS 6.0, njegov FORMAT, "format another" = "Yes"... Posle izvesnog vremena sam primetio da se jedan broj (valjda prvi) menja po nekom na prvi pogled neprepoznatljivom ključu, dok se drugi broj uredno inkrementirao za jedan u heksadekadnom sistemu, pri čemu je prvoizabrani bio neki random broj. Kada bih prekinuo FORMAT, pa startovao ponovo, samo bi se izabrao novi random, a slika bi se ponovila. Mnogo važno, uostalom (:
pascal.742 dejanr,
>> Kada bih prekinuo FORMAT, pa startovao ponovo, samo bi se izabrao >> novi random, a slika bi se ponovila. I kod mene se slično ponaša kada formatiram diskete, ali sada vidim da su mi serijski brojevi na svim particijama (C, E, F i G, particija D je drugi disk) jednaki. E sad kako je to uspelo, pojma nemam, ali tako kaže CHKDSK :) Bug ili feature? :)
pascal.743 dragisha,
-> Sad se setih. Kao, to su jedinstveni brojevi i tralala. Zna li neko -> algoritam po kome DOS pravi te brojeve? Da li negde drži neku semenku -> (seed) i od koliko bajtova, pa je lepo apdejtuje svaki put kad generiše -> novi broj? Ili izračunava fazu meseca pa nju upiše? Datum+vrijeme kreiranja volumeta. Po jedan word, tj standardni DOS format za iste. Izuzetno naivan način zaštite, ako mene neko pita:). -- [Woman who stays long on bedspring may get offspring.]
pascal.744 kenza,
Hi! Ima li neko unit(e) za rad pod novelom? Otvaranje fajlova sa lockovanjem,... itd.. Tnx
pascal.745 dragisha,
-> Pa... za šta bi služilo seek u tekstualnoj? Mislim, na koju poziciju bi -> to trebalo da pomeri pointer? Eventualno da se kao jedna pozicija računa -> jedan red, ali je to onda teško (nemoguće?) izvodljivo. (zbog -> promenljive dužine reda) Analiziram tekst file u kome su podaci paragrafi (dvije i više linija) a u zadnjoj liniji se nalazi time+date stamp. Počinjem od početka i tražim određeni datum da bih uradio neki posao. Tekst fajl ima preko 10Mb. Poanta, kad nađem stamp moram da obradim i paragraf koji je upravo završio. Ubio bih se (tj korisnik:)) bez baferisanja+seek-a istovremeno. -- [Life is a sexually transmitted and terminal disease.]
pascal.746 dragisha,
-> Datum+vrijeme kreiranja volumeta. Po jedan word, tj standardni DOS -> format za iste. Izuzetno naivan način zaštite, ako mene neko pita:). Da demantujem:). Ovo je slučaj na mojim disk particijama, ali ne i na par disketa koje sam probao. Izgleda da je bitan i program kojim se to radi, diskove sam čini mi se formatirao sa DOS 5.0, a sada imam 6.0. Kako izgleda, nema DOS poziva koji generiše taj broj (?) već to radi program za formatiranje. -- [Do married women make the best wives?]
pascal.747 dr.grba,
>> I kod mene se slično ponaša kada formatiram diskete, ali sada vidim >> da su mi serijski brojevi na svim particijama (C, E, F i G, >> particija D je drugi disk) jednaki. E sad kako je to uspelo, pojma >> nemam, ali tako kaže CHKDSK :) Bug ili feature? :) Aman, i kod mene! MS DOS 6.2, tri particije, ser. broj svake je 1B6C-946F. Ne, ne reci da je isti broj i kod tebe... (:
pascal.748 rower,
Cuo sam da Paskal moze da cita slike PCX ili BMP formata. Da li neko zna kako se to radi (ako moze). Kakve jos postoje fore sa slikama u Paskalu ???? Pozdrav ROWER
pascal.749 darone,
Par pitanja: a) koja je najbolja mouse biblioteka, a da je ima na sezamu? ili već neki sors, nije važno b) da li je moguće ulinkovati .chr font fajlove u .exe? c) da je potrebno isporučivati .bgi fajlove uz program ili se linkuju u .exe? d) nema više ;) Unapred hvala :)
pascal.750 djelovic,
> b) da li je moguće ulinkovati .chr font fajlove u .exe? > c) da je potrebno isporučivati .bgi fajlove uz program ili se linkuju u .ex U oba slučaja odgovor je "može, ali ne mora". I fontovi i BGI drajveri se mogu ulinkovati u EXE, ali i ne moraju.
pascal.751 bearboy,
> b) da li je moguće ulinkovati .chr font fajlove u .exe? > c) da je potrebno isporučivati .bgi fajlove uz program ili se > linkuju u .exe? Baci pogled u BGILINK.PAS i sve će ti se samo ka'sti...
pascal.752 darone,
>> > b) da li je moguće ulinkovati .chr font fajlove u .exe? >> > c) da je potrebno isporučivati .bgi fajlove uz program ili se linkuju u >> .ex >> >> U oba slučaja odgovor je "može, ali ne mora". I fontovi i BGI drajveri se >> mogu ulinkovati u EXE, ali i ne moraju. b1) kako se .chr fajlovi linkuju u .exe? (može i okvirno broj poruke, ili datum, kopaću) c1) bear reče da to ima negde u bgilink.pas, jel to deo TP paketa? p.s. valjda vidite da to nije za mene :)
pascal.753 janko,
> c1) bear reče da to ima negde u bgilink.pas, jel to deo TP > paketa? Da. To je u direktorijumu sa CHR fajlovima, primer kako se linkuju ta čuda. Usput, mogao si da lupiš jedno FF BGILINK.PAS :)
pascal.754 vitez.koja,
#=> a) koja je najbolja mouse biblioteka, a da je ima na #=> sezamu? ili već neki sors, nije važno Na znam koja je najbolja, ali ima jedna (na sezamu, naravno) koja omogućava onaj fancy klizeću kursor kao u Nortonu := #=> b) da li je moguće ulinkovati .chr font fajlove u .exe? Jeste, ali moraš da praviš nekakav make fajl. Ma, pređi na C :) #=> c) da je potrebno isporučivati .bgi fajlove uz program #=> ili se linkuju u .exe? Po želji, može i jedno i drugo. Fontovi i drajveri se po 'defaultu' ne linkuju, nego to moraš odlično da zahtevaš. U okviru TPa dati su fajlovi bgilink.* - pogledaj i kazaće ti se samo.
pascal.755 peca.st,
!-> Cuo sam da Paskal moze da cita slike PCX ili BMP formata. Za PCX imaš unit u Pascal direktorijumu. BMP je vrlo prost format. U prvih ne znam napamet kolko bajtova je visina, širina slike, broj boja i još neki manje važni podaci. Onda sledi paleta (3 * broj boja). Posle toga ti ide slika koja nije ni na kakav način kriptovana, bajt za bajtom. I to je sve. Ako je potrebno, mogu da pošaljem source koji čita BMP. Peđa.
pascal.756 markom,
■■■ kriptovana, bajt za bajtom. I to je sve. Ako je potrebno, ■■■ mogu da pošaljem source koji čita BMP. Baš bi mogao ... :) Marko
pascal.757 skerl,
│# => a) koja je najbolja mouse biblioteka, a da je ima na │# => sezamu? ili vec neki sors, nije vazno │ │ Na znam koja je najbolja, ali ima jedna (na sezamu, naravno) koja │ omogucava onaj fancy klizecu kursor kao u Nortonu := └───── mouslib8.zip
pascal.758 bigbrada,
!##! kriptovana, bajt za bajtom. I to je sve. Ako je potrebno, !##! mogu da pošaljem source koji čita BMP. Ili, preciznije, pola bajta po pola bajta. :) Brada.
pascal.760 lovro,
­=- 6.1051->1027 pascal m.hristodulo 14.05.93. ­=- 18:06 allgraph.zip U PC.PROG.2, fina stvar.
pascal.761 darone,
>> Jeste, ali moraš da praviš nekakav make fajl. Ma, pređi na C :) Ja da programiram? Nikada :))) Hvala svima na odgovorima, pokupio sam sve što mi treba :)
pascal.762 predragd,
> Na znam koja je najbolja, ali ima jedna (na sezamu, > naravno) koja omogućava onaj fancy klizeću kursor kao u > Nortonu := Kako je ime toj arhivi, i gde se nalazi. Peđa.
pascal.763 almi,
Evo jednog ostvarenja u pascalu.Mine Sweeper for DOS. Uz poruku ide source koji treba prevesti. Sve primedbe saljite almi-u. Pozdrav Almi. minepas.zip
pascal.764 ognjen,
Evo jednog problema (bez obzira na jezik, ali meni treba za pascal:): Daklem, recimo: Repeat {posao...} Until KeyPressed E, taj "posao..." :) mora da se izvrsi ceo, dakle da dodje do kraja, pa tak onda da se "pobegne" iz njega. To i nije problem, ako je posao kratak, ali, ako isti traje 10ak sekundi, moram da cekam celih deset sekundi (posle pritiska nekog tastera) da bi se izaslo iz petlje. Ali, kako da "podesim" da mogu u svakom trenutku iz nje da izdjem? Jedino sto ja "vidim" je da posle svake komande stavim If PressedKey then... ali ni to nije nesto jer ako imam Delay (10000) (10sec) opet nece raditi, a i mnogo je primitivno... I pod broj 2, kad je ovo Until KeyPressed tik ispred end (dakle, program se zavrsava kad se pritisne tipka), taj pritisnuti taster ostaje u baferu, i ispisuje se na komandnoj liniji (ili, recimo ako ste koristili NC, pa pritisnuli ENTER, program ce se zavrsiti i ponovo startovati). Ali, kako isprazniti taj Keyboard bafer? Ima jedno resenje u vidu ch := ReadKey, ali to je dosetka, a ne resenje... PS: Ovo drugo sam malo zavrnuo, ali je valjda, jasno... :)
pascal.765 almi,
Evo ispravne arhive sa Úmine sweeperom Pozdrav Misel minepas.zip
pascal.766 bigbrada,
*>> E, taj "posao..." :) mora da se izvrsi ceo, dakle da dodje *>> do kraja, pa tak onda da se "pobegne" iz njega. To i nije *>> problem, ako je posao kratak, ali, ako isti traje 10ak *>> sekundi, moram da cekam celih deset sekundi (posle pritiska *>> nekog tastera) da bi se izaslo iz petlje. Ali, kako da *>> "podesim" da mogu u svakom trenutku iz nje da izdjem? *>> Jedino sto ja "vidim" je da posle svake komande stavim *>> If PressedKey then... ali ni to nije nesto jer ako imam *>> Delay (10000) (10sec) opet nece raditi, a i mnogo je *>> primitivno... "Rešenje" koje bih ja primenio bi bilo nešto u stilu: I := 0; Repeat Delay (100); Inc (I); Until KeyPressed Or (I = 100); Ne kažem da je to najbolje (čak suprotno - veoma je primitivno), ali radi posao. Ne moraš baš posle svake naredbe stavljati If KeyPressed. Stavi na svaku treću ;) *>> taj Keyboard bafer? Ima jedno resenje u vidu ch := ReadKey, *>> ali to je dosetka, a ne resenje... Dosetka ili rešenje, ali to radi posao, kao i malopre. I ja koristim isti štos. Brada.
pascal.767 postmast,
Path: fon!buefhp.etf.uni-bg.yu!jd53492d From: jd53492d@buefhp.etf.uni-bg.yu (Dejan Jakovljevic) Subject: Re: pascal Organization: Fakultet Organizacionih Nauka, Beograd Date: Thu, 17 Feb 1994 21:58:43 GMT Message-ID: <CLE2Dv.Lzt@fon> X-Newsreader: TIN [version 1.2 PL1] References: <sezam$pascal:01.095.3879@sezam> Sender: news@fon (News) Ognjen Blagojevic (ognjen@sezam.UUCP) wrote: <*> Evo jednog problema (bez obzira na jezik, ali meni treba za <*> pascal:): <*> Daklem, recimo: <*> Repeat <*> {posao...} <*> Until KeyPressed otprilike ovako : KeyPressed ti samo kazxe DA LI u baferu ima karaktera...na tebi ostaje da vidisx sxta cyesx sa njima. Zato ti pri zavrsxetku programa karaktr 'iskocxi' na ekran... ..dex.. ps: a za drugi deo odgovora ?!? ne znam L:((( -- Jakovljevic Dejan, Sokobanja O:-) ////// yours (?), (try me at osmeh.FON.Uni-Bg.YU as dex) ////// ..dex..
pascal.768 sale,
> Repeat > šposao...ć > Until KeyPressed > > trenutku iz nje da izdjem? Jedino sto ja "vidim" je da posle > svake komande stavim If PressedKey then... ali ni to nije nesto > jer ako imam Delay (10000) (10sec) opet nece raditi, a i mnogo je > primitivno... Može ovako: a) napraviš svoj delay koji proverava i pritisak na tastaturu b) napraviš svoj handle keyboard interrupta koji će da natera program da skoči na određeno mesto ako pritisneš taster. (ako hoćeš ovako, daj da razradimo.) > program ce se zavrsiti i ponovo startovati). Ali, kako isprazniti > taj Keyboard bafer? Ima jedno resenje u vidu ch := ReadKey, ali > to je dosetka, a ne resenje... KeyPressed nikada ne dira buffer - on i treba samo da javi da li ima nečega ili ne. Najelegantnije je upravo to da se stavi ch:=readkey; ali ima i to manu: ako pritisneš neki funkcijski taster, u buffer stižu dva znaka - prvi je 0 a drugi zavisi od toga koji je taster pritisnut. Tako da i ovo ch:=readkey će da ostavi ovo drugo. Zato: while keypressed do ch:=readkey; tik iza unitl keypressed; Sale
pascal.769 lovro,
­=- I pod broj 2, kad je ovo Until KeyPressed tik ispred procedure clbuf; var kbdhead: word absolute $40:$1A; kbdtail: word absolute $40:$1C; begin kbdtail:=kbdhead; end;
pascal.770 lovro,
­=- 0 a drugi zavisi od toga koji je taster pritisnut. Tako da ­=- i ovo ch:=readkey ce da ostavi ovo drugo. Nece.
pascal.771 ognjen,
)-> Ne kazem da je to najbolje (cak suprotno - veoma je )-> primitivno), ali radi posao. Da, lepo radi. :) Tnx! :)
pascal.772 ognjen,
)-> a) napravis svoj delay koji proverava i pritisak na tastaturu Kako? :) )-> b) napravis svoj handle keyboard interrupta koji ce da natera )-> program da skoci na odredeno mesto ako pritisnes taster. Kako? :)
pascal.773 ognjen,
)-> procedure clbuf; )-> var kbdhead: word absolute $40:$1A; )-> kbdtail: word absolute $40:$1C; )-> begin )-> kbdtail:=kbdhead; )-> end; E, a da li bi mogao da objasnis sta stâ radi...
pascal.774 markom,
*** E, a da li bi mogao da objasnis sta stâ radi... Isprazni bafer tastature ;) Marko
pascal.775 peca.st,
!-> E, a da li bi mogao da objasnis sta stâ radi... kbdhead ti je početak tastaturnog bafera, a kbdtail je kraj. Kada postaviš da kraj bude na početku, znači da u baferu neće biti ništa. Peđa.
pascal.776 dzakic,
> )-> a) napravis svoj delay koji proverava i pritisak na tastaturu > > Kako? :) Recimo: Procedure MyDelay(i:word); begin repeat delay(1); dec(i) until KeyPressed or (i=0); end; Mada, bojim se da vreme izvršavanja ove procedure neće biti baš jednako vremenu izvršavanja pravog Delay-a, pogotovu na XT-u :). > )-> b) napravis svoj handle keyboard interrupta koji ce da natera > )-> program da skoci na odredeno mesto ako pritisnes taster. > > Kako? :) Mora da se sale šalio :). Nije baš preporučljivo u paskalu tek tako iz interapt hendlera skakati na proizvoljno mesto u programu. Ima brdo razloga, siguran sam da problem možeš rešiti i bez toga. Osim, naravno, ako ne želiš da tim pritiskom na taster iskočiš načisto iz programa...
pascal.777 dzakic,
> )-> procedure clbuf; > )-> var kbdhead: word absolute $40:$1A; > )-> kbdtail: word absolute $40:$1C; > )-> begin > )-> kbdtail:=kbdhead; > )-> end; > > E, a da li bi mogao da objasnis sta stâ radi... Bafer za tastaturu je običan kružni bafer, od inicijalno 16 wordova u biosovom data segmentu (40h). Pokazivač na početak i kraj bafera se takođe nalaze među tim biosovim promenljivama na adresama 1Ah i 1Ch. Uprošćeno, kada stisneš taster, bios njegov scan i ascii kod stavi na mesto gde pokazuje kbdhead i uveća ga za dva (word), a kada neki program traži da pročita šta je pritinsuto (ReadKey), bios pokupi sadržaj lokacije na koju ukazuje kbdtail i uveća ga za dva. Kad je bafer prazan, kbdhead je jednak kbdtail-u, i na taj način radi KeyPressed - proverava da li su jednaki. Procedura clbuf je koliko se sećam objavljena u bajtovima i radi ovo izjednačavanje pointera na 'glavu' i 'rep'. Pošto se radi o promenljivama koje ne pripadaju paskal programu, već su 'negde daleko' - u biosovom segmentu, korišćena je absolute direktiva koja kazuje kompajleru gde se one nalaze.
pascal.778 ndragan,
/ Zato ti pri zavrsxetku programa karaktr 'iskocxi' na ekran... Koji je Set Code za korisnika postmast? Bue_ Ndragan
pascal.779 dpriest...,
Problem(?): Pascal (7.0) kada se uradi OVRInit(xxx.ovr) ostavi .ovr fajl nedostupan za mrezu, sto rezultira time da ako je taj .ovr fajl na serveru a neko hoce da ga kopira, dobija gresku File share violation. Ista greska se desava i ako pokusam da radim OVRInit sa stanice na .ovr file na serveru... normalno... I STA SAD? Znam da ima neka konstanta u overlay unit-u koja se zove filemode ili nesto slicno, ali ne znam na sta da je postavim da bi goreopisani problem bio resen... ako iko nesto zna o ovome neka mi ma wr ili ako mislite da je problem zanimljiv pomagajte ovde! Da li ima razlike ili nekih ogranicenja kada se omoguci da vise programa koristi jedan .ovr na mrezi? HELP! DPriest... P.S. postavio sam taj fajl u setovanju mreze da ga mogu u isto vreme otvoriti vise korisnika tako da problam ne pravi mreza vec pascal!
pascal.780 dejanr,
>> Pascal (7.0) kada se uradi OVRInit(xxx.ovr) ostavi >> .ovr fajl nedostupan za mrezu, sto rezultira time >> da ako je taj .ovr fajl na serveru a neko hoce da ga >> kopira, dobija gresku File share violation. Probaj da tom .ovr fajlu staviš read only atribut pre startovanja programa. Trebalo bi da pomogne.
pascal.781 ognjen,
Kako da u pascalu dobijem "spisak" svih fajlova, a kako "spisak" direktorijuma. Recimo, hocu da obrisem sve fajlove & sve direktorijume da uklonim, kako to da uradim (ne, ne sa XRD :)?
pascal.782 ognjen,
Kako u pascalu resiti View nekog fajla (osnovne komande: Up, Down, PgUp, PgDn, Home, End) velicine (do) 32 Kb? (A kako vece fajlove?)
pascal.783 dzakic,
> Pascal (7.0) kada se uradi OVRInit(xxx.ovr) ostavi > .ovr fajl nedostupan za mrezu, sto rezultira time Promenljiva filemode je u system unitu, i pre otvaranja datoteke postaviš je na vrednost koju dobiješ sabiranjem po jedne iz ove dve grupe: const readonly = 0; writeonly = 1; readwrite = 2; compatibility = 0; exclusive = 16; denywrite = 32; denyread = 48; permitall = 64; Probaj da pre inicijalizacije overlay manager-a staviš filemode:=readonly+denywrite; Ako filemode nisi dirao, biće compatibility, a to nekad zna da pravi probleme. Sa share-om iz dosa radi u desqview-u a neće u windowsima. Na mreži nije bilo problema.
pascal.784 peca.st,
!-> Kako da u pascalu dobijem "spisak" svih fajlova, a kako !-> "spisak" direktorijuma. Recimo, hocu da obrisem sve fajlove & sve !-> direktorijume da uklonim, kako to da uradim (ne, ne sa XRD :)? Pomoću FindFirst i FindNext. Za sve fajlove i direktorijume na disku najlakše je uraditi rekurzijom. Peđa.
pascal.785 peca.st,
!-> Kako u pascalu resiti View nekog fajla (osnovne komande: Up, !-> Down, PgUp, PgDn, Home, End) velicine (do) 32 Kb? (A kako vece !-> fajlove?) Za fajlove do 64k pamtiš ih cele u nekoj strukturi, sad zavisi kako ti odgovara. A za šetanje kroz fajl... Jedini savet je da ideš direktno u video memoriju, nemoj slučajno write. Ostalo već moraš sam da smisliš, zavisno od potreba. Možeš da pogledaš kako je to urađeno u Turbo Vision-u, ili ako ti odgovara okolina (a i programiranje u TV) i da koristiš to. Peđa.
pascal.786 dvesic,
>> >> Kako da u pascalu dobijem "spisak" svih fajlova, a kako >> "spisak" direktorijuma. Recimo, hocu da obrisem sve fajlove & >> sve direktorijume da uklonim, kako to da uradim (ne, ne sa XRD >> :)? Mozda ovako : uses Dos; var DirInfo: SearchRec; begin FindFirst('*.*', AnyFile, DirInfo); while DosError = 0 do begin { If (DirInfo.Attr And Directory)<>0 Then } <-- Obrada za dir-ove. WriteLn(DirInfo.Name); FindNext(DirInfo); end; end.
pascal.787 dzakic,
> Kako da u pascalu dobijem "spisak" svih fajlova, a kako > "spisak" direktorijuma. Recimo, hocu da obrisem sve fajlove & sve Pogledaj u helpu procedure FindFirst i FindNext. Dobijaćeš redom datoteke i direktorijume iz dir-a, a proverom atributa ćeš ustanoviti o čemu od to dvoje se radi.
pascal.788 dzakic,
> Kako u pascalu resiti View nekog fajla (osnovne komande: Up, Down, > PgUp, PgDn, Home, End) velicine (do) 32 Kb? (A kako vece fajlove?) Sad, problem je malo obimniji da ti šaljem ovde gotovu proceduru. Do 32k ne bi trebalo da je problem. Učitaš celu datoteku u toliki bafer, i za svaku liniju usmeriš po jedan pointer na njen početak u baferu. Kod pomeranja na dole, poslednji pointer uvećavaš dok ne nađeš sledeću liniju a ostale pointere pomeriš na gore (text ide gore). Slično je i za scroll u suprotnom smeru. Uz malo truda će tih 32k... (ili možda bolje 48, tako sam ja radio kad sam pisao Z za herkules) biti 'prozor' za pogled na neku veeeliku datoteku. Treba samo da prilikom traženja sledeće linije proveriš da li si ispao iz bafera i ako jesi, onda poslednjih 16k prebaciš na početak, a od 16-tog kilobajta učitaš sledećih 32... Opet, isto važi i za vraćanje unazad. Naravno, ima tu posla. Možda da probaš sa turbovizijom?
pascal.789 peca.st,
!-> Mozda ovako : Ovako samo u trenutnom direktorijumu. Za čitav disk je potrebna rekurzija. Peđa.
pascal.790 almi,
Ovo je unit za korišćenje fontova koji idu uz VGAMax (vidi YU-dir na SEZAM-u). Postoje sledeće procedure: Procedure InitFont(s:String;si:Byte); -inicijalizacija fonta iz fajla S ,cija su slova visine SI pr.:Hoćemo da inicijalizujemo font swiss.f16 -> InitFont('swiss.f16',16); Procedure DrawChar(CurX,CurY:Word;ch:Char); -Crta znak Ch na koordinatama (CurX,CurY) pr.:DrawChar(100,100,'C'); Procedure WriteTextXY(CurX,CurY:Word;S:String); -Crta string S na koordinatama CurX,CurY Procedure DoneFont; -Dispose Fonta (***OBAVEZNO URADITI NA KRAJU PROGRAMA***) Procedure SetFontSize(z:Byte); -Uvećavanje Fonta Procedure SetInversFont; -Invertuje BitMapu Fonta; Pozdra Almi. vfont.zip
pascal.791 boris,
> Pomoću FindFirst i FindNext. Za sve fajlove i direktorijume na > disku najlakše je uraditi rekurzijom. Mislim da mu može pomoći članak Vlade Kostića iz nekih starih računara pod nazivom "Rekurzivna trka po disku". Tamo se radi samo sa direktorijumima (ako se ne varam) ali nije teško ukapirati princip i proširiti i na fajlove. Boris
pascal.792 mjova,
> -inicijalizacija fonta iz fajla S ,cija su slova visine SI dužinu datoteke podeli sa 256 i dobićeš visinu fonta.
pascal.793 peca.st,
!-> Mislim da mu može pomoći članak Vlade Kostića iz nekih starih !-> računara pod nazivom "Rekurzivna trka po disku". Tamo se radi samo !-> sa direktorijumima (ako se ne varam) ali nije teško ukapirati !-> princip i proširiti i na fajlove. Ma evo otprilike skicirano kako bi to trebalo da izgleda: Procedure KrozCeoDisk (...); Begin FindNext (...); Ispis (...); If "direktorijum" Then Begin ChDir (Ime); KrozCeoDisk (...); ChDir ('..'); End; If DosError = 0 Then KrozCeoDisk (...); End; I to je sva mudrost. Još pre poziva procedure treba uraditi FindFirst i preći u root. Peđa.
pascal.794 ognjen,
)-> Pomocu FindFirst i FindNext. Za sve fajlove i direktorijume )-> na disku najlakse je uraditi rekurzijom. Moze li jedan primercic... Please...
pascal.795 ognjen,
Kako da iskljcim / ukljcim / promenim velicinu kursora u pascalu?
pascal.796 dvesic,
>> Procedure KrozCeoDisk (...); >> Begin >> FindNext (...); >> Ispis (...); <--- (1) >> If "direktorijum" Then Begin >> ChDir (Ime); >> KrozCeoDisk (...); >> ChDir ('..'); <---- (2) >> End; >> If DosError = 0 Then KrozCeoDisk (...); >> End; >> >> I to je sva mudrost. >> Jos pre poziva procedure treba uraditi FindFirst i preci u >> root. Pa sad, nisam bas siguran :)) Ko ti garantuje da ce struktura koju je dos formirao na mestu (1) biti ista kao na mestu (2) tako da dos zna gde da nastavi ? Probaj ovaj prgram i videces da bas i ne radi ! Pozdrav, Dejan.
pascal.797 dzakic,
> Kako da iskljcim / ukljcim / promenim velicinu kursora u pascalu? Evo procedura za gašenje i paljenje kursora. Potrebno je prvo sačuvati njegovu veličinu pozivom StoreCursor, i nakon toga sa Hide i ShowCursor ga isključuješ i uključuješ. Za promenu veličine izmeni ShowCursor tako da se ch i cl pune vrednostima za liniju u kojoj kursor počinje i prestaje... var cursorstatus:word; Procedure StoreCursor; assembler; asm mov ah,3 int 10h mov cursorstatus,cx end; Procedure HideCursor; assembler; asm mov ah,1 mov cx,$2000 int 10h end; Procedure ShowCursor; assembler; asm mov ah,1 mov cx,cursorstatus int 10h end; Zak
pascal.798 dzakic,
> Probaj ovaj prgram i videces da bas i ne radi ! U pravu si. Rekurzivna procedura treba prvo da pozove samu sebe za sve poddirektorijume pa onda da ispiše sve datoteke u tekućem diru.
pascal.799 peca.st,
!-> Probaj ovaj prgram i videces da bas i ne radi ! Da, u pravu si, probao sam i pre nego što sam pročitao poruku. Ono sam kucao iz glave. Treba ipak opaliti findfirst kad se pređe u novi direktorijum. Peđa.
pascal.800 ognjen,
)-> Procedure StoreCursor; assembler; ~~~~~~~~~ Moze li se to uradiri malo vise "pascalski"?
pascal.801 markom,
*** Moze li se to uradiri malo vise "pascalski"? Mnogo oćeš, nije ovo C :( Marko
pascal.802 ilazarevic,
> Moze li se to uradiri malo vise "pascalski"? Može isto to, samo u paskal sintaksi: uses dos; var cursorstatus:word; regs:registers; procedure StoreCursor; begin regs.ah:=3; intr($10, regs); cursorstatus:=regs.cx; end; i tako dalje, za sve ostale procedure.
pascal.803 dzakic,
> )-> Procedure StoreCursor; assembler; > Moze li se to uraditi malo vise "pascalski"? Može, ali bi opet išlo sa deklarisanjem Registers strukture koju bismo napunili određenim vrednostima za registre (r.ax, r.cx...) i na kraju pozvali interapt sa Intr($10). Ako već koristiš TP 6.0 ili veći, nema razloga da procedura ne bude 'assembler' - kraći je kod. Dakle, ako baš hoćeš: uses dos; var cursorstatus:word; Procedure HideCursor; var r:registers; begin r.ah:=3; Intr($10,r); cursorstatus:=r.cx; end; itd. Nešto mi i ne izgleda mnogo paskalskije :)
pascal.804 almi,
Znam ali to je čisto onako parametar tako da se to da izmeniti u source-u Pozdrav Almi
pascal.805 paki,
­> Moze li se to uradiri malo vise "pascalski"? Teško, ali šta smeta ovome? Em je brzo, em je kratko :)
pascal.806 tij.ma.ta.,
cvcxvxc xcvzxcv
pascal.807 ognjen,
)-> Tesko, ali sta smeta ovome? Em je brzo, em je kratko :) Fali sto nista ne kapiram... :(
pascal.808 markom,
*** Fali sto nista ne kapiram... :( Za početak je odlično! Zamisli da sve znaš, onda nije zanimljivo, zar ne :)) Marko
pascal.809 peca.st,
!-> Fali sto nista ne kapiram... :( Uzmi Norton Guide za asembler i malo čeprkaj tamo po DOS funkcijama, interaptima i BIOS pozivima, ako baš želiš da ukapiraš. Možeš usput i da naučiš nešto od asemblera. :) Peđa.
pascal.810 dzakic,
> )-> Tesko, ali sta smeta ovome? Em je brzo, em je kratko :) > Fali sto nista ne kapiram... :( Što ne kažeš da hoćeš da ukapiraš :). U BIOSu postoji potprogram koji je zadužen za promenu veličine kursora. Poziva se tako što se registri napune određenim vrednostima i onda pozove int 10h. > 01H set cursor size/shape (text modes). > Input: AH = 01H > CH = start line (0-1fH; 20H=no cursor) > CL = end line (0-1fH) Sad, veličina kursora se zadaje ovako: ˙˙˙˙˙˙˙˙˙˙˙˙ ˙˙˙˙˙˙˙˙˙˙˙˙ ˙˙˙˙˙˙˙˙˙˙˙˙ ˙˙˙˙˙˙˙˙˙˙˙˙ ˙˙˙˙˙˙˙˙˙˙˙˙ ˙˙˙˙˙˙˙˙˙˙˙˙ xxxxxxxxxxxx <-- End line xxxxxxxxxxxx xxxxxxxxxxxx <-- Start line Da bi se kursor isključio, postaviš da je start line 'iznad' end line i na taj način kursor postaje nevidljiv. U techelpu se preporučuje da start linija bude 32. Kako izgled kursora zavisi od video karte (na cga je visina znaka 8, na ega 14, na vga 16...) uradili smo čuvanje originalnog izgleda u promenljivoj cursorstatus, da bismo kad nam treba ponovno paljenje vratili vrednosti kako su bile. Dakle, iz paskala direkno ne može. Pozivanje biosa je neizbežno. A mislim da je najbezbolnije pomoću 'procedure assembler'.
pascal.811 paki,
­> )-> Tesko, ali sta smeta ovome? Em je brzo, em je kratko :) ­> ­> Fali sto nista ne kapiram... :( Äta da kapiraä? Stvar radi, i . :)
pascal.812 markom,
*** Äta da kapiraä? Stvar radi, i . :) Paki, set kode :)) Marko
pascal.813 ognjen,
)-> Uzmi Norton Guide za asembler i malo ceprkaj tamo po . . . Gde je? :)
pascal.814 ognjen,
)-> Sto ne kazes da hoces da ukapiras :). U BIOSu postoji )-> potprogram koji je zaduzen za promenu velicine kursora. )-> Poziva se tako sto se registri napune odredenim vrednostima i )-> onda pozove int 10h. Ma nije problem ukapiati kad bih ja znao nesto o memoriji & biosu & adresama... Ali, posto o tome definitvno nemam veze, ne ostaje mi nista drugo, nego da radim "suvi" pascal. Imate li neke predloge iz literature o memoriji?
pascal.815 peca.st,
!-> Gde je? :) Pa... moraćeš da ga nabaviš sa strane, Nortonove stvari nisu PD. Peđa.
pascal.816 peca.st,
!-> Imate li neke predloge iz literature o memoriji? Konkretno za ovo ti treba znanje o interaptima više nego o memoriji. E, sad, neko ko ume lepo da objašnjava (a to je Zak ;) bi ukratko mogao u par rečenica da ti kaže šta su interapti, to nije nešto specijalno teško. Peđa.
pascal.817 lovro,
­=- Dakle, iz paskala direkno ne moze. Pozivanje biosa je ­=- neizbezno. A mislim da je najbezbolnije pomocu 'procedure Mislim da moze direktnim pisanjem u memoriju, negde na 0:4xx
pascal.818 drpr,
Haj, potreban mi je algoritam za rešavanje dseterminanti bilo kog reda, recimo <10 pa molim dobru dušu da znanje podeli samnom :). cope
pascal.819 paki,
­> Paki, set kode :)) Sorry :( Ovaj put sam ubacio '..set code custom2' u autoexec. Nadam se da više neće biti ovakvih brljotina.
pascal.820 ilazarevic,
> Ma nije problem ukapiati kad bih ja znao nesto o memoriji & > biosu & adresama... Ali, posto o tome definitvno nemam veze, ne Uzmi lepo DOS Referens, ili Interapt list, i prelistaj. Ima mnogo lepih i korisnih stvari.
pascal.821 nick,
Moj mladjani komsija me je zamolio da ovde zamolim vas, poznavaoce pascala da mu na nekom elementarnom primeru objasnite upotrebu pointera. Najbolje bi bilo isti problem resen sa i bez upotrebe pointera. hvala.
pascal.822 ognjen,
)-> E, sad, neko ko ume lepo da objasnjava (a to je Zak ;) bi )-> ukratko mogao u par recenica da ti kaze sta su interapti Cekam(o?) objasnjenje... :)
pascal.823 ognjen,
)-> Uzmi lepo DOS Referens, ili Interapt list, i prelistaj. Ima )-> mnogo lepih i korisnih stvari. To su, pretpostavljam knjige. :) Imas li ih?
pascal.824 markom,
*** primeru objasnite upotrebu pointera. Najbolje bi bilo *** isti problem resen sa i bez upotrebe pointera. *** hvala. Pamćenje sadržaja ekrana: ------------------------- program SaPointerom; uses Crt; type VMEM = array [1..4000] of Byte; var x, y : Byte; VM, ZE : ^VMEM; begin VM := Ptr($B000, $8000); { Za hercules promeniti $8000 u $0000 } New(ZE); x := WhereX; y := WhereY; ZE^ := VM^; ReadLn; ClrScr; ReadLn; VM^ := ZE^; GoToXY(x, y); Dispose (ZE); end. program BezPointera; uses Crt; var i : Word; x, y : Byte; VM : array [1..4000] of Byte absolute $B000:$8000;{ Opet isto ono za herca } ZE : array [1..4000] of Byte; begin for i := 1 to 4000 do ZE[i] := VM[i]; x := WhereX; y := WhereY; ReadLn; ClrScr; ReadLn; for i := 1 to 4000 do VM[i] := ZE[i]; GoToXY(x, y); end. Ovo radi samo u 80*25 tekst modu. Moguće je da se potkrala neka greškica jerbo sam ovo kucao onako napamet, bez probe O:) Marko
pascal.825 peca.st,
!-> To su, pretpostavljam knjige. :) Imas li ih? To nisu knjige, ili bar nisu u papirnom obliku. :) Mislim da ih ima na Sezamu, ali je to u stvari samo spisak koji služi onima koji znaju šta su interapti i tako te stvari... Peđa.
pascal.826 pedjak,
> potreban mi je algoritam za rešavanje dseterminanti bilo kog reda, > recimo <10 pa molim dobru dušu da znanje podeli samnom :). Gausov metod ?
pascal.827 ilazarevic,
> To su, pretpostavljam knjige. :) Imas li ih? Ne, to su DOC-ovi kojih ima i na Sezamu. U njima je popisano šta koji interapt sve radi, po funkcijama, koje vrednosti vraća itd. Sve sistematizovano i pregledno, dušu dalo za slučajno pretraživanje jednom dnevno :)
pascal.828 eagle,
> potreban mi je algoritam za rešavanje dseterminanti bilo kog > reda, recimo <10 pa molim dobru dušu da znanje podeli samnom Može recimo ovako - matrica se svede Gausovim postupkom na trougaonu, i onda se determinanta dobije množenjem elemenata sa glavne dijagonale. det.zip
pascal.829 drpr,
>Može ovako recimo - .... Gausov metod To je ok, samo mi izgleda nekako neprecizno za cele brojeve koliko se ja sećam Gausovog metoda :( cope
pascal.830 postmast,
Path: fon!buefhp.etf.uni-bg.yu!td00491d From: td00491d@buefhp.etf.uni-bg.yu (Terzic Dragan) Subject: Re: pascal Organization: Fakultet Organizacionih Nauka, Beograd Date: Tue, 15 Mar 1994 14:38:16 GMT Message-ID: <CMpnBt.2H5@fon> X-Newsreader: TIN [version 1.2 PL1] References: <sezam$pascal:001.0095.4279@sezam> <sezam$pascal:01.095.4282@sezam> Sender: news@fon (News) Imam kod kuce gotov algoritam, kad sledeci put sednem za hp. poslacu ga. (najkasnije do petka) Terza
pascal.831 eagle,
> To je ok, samo mi izgleda nekako neprecizno za cele brojeve > koliko se ja sećam Gausovog metoda :( Ne verujem da postoji neki efikasan algoritam bez deljenja, pa bi tip morao biti real. Ako imaš sve cele brojeve, onda na kraju uradiš round i tako dobiješ precizno rešenje, jer ako je mat. celobrojna, i determinanta mora biti ceo broj.
pascal.832 ognjen,
Kako da sredim ovo: function myfirst (ogi: real/integer/loingint): string ~~~~~~~~~~~~~~~~~~~~~ Daklem, kako da sredim da moze da se zada i realan broj, i ma koji drugo... Ili, jos konkretnije, kako da napravim STR funkciju (ne proceduru, ona je ugradjena!).
pascal.833 drpr,
-> Ne verujem da postoji neki efikasan algoritam bez deljenja, -> pa bi tip morao biti real. Ako imaš sve cele brojeve, onda Problem nastaje ako je matrica tipa ineger (word) tada deljenje postaje problem, ali čekam odgovor kolege sa fona pa nastupam sa daljim rešavanjem malo izmenjenog Gausa (tako što tražim nzs itd...). cope
pascal.834 drpr,
Jedva čekam da vidim algoritam i hvala u napred. cope
pascal.835 bole,
Hi! Jel zna neko kako mogu da pustam semplove (.SAM ili .VOC ili .WAW) na sb-u, spikeru? prednost sb! :) ajde cao
pascal.836 vitez.koja,
#=> Ne verujem da postoji neki efikasan algoritam bez deljenja, #=> pa bi tip morao biti real. Ako imaš sve cele brojeve, onda Pa na primer razvoj determinante po nekom redu (koloni): Od determinante n x n dobiješ n determinanti (n-1) x (n-1) i tako dalje dok ne dodješ do 3x3 (dalje znaš). Rekurzija se nameće, ali problem je što ovo ne obećava previše brzine :). sk
pascal.837 dvesic,
>> function myfirst (ogi: real/integer/loingint): string >> ~~~~~~~~~~~~~~~~~~~~~ Jedno od resenja je da konstruises RECORD promenljivog sadrzaja koji ce cuvati tip i vrednost promenljive, pa da njega prosledis funkciji, odnosno pointer na njega.
pascal.838 mcule,
>> ali cekam odgovor kolege sa fona pa nastupam ^^^^ Au brate, zaboravi.... Zaboravi... ;).
pascal.839 pedjak,
> function myfirst (ogi: real/integer/loingint): string > Daklem, kako da sredim da moze da se zada i realan broj, i ma > koji drugo... function myfirst(var ogi ):string;
pascal.840 niklaus,
Subject: Re: Matrica know-how (:> Pa na primer razvoj determinante po nekom redu (koloni): Od (:> determinante n x n dobiješ n determinanti (n-1) x (n-1) i tako dalje (:> dok ne dodješ do 3x3 (dalje znaš). Rekurzija se nameće, ali problem (:> je što ovo ne obećava previše brzine :). Ovaj Laplasov razvoj se čini boljom metodom, s obzirom da nema deljenja, a samim tim i gubitka preciznosti, za kojom je neko kukao... (: Sean :)
pascal.841 dzakic,
> )-> E, sad, neko ko ume lepo da objasnjava (a to je Zak ;) bi > )-> ukratko mogao u par recenica da ti kaze sta su interapti > > Cekam(o?) objasnjenje... :) Uh. ;) Ja ti poslah na mail nešto što ti može pomoći. Lakše bi bilo da sâm malo pogledaš o tome pa da onda pitaš šta te buni. Sad, kad ste me već prozvali, da i kažem par rečenica (a ostali samo posmatraju i čekaju da se ja vratim u bg :( ;). Osnovno je da razumeš da je 'rutina za obradu interapta' najobičniji potprogram - niz instrukcija koji se završava naredbom IRET (interrupt return). Prekida ima 256 i namena im je različita, nisu svi iskorišćeni. Treba razlikovati dve vrste - hardverske i softverske interapte. Softverske koristimo baš kao potprograme (koje obezbeđuju bios ili dos) tako što ih pozivamo naredbom INT <broj>. Pre poziva potprograma, u određene registre stavimo broj funkcije koju želimo da izvršimo i eventualno dodatne informacije. Potprogram po završetku rada vrati u određenim registrima rezultate (ukoliko ih ima). Int 10h recimo služi za rad sa ekranom (bios), dok je int 21h rezervisan za dos i sve njegove moguće i nemoguće funkcije za rad sa datotekama i sl. Dokumentaciju o tome nađi u nekoj od arhiva iz \ibmpc\info direktorijuma. Hardverski interapt je potprogram koji poziva sâm računar u određenim situacijama. Tada se sa programa koji se trenutno izvršava skače na rutinu za obradu prekida, i po obavjenom poslu vraća nazad. Najinteresantniji su interapti broj 8 i 9. Int 8 se izvrši automatski 18.2 puta u sekundi (bios samo inkrementira brojač vremena i proverava treba li ugasiti motor flopija). Int 9 se poziva prilikom svakog pritiska i otpuštanja tastera i generiše ga tastatura (tada se na portu 60h nalazi scan kod tastera koji je izazvao interapt). Adresa na kojoj se nalazi potprogram za obradu prekida nije fiksna. Upisana je u tabelu na samom početku memorijske mape, pa se tako može podmetnuti neki drugi koji obavlja neke dodatne poslove (tsr programi). Nije mnogo, ali za početno snalaženje nadam se dosta.
pascal.842 peca.st,
!-> Daklem, kako da sredim da moze da se zada i realan broj, i ma !-> koji drugo... Stavi samo realan, on pokriva i celobrojne, naravno. Peđa.
pascal.843 todorp,
Subject: pocetnicko pitanje :) Hi! Ucim paskal silom prilike (ucimo na fax-u) pa sam se zaglavio. Elem kako da uradim nesto kao ovo u C-u: int *temp; temp=malloc(1000); temp[10]=20; e sad ja probao: var temp:^integer; begin new(temp); temp^[10]:=20; i nema sanse da ovo proguta dispose(temp); end. Pozdrav od Todora
pascal.844 eagle,
> Ovaj Laplasov razvoj se čini boljom metodom, s obzirom da nema > deljenja, a samim tim i gubitka preciznosti, za kojom je neko > kukao... Ali je spor (reda n!).
pascal.845 eagle,
> function myfirst (ogi: real/integer/loingint): string > Daklem, kako da sredim da moze da se zada i realan broj, i ma > koji drugo... Nikako. Možeš da ispetljaš nešto kao (var ogi; code: byte), gde code označava tip koji prenosiš, ali je daleko jednostavnije da napraviš tri različite funkcije.
pascal.846 eagle,
> Ucim paskal silom prilike (ucimo na fax-u) pa sam se zaglavio. > Elem kako da uradim nesto kao ovo u C-u: > int *temp; > temp=malloc(1000); > temp[10]=20; type max = array[0..maxint-1] of integer; var temp: ^max; begin getmem(temp, 1000); temp^[10] := 20; freemem(temp, 1000); end.
pascal.847 niklaus,
(:> > Ovaj Laplasov razvoj se čini boljom metodom, s obzirom da nema (:> > deljenja, a samim tim i gubitka preciznosti, za kojom je neko (:> > kukao... (:> (:> Ali je spor (reda n!). Ax, pa ne možemo dobiti i jare i pare... (: Sean :)
pascal.848 pedjak,
> e sad ja probao: > new(temp); > tempžŠ10Ć:=20; i nema sanse da ovo proguta Probaj ovako: type niz=arrayŠ1..10000Ć of integer; pniz=žniz; var temp:pniz; getmem(temp,broj_clanova*sizeof(integer)); tempžŠ10Ć:=20; GetMem je ekvivalentno sa Malloc u Cu.
pascal.849 postmast,
From: td00491d@buefhp.etf.uni-bg.yu (Terzic Dragan) Subject: Re: pascal Date: Fri, 18 Mar 1994 09:28:06 GMT Milos Dermanovic (eagle@sezam.UUCP) wrote: : > To je ok, samo mi izgleda nekako neprecizno za cele brojeve : > koliko se ja secam Gausovog metoda :( : Ne verujem da postoji neki efikasan algoritam bez deljenja, : pa bi tip morao biti real. Ako imas sve cele brojeve, onda : na kraju uradis round i tako dobijes precizno resenje, jer : ako je mat. celobrojna, i determinanta mora biti ceo broj. Postoji sasvim prost algoritam bez deljenja, cak mislim da smo ga radili u srednjoj skoli,(ako ne i u osnovnoj) Ako je matrica reda n, prvih n-1 kolona prepises na kraj matrice, zatim podjes od clana a(1,1) i pomnozis ga sa svima iz njegove dijagonale, to ponovis sa a(1,2) i tako do a(a,n) i sve ih saberes. Onda podjes od clana a(1,n+n-1) i njegov proizvod sa clanovima njegove dijagonale oduzmes od zbira, pa uzmes a(1,2n-2) do a(1,n) na primeru matrice 3*3 to izgleda ovako: A B C!A B D E F!D E G H I!G H det=AEI+BFG+CDH-BDI-AFH-CEG Nadam se da sam pomogao, Terza
pascal.850 eagle,
> Ako je matrica reda n, prvih n-1 kolona prepises na kraj > matrice, zatim podjes od clana a(1,1) i pomnozis ga sa svima iz > njegove dijagonale, to ponovis sa a(1,2) i tako do a(a,n) i sve > ih saberes. Ovaj se postupak može primeniti samo na determinante trećeg reda.
pascal.851 isekulovic,
>> function myfirst(var ogi ):string; To je i meni prvo palo na pamet, ali kako iz ogi-a dobiti string? Str neće da odradi posao.
pascal.852 todorp,
> type max = array[0..maxint-1] of integer; Ovde je bio problem. Thanx svima na pomoci.
pascal.853 ognjen,
Moze li se unutar funkcije (koja vraca string) uraditi: funkcija := concat (funkcija, 'abc') ???? I, kako?
pascal.854 dejanr,
>> Moze li se unutar funkcije (koja vraca string) uraditi: >> funkcija := concat (funkcija, 'abc') ???? I, kako? Ne, ako je funkcija ime te funkcije. To bi značilo rekurzivan poziv. No uradi zaobilazno: var rez: string; ... rez:=concat(rez,'abc'); ... funkcija:=rez
pascal.855 ognjen,
)-> Stavi samo realan, on pokriva i celobrojne, naravno. Da, ali onda pretvoreno u string izgleda: '12.0000000000000E00' a ja bih hteo da za celobrojne bude: '12'. BTW, pedjak je "nasao" resenje (var ogi).
pascal.856 postmast,
From: td00491d@buefhp.etf.uni-bg.yu (Terzic Dragan) Subject: cancel <CMusyv.M4M@fon> Date: Sat, 19 Mar 1994 11:06:36 GMT Article cancelled from within tin [v1.2 PL1]
pascal.857 postmast,
From: td00491d@buefhp.etf.uni-bg.yu (Terzic Dragan) Subject: Re: pascal Date: Sat, 19 Mar 1994 11:18:57 GMT : >Moze ovako recimo - .... Gausov metod : To je ok, samo mi izgleda nekako neprecizno za cele brojeve koliko se : ja secam Gausovog metoda :( Juce sam poslao neki algoritam, ali koji je tacan samo za n<4. Ako bas hoces da radis sa celim brojevima, ( I bez deljenja ), zasto ne pokusas sa rekurzivnom procedurom, kao sto bi radio i rucno. Znas ono, razvoj po koloni ili po vrsti. Algoritam je reda slozenosti n! kao i gausov postupak, samo sto ga rekurzija usporava. Ali ako simuliras rekurziju sa stekom, dobices algoritam za cele brojeve koji je mozda brzi od gausovog postupka. ( jer ne koristi real ) Terzic Dragan, ETF
pascal.858 vega,
*> Da, ali onda pretvoreno u string izgleda: *> *> '12.0000000000000E00' *> *> a ja bih hteo da za celobrojne bude: *> *> '12'. BTW, pedjak je "nasao" resenje (var ogi). Pa probaj: str(onaj_broj:0:3, onaj_string); To ti je za tri decimale i daje kompromisno resenje: "12.000" Pozdrav, *#VOJAS#*
pascal.859 eagle,
> Znas ono, razvoj po koloni ili po vrsti. > Algoritam je reda slozenosti n! kao i gausov postupak, samo sto Gausov postupak je inače reda n na treći, a onaj algoritam za determinante preko Gausa je nešto brži, pošto se ne bavi elementima iznad glavne dijagonale. U svakom slučaju, razlika je dirastična.
pascal.860 ognjen,
)-> No uradi zaobilazno: )-> var rez: string; )-> ... )-> funkcija:=rez Pa, znam to, ali onda definisem nepotrebnu prmenjljivu rez, sto, zauzima memoriju...
pascal.861 dejanr,
>> > var rez: string; >> > ... >> > funkcija:=rez >> >> Pa, znam to, ali onda definisem nepotrebnu prmenjljivu rez, >> sto, zauzima memoriju... To je lokalna promenljiva u proceduri, dakle alocira se valjda na steku, pa po izlasku iz procedure "umre". Dakle, prostor ne troši, ali troši vreme. No, obzirom da nema drugog načina, i taj je dobar :)
pascal.862 mmitrovic,
Ů█▀█Ţ-> Datum+vrijeme kreiranja volumeta. Po jedan word, tj standardni DOS Ů█▀█Ţ-> format za iste. Izuzetno naivan način zaštite, ako mene neko pita:). Ů█▀█Ţ Ů█▀█Ţ Da demantujem:). Ovo je slučaj na mojim disk particijama, ali ne i na Ů█▀█Ţ par disketa koje sam probao. Izgleda da je bitan i program kojim se to Ů█▀█Ţ radi, diskove sam čini mi se formatirao sa DOS 5.0, a sada imam 6.0. Ů█▀█Ţ Kako izgleda, nema DOS poziva koji generiše taj broj (?) već to radi Ů█▀█Ţ program za formatiranje. Ů█▀█Ţ-- Izvinjavamo se na ovako okasnelom odgovoru, ali bolje ikad no nikad. Serial Number Diska se ne koristi za zaštitu, niti je za to i predviđen (sad što ga neki koriste za zaštitu to je druga priča). žak ga ni DOS ne koristi, jer je predvidjen kao osnova za multitasking OSove kao što je Win, kojima služi za proveru da li je prava disketa u flopyu. Primer: jedan task krene da čita flopy sa Ser.Nm. 1234-5678 i biva privremeno suspendovan i za to vreme drugi task traži svoju disketu sa drugim ser. brojem. Kad on završi sa disketom (pošto ne mogu oba taska u isto vreme da čitaju Win drži prvi task), Win pre nego što pusti prvi task proveri da li je disketa u drajvu sa brojem 1234-5678 i ako nije traži da se ubaci i tek onda pušta prvi task. Ovo mi se jednom dogodilo samo se ne sećam kojim povodom. _mmix_
pascal.863 dragisha,
-> Izvinjavamo se na ovako okasnelom odgovoru, ali bolje ikad no -> nikad. Serial Number Diska se ne koristi za zaštitu, niti je za Dobro što si okasni, ali što meni odgovaraš?:) -> priča). žak ga ni DOS ne koristi, jer je predvidjen kao osnova za -> multitasking OSove kao što je Win, kojima služi za proveru da li Ali on postoji i na raspolaganju je raznim keš programima i inima. To što ga sam DOS ne koristi je samo još jedna od rupa u istom. -- [MacIntosh: Computer With Training Wheels You Can't Remove]
pascal.864 dejanr,
Evo jedne (odnosno dve :) zanimljive poruke sa BIX-a, vezane za BP 7.0 i njegovu upotrebnu vrednost na raznim platformama i za razne tipove projekata. ========== pascal/turbo #4683, from j_mcarthur, 3817 chars, Tue Mar 8 22:30:33 1994 Comment to 4682. Comment(s). ---------- I never owned a copy of Turbo Pascal until version 6.0. Even after I bought 6.0, I never used it. I much prefered Modula-2 and used it instead. Around the time 7.0 was announced, the data used by one application had grown and caused me to slam into the 640K limit hard. The application was a port of Tangle from WEB to Topspeed Pascal. I could not get the company I worked for to spring for the dos extender for Topspeed, so I bought the upgrade to 7.0 since it came with a dos extender. After seeing how easy it was to get a moderately sized application to work in protected mode, I was sold. I started work on a moderately nasty project that had to run under Windows. Using Object Vision I had something up and running quite quickly. Then we ran into a brick wall with Windows. Not really Windows but an application we needed to interface to that ran under Windows. So we backed up and changed the project to Dos. Moving from Object Windows to Turbo Vision was not to terribly difficult. But then that may have been because I am used to encapuslating my user interface into a single module/unit. I quickly put together a large application using Turbo Vision and the Paradox Engine. It works quite well. We had over 20 people at a time using it on our network doing online updating. Now for the problems. The dos extender in the first release will not work with Btrieve. Supposedly there is a fix for this, but I have not bothered to get it. The nastier problem is how the dos extender grabs all the available memory. I am not sure of all the details. We have four versions of TeX that run on the PC. The versions are small (only uses conventional memory, it needs about 3-400K), big (only uses conventional, ems and xms), 386 specific using VCMI (I think that is the name) and 386 specific using DPMI. The small version of TeX works like a champ when called from a Borland Pascal program. The big version runs very very slowly. This has something to do with the way BP 7.0's dos extender grabs all the xms memory. If a file takes 20 seconds to process using big TeX from the DOS command line, it will probably take 5 minutes to process the same program from a BP Protected mode program. Both the VCMI and the DPMI programs crash. They will not work from a BP protected mode program. In many ways it is easier for me to program for Windows. There is no need for a dos extender, that is part of Windows. So I can call DPMI programs without the problems I have under DOS. I am currently working on yet another large project. This one is still in the preliminary stages. But I need to deliver both a Dos and Windows based solution. I am currently planning on using BP to do this. BUT, things change. There is a possibility I will have to do a project for OS/2. If that is the case I will get authorization to buy about $3,000 worth of tools. Those will include a new Modula-2 compiler that runs under Dos, OS/2, Windows, and Windows NT. I will also get a dos extender from a third party; plus some other libraries. With that tool set, I would again leave Pascal. All in all, BP 7.0 is a nice package. It is well worth its $500 price tag. It is not perfect. It does have some limitations (despite the Borland Ads). On the other hand, if I was not concerned about linking in 3rd party tools like the Paradox Engine. There is a very nice product called OM2. This is a full Modula-2 and Oberon-2 compiler. It runs as a protected mode application under Dos, Windows, or OS/2. It is truely flat model. This means that records, objects, and arrays are no longer limited to 64K. Nor are programs limited to 640K. Unfortunately there is no way to link in any external libraries, at this time. Jeffrey M\kern-.05em\raise.5ex\hbox{\b c}\kern-.05emArthur a.k.a. Jeffrey McArthur ========== pascal/turbo #4684, from ccalvert, 245 chars, Wed Mar 9 14:35:08 1994 Comment to 4683. ---------- On Page 11 of the User's Guide there is an explanation of how to limit the amount of protected mode memory that RTM will use: SET DPMIEM=MAXMEM 2000 where 2000 is the amount of memory in kbytes you want the run time manager to access.
pascal.865 postmast,
From: news@fon (News) Subject: pascal Date: Mon, 4 Apr 1994 13:31:59 GMT Hi Da li neko zna da DPMI program napravljen sa BP 7.0 pukne (General Protection Fault) svaki put kada probate da pristupite pointeru koji je nil. Da pojasnim: type PTip = ^TTip; TTip = record neki_podaci:...; next, prev: PTip end; var a: PTip; temp: PTip; begin new(a); a^.neki_podaci:=... a^.prev:=nil; a^.next:=nil; ... temp:=a^.prev <-- Ovde pukne mora da se uradi : if a^.prev=nil then temp:=nil else temp:=a^.prev; !!!!! Nisam probao kada je temp ne tipski pointer. Srdjan
pascal.866 dyura,
Imam problem.Preneo sam sa sezama TPU za rad sa dBase fajlovima ali kad sam raspakovao i hteo da startujem neki od prilozenih programa uvek mi je bio vracen [error 72 unit file format error TBase.TPU].Sta da radim? Napominjem sve se desava u Borlandu v.7.0. dyura
pascal.867 mmitrovic,
Ů█▀█Ţ error 72 unit file format error TBase.TPU Nabavi TPU za BP 7.0, ili nabavi source pa prevedi, ili napiši svoj program u TP 6.0, ili jednostavno odustani od toga. Choice is all yours ;)
pascal.868 mmitrovic,
Otvorena je grupa TVision koja se bavi pisanjem proširenja za Turbo Vision. I to i za OOPascal i za C++. Zainteresovani nek se jave i nek pošalju neki programčić (što kraći, može i source) pisan u TVisionu (proširenja se preferiraju više od korišćenja postojećih objekata) pošto grupa nije za početnike.
pascal.869 omega,
Da li Borland Pascal 7.0 obuhvata Turbo Pascal 7.0? Tj. to bi znacilo da sa njim mogu da se pisu i dos i windows programi?
pascal.870 dejanr,
>> Da li Borland Pascal 7.0 obuhvata Turbo Pascal 7.0? Tj. to bi >> znacilo da sa njim mogu da se pisu i dos i windows programi? Mogu da se pišu i DOS i Windows programi, bez problema. DOS programi mogu da se pišu i "obično" i u DPMI režimu, kada imaju više memorije... ali je i dalje struktura ograničena na 64k, fuj :(
pascal.871 snemcev,
>> Otvorena je grupa TVision koja se bavi pisanjem proširenja za DVesic je k'o stvoren za vas. Pitanje je samo koliko ima slobodnog vremena na raspolaganju. Anyway, ako ovo čita, sam će se javiti.
pascal.872 pedjak,
> Da li Borland Pascal 7.0 obuhvata Turbo Pascal 7.0? Tj. to bi > znacilo da sa njim mogu da se pisu i dos i windows programi? Da.
pascal.873 omega,
Ţ Mogu da se pisu i DOS i Windows programi, bez problema. Da li to znaci: win programi se pisu u Borland Pascalu dos programi se pisu u Turbo Pascalu 7.0, a Turbo Pascal 7.0 je DEO Borland Pascala?
pascal.874 dejanr,
>> > Mogu da se pisu i DOS i Windows programi, bez problema. >> >> Da li to znaci: >> win programi se pisu u Borland Pascalu >> dos programi se pisu u Turbo Pascalu 7.0, >> a Turbo Pascal 7.0 je DEO Borland Pascala? Pa... ne baš. Windows programi se pišu u Borland Pascalu. DOS programi se takođe pišu u Borland Pascalu. Turbo Pascal je jeftinija verzija Borland Pascala koja ne obuhvata podršku za Windows, DPMI i neke druge stvari. U svakom slučaju, kada uzmeš BP7.0 imaš kompletan paket, sve što treba da bi pisao DOS, DOS+DPMI i Windows programe na paskalu.
pascal.875 omega,
Ţ Pa... ne bas. Windows programi se pisu u Borland Pascalu. DOS programi Ţ se takode pisu u Borland Pascalu. Turbo Pascal je jeftinija verzija I dos programi se pisu pod windowsom?
pascal.876 dejanr,
>> > Pa... ne bas. Windows programi se pisu u Borland Pascalu. DOS programi >> > se takode pisu u Borland Pascalu. Turbo Pascal je jeftinija verzija >> >> I dos programi se pisu pod windowsom? Mogu, ali ne moraju. Mogu i u DOS integrisanom okruženju. A mislim da ima i kompajler iz komandne linije.
pascal.877 dpriest...,
Ima li neko source za prikazivanje GIF-a ? ako nema moracu da izgubim par dana da ga oravim iz opisa GIF formata... POMAGAJTE JUNACI ! :(
pascal.878 dpriest...,
opet ja... treba mi isto kao i u prethodnoj poruci neki hint (citaj source) za prikazivanje TTF fontova help... P.S. iskljucivo za DOS! ne radim u AT 2 XT dev. kit. :)