pascal.1dpriest...,
Evo da ostavim prvu poruku u pascal temi, iako mozda i
nije za ovde... vise mu dodje za temu :treba mi...
daklem, treba mi parce source-a (moze i u C-u ili u ASM-u)
za prikazivanje GIF slicica na ekranu, kao i za prikazivanje
TTF fontova (iliti crtanje slova, ako vam je draze)...
ajde, znam da neko to ima... samo jos da ga ne mrzi da mi
javi... thanx in advance... DP...
pascal.3postmast,
From: jd53492d@buefhp.etf.uni-bg.yu (Dejan Jakovljevic)
Subject: Re: pascal
Date: Fri, 22 Apr 1994 15:16:58 GMT
<*> Dejan Pejcinovski (dpriest...@sezam.UUCP) wrote:
<*> : Ima li neko source za prikazivanje GIF-a ?
<*> : ako nema moracu da izgubim par dana da ga oravim iz
<*> : opisa GIF formata... POMAGAJTE JUNACI ! :(
mislim da na fon-u ima nesxto (mada nisam siguran...)
opis GIF-a je tamo....sigurno....
--
Jakovljevic Dejan, Sokobanja O:-) ////// yours (?),
(try me at osmeh.FON.Uni-Bg.YU as dex) ////// ..dex..
pascal.4dtadic,
-> #1, dpriest...>> daklem, treba mi parce source-a (moze i u C-u ili u ASM-u)
>> za prikazivanje GIF slicica na ekranu, kao i za prikazivanje
>> TTF fontova (iliti crtanje slova, ako vam je draze)...
C source za rad sa gifovima imaš u IBMPC\C direktorijumu:
giflib12 a01 113318 C source programa za rad sa GIF datotekama (#2/2)
giflib12 arj 114224 C source programa za rad sa GIF datotekama (#1/2)
Na FONu se može naći opis TTF fontova.
pascal.5isekulovic,
-> #1, dpriest...>> daklem, treba mi parce source-a (moze i u C-u ili u ASM-u)
>> za prikazivanje GIF slicica na ekranu, kao i za prikazivanje
Pogledaj pascal teme u starim pc.prog konferencijama, ima dva
unita. Mislim da su oba ega/vga only. Ima i za .pcx.
pascal.6omega,
-> #1, dpriest...Ţ daklem, treba mi parce source-a (moze i u C-u ili u ASM-u)
Ţ za prikazivanje GIF slicica na ekranu, kao i za prikazivanje
Pogledaj PC.PROG: 4.57 i 4.108. Prvi je samo tpu (ako se ne varam), a
drugi ima i source...
pascal.7kriss,
reply na 8.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 ! :(
Bilo je u nekoj staroj PC.PROG konferenciji, zakačeno uz poruku.
Protrči svaku što ima zakačen fajl, nema ih puno, a i naćićeš dosta
često traženih sorsova.
pascal.8dekiper,
-> #4, dtadicMože da se nađe opis TTF-a i na NewAge BBS-u pošto je FON nenormalno teško
dobiti (verovatno zbog OSMEH-a). Zovi 404639 posle 11
pascal.9ppekovic,
-> #8, dekiper>> Može da se nađe opis TTF-a i na NewAge BBS-u pošto je FON nenormalno teško
>> dobiti (verovatno zbog OSMEH-a). Zovi 404639 posle 11
FON jeste tesko dobiti, ali je nesto lakse dobiti MR Systems
BBS koji je mirror site FFS-a. Telefon je 4446246, 3 linije,
14400.
Paya
pascal.10markom,
-> #8, dekiper█*█ Može da se nađe opis TTF-a i na NewAge BBS-u pošto je FON nenormalno teško
█*█ dobiti (verovatno zbog OSMEH-a). Zovi 404639 posle 11
Do FON-a možeš doći i preko ETF-a ... :)
pascal.11jovca.car,
-> #10, markom/* Do FON-a možeš doći i preko ETF-a ... :)
Stići može. A dl?
pascal.12postmast,
From: dex@Osmeh.FON.Uni-BG.YU (Dejan Jakovljevic)
Subject: Re: pascal
Date: Mon, 25 Apr 1994 22:03:57 GMT
Marko Milivojevic (markom@sezam.UUCP) wrote:
.....
<*> Do FON-a mozes doci i preko ETF-a ... :)
pa, mozxe....samo sxto su nesxto sredili TELNET nalog na ORLU
pa visxe ne mozxe (osim preko hp-a.....).......
--
Jakovljevic Dejan, Sokobanja (poznato odmaraliste i leciliste...)
dex@osmeh.fon.uni-bg.yu
pascal.13crncic,
-> #8, dekiper│║█ Moze da se nade opis TTF-a i na NewAge BBS-u posto je FON nenormalno
│║█ tesko dobiti (verovatno zbog OSMEH-a). Zovi 404639 posle 11
Radi opet ?
pascal.14postmast,
From: ak@Osmeh.FON.Uni-BG.YU (Aleksandar Kircanski)
Subject: Re: pascal
Date: Tue, 26 Apr 1994 15:26:21 GMT
Slobodan Jovcic (jovca.car@sezam.UUCP) wrote:
: /* Do FON-a mozes doci i preko ETF-a ... :)
: Stici moze. A dl?
Pa moze i DL. URadis rlogin fon.fon /eight i eto..
--
Aky - Kircanski Aleksandar aky@tesla.mcs.com
pascal.15omega,
-> #10, markomŢ Do FON-a mozes doci i preko ETF-a ... :)
Kako?
pascal.16markom,
-> #11, jovca.car█*█ /* Do FON-a možeš doći i preko ETF-a ... :)
Ispravka, moglo je :((((
█*█ Stići može. A dl?
Meni je uspevalo, ali je CPS bio krajnje slab. Negde oko 200 :(
pascal.17markom,
-> #12, postmast█*█ pa, mozxe....samo sxto su nesxto sredili TELNET nalog na ORLU
█*█ pa visxe ne mozxe (osim preko hp-a.....).......
Da, na žalost, video sam :((
pascal.18markom,
-> #15, omega█*█ Kako?
Moglo je, ali više ne može.
Local> c telnet
(...)
Telnet> open fon.fon
(...)
login:
Sada je telnet ograničen samo na ETF-ove računare ...
pascal.19dpriest...,
-> #6, omega
>>> Ţ daklem, treba mi parce source-a (moze i u C-u ili u ASM-u)
>>> Ţ za prikazivanje GIF slicica na ekranu, kao i za prikazivanje
>>>
>>> Pogledaj PC.PROG: 4.57 i 4.108. Prvi je samo tpu (ako se ne
>>> varam), a drugi ima i source...
E, sourcevi koji su zakaceni uz te poruke su toliko *stari* da
sam se zaprepastio :) to je za neke prve verzije GIF-ova...
radjeni su za EGA kartice, nije veliki problem da se preprave,
ali su i prepravljeni prespori... zezao se celu noc i nesto kao
uradio, onda pokusao da napisem onu LZW brze ali mi nesto ne radi...
ili meni nesto fali u razmisljanju... verovatno iskustvo :) pa tek
onda procitao opis PCX formata! Da sam znao da je *TOLIKO PROSTO*
ne bi se uopste zezao s GIFovima... Bio sam pogresno informisan
da je PCX slozeniji od GIF-a :(. Coveku koji me je dezinformisao
je valjda jednostavnija LZW od brojanja ponavljanja... sta ces... ;)
(btw: sta fakultet moze da uradi od coveka... ccc... ;) )
Jbm li mu nnu nninu...
Xvala cBima 3a caBete... Digital Priest...
pascal.20omega,
-> #19, dpriest...Ţ>>> Pogledaj PC.PROG: 4.57 i 4.108. Prvi je samo tpu (ako se ne
Ţ>>> varam), a drugi ima i source...
Ţ
Ţ radjeni su za EGA kartice, nije veliki problem da se preprave,
Ţ ali su i prepravljeni prespori... zezao se celu noc i nesto kao
Prespori!? Cini mi se da jedan ima source u asm-u, i radi brzo
kao i VPIC! U prevodu: ne moz' biti brze...
pascal.21wizard,
-> #15, omega> Ţ Do FON-a mozes doci i preko ETF-a ... :)
>
> Kako?
25-ticom.
pascal.22boris,
-> #21, wizard>> Ţ Do FON-a mozes doci i preko ETF-a ... :)
>>
>> Kako?
>
> 25-ticom.
Bolje je 14-ticom, manje se pešači :)))
pascal.23omega,
Stavljanjem uses crt, pascal program osudjujemo da NE radi sa extended
text modovima (npr. 132x24, 132x44...)...Da li neko zna kako da se ova
prepreka savlada? Pazite, ovo ne vazi za modove u kojima ima 80 kolona -
oni rade bez problema, medjutim, kad je aktivan mod recimo 132x44, tp ga
automatski prebaci u 80x25 :(. Da li je jedino resenje pisanje sopstvenog
CRT.TPU?
pascal.25pedjak,
-> #23, omega U vezi promene tekst moda... Možda lupam, ali da li si probao
DirectVideo := False ?
pascal.26omega,
-> #25, pedjakŢ U vezi promene tekst moda... Mozda lupam, ali da li si probao
Ţ DirectVideo := False ?
Jesam...Ne vredi...Stos je u tome sto crt.tpu izgleda nekako ovako:
unit crt;
************* E ovde je neki deo koji prebacuje video mod :((
end.
pascal.27pedjak,
-> #26, omega> Jesam...Ne vredi...Stos je u tome sto crt.tpu izgleda nekako ovako:
E, onda ti nema druge nego da praviš svoje rutine za ispis...
pascal.28vpudar,
Primetio sam čudan bag kod Turbo Pascal-a 7.0, vezan za Crt unit i
Readln naredbu:
uses crt;
var s: string;
begin
clrscr;
write('Unesite bilo sta: ');
readln(s);
writeln('Napisali ste: ', s);
end.
"Brlja" komanda Readln, ne ispisuje prvi karakter tamo gde treba!?!
Probajte i vi.
pascal.29markom,
-> #28, vpudar*** Probajte i vi.
Radi savršeno ...
pascal.30mmitrovic,
-> #27, pedjakŮ█▀█Ţ> Jesam...Ne vredi...Stos je u tome sto crt.tpu izgleda nekako ovako:
Ů█▀█Ţ E, onda ti nema druge nego da praviš svoje rutine za ispis...
Ne mora.
Kad se startuje program sa CRT unitom, CRT zapamti mod u kome je
u LastMode promenljivoj. Samo treba da se pozove TextMode(LastMode) i
rezulucija će se vratiti na početnu.
pascal.31mmitrovic,
-> #28, vpudarŮ█▀█Ţ "Brlja" komanda Readln, ne ispisuje prvi karakter tamo gde treba!?!
Ů█▀█Ţ Probajte i vi.
Probao i radi. I to i na Turbo i na Borland pascalu i u real i
u protected modu. Mora da je nešto do tebe.
Koji su ti default switchevi?
pascal.32omega,
-> #30, mmitrovicŢ Ů█▀█Ţ E, onda ti nema druge nego da pravis svoje rutine za ispis...
Ţ
Ţ Ne mora.
Ţ
Ţ Kad se startuje program sa CRT unitom, CRT zapamti mod u kome je
Ţ u LastMode promenljivoj. Samo treba da se pozove TextMode(LastMode) i
Ţ rezulucija ce se vratiti na pocetnu.
Kamo srece da je to tako :( Da objasnim jos jednom...Radimo recimo u modu
132x25. Startujemo program koji ima "uses crt" i CRT PRVO inicijalizuje 80x25,
pa u LastMode stavi taj mod (znaci stavi 80x25, a NE 132x25) :(, pa nikakvo
textmode(lastmode) ne moze da nam pomogne :(
pascal.34eagle,
-> #32, omega> Kamo srece da je to tako :( Da objasnim jos jednom...Radimo recimo u modu
> 132x25. Startujemo program koji ima "uses crt" i CRT PRVO inicijalizuje
> 80x25, pa u LastMode stavi taj mod (znaci stavi 80x25, a NE 132x25) :(,
> pa nikakvo textmode(lastmode) ne moze da nam pomogne :(
Ovo možeš rešiti tako što ćeš pre CRT-a pokupiti aktivan mod.
Napravi se jedan mali unit koji to radi, i stavi se u uses pre
CRT-a:
unit Last;
interface
var LastMode: byte;
implementation
begin
LastMode := memŠ$40:$49Ć;
end.
program:
uses Last, CRT;
begin
asm
mov ah, 0
mov al, Last.LastMode
int 10h
end;
...
end.
Naravno, TextMode neće dozvoliti postavljanje moda sa kojim
CRT ne ume da radi, pa se mora direktno.
pascal.35omega,
-> #34, eagleŢ Ovo mozes resiti tako sto ces pre CRT-a pokupiti aktivan mod.
Ţ Napravi se jedan mali unit koji to radi, i stavi se u uses pre
Ţ CRT-a:
Svaka cast na ideji. Probao sam i radi! Hvala...
pascal.36saricl,
Dali neko može da baci ovde rutinu koja radi sledeće:
Potrebno je da po njenom startovanju
preuzima interapt, odnosno po zahtevu za interapt
startuje jednu drugu rutinu x.y nakon završavanja
posla rutine x.y vraća sve u pocetno stanje.
E sad sve to treba da radi u realnom vremenu.
Ako neko nema gotovu rutinu nek mi bar kaže zašto
mi posle aktiviranja rutine za prekid zablokira
uređaj ciji je prekid korišten.
Unapred hvala.
pascal.43djelovic,
Prethodnih šest poruka stiglih preko Beointerneta su sadržale kod PCX
unita, a pošto su bile previše velike ja sam zapakovao u datoteku prikačenu
ovde i onda obrisao.
Dakle:
Subject: Yu.prog.pascal 1/6
Date: Mon, 09 May 1994 22:04:00
BS> Ostaje mi samo da probam. Mada, ja sam se nadao da moze sve iz paskala i
BS> bez ASM (kojeg, usput receno, ne znam). No ipak, hvala.
Izvini, zadnji put sam zaboravio da ti possaljem PCX.TPU...
Ovo cce ti pomocci...
unit PCX;
...
pcxtpu.zippascal.44dzakic,
-> #36, saricl> Ako neko nema gotovu rutinu nek mi bar kaže zašto
> mi posle aktiviranja rutine za prekid zablokira
> uređaj ciji je prekid korišten.
Možda bi bilo lakše da si napisao o kom se uređaju radi, i koji si
interapt preuzimao. Pitaću te samo ovo: jesi li vodio računa o tome
da interapt procedura pamti fleg registar. Dakle:
Procedure xxx; interrupt; <-- pri pozivu se desi jedno pushf
begin
tvoj deo;
poziv stare procedure; <-- ona možda menja flegove ?
tvoj deo;
end; <-- izlazak vraća stare flegove sa popf
pascal.45mvukolic,
Dok sam juče nešto radio sa FindFirst i FindNext, desilo mi se
da se kao atribut za 2 direktorijuma javlja 48 ($30), a za atribute
ostalim direktorijumima 16 ($10, uobičajena vrednost za dir-ove).
Šta predstavlja atribut $30 i otkud taj poremećaj?
pascal.46ognjen,
Uh, urnise me ovaj rename. :( Dakle, kazem:
assign (fl, 'begin.ogi')
I tu dodelim ime fajla promenjljivoj fl, onda:
Rewrite (fl)
Sada fajl sigurno postoji. :)
Rename (fl, 'new.ogi')
E, ovo me buni:
- da li je promenjljivoj fl dodeljeno ime fajla new.ogi, tj
fajl FL i dalje ostaje isti kakav je bio (otvoren), i samo mu je
ime promenjeno, a "begin.ogi" ne postoji,
- ili je FL i dalje ostalo "begin.ogi", a sve dosadasnja
ceprkanja po fajlu su prebacena u "new.ogi", s tim da je
"new.ogi" zatvoren, a "begin.ogi" ovoren i ima 0 bytes,
- ili je nesto trece?
PS: posle komande rename sledi rewrite (FL) i projavljuje gresku
"Invalid file handle" ?!?!?!?!?!??!
pascal.47omega,
-> #46, ognjenŢ assign (fl, 'begin.ogi')
Ţ Rewrite (fl)
Ţ Rename (fl, 'new.ogi')
Fajlove treba rename-isati PRE otvaranja datoteke, a ne posle.
Ţ - da li je promenjljivoj fl dodeljeno ime fajla new.ogi, tj
Ţ fajl FL i dalje ostaje isti kakav je bio (otvoren), i samo mu je
Ţ ime promenjeno, a "begin.ogi" ne postoji,
Postoje oba fajla, s tim sto ce drugi uvek biti velicine 0, a u prvom
ce biti ono sto si napisao do rename-isanja (naravno ako si na kraju
zatvorio fajl). Znaci prvi ostaje otvoren, ali za drugi nije ni bitno (?)
jer je uvek velicine 0.
Ţ PS: posle komande rename sledi rewrite (FL) i projavljuje gresku
Ţ "Invalid file handle" ?!?!?!?!?!??!
Zanimljivo, ali to se kod mene ne desava!?
pascal.48drakce,
-> #45, mvukolic
│ desilo mi se da se kao atribut za 2 direktorijuma javlja 48 ($30), a za
│ atribute ostalim direktorijumima 16 ($10, uobičajena vrednost za
│ dir-ove). Šta predstavlja atribut $30 i otkud taj poremećaj?
└───────────
Nije poremećaj, samo su ta 2 direktorijuma imala setovan Archive flag ($20).
Kada ispituješ da li je neki fajl direktorijum, nemoj koristiti jednakost:
if (attribut = Directory) then writeln('To je direktorijum');
nego upotrebi logičko AND za ispitavanje Directory flag-a:
if (attribut AND Directory) then writeln('To je direktorijum');
PS: Directory je konstanta iz DOS unita. Vrednost joj je $10.
pascal.49dzakic,
-> #45, mvukolic> Dok sam juče nešto radio sa FindFirst i FindNext, desilo mi se
> da se kao atribut za 2 direktorijuma javlja 48 ($30), a za
> atribute ostalim direktorijumima 16 ($10, uobičajena vrednost za
> dir-ove). Šta predstavlja atribut $30 i otkud taj poremećaj?
Atribut čini više bitova, peti se pali kad je u pitanju direktorijum,
a pored njega može biti upaljen u šesti, ako je setovan arhiv bit:
Cnstant │ Value
════════════════ě════════
faReadOnly │ $01
faHidden │ $02
faSysFile │ $04
faVolumeID │ $08
faDirectory │ $10
faArchive │ $20
faAnyFile │ $3F
Dakle, direktorijum ispituješ sa: if Attr and faDirecotry<>0 then ...
pascal.50dzakic,
-> #46, ognjen> PS: posle komande rename sledi rewrite (FL) i projavljuje gresku
> "Invalid file handle" ?!?!?!?!?!??!
Mislim da je jedini bezbedan način za promenu imena - rename nad
˙zatvorenom˙ datotekom.
pascal.51pedjak,
-> #46, ognjen> Rewrite (fl)
> Rename (fl, 'new.ogi')
Rename se radi na zatvorenim fajlovima...
pascal.52mmitrovic,
-> #36, sariclŮ█▀█Ţ Potrebno je da po njenom startovanju
Ů█▀█Ţ preuzima interapt, odnosno po zahtevu za interapt
Ů█▀█Ţ startuje jednu drugu rutinu x.y nakon završavanja
Ů█▀█Ţ posla rutine x.y vraća sve u pocetno stanje.
procedure GetIntVec(IntNo: Byte; var Vector: Pointer);
procedure SetIntVec(IntNo: Byte; Vector: Pointer);
ove dve procedure uzimaju i postavljaju vektore.
primer: SetIntVec($21,čMyProcedure);
tvoja procedura mora biti deklarisana kao interrupt ili
da je deklarises kao ASM pa da sam definises ulaz,
posto interrupt procedure na pocetku stavlja sve registre na
stek i postavlja DS na data segment. Za pozivanje drugih
procedura koristi se stek pozivajuceg programa. Suzdrži se
pozivanja procedure koje obilato koriste lokalne promenljive
koje se inače alociraju na steku. Ako je u pitanju rutina za
hardverski interrupt ne smes da koristis DOS procedure
koje nisu reentrant, posto ces veoma verovatno da zabrljas
DOS stek. Takođe se suzdrži pozivanja procedure koje obilato
koriste lokalne promenljive koje se alociraju na steku.
Ako si ostavio dosta HEAPa mozes slobodno da alociras
memoriju, ili da koristis vec alociranu. Ako tvoja interrupt
procedura treba da modifikuje neki registar moraces da
koristis pseudo parametre (vidi Pascal help za "interrupt")
a ne direktno menjanje. Toliko mi na pamet palo za sada. Ako
ti nista ne pomogne, pisi opet.
Ů█▀█Ţ E sad sve to treba da radi u realnom vremenu.
Kakvo drugo vreme postoji?
Ů█▀█Ţ Ako neko nema gotovu rutinu nek mi bar kaže zašto
Ů█▀█Ţ mi posle aktiviranja rutine za prekid zablokira
Ů█▀█Ţ uređaj ciji je prekid korišten.
Ovo bas nisi jasno objasnio, koji uredjaj, koji prekid?
Baci nam i tvoju proceduru ako nije tajna.
pascal.53kriss,
Jel palo nekom napamet da posle uvođenja naredbe SYSM napravi malo
programče za 'obradu' exec-a? :) Da posle svakog MAIL/GROUP/CONF
SEND/REPLY doda /R? :)
pascal.54markom,
-> #53, kriss*** Jel palo nekom napamet da posle uvođenja naredbe SYSM napravi malo
*** programče za 'obradu' exec-a? :) Da posle svakog MAIL/GROUP/CONF
*** SEND/REPLY doda /R? :)
Zašto kad to možeš uraditi i u SOR-u ?
pascal.55postmast,
Subject: Proenljivi zapisi
Date: Sun, 15 May 1994 12:18:17
CD> kao type. Jednostavno, napravis mali pod-program koji ce da cita sam
CD> podatke, bez obzira na strukturu. Evo primera:
PS>
PS> Eh, radi se o datotekama reda od par do par desetina megabajta. Ovaj
PS> nacin bi to radio mnogo sporo. Razmisljao sam vec o tome.
U Moduli bi to ne bi bio preteran problem - definises sa TYPE sve moguce
strukture, a u kasnijem delu odaberes koja ti treba i definises nov TYPE
koji ima osobine jednog od vec definisanih TYPE-ova i radis preko njega.
Mozda moze slicno i u Pascalu, ne znam, ovakve stvari nikad nisam radio u
njeu...
... QWK, QWK, QWK - mating call of the mail duck.
* Origin: Prometheus BBS - The Northern Frontier - (38:111/107)
pascal.56omega,
-> #54, markomŢ *** programce za 'obradu' exec-a? :) Da posle svakog MAIL/GROUP/CONF
Ţ *** SEND/REPLY doda /R? :)
Ţ
Ţ Zasto kad to mozes uraditi i u SOR-u ?
A je l' moze u SDW-u?
pascal.57omega,
Povodom direktnog gadjanja memorije, evo procedure koju sam malo sredio...
print.paspascal.58saricl,
-> #44, dzakic%%% Možda bi bilo lakše da si napisao o kom se uređaju radi, i koji si
%%% interapt preuzimao. Pitaću te samo ovo: jesi li vodio računa o tome
Ovo je taj Pascal program. Inace on je skroz pojednostavljen, a to je zato
što još nije konacno zavrešen. Program Pritisnut;
Uses DOS, CRT;
var
tim : String;
vectorPrekida : pointer;
Procedure prk; interrupt;
Begin
clrscr;
tim:=' P R I T I S N U T J E T A S T E R ';
Writeln(tim);
end;
Begin
Getintvec($0b,vectorPrekida);
Setintvec($0b,@prk);
Delay(5000);
SetIntvec($0b,vectorPrekida);
end.
pascal.59markom,
-> #56, omega*** A je l' moze u SDW-u?
Pa gde god ti se daje mogućnost da edituješ komandnu liniju, može, samo se tre-
ba toga setiti, i naravno, povremeno pratiti SEZAM:sor ;>
pascal.60.djn,
Radi periodicnog angazovanja potreban mi je jedan
ili vise saradnika koji poznaju neke ili sve od navedenih stvari:
- Borland Pascal 7.0 with Objects,
- Turbo Pascal,
- Turbo Pascal for Windows,
- objektni Pascal,
- Turbo Vision,
- Object Windows Library,
- Paradox Engine za Pascal,
- pravljenje komunikacionih programa u Pascalu...
Zainteresovane molim da mi ostave poruku sa brojem telefona
na mail.
Dejan
pascal.61omega,
-> #59, markomŢ Pa gde god ti se daje mogucnost da editujes komandnu liniju, moze, samo se
:) Pa komandnu liniju editujes rucno, a ne automatski, zar ne?
pascal.62markom,
-> #61, omega*** :) Pa komandnu liniju editujes rucno, a ne automatski, zar ne?
Ne znam sa SDW, ali u SOR-u može da se namesti da umesto MAIL SEND piše i POŠA-
LJI POŠTU, ako hoćeš ...
pascal.63dzakic,
-> #58, saricl> tim:=' P R I T I S N U T J E T A S T E R ';
> Writeln(tim);
> Getintvec($0b,vectorPrekida);
Da nisi hteo da uzmeš int 09? On se generiše prilikom svakog pritiska i
otpuštanja tastera...
Drugi razlog zašto ne radi (umrtvi se mašina?) je zato što u svojoj
rutini za obradu prekida nigde nemaš pozivanje originalne procedure
pa računar više nema podatak o tome šta se dešava za tastaturom...
Adresu originalne procedure si upamtio u 'vektorPrekida'. Deklariši ga
sa vektorPrekida:Procedure;, a pozivaj ga sa
asm pushf end;
vektorPrekida;
Naravno, fali i
asm mov ax,SEG @data
mov ds,ax
end;
na početku interapt procedure.
pascal.64kriss,
Ako neko reši, svaka mu čast, ja više nemam živce da pogađam ko je lud,
me or TP 6.0 ;) Nije veliko ni teško, ko hoće da se zanima ima sve
objašnjeno u arhivi. I ko ima nerve ... ;)
evo.zippascal.65mvukolic,
-> #64, kriss> Ako neko reši, svaka mu čast, ja više nemam živce da pogađam ko je lud,
Greška je u zaglavlju procedure Unos.
Treba da stoji 'var kraj:boolean', a ne 'kraj:boolean'.
pascal.66kriss,
-> #65, mvukolic˙˙ Greška je u zaglavlju procedure Unos.
˙˙ Treba da stoji 'var kraj:boolean', a ne 'kraj:boolean'.
Zašto? Šta treba zameniti? Var se odnosi i na kraj ...
Za nepupućene, zaglavlje izgleda ovako:
Procedure Unos (x,y,no:byte; Var g:string; kraj:boolean);
I TP uporno odbija da vrati kraj pri pozivu ...
pascal.67d.stamen,
-> #66, kriss> Zasto? Sta treba zameniti? Var se odnosi i na kraj ...
>
> Za nepupucene, zaglavlje izgleda ovako:
>
> Procedure Unos (x,y,no:byte; Var g:string; kraj:boolean);
Ovako kako si napisao var se definitivno ne odnosi na promenljivu kraj.
Ono sto tebi treba, da bi kraj bila ulazno/izlazna promenljiva je
Procedure Unos (x,y,no:byte; Var g:string; Var kraj:boolean);
u suprotnom promenljiva kraj je samo ulazna za proceduru Unos.
Znaci poslusaj savet MVukolic-a i sve ce biti OK.
pascal.68mvukolic,
-> #66, kriss> ˙˙ Greška je u zaglavlju procedure Unos.
> Zašto? Šta treba zameniti? Var se odnosi i na kraj ...
> Procedure Unos (x,y,no:byte; Var g:string; kraj:boolean);
> I TP uporno odbija da vrati kraj pri pozivu ...
Procedure Unos (x,y,no:byte; var g:string; var kraj:boolean);
Normalno da ne vraća kraj pri pozivu zato što gore ne stoji 'var'.
Ako ne staviš 'var' šta god da uradiš sa promenjivom u proceduri, njena
vrednost se neće promeniti (tj. posle kraja izvršavanja procedure, vrednost
ostaje ista kao i pre poziva).
Elementarno znanje Pascala...
pascal.69kriss,
-> #68, mvukolic˙˙ Procedure Unos (x,y,no:byte; var g:string; var kraj:boolean);
Hvala, radi. Mislio sam da se Var odnosi na sve što ga sledi. Pogršno
sam naučio ...
˙˙ Elementarno znanje Pascala...
Kad zatražim pomoć ne činim to iz hira već zato što ne znam kako da
rešim određen problem. Kada umem nekom da pomognem, pomognem. Nikada ne
'poklapam' sa ovakvim izjavama ...
pascal.70zloboleon,
-> #64, krissňňň Ako neko reši, svaka mu čast, ja više nemam živce da pogađam
ňňň ko je lud, me or TP 6.0 ;)
Jesi li probao sa TP 7.0 ;) ?
pascal.71mmitrovic,
-> #63, dzakicŮ█▀█Ţ asm pushf end;
Ů█▀█Ţ vektorPrekida;
U ovom slucaju (sa int 09) bi radilo, ali ako su flagovi važni
neće raditi pošto će na stek doći flag registar koji je handler
već menjao. Tada mora da koristi pseudo parametar Flags:
asm
push Flags
end;
Za način definisanja pseudo-parametara za interrupt proceduru
pogledajte BP help za rezervisanu reč INTERRUPT.
Ů█▀█Ţ asm mov ax,SEG čdata
Ů█▀█Ţ mov ds,ax
Ů█▀█Ţ end;
Ů█▀█Ţ fali na početku interapt procedure.
pocetak interrupt procedure (init (ili begin) kod) je:
push ax ; registri na stek (njima se posle pristupa
.. ; preko pseudo-parametara (read help!))
push es
push bp ; postavlja stek frame na steku prekinutog
mov bp,sp ; programa
sub sp,Local ; lokalne promenljive
mov ax,SEG čDATA ; *!*!*!*!*!*!*!*!*!*!
mov ds,ax ; !*!*!*!*!*!*!*!*!*!*
....... ; rutina
tako da se ovo što predlažeš već dešava automatski.
pascal.72mmitrovic,
-> #55, postmastSubject: promenljivi slogovi.
Ů█▀█Ţ PS> Eh, radi se o datotekama reda od par do par desetina
Ů█▀█Ţ PS> nacin bi to radio mnogo sporo. Razmisljao sam vec o tome.
Ů█▀█Ţ
Ů█▀█Ţ U Moduli bi to ne bi bio preteran problem - definises sa
Nije ni ovde neki problem, važna je samo jedna struktura:
FileRec iz Dos unita. Ona pokriva i netipizirane i tipizirane
datoteke. Tačnije važno je polje strukture zvano RecSize.
U helpu se nalazi pod TFileRec, ali se u stvarnosti ipak zove
FileRec (Borlandov propust).
Kad mu se zada
var F: File of <nešto>; on automatski postavlja RecSize na
veličinu tipa.
dok kod
var F: File; to radi user preko reset (ili rewrite) (sećate se
drugog parametra?) a po defaultu je 128 bajtova?? (nemam pojma
što bas tolko).
Dakle evo primer koji bi trebao da radi (bar je sintaksno
ispravan), nisam ga nikad probao jer mi nije trebao, teorijski
šljaka.
uses Dos;
type PWord = žWord;
var F: File of Word; š recsize=2 ć
a: LongInt;
begin
assign(F,trte-mrte);
reset(F); š u ovom trenutku RecSize postaje 2 ć
FileRec(F).RecSize:=SizeOf(LongInt); š RecSize postaje 4 ć
š Može i neki drugi broj npr. 234 ć
š ili čak i varijabla ć
read(F,PWord(ča)ž); š pointer typecast je neophodan da bi ć
š se zavarao BP compiler ć
š učitace 4 bajta (LongInt) umesto 2 (Word). ć
...
- Neat trick, ha? -
pascal.73mmitrovic,
-> #58, sariclŮ█▀█Ţ var tim : String;
Ů█▀█Ţ
Ů█▀█Ţ tim:=' P R I T I S N U T J E T A S T E R ';
Ů█▀█Ţ Writeln(tim);
Ne valja ti rabota. ;)
Imaćeš dve kopije stringa u memoriji jednu u Code a drugu u
Data Segmentu. Stavi samo
writeln(' P R I ........ E R ');
Ovo nije fatalna greška ali bez potrebe zauzima mesto u
Data segmentu.
pascal.74mmitrovic,
-> #66, krissŮ█▀█Ţ Zašto? Šta treba zameniti? Var se odnosi i na kraj ...
Ů█▀█Ţ Za nepupućene, zaglavlje izgleda ovako:
Ů█▀█Ţ Procedure Unos (x,y,no:byte; Var g:string; kraj:boolean);
Ů█▀█Ţ I TP uporno odbija da vrati kraj pri pozivu ...
Var koji definiše promenljive i Var u definiciji formalnih
parametara su dve sasvim različite stvari. U ovom drugom
slučaju označava parametar koji će biti prenet kao adresa te
se svaka promena nad vrednošću promenljive u proceduri automatski
reflektovati na stvarnom parametru. Opseg ovog Var je do sledećeg ;
tako da se kod tebe ne odnosi i na kraj.
Kad smo već kod parametara, da li ste znali da postoje i const
parametri. Pr:
procedure XYZ (const a);
prima kao stvarni parametar samo promenljivu, i prenosi je kao adresu
(slično kao i var) ali ne dozvoljava menjanje parametra iako postoji
dostupna adresa na steku.
procedure XYZ (const a:word);
prima kao stvarni parametar i konstantu i varijablu, i prenosi je
kao kopiju vrednosti (slično kao bez var) ali ne dozvoljava
menjanje parametra iako postoji dostupna kopija vrednosti na steku.
Međutim parametar se može menjati iz internog asemblera u oba
slučaja.
Mešanje var i const ne radi.
BP Help ne pominje ništa o ovome.
Bug or Feature?
pascal.75dpriest...,
Hi. Ako vas ne mrzi skinite ovaj pokusaj pravljenja jednog efekta
mora i recite mi onda da li vam to lici na vodu i da li ga vredi stavljati
u jedan intro. Radi *samo za tridend* kartice za sada, pa ako povoljno
prokomentarisete mozda ce raditi i za ostale...
Unapred hvala, DP...
PS Nema veze sa temom, ali ga napisah u pascalu, i eto ga ovde... :)
w.arjpascal.76postmast,
Subject: pascal
Date: Tue, 17 May 1994 10:40:00
"V> From: "Marko Vukolic" <mvukolic@sezam.UUCP>
"V> Dok sam juce nesto radio sa FindFirst i FindNext, desilo mi se
"V> da se kao atribut za 2 direktorijuma javlja 48 ($30), a za atribute
"V> ostalim direktorijumima 16 ($10, uobicajena vrednost za dir-ove).
"V> Sta predstavlja atribut $30 i otkud taj poremecaj?
Evo tabele atributa datoteka, koja se inace nalazi u TP Help-u:
Constanta Vrednost
===================
ReadOnly $01
Hidden $02
SysFile $04
VolumeID $08
Directory $10
Archive $20
AnyFile $3F
===================
Atribut $10 znaci da je nadjena datoteka u stvari direktorijum.
Atribut $30 je u stvari zibr atributa $10 i $20 sto znaci da je to
direktorijum ali sa ukljucenim Archive flegom. On se koristi za oznacavanje
sta je izmenjeno od poslednjeg BACKUP-a..
Nadam se da ce biti od pomoci.
Pozdrav
Predrag Supurovic, 38:101/101@setnet.org
broker@osmeh.fon.uni-bg.yu
... Hej! Jesi li postao Clan YUCCA?
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.77postmast,
Subject: .PCX file reader
Date: Mon, 16 May 1994 10:59:00
Pozdrav!
Dat je jedan ASEMBLER-ski listing za citanje .PCX grafickih fajlova. Sve
ovo je moguce uraditi i iz PASKAL-a. Da li je bolje raditi ASEMBLER-om ne
znam, ali imam UNIT koji cita .PCX fajlove. Ovo je napisao jedan moj ortak
za nas program i stvar radi. Doduse, nama je trebao UNIT za citanje mono
PCX slika, ali imam PCX TECHNICAL REFERENCE, u kome je opisana stuktura
PCX formata. Nisam je sada poslao, jer je dugacak nekih 7-8 stampanih
strana. Koga zanima, moze dobiti informacije i o drugim stvarima koje se
mogu raditi iz PASKAL-a (promena oblika kursora, emulacija sivih boja,
identifikacija IDE diskova,...).
Strajder
P.S. Ako ti treba ovaj listing, poslacu ti ga. Ostavi poruku. Isto vazi
i za uputstvo. Mogu ti dati i za TIFF i GIF formate. A ako imas jos neki
problem, pitaj.
... Najveca brzina u svemiru je Brzina Gluposti!
* Origin: *TAURUNUM BBS +381 11 2354-253, 22 do 07* (38:38/115.1)
pascal.78postmast,
Subject: Turbo Pascal 6.0
Date: Wed, 18 May 1994 04:28:04
MS> Kud ces polaganije od ovoga. :)) 3-4 godine radim na TP-u, ali eto,
> kad uleti asembler u paskal, onda, hoces-neces, pomislis: 'mozda bi ovo
> islo brze da je u asm?' I, kako to vec ide, poljubis sve knjige o tp-u, a
> bacis se na trazenje help-a za tp 6.0. Ipak, u pravu si: ako ne laganije
> uciti, onda svakako detaljnije.
Vidim da si sam najbolje otkrio problem... Mogla bi ti pomoci knjiga
koja se distribuira o fajlu (tpr-book.*), imas je i na FonFile Serveru.
Help ti nece mnogo pomoci oko pointera ali knjige svakako hoce.
MS> No, to je OK, ali jel' moze kako sa se eliminise ono mrljanje oko misa.
> Da nije greska u mom drajveru? ( Ili treba laganije...:))))
Hmm, nisi citirao pa ne znam o cemu se radi. Siguran sam da ti nisam
odgovarao u vezi mrljanja misa jer o tome ne znam uglavnom nista. Sto se
tice laganijeg tempa, pa pomenuo sam ga samo jednom i mislio sam na
pointere i slicno. Normalno je da pretpostavim da je neko uleteo u
nebrano grozdje kada pogresno zove Viziju i ne zna sta su pointeri,
molim te da se ne ljutis zbog toga. Inace iako znam da radim sa
pointerima, skoro nikad ih ne koristim jer smatram da ako razmisljam na
Pascal-u, onda mi padaju na pamet samo struktuirana resenja koja su
toliko dobra da za njih ne trebaju pointeri koje sam nekako povezao sa
brljotinama pa ih uglavnom izbegavam. Uglavnom pointere smatram
vestackim delom paskala pa ih i ne koristim, kao ni goto (cak ni u
bejziku ga ne koristim).
Zeljko Dakic a.k.a. DesireCo.
-- SPEED 1.30 [NR]: REALITY.SYS Corrupted: Re-boot universe? (Y/N/Q)
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.79postmast,
Subject: Proenljivi Zapisi
Date: Wed, 18 May 1994 04:28:06
PS> Eh, radi se o datotekama reda od par do par desetina megabajta. Ovaj
> nacin bi to radio mnogo sporo. Razmisljao sam vec o tome.
HI! Nisam video poruku na koju ti je on odgovorio. U cemu je problem,
mozda mogu da pomognem ?
Zeljko Dakic a.k.a. DesireCo.
-- SPEED 1.30 [NR]: In DoubleSpace, no one can hear your files scream.
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.80postmast,
Subject: Array
Date: Wed, 18 May 1994 04:28:08
MS> Packed Array[1..12,char] of String[20]
BS> A sta mu dodje ovo 'packed' ?
Uglavnom nista. Turbo Pascal to ignorise a ta rec se koristi u
standardnom pascalu za neko muljanje. Ostala je da bi bio kompatibilan
sa standardnim pascalom.
Zeljko Dakic a.k.a. DesireCo.
-- SPEED 1.30 [NR]: Radite kako vam kazem, a ne kako ja radim!
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.81mvukolic,
-> #69, kriss> Kad zatražim pomoć ne činim to iz hira već zato što ne znam kako da
> rešim određen problem. Kada umem nekom da pomognem, pomognem. Nikada ne
> 'poklapam' sa ovakvim izjavama ...
Tačno ono što sam ja uradio u svojoj prvoj poruci, a ti nisi poslušao.
pascal.82omega,
-> #74, mmitrovicŢ Kad smo vec kod parametara, da li ste znali da postoje i const
Ţ parametri. Pr:
Ţ procedure XYZ (const a);
Je l' nekom pada na pamet za sta bi ovo moglo da se koristi?
pascal.83gpplanum,
Evo domaceg zadatka za sve paskal programere kojima je dosadno:
Rezidentni programcic koji ce svirnuti svaki put kada se
neki taster pritisne(radi stvaranja utiska klickanja tastature).
Slabo stojim sa TSR programima,a zeleo bih to da naucim!
P.S.Ne bi trebalo da bude tesko,ali ni doneti pivo nije tesko,a
plavusa ne zna;)
-Ju!Sine sa kim se ti uporedjujes!
-Sto mama i plavuse su ,ooovaj,i plavuse su,
I PLAVUSE SU KORISNE!!;)
pascal.84dgrbic,
-> #74, mmitrovic:: Mešanje var i const ne radi.
Isto ko ni mešanje deklaracija far i near u C-u.
Jasno da ne radi, kad su to dve suprotne stvari.
pascal.85pedjak,
-> #83, gpplanum> Evo domaceg zadatka za sve paskal programere kojima je dosadno:
> Rezidentni programcic koji ce svirnuti svaki put kada se
> neki taster pritisne(radi stvaranja utiska klickanja tastature).
Takav programčić imaš u helpu, uz objašnjenje procedure Keep.
pascal.86vitez.koja,
-> #83, gpplanum#=> Evo domaceg zadatka za sve paskal programere kojima je
#=> dosadno: Rezidentni programcic koji ce svirnuti svaki
#=> put kada se neki taster pritisne(radi stvaranja utiska
#=> klickanja tastature).
Baš taj primer (inače trivijalan) dat je u TP helpu za funkciju
keep.
pascal.87jasicp,
-> #74, mmitrovic> procedure XYZ (const a);
> prima kao stvarni parametar samo promenljivu, i prenosi je kao adresu
> (slicno kao i var) ali ne dozvoljava menjanje parametra iako postoji
> dostupna adresa na steku.
Imam TP6.0. Da li ovo radi samo u BP-u ? Ima li BP ( i TP7.0 )
znacajno sire biblioteke objekata i mogu li koristiti uz 6.0 bez problema /
valjda mogu...
pascal.88gpplanum,
-> #86, vitez.koja># => Evo domaceg zadatka za sve paskal programere kojima je
># => dosadno: Rezidentni programcic koji ce svirnuti svaki
># => put kada se neki taster pritisne(radi stvaranja utiska
># => klickanja tastature).
>
> Bas taj primer (inace trivijalan) dat je u TP helpu za funkciju
> keep.
Da,bas sam majmun!
Ali,sta mogu,markom me zaplasio;>
P.S.Sada znam RFM!!
Ali ko ce ceo help da cita.
pascal.89gpplanum,
-> #75, dpriest...> mora i recite mi onda da li vam to lici na vodu i da li ga
> vredi stavljati
Pa,ako ce se inicijalizovati ovako dugo;)bolje nemoj!
Pozdrav,gpplanum!
P.S.Meni vise lici na maglu(majke mi!).
pascal.90kriss,
-> #81, mvukolic˙˙ Tačno ono što sam ja uradio u svojoj prvoj poruci, a ti nisi
˙˙ poslušao.
Nisam jer me je zanimalo _zašto_ je to tako. A kasnije sam (kad si i
objasnio zašto je to tako) i poslušao - ispravio.
pascal.91kriss,
-> #74, mmitrovic˙˙ reflektovati na stvarnom parametru. Opseg ovog Var je do
˙˙ sledećeg ; tako da se kod tebe ne odnosi i na kraj.
Aaaa, e to mi nije bilo jasno. :) Mislio sam da se Var odnosi na sve
što ga sledi. Hvala. :)
pascal.92mmitrovic,
-> #84, dgrbicŮ█▀█Ţ Isto ko ni mešanje deklaracija far i near u C-u.
Ů█▀█Ţ Jasno da ne radi, kad su to dve suprotne stvari.
Pa nisu baš suprotne stvari, bar sa stanovišta koda
(const a) i (var a:tip) obe ostavljaju 32bit pointer
(const a:<tip>) i (a:<tip>) obe ostavljaju kopiju velicine <tip>
far i near se razlikuju po veličini (32 i 16 bita).
pascal.93mmitrovic,
-> #77, postmastŮ█▀█Ţ identifikacija IDE diskova,...).
Ů█▀█Ţ i za uputstvo. Mogu ti dati i za TIFF
Ove dve stvari bi dobro došle.
pascal.94mmitrovic,
-> #80, postmastŮ█▀█Ţ BS> A sta mu dodje ovo 'packed' ?
Ů█▀█Ţ Uglavnom nista. Turbo Pascal to ignorise a ta rec se koristi u
Ů█▀█Ţ standardnom pascalu za neko muljanje. Ostala je da bi bio kompatibilan
packed služi da označi "pakovani niz". Primer:
da ne bi kucao:
const a: array Š1..5Ć of char = ('a','b','c','d','e')
kucaš
const a: packed array Š1..5Ć of char = ('abdef');
Borlandovi Pascal-i ignorišu packed jer se svi nizovi u
TP i BPu podrazumevaju kao packed.
Korisna stvar za definisanje ASCIIZ stringova (bez bajta za
dužinu, sa #0 na kraju).
pascal.95markom,
-> #88, gpplanum*** Ali,sta mogu,markom me zaplasio;>
Dobro ono je trivijalan primer, ali za neki komplikovaniji TSR, hmm, mora da se
pazi na sve živo ...
*** P.S.Sada znam RFM!!
Jock, RTFM ...
pascal.96saricl,
-> #63, dzakic|||| asm pushf end;
|||| vektorPrekida;
|||| asm mov ax,SEG @data
|||| mov ds,ax
|||| end;
Jel može detaljnije objašnjenje šta ovo radi.
Inace u toj proceduri jeste bio int09 ali mi je krajnji cilj int5
(LPT 2)
pascal.97asrdjan,
Da li bi neko mogao da mi malo objasni pojam pointera.
Npr. ako treba da napravim niz od n članova,a n mi je poznato tek nakon
ulaska u program.
Thanx a lot:).
- Anri The III -
pascal.98mmitrovic,
-> #87, jasicpŮ█▀█Ţ Imam TP6.0. Da li ovo radi samo u BP-u ? Ima li BP ( i TP7.0 )
Ů█▀█Ţ znacajno sire biblioteke objekata i mogu li koristiti uz 6.0 bez
Ů█▀█Ţ problema / valjda mogu...
Za prvo, pojma nemam, više ne držim 6.0, probaj pa vidi.
Što se tiče biblioteka objekata, van TVision-a BP ima malo
korisnih stvari kao što je TCollection i njegovi naslednici,
pogledaj help za unit OBJECTS. Tu su svi objašnjeni. BP7 biblioteke
se ne mogu koristiti u 6.0 jer se razlikuju TPU fajlovi, ali OBJECTS
postoji i u TP 6.0.
pascal.99dejanr,
-> #97, asrdjan>> Npr. ako treba da napravim niz od n članova,a n mi je poznato tek nakon
>> ulaska u program.
To se radi otprilike ovako:
type nizt: array [1..65000] of byte;
nizp: ^niz;
var niz: nizp;
n: longint;
begin
readln(n);
getmem(niz, n);
niz^[1]:=123;
niz^[n-1]:=222;
itd
end.
pascal.100postmast,
Subject: pascal
Date: Mon, 23 May 1994 09:48:04
To: "Miljan Mitrovic" <mmitrovic@sezam.UUCP>
"M> Nije ni ovde neki problem, vazna je samo jedna struktura:
"M> FileRec iz Dos unita. Ona pokriva i netipizirane i tipizirane
Ovo je bilo veoma zanimljivo. Iako mi nije direktno resilo problem,
dalo mi je ideju kako da ga resim.
Hvala,
broker
... Ups. Ostadoh bez tagova...
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.101dzakic,
-> #96, saricl>> asm pushf end;
>> vektorPrekida;
>>
>> asm mov ax,SEG @data
>> mov ds,ax
>> end;
> Jel može detaljnije objašnjenje šta ovo radi.
Kad pozivaš proceduru preko pointera na nju, paskal izvrši običan far
call, dok se interapt procedura završava instrukcijom IRET. Iret
skuplja sa steka adresu za povratak, ali isto tako i fleg registar, pa
zato pre takvog pozivanja treba flegove ručno gurnuti na stek (sa pushf).
A punjenje ds registra adresom data segmenta je neophodno jer u svojoj
interapt proceduri koristiš globalne promenljive koje se tamo nalaze.
Paskal očekuje da DS registar uvek ukazuje na data segment, što nije
slučaj kada nastane interapt (pritisnut taster) i ds registar ostane da
ukazuje na data segment aplikacije koja se u tom trenutku izvršava. Ti
onda treba da sačuvaš ds, da mu daš tačnu adresu (na opisan način) i po
završetku opet vratiš nazad.
pascal.102dgrbic,
-> #92, mmitrovic:: (const a) i (var a:tip) obe ostavljaju 32bit pointer
:: (const a:<tip>) i (a:<tip>) obe ostavljaju kopiju
:: velicine <tip>
Nije bitno to, nego log'ka!
Kad mu kažeš da je VAR onda znači da oćeš da ga menjaš, a kad mu kažeš
CONST da ne nameravaš tu ništa da menjaš.
I tu nije bitno što se u oba slučaja prenosi far pointer, nego što je
navođenje oba prefiksa kontradikcija, da ne kažemo paradox :)
Pascal je, sa te strane, mnogo restriktivniji od c-a.
TP je, istina, olabavio provere (deklaracija var a - bez tipa - npr.)
Ono što se mnogim programerima osobito dopada kod Wirthovih jezika upravo
stroga provera tipova, što programera sprečava da radi nelogične stvari
(koje bi kompajler mogo da proguta bez problema, ali...)
Uvećavanje pointera je tipičan primer sprečavanja nelogičnih stvari, koje
su neki put tako korisne... za razliku od const var a ;)
pascal.103mmitrovic,
-> #101, dzakicŮ█▀█Ţ call, dok se interapt procedura završava instrukcijom IRET. Iret
Ů█▀█Ţ skuplja sa steka adresu za povratak, ali isto tako i fleg registar, pa
Ů█▀█Ţ Paskal očekuje da DS registar uvek ukazuje na data segment, što nije
Ů█▀█Ţ slučaj kada nastane interapt (pritisnut taster) i ds registar ostane da
Ů█▀█Ţ ukazuje na data segment aplikacije koja se u tom trenutku izvršava. Ti
Da li vi ljudi imate ignore za mene, ili ne čitate moje poruke
iz principa?
pascal.104dzakic,
-> #94, mmitrovic> Korisna stvar za definisanje ASCIIZ stringova (bez bajta za
> dužinu, sa #0 na kraju).
const a:pchar='abcde'; ?
pascal.105dzakic,
-> #103, mmitrovic> Da li vi ljudi imate ignore za mene, ili ne čitate moje poruke
> iz principa?
Nemam ignore ni na koga. U poslednje vreme ne pratim konferencije
baš sa posebnom pažnjom pa mi je tvoja poruka promakla. Ok, nisam
znao da paskal automatski postavlja DS registar u procedurama
deklarisanim sa interrupt. Ako sam i znao, izgubio sam iz vida, jer
TSR pišem u asembleru, ne u paskalu. Hteo sam samo da pomognem
čoveku i naveo razloge koji su možda mogli da budu uzrok njegovih
problema.
pascal.106toca,
Kako je i da li je uopšte moguće iz TP-a startovati BAT fajl?
Konkretno verzija 6.0.
pascal.107bigbrada,
-> #106, toca*>> Kako je i da li je uopste moguce iz TP-a startovati BAT fajl?
*>> Konkretno verzija 6.0.
Pa ovako nekako...
...
SwapVectors;
Exec ('C:\Ime.Bat', '');
SwapVectors;
...
pascal.109ognjen,
-> #99, dejanr)-> type nizt: array [1..65000] of byte;
Ovako se zauzme cela memorija dozvoljena za variables (64 Kb),
i nema meste ni za jednu promenjljivu. I jos ako se stavi ovo,
indexi mogu ici do 65k ali vrednosti clanova u nisu ne mogu biti
veci od 356. Sto je niz... :) Znam, znam, moze se staviti of
integer, ali je onda niz duplo "kraci". Kako recimo da definisem
ovkakav niz:
type korisnik = record
ime : String[15] ;
prezime : String[30] ;
alias : String[14] ;
broj_poziva : LongInt ;
end;
)-> nizp: ^niz;
I, nek neko najzad objasni sta su to pointeri, ne kapiram
nista... :(
)-> var niz: nizp;
NizP - vidi Niz; Niz - vidi NizP ???? :)
)-> getmem(niz, n);
Da li se ovako oslobadja mamorija za niz, tako da onih 64Kb
ostaje slbodno za druge promenjljive?
pascal.110ognjen,
M A I L S O R T !!!
[jos ne radi] :(
Radi se o programu koji (bi trebao da) sortira mailove,
ustvari, sve sto radi je menja njihove brojeve. Mislio sam i
kasnije kad razvijem program da uvedem i neku statistiku, ali
naidjoh na ove bug-ove, i ne mogu da skontam sta nije u redu...
Dakle, imena fajlova sa mail porukama se unose iz komandne linije
(MAILSORT msg.1 msg.2) i pocinje obrada fajlova. Pretpostavlja se
da ste fajlove uneli redom po datumu, tj, u prvom navedenom fajlu
se nalaze najstarije poruke, u drugom novije...
Dakle, program uzima prvi fajl (pa drugi, pa treci, kroz
petllju For I := 1 to ParamCount) i trazi tring od 25 znakova "="
(pocetak poruke). Kada ga nadje, obradjuje heder, i u izlazni
fajl upisuje istu tu poruku, ali sa promenjenim brojem. (pocinje
se od 1, pa 2, 3, 4, 5...). I u jednom nizu se pamti originalni
broj, kako bi se pri nailasku na string "Odgovor na" u hederu
stavio tacan broj poruke na koju se odgovara.
Sve bi trebalo da radi lepo, i radi, sve dok ne stigne do neke
poruke (jednom je to bila poruka 90, drugi put 320 (zadnja u
fajlu)...) gde prepise celu poruku, ali onda, kada treba da upise
futer u fajl (ono ---(...)----brojporuke---) zbuni se, i
proizvoljan broj "-" (uvek manji od trazenog (44)), i tu stane.
Kraj.
I, sve ovo sam napisao da bih vam rekao samo jedno: UPOMOOOOC!