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,
>> 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,
>> 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,
Ţ 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,
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
pascal.9ppekovic,
>> 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,
█*█ 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,
/* 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,
│║█ 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,
Ţ Do FON-a mozes doci i preko ETF-a ... :)
Kako?
pascal.16markom,
█*█ /* 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,
█*█ 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,
█*█ 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...,
>>> Ţ 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,
Ţ>>> 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,
> Ţ Do FON-a mozes doci i preko ETF-a ... :)
>
> Kako?
25-ticom.
pascal.22boris,
>> Ţ 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,
U vezi promene tekst moda... Možda lupam, ali da li si probao
DirectVideo := False ?
pascal.26omega,
Ţ 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,
> 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,
*** Probajte i vi.
Radi savršeno ...
pascal.30mmitrovic,
Ů█▀█Ţ> 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,
Ů█▀█Ţ "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,
Ţ Ů█▀█Ţ 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,
> 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,
Ţ 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,
> 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,
Ţ 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,
│ 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,
> 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,
> 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,
> Rewrite (fl)
> Rename (fl, 'new.ogi')
Rename se radi na zatvorenim fajlovima...
pascal.52mmitrovic,
Ů█▀█Ţ 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,
*** 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,
Ţ *** 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,
%%% 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,
*** 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,
Ţ 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,
*** :) 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,
> 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,
> 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,
˙˙ 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,
> 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,
> ˙˙ 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,
˙˙ 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,
ňňň 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,
Ů█▀█Ţ 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,
Subject: 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,
Ů█▀█Ţ 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,
Ů█▀█Ţ 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,
> 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,
Ţ 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,
:: 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,
> 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,
#=> 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,
> 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,
># => 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,
> 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,
˙˙ 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,
˙˙ 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,
Ů█▀█Ţ 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,
Ů█▀█Ţ identifikacija IDE diskova,...).
Ů█▀█Ţ i za uputstvo. Mogu ti dati i za TIFF
Ove dve stvari bi dobro došle.
pascal.94mmitrovic,
Ů█▀█Ţ 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,
*** 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,
|||| 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,
Ů█▀█Ţ 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,
>> 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,
>> 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,
:: (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,
Ů█▀█Ţ 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,
> Korisna stvar za definisanje ASCIIZ stringova (bez bajta za
> dužinu, sa #0 na kraju).
const a:pchar='abcde'; ?
pascal.105dzakic,
> 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,
*>> 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,
)-> 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!
pascal.111dejanr,
>> SwapVectors;
>> Exec ('C:\Ime.Bat', '');
>> SwapVectors;
Mislim da neće ići tako, treba exec ('C:\COMMAND.COM', '/C ime')
Ne zaboravi da $M direktivom ostaviš potrebnu količinu memorije.
Uzgred, sa exec mogu da se pozivaju "direktno" programi, bez COMMAND.COM,
ali to treba da budu isključivo izvršni programi, i mora se navesti puna
staza i ekstenzija. Ako se učitava COMMAND.COM, onda mogu i .BAT fajlovi,
i ne mora se navesti puno ime (mada ne škodi).
pascal.112dejanr,
>> > type nizt: array [1..65000] of byte;
>>
>> Ovako se zauzme cela memorija dozvoljena za variables (64 Kb),
>> i nema meste ni za jednu promenjljivu.
Ne, ne i ne, nisi razumeo lepotu predloženog metoda :) Zauzima se
tačno onoliko prostora koliko je potrebno, i to uopšte (praktično
ni za bajt) ne tereti data segment u kome su promenljive.
Probaj, svideće ti se :)
PS Preporučujem i čitanje dokumentacije za TP, ili neke nezavisne
knjige... može i umetka iz "Računara" sa kraja prošle godine,
objašnjene su sve te stvari :)
pascal.113dzakic,
> Exec ('C:\Ime.Bat', '');
Ako se ne varam, ne bi moglo tako. Već:
Exec(GetEnv('COMSPEC'),'/c ime.bat');
pascal.114postmast,
From: stjepan@fon (Stjepan Nikolic)
Subject: Re: pascal
Date: Fri, 27 May 1994 02:51:41 GMT
Naravno, mnoogo je lakse ovo
type niz=array [1..200] of integer;
var x:niz;
n,i:integer;
begin
readln(n);
for i:=1 to n do
readln(x[i]);
for i:=1 to n do
writeln(x[i]);
end.
--
Stjepan Nikolic
Student, FON, Beograd
pascal.115markom,
*** Mislim da neće ići tako, treba exec ('C:\COMMAND.COM', '/C ime')
Jock ni ovako, ja nemam COMMAND.COM u C:\ ...
SwapVectors;
Exec(GetEnv('COMSPEC'), ' /C ime');
SwapVectors;
Ovo je najsigurniji način :)
pascal.116omega,
Ţ )-> type nizt: array [1..65000] of byte;
Ţ Ovako se zauzme cela memorija dozvoljena za variables (64 Kb),
Ne. Da je umesto type pisalo var, onda bi tako bilo.
Ţ )-> nizp: ^niz;
^^^^^^^ Ovo je stamparska greska - treba ^nizt
Ţ )-> var niz: nizp;
Ovo je moglo i krace: var niz:^nizt; To znaci da je varijabla Niz pointer -
ona ne sadrzi vrednost NizaT vec adresu NizaT.
Tvoj program bi izgledao nekako ovako:
type
korisnik = record
ime : String[15] ;
prezime : String[30] ;
alias : String[14] ;
broj_poziva : LongInt ;
end;
k=array[1..5000] of ^korisnik;
{ Neka je maximalan broj korisnika 5000 }
var
korisnici:^k;
n:longint;
begin
readln(n);
getmem(c,sizeof(korisnik)*n*4);
{ Velicina recorda "korisnik"*broj korisnika*4 bytes za svaki pointer }
{ Da unapred znas da ih ima 5000, bilo bi sizeof(korisnik)*sizeof(k) }
c^[1]^.ime:='Pera';
c^[1]^.broj_poziva:=10;
freemem(c,sizeof(korisnik)*n*4);
end.
pascal.117nikac,
>■ *** Mislim da nece ici tako, treba exec ('C:\COMMAND.COM', '/C
>■ ime')
>■
>■ Jock ni ovako, ja nemam COMMAND.COM u C:\ ...
>■
>■ SwapVectors;
>■ Exec(GetEnv('COMSPEC'), ' /C ime');
>■ SwapVectors;
>■
>■ Ovo je najsigurniji nacin :)
I jos da izbegnemo $M:
uses memory,dos;
SetMemTop(HeapPtr);
SwapVectors;
Exec(GetEnv('COMSPEC'), '/c ime');
SwapVectors;
SetMemTop(HeapEnd);
pascal.118kriss,
˙˙*>> 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;
˙˙ ...
Ne zaboravi
Uses Dos;
na početku
pascal.119mmitrovic,
Ů█▀█Ţ> Korisna stvar za definisanje ASCIIZ stringova (bez bajta za
Ů█▀█Ţ> dužinu, sa #0 na kraju).
Ů█▀█Ţ const a:pchar='abcde'; ?
Mislio sam na
const a:packed array Š0..5Ć of char='abcdef'#0;
što radi na starim pascalima, kod novog Borlanda može i
tako. Naravno pchar stringovima trebaju posebne rutine za
manipulaciju, i nalaze su u Strings modulu.
pascal.120mmitrovic,
Ů█▀█Ţ futer u fajl (ono ---(...)----brojporuke---) zbuni se, i
Ů█▀█Ţ proizvoljan broj "-" (uvek manji od trazenog (44)), i tu stane.
Sve ovo teorijski lepo zvuči, al' kakva ti je implementacija?
Daj neku rutinu na koju sumnjaš, ovako smo u mraku.
pascal.121ognjen,
)-> SwapVectors;
)-> Exec ('C:\Ime.Bat', '');
)-> SwapVectors;
Sta tacno radi SwapVectors, i da li je moguce ovo isto uraditi
i sa EXE, i COM fajlovima?
pascal.122dejanr,
>> Sta tacno radi SwapVectors, i da li je moguce ovo isto uraditi
>> i sa EXE, i COM fajlovima?
SwapVectors premesti sve vektore procesora, sa nulte strane, u predviđeno
pordučje. Posle program može da radi šta 'oće (dobro... skoro ;) a drugo
SwapVectors će vratiti vektore u prethodno stanje, tako da ne bi trebalo
ni pod kakvim okolnosima da dođe do pada sistema.
Inače, iako se to swapvectors preporučuje, nije neophodno, ako je program
koji se startuje "kulturno" pisan (nije rezidentni i tako to). Mada ne
smeta da se uradi, radi sigurnosti :)
>> i da li je moguce ovo isto uraditi i sa EXE, i COM fajlovima?
"Ovo" je moguće uraditi samo sa EXE i COM fajlovima, a za .BAT treba
pozvati command.com, na način opisan ovde prethodnih dana.
pascal.124vitez.koja,
#=> SwapVectors premesti sve vektore procesora, sa nulte
#=> strane, u predviđeno pordučje. Posle program može da
#=> radi šta 'oće (dobro... skoro ;) a drugo SwapVectors će
#=> vratiti vektore u prethodno stanje, tako da ne bi
#=> trebalo ni pod kakvim okolnosima da dođe do pada
#=> sistema.
Mada je sve ovo tačno, SwapVectors se koristi (bar ga ja
koristim) da bi 'child process' imao na raspolaganju normalne
vektore prekida - svaki program napravljem TPom preuzima nekoliko
vektora, pa se sa SwapVectors oni vraćaju na default stanje.
pascal.125sslavko,
Evo pripremio sam NG za Turbo Vision za Pascal 6.0. Probajte ga pa ako
ima nekih zamerki ili sugestija javljajte. Inače izvučen je iz
knjige tpr-book (ima je na sezamu). Mislim da može da bude
veoma koristan, kako početnicima tako i iskusnijim korisnicima TV-a.
Pozdrav.
tv.zippascal.126ognjen,
)-> Zauzima se tacno onoliko prostora koliko je potrebno, i to
)-> uopste (prakticno ni za bajt) ne tereti data segment u kome
)-> su promenljive.
Evo, da probam da shvatim. Moj PC ima 640Kb osnovne memorije.
Od toga, moj pascal progaram rezervise za sebe 64Kb za podatke.
Ja definisem neki niz koji treba da se smesti _van_ data
segmenta, koji, ubr, moze biti velicine do oko 500Kb. Onda
popunjavam taj niz delimicno (znaci, ne popunim svih 500Kb), i
kako ga popunjavam, tako iskoriscavam memoriju. Znaci, iako je
taj niz definisan na velicinu 500Kb, on, u jednom trenutku, ne
mora zauzitati ni bajta memorije? Jesam li dorbro shvatio? :)
)-> PS Preporucujem i citanje dokumentacije za TP,
Ima li neko ovde kupljen Turbo PASCAL? Nek' mi se javi na
mail... :)
)-> moze i umetka iz "Racunara" sa kraja prosle godine,
)-> objasnjene su sve te stvari :)
Imam umetak, ali mi neije bas najjasnije. Za pocetakm sta
znace ona 2 zareza (type art_ptr = ,,artikl)?
pascal.127ognjen,
)-> Sve ovo teorijski lepo zvuci, al' kakva ti je implementacija?
)-> Daj neku rutinu na koju sumnjas, ovako smo u mraku.
Najzanimljivije je sto ne sumanjam ni u sta. Sve je po mojoj
proceni - u redu. Tako da ne znam koji deo koda da podaljem. Evo
vam uz poruku ceo program (ima nekih viskova, jer je jos
nedovrsen, ali uglavnom radi), staruje se sa MAILSORT textpad.1
textpad.2 ... Gde su textpad-ovi fajlovi sa mail porukama (i samo
njima!), a pretpostavlja se da se zadaju redom, po datumu, tj
prvo fajl sa najstarijim porukama, pa mladje poruke...
E evo ovde delova koda:
MsgHeder = '=========================';
MsgBegin = '---------------------------------------------------';
begin
{$I-} {----------------------------------}
assign (WriteFile, WriteFileName); { Ovde se proverava da li }
reset (WriteFile); { TEXTPAD.NEW zaista postoji. Ako }
If IOResult=0 then { postoji, uzali u potprogram (da }
begin { ga obrise ili promeni ime) u su- }
end else { protnom upisuje u TEXTPAD.NEW }
Rewrite (WriteFile); {----------------------------------}
MsgCounter:=0; { Brojac poruka, resetuj }
For I := 1 to ParamCount do { Radi sa fajlovima zadatim u }
begin { komandnoj liniji }
Assign (ReadFile, ParamStr(I)); { Dedeli ime fajla iz kom. linije }
Reset (ReadFile); { Otvori za citanje... }
If IOResult<>0 then { Ako ima problema, }
begin { ispisuje poruku }
goto FastEnd; { i prekida program }
end;
repeat { until EOF }
repeat { ponavlja citanje liniju po }
ReadLn (ReadFile, RLine); { liniju, dok ne nadje poruku }
until RLine = MsgHeder;
readln (ReadFile, FrstHdLn); { kad je nadje, porocita prvu }
{ liniju zaglavlja i obradi je }
{ Uzima broj poruke, i ostalo... }
readln (ReadFile, ScndHdLn); { obradjuje i drugu liniju }
{ odatle uzima i MsgSize }
ReadLn (ReadFile, ReplyLn); { ako je poruka reply... }
If copy(ReplyLn, 1, 24) = ' Odgovor na poruku ' then
begin { nadje u nizu novi broj... }
ReadLn (ReadFile, ReplyLn);
end;
If ReplyLn = MsgBegin then { ako je do sada sve u redu: }
begin
{ Ovde uglavnom dodeli} I2:=0;
{ tacan broj, tako da } Repeat
{ ne bude prouka broj } Inc(I2);
{ 1, odgvor na 10234 } Until (I2=MsgCounter+1) or (MsgOrgNo[I2]=RepMsgNo);
{ U izlazni fajl } WriteLn (WriteFile, MsgHeder);
{ se upisuje heder} Write (WriteFile, MsgCounter+1:5);
{ ovde nije nikad } WriteLn (WriteFile, Copy(FrstHdLn, 6,
Length(FrstHdLn)-6));
{ bilo problema } WriteLn (WriteFile, ScndHdLn);
Write (WriteFile, ' Odgovor na poruku ');
WriteLn (WriteFile, I2);
WriteLn (WriteFile, MsgBegin);
For I2 := 1 to MsgSize do { Prepisuje sâm text poruke }
begin { koji je velicine MsgSize uzet iz 2 reda }
end; {hedera. Ponekad nije ceo text prepisan }
{ u poslednjoj poruci }
{ Ovde se pravi } ReadLn (ReadFile, EndLine);
{ promenjljiva } EndLineTemp := concat (MsgBegin);
{ EndLineTemp koja } Delete (EndLineTemp, 44, 5);
{ "govori" kako bi } Insert (MsgNoStr, EndLineTemp, 44);
{ trebalo da izgleda zadnja linija }
end;
{ Ako zadnja} If EndLine = EndLineTemp then
{ linija izgeda } begin
{ tako, onda uvecaj} Inc(MsgCounter);
{ brojac i zapamti } MsgOrgNo[MsgCounter] := MsgNo;
{ oroginali broj poruke}
{Sada dolazi problematicni deo!!!!!}
{ovo je jasno k'o} For I2 := 1 to 43 do
{dan, ispise 24 minusa} Write (WriteFile, '-');
MsgNoStr :='';
Str (MsgCounter, MsgNoStr);
For I2 := 1 to 5-Length(MsgNoStr) do
MsgNoStr:=concat (' ', MsgNoStr);
Write (WriteFile, MsgNoStr);
{ Ovde ubacuje blanko onoliko koliko trebada bi broj stao uz }
{ desnu marginu. Probao sam da stavim i :48, ali nije radilo, }
{ prebacuje u sledeci red }
WriteLn (WriteFile, '---');
{ I na kraju doda jos tri minusa, i predje u novi red }
{ zvuci savrseno, ali ne radi... :( }
WriteLn (WriteFile, '');
{ da bi izmedju svake poruke bio jedan prazan red }
GotoXY(1, WhereY);
Write ('U fajl ',UpCaseStr(WriteFileName),' je
upisano ', MsgCounter, ' poruka');
{ "U fajl TEXTPAD.NEW je upisano 123 poruka " }
end;
until eof(ReadFile);
Fast_close: Close (ReadFile);
end;
Fast_end:
end.
mailsort.paspascal.128ognjen,
)-> SwapVectors premesti sve vektore procesora, sa nulte strane,
)-> u predvideno porducje.
Super, sve sam shvatio! ;) A, sad malo, na srpskom... :)
pascal.129.djn,
> Da li bi neko mogao da mi malo objasni pojam pointera.
Zasto ne pogledas u bilo kom udzbeniku Pascala ?
.djn
pascal.130asterix,
>> Da li bi neko mogao da mi malo objasni pojam pointera.
>
> Zasto ne pogledas u bilo kom udzbeniku Pascala ?
>
> .djn
Zato što hoće da mu neko ovde to objasni, pa ako već ne umeš
ili nećeš onda mu bar ovakve poruke šalji na mail !
pascal.131postmast,
From: stjepan@fon (Stjepan Nikolic)
Subject: Re: pascal
Date: Sun, 29 May 1994 23:23:09 GMT
Toplica Tanaskovic (toca@sezam.UUCP) je napisao:
: Kako je i da li je uopste moguce iz TP-a startovati BAT fajl?
: Konkretno verzija 6.0.
Pogledaj samo u helpu za SwapVectors, i sve ce ti se samo kazati:)
--
Stjepan Nikolic
Student, FON, Beograd
pascal.133postmast,
From: broker@setgate.setnet.co.yu (Predrag Supurovic)
Subject: Turbo Pascal 6.0
Date: Fri, 27 May 1994 19:54:00
PS>Ja imam TPBOOK, knjigu o TurboPascal-u u datoteci. Odmah da upozorim da
PS>je ogroooomna. Ako te zanima ostavi mi privatnu poruku.
VF> A, koliko je to mnogo ogroooomna? Pozdrav, wolleY.
300K arhivirano. Unutra je tekst. Knjiga je, inace, vrlo fina za
pocetnike, jer u tancine objasnjava osnove Turbo Pascala.
Nazalost, u nekim vaznim delovima se poziva na stampanu knjigu
istog autora.
broker
... BR> Gospode! Daj da u sledecem zivotu budem Vanzemaljac!
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.134postmast,
From: Darko.Andreevski@f108.n108.z38.setgate.setnet.co.yu (Darko Andreevski)
Subject: Pascal
Date: Sat, 28 May 1994 17:22:05
"P> Hi. Ako vas ne mrzi skinite ovaj pokusaj pravljenja jednog efekta
"P>mora i recite mi onda da li vam to lici na vodu i da li ga vredi stavljati
"P>u jedan intro. Radi *samo za tridend* kartice za sada, pa ako povoljno
"P>prokomentarisete mozda ce raditi i za ostale...
Dali bi mogao da possaljess source, bass me interesuje kako si to
uradio.....
okraD
p.s.Veoma me interesuju INTRO-a, DEMO-a i sl.
p.p.s.Ili bar mi kazzi gde si ostavio izvrssni file, pa da zamolim mog
SYSOP-a da ga prenese ovde (STRUGA BBS Makedonija)
* Origin: Struga BBS +389 96 74074 * Macedonia * SETNet: (38:108/108)
pascal.136postmast,
From: Srdjan.Stanisic@p1.f115.n38.z38.setgate.setnet.co.yu (Srdjan Stanisic)
Subject: Re: .PCX file reader
Date: Wed, 25 May 1994 17:26:00
-=> Quoting Braslav Sesartic to Srdjan Stanisic <=-
BS> Problem i jeste u tome sto mi treba unit za citanje PCX slika u 16
BS> boja do rezolucije 640x480. Samo dekodiranje linije nije problem, ali
BS> kako dalje? Kako iz paskala da od 4 RGB komponente (3+intenzitet)
BS> dobijem piksel odgovarajuce boje? (BTW "Tehnical Reference" imam).
Ja imam ZSoft PCX Technical Reference. Stvar je dobra. Probacu da
razbijem to u nekoliko poruka i posaljem ti na NET. S obzirom da mi
se blizi ispitni rok ne mogu ti reci kada ce to biti, ali ces
svakako dobiti.
BS> Zanimaju me sve "egzoticne" stvari vezane za paskal. Samo reci kako
BS> da dodjem do toga.
I ovo ostalo cu ti razbiti u poruke i slati preko NET.PASCAL.
Medjutim, to ce verovatno biti tek u julu, jer pre necu moci.
BS> BTW Skoro da preskocim poruku misleci da je za nekog drugog jer si mi
BS> pogresio i ime i prezime. :)
Izvini na gresci, ali kucao sam malo brze tekst i mora da sam
slucajno pretumbao tvoje ime.
Strajder
... Najveca brzina u svemiru je Brzina Gluposti!
* Origin: *TAURUNUM BBS +381 11 2354-253, 22 do 07* (38:38/115.1)
pascal.137mmitrovic,
Ů█▀█Ţ kako ga popunjavam, tako iskoriscavam memoriju. Znaci, iako je
Ů█▀█Ţ taj niz definisan na velicinu 500Kb, on, u jednom trenutku, ne
Ů█▀█Ţ mora zauzitati ni bajta memorije? Jesam li dorbro shvatio? :)
U globalu, samo što jedna struktura (bar za sada) u Pascalu
može biti max 64k (tj. 64k-16b), usled segmentnih ograničenja
starijih procesora. :(
pascal.138mmitrovic,
Ů█▀█Ţ Evo pripremio sam NG za Turbo Vision za Pascal 6.0. Probajte ga pa ako
Ů█▀█Ţ ima nekih zamerki ili sugestija javljajte. Inače izvučen je iz
Lepo urađeno, nema šta.
Jedino što je malo verovatno da neko danas radi sa komandnim
prevodiocem i externim editorom, pa da ima potrebu za NG helpom.
BP IDE već pruža opširan help.
Opet da kažem, da ne ispadnem čangrizalo, lepo urađena stvar,
samo napred.
pascal.139dejanr,
>> > Zauzima se tacno onoliko prostora koliko je potrebno, i to
>> > uopste (prakticno ni za bajt) ne tereti data segment u kome
>> > su promenljive.
>>
>> Evo, da probam da shvatim. Moj PC ima 640Kb osnovne memorije.
>> Od toga, moj pascal progaram rezervise za sebe 64Kb za podatke.
>> Ja definisem neki niz koji treba da se smesti _van_ data
>> segmenta, koji, ubr, moze biti velicine do oko 500Kb. Onda
>> popunjavam taj niz delimicno (znaci, ne popunim svih 500Kb), i
>> kako ga popunjavam, tako iskoriscavam memoriju. Znaci, iako je
>> taj niz definisan na velicinu 500Kb, on, u jednom trenutku, ne
>> mora zauzitati ni bajta memorije? Jesam li dorbro shvatio? :)
Pa... osnovu si shvatio, ali ne baš sve pojedinosti ;)
Prvo, ni jedna struktura u Turbo Pascalu ne može da bude veća od 64 K.
Znači, nema nikakve šanse da jedan niz zauzme 500 K. Međutim, možeš
da definišeš više nizova po (nešto manje od) 64 K, i tako popuniš
čitavu memoriju.
Drugo, metod koji sam opisao, sa getmem, alocira prostor za niz. Dakle,
u trenutku kada se getmem izvršava, moraš da alociraš onoliko prostora
koliko će niz najviše zauzimati. Prednost u odnosu na statičko
dimenzionisanje (var x: array [1..1000] of byte itd) je što ono 'n' iz
getmem (niz, n) može da se učita ili nekako drugačije preračuna. Drugo,
kada niz više nije potreban, možeš sa freemem (ili tako nešto ;)
oslobodiš zauzetu memoriju.
Može se koristiti i metod dinamičkog rasta niza, dakle alociranja
prostora element po element, uz ukazatelje. Komanda je new(ime).
Ali, ja radije koristim getmem, nekako mnogo lakše ide :)
>> > PS Preporucujem i citanje dokumentacije za TP,
>>
>> Ima li neko ovde kupljen Turbo PASCAL?
Mnogi... :)
>> Imam umetak, ali mi neije bas najjasnije. Za pocetakm sta
>> znace ona 2 zareza (type art_ptr = ,,artikl)?
Nisu dva zareza, nego ^ - oznaka za pointer. Dakle, art_ptr je
pointer na artikl.
pascal.140postmast,
From: broker@setgate.setnet.co.yu (Predrag Supurovic)
Subject: pascal
Date: Tue, 31 May 1994 23:26:02
To: "Ognjen Blagojevic" <ognjen@sezam.UUCP>
"B> I, nek neko najzad objasni sta su to pointeri, ne kapiram
"B> nista... :(
Normalno da ne kapiras kad to niko i ne objasnjava. Svi napisu neki
kod koji treba da posluzi kao primer, a koji, naravno, nije
prokomentarisan.
U stvari, da bi ti se objasnilo sta su pointeri, potrebno je mnogo
objasnjavanja, a i nesto crtanja...
Preporucujem ti da ipak prvo nadjes neku knjigu u kojoj je to objasnjeno.
Jedna, za koju sigurno znam da je na pristupacan nacin, sa sve grafickim
prikazom i objasnjenim primerima objasnjen pojam pointera je:
TURBO PASCAL sa grafickim aplikacijama, Armando Jorno,
Tehnicka Knjiga, 1990, II izdanje, strana 144
Nadam se da sam bio od pomoci,
Broker
... BR> Ups. Opet ostadoh bez tagova...
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.141postmast,
From: Kiril.Vidimce@f108.n108.z38.setgate.setnet.co.yu (Kiril Vidimce)
Subject: .Pcx File Reader
Date: Wed, 01 Jun 1994 00:47:02
>> BS> Problem i jeste u tome sto mi treba unit za citanje PCX slika u 16
>> BS> boja do rezolucije 640x480. Samo dekodiranje linije nije problem, ali
>> BS> kako dalje? Kako iz paskala da od 4 RGB komponente (3+intenzitet)
>> BS> dobijem piksel odgovarajuce boje? (BTW "Tehnical Reference" imam).
>Type
> Pal_Array = Array [ 0..255, RED..BLUE ] Of Byte;
> Ega_Array = Array [ 0..16 ] Of Byte;
Ups. Zaboraviv na deklaracijata na RED, GREEN, BLUE.
Const
RED = 0;
GREEN = 1;
BLUE = 2;
KiRe ViDiMCCe
* Origin: Struga BBS +389 96 74074 * Macedonia * SETNet: (38:108/108)
pascal.142kenza,
(;>> Da li bi neko mogao da mi malo objasni pojam pointera.
Pazi ovako: (oni koji znaju neka idu dalje :)
Pointer (ili pokazivac) je nesto slicno tvom telefonskom
imeniku. Tamo imas zapisano ime nekog druga (ili zenske ;) i
pored njega njegovu ili njenu adresu. Pointer isto tako ima
zapisanu u sebi adresu onoga na sta pokazuje. Znaci on odredjuje
polozaj nekog podatka u memoriji, kao sto adresa odredjuje
polozaj tvog druga u gradu :)
Moguce je da napravis pointere na slogove, kao i na proste
tipove. To je to ;)
p.s. Izvinjavam se na prostoti i slikovitosti odgovora. :)
pascal.143inedeljkovic,
>>> BS> Problem i jeste u tome sto mi treba unit za citanje PCX slika
>>> BS> u 16 boja do rezolucije 640x480. Samo dekodiranje linije nije
>> Type
>> Pal_Array = Array Š 0..255, RED..BLUE Ć Of Byte;
>> Ega_Array = Array Š 0..16 Ć Of Byte;
> Ups. Zaboraviv na deklaracijata na RED, GREEN, BLUE.
Evo ga čitav PCX header. Ja sam ovakav header uspešno koristio
u programčetu koje je menjalo koordinate položaja slike na ekranu upisane
u xmin, ymin, xmax i ymax. Inače za prikazivanje PCX-ova u programu koji
sada trenutno radim, koristim objektni unit pisan za TP 6.0 koji upravo
prikazuje slike do 640x480 sa 16 boja. Mana ovog unita je što ne može da
prikaže sliku veću od 64K (nemam njegov sors, inače... ;)), ali ja i ne
koristim veće slike pa mi za sada i ne smeta. Međutim, imam sors drugog
unita koji bi takođe trebao da radi gore navedenu stvar, ali ne radi, a
ja opet sada nemam ni sekund vremena (matura, prijemni... :((( ) da vidim
šta tu ne valja. Dakle, ako nekog interesuje, mogu i ovde da ga bacim,
pa ko želi da proba...
Sledi header:
const
...
RED = 0;
GREEN = 1;
BLUE = 2;
...
pcx_header = record
Manufacturer: byte; š Always 10 for PCX file ć
Version: byte; š 2 - old PCX - no palette (not used anymore),
3 - no palette,
4 - Microsoft Windows - no palette (only in
old files, new Windows version uses 3),
5 - with palette ć
Encoding: byte; š 1 is PCX, it is possible that we may add
additional encoding methods in the future ć
Bits_per_pixel: byte; š Number of bits to represent a pixel
(per plane) - 1, 2, 4, or 8 ć
Xmin: integer; š Image window dimensions (inclusive) ć
Ymin: integer; š Xmin, Ymin are usually zero (not always) ć
Xmax: integer;
Ymax: integer;
Hdpi: integer; š Resolution of image (dots per inch) ć
Vdpi: integer; š Set to scanner resolution - 300 is default ć
ColorMap: array Š0..15, RED..BLUEĆ of byte;
š RGB palette data (16 colors or less)
256 color palette is appended to end of file ć
Reserved: byte; š (used to contain video mode)
now it is ignored - just set to zero ć
Nplanes: byte; š Number of planes ć
Bytes_per_line_per_plane: integer; š Number of bytes to allocate
for a scanline plane.
MUST be an an EVEN number!
Do NOT calculate from Xmax-Xmin! ć
PaletteInfo: integer; š 1 = black & white or color image,
2 = grayscale image - ignored in PB4, PB4+
palette must also be set to shades of gray! ć
HscreenSize: integer; š added for PC Paintbrush IV Plus ver 1.0, ć
VscreenSize: integer; š PC Paintbrush IV ver 1.02 (and later) ć
š I know it is tempting to use these fields
to determine what video mode should be used
to display the image - but it is NOT
recommended since the fields will probably
just contain garbage. It is better to have
the user install for the graphics mode he
wants to use... ć
Filler: array Š74..127Ć of byte; š Just set to zeros ć
end;
To je to :).
Pozdrav, Igor...
pascal.144kenza,
(;> Moze se koristiti i metod dinamickog rasta niza, dakle alociranja
(;> prostora element po element, uz ukazatelje. Komanda je new(ime).
Da li new koristi samo konvencionalnu memoriju ili i
ems/xms?
pascal.145dejanr,
>> Da li new koristi samo konvencionalnu memoriju ili i
>> ems/xms?
new (i getmem) koriste konvencionalnu memoriju. Ima u direktorijumu
PASCAL par unit-a za korišćenje proširene memorije, uz različit stepen
komfora.
Tako je, bar, na Turbo Pascalu. Borland Pascal omogućava da se koristi
čitava memorija računara (mislim negde do 16 megabajta) ali svaka
struktura i dalje mora da bude manja od 64 K. Dakle, da bi iskoristio
4 megabajta morao bi da deklarišeš šezdesetak nizova.
pascal.146omega,
Ţ Da li new koristi samo konvencionalnu memoriju ili i ems/xms?
Kamo puste srece da koristi ems/xms :((((
pascal.147postmast,
From: alenin@setgate.setnet.co.yu (Aleksandar Ninkovic)
Subject: pascal
Date: Thu, 02 Jun 1994 09:15:03
*> Evo pripremio sam NG za Turbo Vision za Pascal 6.0. Probajte
*> ga pa ako
Da li bi mogao :) ako ti nije tesko ,da upakujes sa UUncode i posaljes ga na
moju adresu kao poruku :) ...Rado bih ga stavio na SETNet :)
Pozdrav
Aleksandar
alenin@setgate.setnet.co.yu
* Origin: SETNet:INFOSYS*informacije+usluge*BG*011-1768526* (38:103/114)
pascal.148postmast,
From: Kiril.Vidimce@f108.n108.z38.setgate.setnet.co.yu (Kiril Vidimce)
Subject: Pascal
Date: Thu, 02 Jun 1994 03:25:03
>TURBO PASCAL sa grafickim aplikacijama, Armando Jorno,
>Tehnicka Knjiga, 1990, II izdanje, strana 144
Ako e ovaa istata kniga koja i jas ja imav na vremeto (ne
se sekkavam dali besse I ili II izdanie) - knigata i ne
e bass mnogu dobro napissana - osobeno besse smessno ona
'graficckim aplikacijama', bidejkki primerite se za vo
TP 3.00 (turtle graphics).
Za zzal, ne se sekkavam na iminnata na avtorite na knigata
'Data structures using Pascal' - kniga koja e odliccen
priruccnik meggu drugoto i za pointer-i. Vo knigata se
obraboteni i nizi, matrici, pointeri-i, listi, prebaruvanne,
sortiranne, datoteki itn...
KiRe ViDiMCCe
*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
= Kiril Vidimce * kvidimce@a1.news.mk = "The best thing in =
= Bojmija 8/1/24 = vkire@lotus.mk * learning is =
= 91000 Skopje * vkire@cerera.uni.mk = understanding" =
= Republic of Macedonia = vkire@ereb.uni.mk * ------------- =
= Tel: +389-91-411-125 * vidik@ezinfo.ethz.ch = - L. Infeld =
*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
* Origin: Struga BBS +389 96 74074 * Macedonia * SETNet: (38:108/108)
pascal.149postmast,
From: Kiril.Vidimce@f108.n108.z38.setgate.setnet.co.yu (Kiril Vidimce)
Subject: Pascal Rutine 1/3
Date: Thu, 02 Jun 1994 03:25:05
>Moze li me neko uputiti na pogodan alat (biblioteke) kao i literaturu
>koja se bavi manipulacijom memorijom (expanded, extended, swap-ovanje i sl.)
>Zgodnije mi je ako je za PAscal ali ni za C nije na odmet.
Eve edno zgodno primercce, a za poozbilna rabota ti ja preporaccuvam
bibliotekata SNIPPETS. Ima se' i sessto vo nea - a najccesto mnogu
korisno. :)
--------------------- EMS.PAS -----------------------
Unit EMS;
{-------------------------------------------------------------------}
{ This program allows you to define any array in the Expand Memory }
{ and access the array directly. You may freely distribute it or }
{ use it for any purpose, provided this notice is attached with it. }
{ I would be very happy if you intend to use it in your program. }
{ Please let me know if you like it. }
{ }
{ InterNet: }
{ jialong@neuro.informatik.uni-ulm.de }
{ }
{ Home address: }
{ Hof Str. 22 }
{ 7906 Blaustein }
{ Germany }
{ }
{-------------------------------------------------------------------}
Interface
Const
PAGESIZE = 16384; {bytes}
Type
{--------------------------------------------------------------}
{ You can modify BaseType to meet your need }
{--------------------------------------------------------------}
ByteArrayType = Array [1..(65535 div Sizeof(Byte))] of Byte;
IntArrayType = Array [1..(65535 div Sizeof(Integer))] of Integer;
RealArrayType = Array [1..(65535 div Sizeof(Real))] of Real;
{--------------------------------------------------------------}
{ The following define a basic EMS object }
{--------------------------------------------------------------}
EMSArray=Object
Ems_Handle,
Page_Frame_Address,
Pages_Needed : Word;
NormalPtr : Pointer;
ByteArry : ^ByteArrayType;
IntArry : ^IntArrayType;
RealArry : ^RealArrayType;
{--------------------------------------------------------------}
{ The followings are all methods you can call }
{--------------------------------------------------------------}
Function Ems_Installed : Boolean;
Function Pages_Available : Word;
Procedure Alloc(Page_Requested: Word);
Procedure MapIn(Logical_Page_No, Physical_Page_No: Word);
Procedure Release;
End;
Var
{--------------------------------------------------------------}
{ Global varible, You can check it after calling a function }
{--------------------------------------------------------------}
EmsError : Integer;
Implementation
Uses Dos;
Const
EMM_INT = $67;
DOS_Int = $21;
GET_PAGE_FRAME = $41;
GET_UNALLOCATED_PAGE_COUNT= $42;
ALLOCATE_PAGES = $43;
MAP_PAGES = $44;
DEALLOCATE_PAGES = $45;
GET_VERSION = $46;
STATUS_OK = 0;
{--------------------------------------------------------------}
{ The function Emm_Installed checks to see if the Expanded }
{ Memory Manager (EMM) is loaded in memory. It does this by }
{ looking for the string 'EMMXXXX0', which should be located }
{ at 10 bytes from the beginning of the code segment pointed }
{ to by the EMM interrupt, 67h. }
{--------------------------------------------------------------}
Function EMSArray.Ems_installed : Boolean;
Var
Emm_Device_Name : string[8];
Int_67_Device_Name : string[8];
Position : integer;
Regs : registers;
Begin
Int_67_Device_Name := '';
Emm_Device_Name := 'EMMXXXX0';
with Regs do
Begin
{------------------------------------------------------}
{ Get the code segment pointed to by interrupt 67h, }
{ the EMM interrupt by using DOS function 35h. }
{ (get interrupt vector) }
{------------------------------------------------------}
AH := $35;
AL := EMM_INT;
Intr (DOS_int,Regs);
For Position := 0 to 7 do
Int_67_Device_Name :=
Int_67_Device_Name+Chr (mem[ES:Position+$0A]);
{------------------------------------------------------}
{ If the string is the EMM manager signature, }
{ 'EMMXXXX0', then EMM is installed and ready for }
{ use. If not, then EMM is not present. }
{------------------------------------------------------}
If Int_67_Device_Name = Emm_Device_Name
then Ems_Installed := True
Else Ems_Installed := False
end; { with Regs do }
End;
{--------------------------------------------------------------}
{ This function returns the pages number that are available }
{ for use. After calling Intr, BX contains currrently }
{ unallocated pages, DS contains total pages in the system }
{--------------------------------------------------------------}
Function EMSArray.Pages_Available : Word;
Var
Regs: Registers;
Begin
With Regs Do
Begin
AH := Get_Unallocated_Page_Count;
intr (EMM_INT, Regs);
Pages_Available := BX;
>>> Continued to next message
* Origin: Struga BBS +389 96 74074 * Macedonia * SETNet: (38:108/108)
pascal.150postmast,
From: Kiril.Vidimce@f108.n108.z38.setgate.setnet.co.yu (Kiril Vidimce)
Subject: Pascal Rutine 2/3
Date: Thu, 02 Jun 1994 03:25:06
>>> Continued from previous message
EmsError := AH;
End;
End;
{--------------------------------------------------------------}
{--------------------------------------------------------------}
Procedure EMSArray.Alloc(Page_Requested: Word);
Var
Regs: Registers;
Begin
With Regs do
Begin
{------------------------------------------------------}
{ Get the page frame segment address from EMM. }
{ AH = get page frame segment function }
{------------------------------------------------------}
AH := Get_Page_Frame;
intr (EMM_INT,Regs);
{------------------------------------------------------}
{ BX = page frame segment address }
{ AH = status }
{------------------------------------------------------}
Page_Frame_Address := BX;
EmsError := AH;
{------------------------------------------------------}
{ Allocate the specified number of pages from EMM. }
{ AH = allocate pages function. }
{ BX = number of pages to allocate. }
{------------------------------------------------------}
Pages_Needed:= Page_Requested;
AH := Allocate_Pages;
BX := Pages_Needed;
intr (EMM_INT,Regs);
Ems_Handle := DX;
EmsError := AH;
End; {With Regs Do}
End;
{--------------------------------------------------------------}
{ This function maps a logical page allocated by the }
{ Allocate_Expanded_Memory_Pages function into one of the }
{ four physical pages. }
{--------------------------------------------------------------}
Procedure EMSArray.MapIn(Logical_Page_No, Physical_Page_No : Word);
Var
Regs: Registers;
Begin
With Regs do
Begin
{------------------------------------------------------}
{ Map a logical page at physical_page_No }
{ AH = map page function }
{ DX = handle }
{ BX = logical page number }
{ AL = physical page number }
{------------------------------------------------------}
AH := Map_Pages;
DX := Ems_Handle;
BX := Logical_Page_No;
AL := Physical_Page_No;
Intr (EMM_INT, Regs);
EmsError := AH;
end; { with Regs do }
{------------------------------------------------------}
{ Making array pointer point to this physical pages }
{ For convience, Different pointer points to same }
{ address. User can add his own pointer type and }
{ add a line here. }
{------------------------------------------------------}
NormalPtr:= Ptr(Page_Frame_Address, Physical_Page_No * PAGESIZE);
ByteArry := Ptr(Page_Frame_Address, Physical_Page_No * PAGESIZE);
IntArry := Ptr(Page_Frame_Address, Physical_Page_No * PAGESIZE);
RealArry := Ptr(Page_Frame_Address, Physical_Page_No * PAGESIZE);
{ **** add other pointer here *****}
end; { Function Map_Expanded_Memory_Pages }
{--------------------------------------------------------------}
{ This function releases the EMM memory pages allocated to }
{ us, back to the EMM memory pool. }
{--------------------------------------------------------------}
Procedure EMSArray.Release;
Var
Regs: Registers;
Begin
with Regs do
Begin
{------------------------------------------------------}
{ Deallocate the pages allocated to an EMM handle. }
{ AH = deallocate pages function }
{ DX = EMM handle }
{------------------------------------------------------}
AH := DEALLOCATE_PAGES;
DX := Ems_Handle;
Intr (EMM_INT,Regs);
EmsError := AH;
end; { with Regs do }
end; { Function Deallocate_Expanded_Memory_Pages }
End.
----------------- EMS.PAS ------------------------
================= EMSTEST.PAS ====================
Program Test_EMS_Unit;
{----------------------------------------------------------------}
{ This simple program test whether EMM exists, if it does exists,}
{ all pages are allocated to create the largest possiable array }
{ in EMS, then it will be written and read in three array types }
{----------------------------------------------------------------}
Uses EMS;
Var
A : EMSArray;
Pages,
KiloByte,
EachPage,
EachElement,
ElementNum : Word;
Procedure ReadAndWrite(ArrayType: Byte);
Var
VerifyFail : Boolean;
Begin
{----------------------------------}
{ Write and Read each page in }
{ in ArrayType: }
{ ArrayType = 1 Byte Array }
{ ArrayType = 2 Integer Array }
{ ArrayType = 3 Real Array }
{----------------------------------}
Case ArrayType of
1: ElementNum := PAGESIZE DIV Sizeof(Byte);
2: ElementNum := PAGESIZE DIV Sizeof(Integer);
>>> Continued to next message
* Origin: Struga BBS +389 96 74074 * Macedonia * SETNet: (38:108/108)
pascal.151postmast,
From: Kiril.Vidimce@f108.n108.z38.setgate.setnet.co.yu (Kiril Vidimce)
Subject: Pascal Rutine 3/3
Date: Thu, 02 Jun 1994 03:25:07
>>> Continued from previous message
3: ElementNum := PAGESIZE DIV Sizeof(Real);
End;
WriteLn('Each element of the array is writing ...');
For EachPage := 0 to Pages-1 Do
Begin
{ Map in a logical page to physical page 0 }
A.MapIn(EachPage, 0);
For EachElement := 1 To ElementNum Do
Case ArrayType of
1: A.ByteArry^[ EachElement ] := 10;
2: A.IntArry^[ EachElement ] := 25;
3: A.RealArry^[ EachElement ] := 3.5;
End;
End;
WriteLn('Reading back each element of array and verifying...');
For EachPage := 0 to Pages-1 Do
Begin
{ Map in a logical page to physical page 0 }
A.MapIn(EachPage, 0);
For EachElement := 1 To ElementNum Do
Case ArrayType of
1: VerifyFail := (A.ByteArry^[ EachElement ] <> 10);
2: VerifyFail := (A.IntArry^[ EachElement ] <> 25);
3: VerifyFail := (A.RealArry^[ EachElement ] <> 3.5);
End;
If VerifyFail Then
Begin
WriteLn('Verify failed!');
Halt(1);
End;
End;
End; { **** ReadAndWrite Procedure **** }
Begin
If A.Ems_Installed Then
Begin
Pages:=A.Pages_Available;
KiloByte := Pages * 16;
WriteLn('There are ', Pages, ' pages expand memory, That is ',
KiloByte, ' Kb!');
A.Alloc(Pages);
{----------------------------------}
{ If There are some probles, Exit }
{----------------------------------}
If EmsError<>0 Then
Begin
WriteLn ('Alloc ', Pages, ' Pages Error!' );
A.Release;
Halt(1);
End;
WriteLn;
WriteLn('Read and Write as *Integer* Array');
ReadAndWrite(2);
WriteLn('Verify Passed, Good!');
WriteLn;
WriteLn('Read and Write as *Real* Array');
ReadAndWrite(3);
WriteLn('Verify Passed, Good!');
WriteLn;
WriteLn('Read and Write as *Byte* Array');
ReadAndWrite(1);
WriteLn('Verify Passed, Good!');
A.Release
End
Else
Begin
WriteLn('EMM does not exists');
Halt(1);
End;
End.
================= EMSTEST.PAS ====================
KiRe ViDiMCCe
*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
= Kiril Vidimce * kvidimce@a1.news.mk = "The best thing in =
= Bojmija 8/1/24 = vkire@lotus.mk * learning is =
= 91000 Skopje * vkire@cerera.uni.mk = understanding" =
= Republic of Macedonia = vkire@ereb.uni.mk * ------------- =
= Tel: +389-91-411-125 * vidik@ezinfo.ethz.ch = - L. Infeld =
*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*
* Origin: Struga BBS +389 96 74074 * Macedonia * SETNet: (38:108/108)
pascal.152markom,
:: Kamo puste srece da koristi ems/xms :((((
Pa sa overlay jedinicom možeš da koristiš EMS :> Ali naravno, nije to to :((
pascal.153dtadic,
Uz poruku se nalazi datoteka sa nekoliko unita za kompresiju podataka.
Za sve unite je dat sors:
**********************************************************************
-------- Presskit Version 1.0
-------- May 8th - 1993
-------- Douglas P. Webb
-------- dwebb@binkley.cs.mcgill.ca
I have for several years had an application that required the very best
compression. The program is written in Turbo Pascal. Naturally almost
all the code I've come across is written in C, so I've ported as much as
I could. Of the code presented here, only the DOUGPACK unit is wholely
my own original code, the rest was ported/wrapped to allow it's use in
a Turbo Pascal. I figured others might like to try some of it out.
The code is all donated to the public domain, although some of it may
be under the patent cloud. There may be bugs in the implementations
(although I don't think so) so use them at your own risk.
If you make a notable improvement in the code, please mail me a copy.
LZH
The LZH unit implements a fairly faithful port of an algorithm that
was written in C by Haruyasu Yoshizaki and Haruhiko Okumura.
The Documentation on how to use the unit is pretty goodm the source
code is pretty much undocumented.
Included is a simple 1 file compression program as a demonstration
on how to use the LZH unit.
LZW (DOUGPACK)
The DOUGPACK unit implements my own interpretation of how the LZW
algorithm should be implemented. I take all the credit/blame for
the implementation and any bugs it may contain.
The Documentation on how to use the unit is pretty good the source
code has some documentation but is pretty convoluted.
Included is a simple 1 file compression program as a demonstration
on how to use this unit.
It should be noted that the LZW algorithm is patented, so use of this
algorithm in a commercial program might not be a good idea.
LZSS
The LZSS program implements a turbo pascal wrapper I've placed around
a very nice (and fast) implementation of the LZ77 algorithm submitted
to the DR DOBBS compression contest a few years back by Andy Tam.
The algorithm is implemented in the context of a stand-alone file
compression utility, which can be used to compress/decompress files
one at a time.
It should be noted that the plain LZ77 algorithm is unpatented, so
using this code in a commercial application should be OK.
SIXPACK
The SIXPACK program implements a faithful port from C of a unique
compression algorithm submitted to the DR DOBBS compression contest
a few years back by Philip G. Gage.
The algorithm is implemented in the context of a stand-alone file
compression utility, which can be used to compress/decompress files
one at a time.
VITTER
This is a implementation of the dynamic Huffman coding algorithm
presented by Jeffrey Scott Vitter in ACM Transactions on Mathematical
Software, Vol, 15, June 1989, p 158, and described in Journal of the
ACM, Vol. 34, October 1987, p 825.
The algorithm is implemented in the context of a stand-alone file
compression utility, which can be used to compress/decompress files
one at a time. This program serves only to illustrate the use of
the algorithm.
Douglas P. Webb
dwebb@binkley.cs.mcgill.ca
May 8th 1993
************************************************************************
preskit2.zippascal.155omega,
Ţ Pa sa overlay jedinicom mozes da koristis EMS :> Ali naravno, nije to to
Da, to stvarno nema veze :( Nego, sad mi pade na pamet, je l' postoji
nacin da se XMS/EMS koristi kao produzetak heap-a?
pascal.156dejanr,
>> Nego, sad mi pade na pamet, je l' postoji
>> nacin da se XMS/EMS koristi kao produzetak heap-a?
Ne baš direktno, ali probaj recimo xmm12.zip iz direktorijuma PASCAL,
a pogledaj i razne unit-e kojih je bilo po PC.PROG.* konferencijama,
u temi pascal.
Ili razmišljaj o prelasku na BP 7.
pascal.157markom,
:: Da, to stvarno nema veze :( Nego, sad mi pade na pamet, je l' postoji
:: nacin da se XMS/EMS koristi kao produzetak heap-a?
Koliko ja znam, nema, ali ako neko zna foru (pointer na TPU :>), bio bih mu
večno zahvalan :)
pascal.158ognjen,
)-> >> Ima li neko ovde kupljen Turbo PASCAL?
)-> Mnogi... :)
A moze li da mi da neku od knjizica da "pogledam"?
)-> Nisu dva zareza, nego ^ - oznaka za pointer. Dakle, art_ptr
)-> je pointer na artikl.
Onda je u umetku stamparska greska. :( Evo sad da midimo da li
sam dobro razumeo pintere. Oni sluze da u memoriju (van 64Kb data
segmenta) strpamo neku promenjljivu (bilo string, lonint, ili
neki niz (mada prvo dvoje bas i nema puno smisla)), i onda u
pointerima cuvamo adresu gde se u memoriji nalazi taj niz (ili
sta vec drugo). Tako da kada se obracamo pointeru, on se ustvari
obraca memoriji van data segmenta, tako da smo fakticki prosirili
data segment. Da li sam shvatio? :)
pascal.159ognjen,
)-> Moguce je da napravis pointere na slogove, kao i na proste
)-> tipove. To je to ;)
)-> p.s. Izvinjavam se na prostoti i slikovitosti odgovora. :)
Znaci, pointeri sluze da bi smo prekoracili data segment?
Bezveze. Zasto, jednostavno, nisu povecali data segment na 16Mb,
pa da se ne mucim sa pointerima?
pascal.160dejanr,
>> Oni sluze da u memoriju (van 64Kb data segmenta) strpamo neku
>> promenjljivu (bilo string, lonint, ili neki niz (mada prvo
>> dvoje bas i nema puno smisla)), i onda u pointerima cuvamo
>> adresu gde se u memoriji nalazi taj niz (ili sta vec drugo).
>> Tako da kada se obracamo pointeru, on se ustvari obraca memoriji
>> van data segmenta, tako da smo fakticki prosirili data segment.
>> Da li sam shvatio? :)
Shvatio si o čemu smo ovde pisali, i informacija je uglavnom korektna.
Sve to nije inicijalna svrha pointera, niti su oni nastali zato što
PC ima data segment, pa treba nekako "proviriti" u ostatak memorije.
Nastali su pre PC-ja, sa idejom dinamičke alokacije memorije. Dakle,
ne moraš unapred da odrediš koliki će koji niz (ili struktura) biti,
nego kada ti zatreba, alociraš potrebnu memoriju, radiš šta treba i
najzad vratiš memoriju "u fond".
Međutim, kod TP-a se pointeri uglavnom koriste za ono što si napisao,
ili ih bar ja uglavnom za to koristim.
pascal.161asterix,
1. Da li se rekurzivni pozivi funkcija smeštaju na stek ?
2. Da li postoji način da se odredi koliko mesta zauzima svaki
rekurzivni poziv ?
3. Da li postoji način da se spreči stack overflow prevelikim
brojem poziva, odnosno da li se nekako u te svrhe može koristiti
memorija iznad 1 MB ? Govorimo o BP 7.
pascal.162goxx,
■ Znaci, pointeri sluze da bi smo prekoracili data segment?
■ Bezveze. Zasto, jednostavno, nisu povecali data segment na 16Mb,
Nisam odavno radio Pascal, al ajde da i ja kažem neku.
Ne. Pointeri služe za dinamičku alokaciju memorije. Virt sigurno nije
razmišljao o segmentima memorije PC-a kad je pravio Pascal.
Zamisli da treba da u memoriju učitaš najviše do 1000 slogova neke
datoteke. Možda ih ima 5, a možda i 1000. To znači da bi statički morao
da rezervišeš prostor za svih 1000. Ako dinamički alociraš memoriju
dovoljno je da imaš pointer (pokazivač, kazalo :) i samo se za njega
rezerviše memorija (statički), a zatim "zagrabiš" onoliko memorije
koliko ti treba za određen broj slogova. Po završetku memoriju oslobodiš
i ponovo je imaš za neki drugi proces.
Goran
pascal.164pedjak,
> 1. Da li se rekurzivni pozivi funkcija smeštaju na stek ?
Da.
> 2. Da li postoji način da se odredi koliko mesta zauzima svaki
> rekurzivni poziv ?
Postoji, sa greškom od plus minus nekoliko bajtova. Prilikom svakog
pozivanja funkcija na steku kreira prostor za lokalne promenljive,
zatim na stek se smeštaju i parametri funkcije i još par bajtova,
kao što je adresa povratka. Znači, postupak bi bio sledeći:
Prebrojiš koliko ti bajtova zauzimaju parametri funkcije:
byte, shortint, boolean
char - 1 bajt
integer, word - 2 bajta
longint, parametri koji se prenose
kao Var, pointeri - 4 bajta
stringovi - deklarisana dužina + 1 bajta
Na ovo se sada još dodaje 4 ili 2 bajta, u zavisnosti od toga da li
se radi pozivanje funkcije, koja je u drugom junitu ili ne, ili ako
forsiraš daleke pozive. Otrprilike bi to bilo to.
> 3. Da li postoji način da se spreči stack overflow prevelikim
> brojem poziva, odnosno da li se nekako u te svrhe može koristiti
> memorija iznad 1 MB ? Govorimo o BP 7.
Za BP nisam siguran, tj. ne znam koliki je stek u zaštićenom
režimu, ali svakako je ograničen, tako da granica postoji. Za
realan mod ograničenje je 64k, a to je sasvim dovoljno.
Moraš sam proceniti da koje dubine smeš da ideš...
pascal.165pedjak,
> Da, to stvarno nema veze :( Nego, sad mi pade na pamet, je l'
> postoji nacin da se XMS/EMS koristi kao produzetak heap-a?
UMB_HEAP.DOC
Documentation for UMB_HEAP.TPU
(C) Copyright 1992, Brian D. Webb & P-Machinery
Release 1.1, January 18, 1992
UMB_HEAP is a programing tool for extending the Turbo Pascal 6.0
dynamic heap into Upper Memory Blocks (UMB). By using UMB_HEAP,
you can give your programs up to 200K more RAM to work with.
u_heap.zippascal.166omega,
Ţ>> Nego, sad mi pade na pamet, je l' postoji
Ţ>> nacin da se XMS/EMS koristi kao produzetak heap-a?
Ţ
Ţ Ne bas direktno, ali probaj recimo xmm12.zip iz direktorijuma PASCAL,
Ţ a pogledaj i razne unit-e kojih je bilo po PC.PROG.* konferencijama,
Ţ u temi pascal.
Pogledao sam, ali nije to to. :( Naime, pri radu sa dinamickim varijablama
(new procedura i sl.) nije mi mnogo od pomoci getmem...
Ţ Ili razmisljaj o prelasku na BP 7.
Znaci tamo je to omoguceno pod dos-om? Ali onda se odricemo 286? I da li
se exe mnogo povecava?
pascal.167omega,
Ţ Bezveze. Zasto, jednostavno, nisu povecali data segment na 16Mb,
Ţ pa da se ne mucim sa pointerima?
Onda predji na C. Tamo mozes 'ladno da definises niz od 500kb bez
problema i bez pointera :)
pascal.168dejanr,
>> Onda predji na C. Tamo mozes 'ladno da definises niz od 500kb bez
>> problema i bez pointera :)
Da, u raznim High C-ovima itd. U klasičnim DOS C-ovima... može... ali
ne baš bez problema, i svakako ne bez značajnog gubitka na brzini.
DOS ima 64 K / 640 K limite, i nije ih lako "preskočiti".
pascal.169pedjak,
> Na ovo se sada još dodaje 4 ili 2 bajta, u zavisnosti od toga da li
> se radi pozivanje funkcije, koja je u drugom junitu ili ne, ili ako
> forsiraš daleke pozive. Otrprilike bi to bilo to.
Ops! Zaboravih da još dodam, ne sve ovo se još dodaje broj bajtova
alociran za lokalne promenljive, po istoj šemi kao i za parametre
funkcije.
pascal.170markom,
:: Bezveze. Zasto, jednostavno, nisu povecali data segment na 16Mb,
:: pa da se ne mucim sa pointerima?
Pa ti lepo pređi na UNIX :)))
pascal.171markom,
:: 1. Da li se rekurzivni pozivi funkcija smeštaju na stek ?
Valjda, jer ako se mnogo puta ponavlja -- Stack Overflow :(
:: 3. Da li postoji način da se spreči stack overflow prevelikim
:: brojem poziva, odnosno da li se nekako u te svrhe može koristiti
:: memorija iznad 1 MB ? Govorimo o BP 7.
Ne znam za preko 1 Mb, ali da li si probao $M direktivu ?
Ona služi da definiše veličinu steka, minimalnu i maksimalnu veličinu heap-a.
{$M 1024,0,0}
Zauzime 1Kb za stack i minimalna veličina heap-a je 0K, kao i maksimalna ...
pascal.172omega,
Ţ> Da, to stvarno nema veze :( Nego, sad mi pade na pamet, je l'
Ţ> postoji nacin da se XMS/EMS koristi kao produzetak heap-a?
Ţ UMB_HEAP is a programing tool for extending the Turbo Pascal 6.0
Ţ dynamic heap into Upper Memory Blocks (UMB). By using UMB_HEAP,
Ţ you can give your programs up to 200K more RAM to work with.
Za ovo sam znao i ranije, ali to ipak nije to. Ovo koristi samo UMB,
a ne celu EMS :(. I drugo, neki ortak mi je prijavio da se blokira sa ovim..
Ajde ponovo cu da ispitam celu stvar pa cu da javim...
pascal.173omega,
Ţ Da, u raznim High C-ovima itd. U klasicnim DOS C-ovima... moze... ali
Ţ ne bas bez problema, i svakako ne bez znacajnog gubitka na brzini.
A koji su to High C-ovi? DOS C-ovi su pretpostavljam Turbo C, MS C i sl.?
Zar se gubi na brzini kada se definisu nizovi > 64k? :(
pascal.174markom,
:: realan mod ograničenje je 64k, a to je sasvim dovoljno.
Nije baš 64K, već 65520 bajtova ... Baš me zanima za šta im ode onih 15 ?
pascal.175dejanr,
>> A koji su to High C-ovi?
Pa, na primer High C :) Tako se zove kompajler.
>> DOS C-ovi su pretpostavljam Turbo C, MS C i sl.?
>> Zar se gubi na brzini kada se definisu nizovi > 64k? :(
Itekako.
pascal.176mmitrovic,
Ů█▀█Ţ Znaci tamo je to omoguceno pod dos-om? Ali onda se odricemo 286? I da li
Ů█▀█Ţ se exe mnogo povecava?
Ne odričeš se 286, već XTa. BP Dos Extender radi u 286+ protected
režimu, samim tim sa segmentnim ograničenjem. Na žalost ne radi u
32b 386p modu :(((((
pascal.177mmitrovic,
Ů█▀█Ţ Zar se gubi na brzini kada se definisu nizovi > 64k? :(
Ne alocira C jedan niz od 500K već više manjih, i svaki put kad
pristupiš elementu niza, C na osnovu indexa računa segment i offset
pa tek onda pristupa memoriji. To je daleko sporije od fiksnog
segmenta. Za nizove preko 64k potreban je 32b 386 extender i
odgovarajuća podrška. Pascal je (za sada) nema, a mislim da ga C++
4.0 ima.
pascal.178mmitrovic,
Ů█▀█Ţ Nije baš 64K, već 65520 bajtova ... Baš me zanima za šta im ode onih 15
Pascal (kad god je moguće) radi sa normalizovanium pointerima (offset
im je u opsegu 0..15), tako da pokušaj alokacije preko 65520 možda uspe
a možda i ne uspe (u zavisnosti od sledeće raspoložive adrese na heapu).
Stek uvek počinje na offsetu 0 (tj završava se :)), tako da za njega ne
važi 65520. Istina nikad nisam probao (ili se ne sešam).
BP 7.0 ima granulaciju HEAPa od 8 bajtova (svi alocirani pointeri
imaju offset 0 ili 8), za razliku od starijih verzija sa gran. od 1bajt.
pascal.179mmitrovic,
Ů█▀█Ţ byte, shortint, boolean
Ů█▀█Ţ char - 1 bajt
Ů█▀█Ţ integer, word - 2 bajta
Ů█▀█Ţ longint, parametri koji se prenose
Ů█▀█Ţ kao Var, pointeri - 4 bajta
Ů█▀█Ţ stringovi - deklarisana dužina + 1 bajta
Ovo važi samo za lokalne promenljive.
Evo celog opisa:
- prvo idu na stek parametri. Svaki parametar je za sebe WORD
ALLIGNED tj. jedan bajt zauzima 2; 3 zauzimaju 4. Dakle dva bajt
parametra bi zauzela 4 bajta. Strukture (records) su poređane kao
celine (znači struktura sa dva bajt polja zauzima dva, a ne četiri
bajta). Naravno cela struktura ako je neparne veličine proširuje se
za jedan bajt. Sve ovo se čini kako bi sam stek bio word alligned i
pojednostavila CALL rutina za postavljanje parametara.
- zatim ide povratna adresa. Ako je forsiran far model ili se
koristi funkcija iz drugog modula ide 4 bajta, a ako je near poziv
(unutar istog modula, sa $F-) onda 2 bajta.
- kad se uđe u funkciju prvo se na steku pamti stari SP što zauzima
dva bajta. Zatim idu lokalne promenljive, gde postoji dva slučaja.
- 1. (sa $A+)
Važi word allign za promenljive, i u ovom slučaju princip je isti
kao za parametre.
- 2. (sa $A-)
Saberu se veličine svih lokalnih promenljivih, i ako je zbir
neparan doda se 1 bajt (stek pointer mora biti paran).
Suma ove tri grupice daje zauzetost steka po pozivu. Naravno za
intenzivnu rekurziju treba što više smanjiti ovu sumu.
pascal.180asterix,
> Suma ove tri grupice daje zauzetost steka po pozivu. Naravno za
> intenzivnu rekurziju treba što više smanjiti ovu sumu.
Da, ovo je potpuniji opis slaganja stvari na stek. Phanx ;) na
tome, ali me i dalje interesuje da li je moguće uopšte koristiti
više od 64 K u konstrukciji rekurzivnih poziva neke funkcije ?
pascal.181vcalic,
>> Ne alocira C jedan niz od 500K već više manjih, i svaki put kad
>> pristupiš elementu niza, C na osnovu indexa računa segment i offset
>> pa tek onda pristupa memoriji. To je daleko sporije od fiksnog
>> segmenta. Za nizove preko 64k potreban je 32b 386 extender i
>> odgovarajuća podrška. Pascal je (za sada) nema, a mislim da ga C++
>> 4.0 ima.
žini mi se da BC3.1 funkcija farcalloc baš može da alocira kontinualan
memorijski prostor veći od 64K i da se njemu sasvim lepo (i JAKO sporo)
pristupa sa normalizovanim huge pointerima.
Vlada
pascal.182omega,
Ţ Ne odrices se 286, vec XTa. BP Dos Extender radi u 286+ protected
Ţ rezimu, samim tim sa segmentnim ogranicenjem. Na zalost ne radi u
Ţ 32b 386p modu :(((((
Znaci, ako sam dobro shvatio:
BP 7 ima heap > 640 kb i to ne u sklopu TP-a 7? I da li postoje neka
ogranicenja pri programiranju (mislim na razlike u klasicnom - TP-u i
tu)? I koliko je veci exe? I u cemu se onda programira pod DOS-om, ako
ne pod TP-om?
pascal.183mmitrovic,
Ů█▀█Ţ Da, ovo je potpuniji opis slaganja stvari na stek. Phanx ;) na
Ima jos jedna stvar koju sam prevideo, sve ovo važi za
$S-, tj. bez provere steka, jer onda treba jos par bajtova za
poziv rutine za proveru steka. Naravno ta memorija biva oslobođena
čim se uđe u kod funkcije.
Ů█▀█Ţ tome, ali me i dalje interesuje da li je moguće uopšte koristiti
Ů█▀█Ţ više od 64 K u konstrukciji rekurzivnih poziva neke funkcije ?
Naravno da može, sve se može, ali to zadire u domen sistemskog
programiranja i poznavanja strukture Pascal programa na code nivou.
Princip je da pre svakog poziva alociraš memoriju za novi stek sa
HEAPa i postavisš SS:SP pre poziva i vratiš ih posle. Ovo vuče za
sobom dosta sitnica koje treba zadovoljiti, sve u svemu veoma
nepraktično. Ali ako ti baš očajnički treba, mene ćeš morati da
sačekaš do 1. :(
pascal.184dejanr,
>> BP 7 ima heap > 640 kb
Da.
>> i to ne u sklopu TP-a 7?
TP 7 je "mala" verzija BP 7, dakle i dalje stari limiti, 640 K itd.
>> I da li postoje neka ogranicenja pri programiranju (mislim na razlike
>> u klasicnom - TP-u i tu)?
Postoji i dalje ograničenje strukture na 64 K. Ali zato možeš naslagati
koliko hoćeš takvih struktura (ili bar koliko imaš memorije, što osnovne,
što extended itd)
>> I koliko je veci exe?
Ne spektakularno.
>> I u cemu se onda programira pod DOS-om, ako
>> ne pod TP-om?
Pod DOS-om, a i pod Windows-om, programira se u Borland Pascalu 7.
Turbo Pascal 7 je samo njegova jeftinija verzija. Dakle, ako imaš
BP7, TP7 ti ne treba.
Preporučujem čitanje starih poruka u PC.PROG.*/pascal, na prethodna pitanja je
već više puta odgovoreno.
pascal.186postmast,
From: broker@setgate.setnet.co.yu (Predrag Supurovic)
Subject: Pascal
Date: Thu, 02 Jun 1994 08:05:01
==== Kiril Vidimce rece: ======================================
>TURBO PASCAL sa grafickim aplikacijama, Armando Jorno,
>Tehnicka Knjiga, 1990, II izdanje, strana 144
KV> Ako e ovaa istata kniga koja i jas ja imav na vremeto (ne
KV> se sekkavam dali besse I ili II izdanie) - knigata i ne
KV> e bass mnogu dobro napissana - osobeno besse smessno ona
KV> 'graficckim aplikacijama', bidejkki primerite se za vo
KV> TP 3.00 (turtle graphics).
Slazem se da knjiga nije nesto narocito, tj. bas je za apsolutne
pocetnike. Ipak, moze sasvim lepo da posluzi. Mene grafika nije
toliko interesovala, pa se ne secam da li sam taj deo knjige uopste
i procitao, ali u prvom delu, za pocetnika, sasvim je upotrebljivo.
Broker
... BR> Ups. Opet ostadoh bez tagova...
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.187postmast,
From: broker@setgate.setnet.co.yu (Predrag Supurovic)
Subject: Pascal Rutine 1/3
Date: Thu, 02 Jun 1994 08:06:02
==== Kiril Vidimce rece: ======================================
KV> @PID: JCQWK 2.01 Pre-Gamma3 26039401
>Moze li me neko uputiti na pogodan alat (biblioteke) kao i literaturu
>koja se bavi manipulacijom memorijom (expanded, extended, swap-ovanje i sl.)
>Zgodnije mi je ako je za PAscal ali ni za C nije na odmet.
KV> Eve edno zgodno primercce, a za poozbilna rabota ti ja
KV> preporaccuvam bibliotekata SNIPPETS. Ima se' i sessto vo nea - a
KV> najccesto mnogu korisno. :)
Hvala puno, bice korisno. Ipak, kad zelis da posaljes nesto ovako dugacko,
prvo pitaj da li to jos nekoga zanima. Konferencija ide na veliki broj
sistema i neko se moze buniti.
... BR> Ups. Opet ostadoh bez tagova...
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.188postmast,
From: Braslav.Sesartic@f101.n101.z38.setgate.setnet.co.yu (Braslav Sesartic)
Subject: Re: .Pcx File Reader
Date: Thu, 02 Jun 1994 03:10:00
KV> { =========================== VGA16palette
Cini mi se da ova procedura setuje kompetnu paletu, a meni treba
boja samo za jedan piksel (ili mozda gresim). No, ipak zahvaljujem.
KV> Ako ti treba kompletniot program za rabota so PCX-ovi, samo
KV> kazzi. :)
- ako ima source i ako mu je source u TP, ako moze da prikaze .PCX
u bilo kojoj velicini (znaci ne samo na celom ekranu)... onda bi mi
bas to trebalo. :) Samo reci kako?
Braslav Sesartic 38:101/101@SetNet.Oreska
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.190inesic,
Potreban mi je savet u vezi diskusije koja se vodila krajem ovog
meseca u ovoj konf.temi. Tiče se pozivanja .bat i ostalih
izvršnih datoteka.
Konkretno ja bih hteo da izvršim
command.com /c md novidir
što radi kad se pokuša iz programa datog u helpu za exec, ali ne
radi iz mog programa koji je pun nizova i ostalih žderača
memorije, pa ne mogu da upotrebom $M klauzulu na onaj način kako
je to u helpu urađeno. Moj problem je što zapravo ne znam kako se
ta klauzula koristi, čemu koji parametar tu služi. Zapravo, to
nije moj jedini problem. Moj drugi problem je što radim na XTu pa
moram da koristim TP 5.5. Neko je tu objasnio da se problem
korišćenja $M zaobilazi veštim korišćenjem procedure/funkcije
setMemTop,ali nje u helpu od TP 5.5 nema.
Pitanje je dakle kako da se koristi $M i da li ova klauzula može
da se koristi i na više mesta u programu (pokušao sam da pre
gorenavedenog poziva postavim $M onako kako je u onom help
primeru dato, pa da ga posle vratim na inicijalne vrednosti, ali
nije išlo: TP je prijavljivao not inaf memori).
Šta da radim?
inesic
pascal.191dejanr,
>> $M klauzulu na onaj način kako je to u helpu urađeno. Moj problem je
>> što zapravo ne znam kako se ta klauzula koristi, čemu koji parametar
>> tu služi.
$M se stavlja na početku programa i ima tri parametra - prvi je veličina
steka, drugi minimalni heap a treći maksimalni heap. Recimo, ako ti je
16 K za stek dovoljno i ako alociraš raznim nizovima najviše još 64
K, koristi {$M 17000,0,65000} i biće prostora za poziv command.com-a.
pascal.192ognjen,
)-> Konkretno ja bih hteo da izvrsim
)-> command.com /c md novidir
Zasto se patis preko command.com-a? Uradi legalno sa:
MKDIR ('basic');
tj. u tvom primeru: MKDIR (novidir);
pascal.193omega,
Ţ Moj drugi problem je sto radim na XTu pa moram da koristim TP 5.5.
Koliko znam i TP 7.0 radi na XT-u.
Ţ Neko je tu objasnio da se problem koriscenja $M zaobilazi vestim
Ţ koriscenjem procedure/funkcije setMemTop,ali nje u helpu od TP 5.5 nema.
Da, ta procedura je uvedena u TP-u v6.0 u okviru unit-a Memory...
Ţ Pitanje je dakle kako da se koristi $M i da li ova klauzula moze
Ţ da se koristi i na vise mesta u programu (pokusao sam da pre
Ne moze.
Ţ Sta da radim?
Jedno od resenja je SHROOM (r:\ibmpc\system\shrom24b.zip)...
pascal.194mdave,
■> nije moj jedini problem. Moj drugi problem je što radim na XTu pa
■> moram da koristim TP 5.5. Neko je tu objasnio da se problem
Nije to nikakav problem. Samo pravi muškarci koriste XT. :)
PS. Imam ortaka koji piše programe na 386 računaru i padne u
nesvest kad vidi kako to sporo radi na mom XT. Sa druge
strane, moji programi su munje na bržim računarima jer su
"maksimalno" optimizovani - samo takvi rade na XT-u. :)
< C= Commodore PC10-III - forever & ever >
pascal.196postmast,
From: ss45791d@buefhp.etf.bg.ac.yu (Simic Srdjan)
Subject: Re: $R
Date: Mon, 20 Jun 1994 09:29:13 GMT
: U jednom sorsu sam nasao ovo:
: {$R ime.dat}
Hi
Ovo pise u helpu
Specifies the name of the resource file to be included in an application or
library.
Syntax: {$R FileName}
Type: Local
Remarks:
The default extension for FileName is .RES. It must be a Windows resource
file.
Nije mi jasno zasto nisi pogledao help (Radi se o verziji 7.0)
Nije bas pametno postavljati ovakva pitanja narocito sada kada je
setnet povezan na Bint, jer ona opterecuju mrezu.
--
Srdjan Simic srdjan@osmeh.fon
ss45791d@buefhp.etf
simic_45791d@buef78.etf
pascal.197ilotina,
Pitanjce : Kako saznati koliko se fajlova nalazi u nekom
direktorijumu, bez upotrebe findfirst & findnext procedura,
tj. da li postoji brži način, možda preko nekog doc poziva
ili slično?
Ivan
pascal.198djelovic,
> Pitanjce : Kako saznati koliko se fajlova nalazi u nekom
> direktorijumu, bez upotrebe findfirst & findnext procedura,
> tj. da li postoji brži način, možda preko nekog doc poziva
> ili slično?
Ništa čisto. Ukoliko te zanimaju prljave tehnike, pogledaj mjovin članak u
poslednjim (ili beše pretposlednjim?) računarima.
P.S. Ma Miljan je bre ko stvoren za te prljave stvari :).
pascal.201dr.grba,
>> Nije to nikakav problem. Samo pravi muškarci koriste XT. :)
Ali ako ima Nan-Tan tastaturu (((:
pascal.202inesic,
> Nije to nikakav problem. Samo pravi muškarci koriste XT. :)
Imam da izjavim da bih radije bio pičkica samo kad bih imao para
da kupim jedan 486. Mada, s druge strane, gomila sitnobiznisnih
firmi jednostavno neće da kupe ništa jače od 286, jer im i to
radi knjigovodstvo sasvim dobro. Možda nije loše držati jednog
XTa negde u zapećku, tek kolko da ima čovek na čemu da proba
aplikaciju, pre nego što je proda.
inesic
pascal.203inesic,
> Koliko znam i TP 7.0 radi na XT-u.
Ha, ha!
Kad sam, ima tome valjda više od godinu ( ma kakvi godinu )
instalirao TP6.0 i kad mi je, pri pikušaju da izvršim neki demo,
prijavio not inaf memori, shvatio sam da XT tu nema šta da traži.
Tužno, al' šta ćeš.
Ipak, hvala ti za predlog: neću biti lenj i skinuću taj SHROM
inesic
pascal.204inesic,
> Zasto se patis preko command.com-a? Uradi legalno sa:
>
> MKDIR ('basic');
Eto kako čovek svaki dan može nešto novo da nauči. Nisam ni znao
da tako nešto postoji. Prvi put mi je u životu zatrebalo. Naravno
da ću uraditi legalno. Međutim, pitanja o $M ostaju aktuelna, jer
uvek zatreba da se startuje externi editor ili bilo kakav mali
ali nedostižni jutiliti, koji napravi neki majstor i koji ja ne
umem da napravim bolje. Još kad je PD :)
inesic
pascal.205inesic,
> $M se stavlja na početku programa i ima tri parametra - prvi je
> veličina steka, drugi minimalni heap a treći maksimalni heap.
> Recimo, ako ti je 16 K za stek dovoljno i ako alociraš raznim
> nizovima najviše još 64 K, koristi {$M 17000,0,65000} i biće
> prostora za poziv command.com-a.
Shvatam ideju, ali ne i detalje. Šta ide na stek, a šta na hip.
Gde idu promenjive i procedure iz junita. Ukratko, KAKO da znam
koliko treba da odvojim za stek, a koliko za hip.
inesic
pascal.206eagle,
> moram da koristim TP 5.5. Neko je tu objasnio da se problem
> korišćenja $M zaobilazi veštim korišćenjem procedure/funkcije
> setMemTop,ali nje u helpu od TP 5.5 nema.
Prevedi ovo tasm-om, i eto trazene procedure.
MODEL TPASCAL
.DATA
EXTRN PrefixSeg:WORD
.CODE
PUBLIC SetMTop
SetMTop PROC NEAR P: DWORD
mov bx, word ptr P
add bx, 000Fh
mov cl, 04
shr bx, cl
add bx, word ptr P + 2
mov ax, ŠPrefixSegĆ
sub bx, ax
mov es, ax
mov ah, 4ah
int 21h
ret
SetMTop ENDP
END
pascal.207markom,
:: Tužno, al' šta ćeš.
žudno, imam ortaka koji bez problema radi u TP 7.0 na XT-u sa 640K
memorije :)
pascal.208omega,
Ţ Kad sam, ima tome valjda vise od godinu ( ma kakvi godinu )
Ţ instalirao TP6.0 i kad mi je, pri pikusaju da izvrsim neki demo,
Ţ prijavio not inaf memori, shvatio sam da XT tu nema sta da trazi.
Verovatno si kompajlirao iz "okoline" i stavio Compile Destination:Memory :)
E pa, trebalo je Compile Destination:Disk i upalilo bi :) Ne verujem da
je sam program (vec iskompajliran) izjavio da nema dovoljno memorije :)
pascal.209dejanr,
>> Shvatam ideju, ali ne i detalje. Šta ide na stek, a šta na hip.
>> Gde idu promenjive i procedure iz junita.
Na heap ide ono što alociraš sa getmem, new i... da'l ima još nešto.
Parametri, lokalne promenljive itd, idu na stek
>> Gde idu promenjive i procedure iz junita. Ukratko, KAKO da znam
>> koliko treba da odvojim za stek, a koliko za hip.
Za heap možeš da proračunaš prema getmem-ovima. Za stek je teorijski
moguće proračunati, ali bi bilo jako veliki posao, tako da uglavnom
ide "odokativno". 16 K je često dovoljno.
pascal.210markom,
:: Za heap možeš da proračunaš prema getmem-ovima. Za stek je teorijski
:: moguće proračunati, ali bi bilo jako veliki posao, tako da uglavnom
:: ide "odokativno". 16 K je često dovoljno.
A 99% posto programa koji se napišu lepo i optimizovano, kao i bez
rekurzije su zadovoljni i sa {$M 1024,0,0} :)
pascal.211mmitrovic,
Ů█▀█Ţ Shvatam ideju, ali ne i detalje. Šta ide na stek, a šta na hip.
Ů█▀█Ţ Gde idu promenjive i procedure iz junita. Ukratko, KAKO da znam
Data Segment:
Globalne promenljive, globalne i lokalne tipizirane konstante,
Stek:
Povratne adrese, lokalne promenljive
Heap:
Dinamičke promenljive (alocirane sa New, GetMem, ..)
Ukratko pusti HEAP do maximuma, uključi MEMORY unit i pre nego
uradić Exec zapamti HeapTop i postavi kraj heapa na HeapPtr. Nakon
Execa vrati Heap na HeapTop. :) Moram priznati da je ovo bilo
nejasno, ali se ne sećam napamet naziva procedura iz Memory unit.
Ako nije jasno, buni se. ;)
pascal.212mmitrovic,
Ů█▀█Ţ direktorijumu, bez upotrebe findfirst & findnext procedura,
Ů█▀█Ţ tj. da li postoji brži način, možda preko nekog doc poziva
Ů█▀█Ţ ili slično?
Možeć da ideć korak niže, saznać dužinu dir fajla (direktorijumi
su fajlovi), koja će biti (cluster size*x), onda locirać dir na
disku, pročitaš clustere i prebrojić dir entry-e.
Sve u svemu, koristi ff i fn, malo je sporije (češće pristupa disku)
ali je lakše za programiranje i kraći je kod.
pascal.213mmitrovic,
Ů█▀█Ţ P.S. Ma Miljan je bre ko stvoren za te prljave stvari :).
Ko je taj moj imenjak? Vidim ima ga i u tvom tekstu.
pascal.214mmitrovic,
Ů█▀█Ţ Da nemas mozda neka pisana uputstva za koriscenje Paradox Enginea
Ů█▀█Ţ sa TPascalom?
Nek me neko uputi preko maila gde mogu kupiti Paradox Engine. ;)
Uputstva trebaju i meni, pa ako ih neko ima u e-formi, ...
pascal.215dpriest...,
Hi.
Zna li neko da li windows ima neki karakteristican 'potpis' negde u
memoriji dok je aktivan? Ako ima bio bih zahvalan na informaciji.
DP...
pascal.216dejanr,
>> Nek me neko uputi preko maila gde mogu kupiti Paradox Engine. ;)
Prodaje CET.
pascal.217djelovic,
> Ko je taj moj imenjak? Vidim ima ga i u tvom tekstu.
mjova :)
pascal.218djelovic,
> Za stek je teorijski moguće proračunati, ali bi bilo jako veliki posao,
> tako da uglavnom ide "odokativno". 16 K je često dovoljno.
Evo empirijske metode: Na početku programa, popuniš stek nekim stringom. Na
kraju, pogledaš dokle se taj string još uvek prostire, oduzmeš od ukupne
veličine steka, i eto ti procene koliko si steka potrošio. Dodaj na to stotinak
bajtova, i trebao bi da budeš siguran u rezultat, ukoliko u programu ne
koristiš neku rekurziju.
pascal.219maki,
> Zna li neko da li windows ima neki karakteristican 'potpis' negde u
Pogledaj poruke 3.95 i 3.96 u ovoj konferenciji.
pascal.220inesic,
> Data Segment:
> Globalne promenljive, globalne i lokalne tipizirane konstante,
Šta je sad ovo? Toga nema u $M. Da li je taj data segment nešto
što je fiksno kod svakog programa ili se i to menja, tj. raste i
smanjuje se po potrebi? Je l' to ono parče na koje pucaju oni
pointeri koji pokazuju na promenjive?
inesic
pascal.221omega,
Ţ A 99% posto programa koji se napisu lepo i optimizovano, kao i bez
Ţ rekurzije su zadovoljni i sa {$M 1024,0,0} :)
Lepo i optimizovano!? Da ostanem bez heap-a? :))))
pascal.222markom,
:: Lepo i optimizovano!? Da ostanem bez heap-a? :))))
Meni skoro nikad nije zatrebao ... A kad mi treba nešto veliko, zna se
;) CCCCCcccc :)
pascal.223postmast,
From: Brankica.Kranjac@f110.n103.z38.setgate.setnet.co.yu (Brankica Kranjac)
Subject: Re: $R
Date: Tue, 21 Jun 1994 02:08:26
On 4 Jun 94 10:19pm, Predrag Supurovic wrote to All:
:) U ednom sorcetu sam naisao na sledecu liniju:
:) {$R keys.reg}
Mozda je kasno, ali koliko znam ova direktiva sluzi samo
za testiranje. Ako se stavi {$R+ ukljucuje se deo za proveru
raspona svih varijabli u odnosu na njihove granice. Pravi
veci kod, pa se obicno ne koristi.
Lady Linet 38:103/110@SetNet.NewAge
< Moderator SetNet.Erotika >
... Help!!!
* ■ Hack by ANGEL ■ 1111111111
* Origin: [New Age BBS]*[Beograd]*[+38-11-404-639]*[23-06] (38:103/110)
pascal.225postmast,
From: sale@fon (Aleksandar Hercog)
Subject: pascal i fox
Date: Thu, 23 Jun 1994 00:44:39 GMT
Ima li neko ideju kako iz FoxPro 2.5 za Dos pozvati neku rutinu napisanu u Pascalu 7.0 i uz to pascal rutini prenenti neke parametre. (kako u TPascalu 7.00 napraviti OBJ fajl, njega povezati sa FoxPro 2.5 za Dos, iz Fox-a pozvati tu proceduru, prene
ti joj eke parametre, po zavrsetku rada procedure vratiti neke parametre fox programu, a fox program i tu pascal proceduru smestiti u jedan EXE)?
Sale
pascal.226dr.grba,
Da li EXE program napravljen u Turbo Pascalu 7.0 ima nekakav CRC check
ili nešto poput toga kao zaštitu integriteta EXE datoteke?
pascal.227dejanr,
>> Ako se stavi {$R+ ukljucuje se deo za proveru
>> raspona svih varijabli u odnosu na njihove granice. Pravi
>> veci kod, pa se obicno ne koristi.
Ja ga *uvek* koristim, čak mi je ta opcija u setupu TP-a podešena na
uključeno. Ne znam ni sam koliko sam bagova tako našao, i to ne samo
u svojim programima, nego recimo i u prilozima za Pitalice koje drugi
šalju.
Naravno, kada se kompajlira konačna verzija, onda ima smisla isključiti
tu proveru, {$R-}, ali tokom razvoja je se ne treba odricati!
pascal.228markom,
:: From: Brankica.Kranjac@f110.n103.z38.setgate.setnet.co.yu (Brankica Kranjac)
:: Subject: Re: $R
:: Mozda je kasno, ali koliko znam ova direktiva sluzi samo
:: za testiranje. Ako se stavi {$R+ ukljucuje se deo za proveru
:: raspona svih varijabli u odnosu na njihove granice. Pravi
:: veci kod, pa se obicno ne koristi.
Wrong, u TPW 1.x i BP 7.x, ta direktiva ima još jednu funkciju, isto
kao što ima i $I. Slži u Windows programima da se naznači koji je
resource fajl povezan sa datim programom ...
Nevezano za poruku, neko je tražio dokaze o Blagojevom crackovanju SW
programa ...
:: * ■ Hack by ANGEL ■ 1111111111
Toliko o tome.
pascal.229kriss,
˙˙ Možeć da ideć korak niže, saznać dužinu dir fajla
˙˙ (direktorijumi su fajlovi), koja će biti (cluster size*x),
˙˙ onda locirać dir na
Ok, kako da otvorim taj fajl?
pascal.230dejanr,
>> > Možeć da ideć korak niže, saznać dužinu dir fajla
>> > (direktorijumi su fajlovi), koja će biti (cluster size*x),
>> > onda locirać dir na
>>
>> Ok, kako da otvorim taj fajl?
Ako uspeš, javi. Mnogi kažu da je "direktorijum zapravo fajl", da se
može otvoriti ovako ili onako, ali šta god se proba, ne uspeva. Pričao
sam i sa nekim ljudima na BIX-u o tome (u vezi mog čuvenog pitanja,
kako napisati program koji setuje datum kreiranja direktorijuma), i
na kraju je ispalo da niko ne zna, čak ni čovek koji je pisao knjigu
Undocumented DOS
pascal.231mmitrovic,
Ů█▀█Ţ Šta je sad ovo? Toga nema u $M. Da li je taj data segment nešto
Ů█▀█Ţ što je fiksno kod svakog programa ili se i to menja, tj. raste i
Data Segment ide između koda i steka i varira od programa do
programa, ali mu je dužina za određeni program uvek ista, što nije
slučaj sa zauzećem HEAPa.
kad kažeš:
var p:žword;
onda je p u DATA segmentu, a pž (podatak) je u HEAPu (nakon New(p));
DATA segment se deli na dva dela, na inicijalizovani i neinizijalizovani
inicijalizovani deo predstavljaju tipizirane konstante, i on je deo
EXE fajla (fizički je prisutan)
neinicijalizovani su varijable, i one se kreiraju logički u memoriji
pri startovanju programa.
pascal.232mmitrovic,
Ů█▀█Ţ Mozda je kasno, ali koliko znam ova direktiva sluzi samo
Ů█▀█Ţ za testiranje. Ako se stavi š$R+ ukljucuje se deo za proveru
Za $R je ista stvar kao i za $O:
$R+ ili $R- je provera opsega
$R<filename> je uključivanje resourcea
$O+ ili $O- je kontrola Overlaya
$O<name> je ime modula u nekom drugom fajlu (veoma retko se koristi)
pascal.233pedjak,
> Da li EXE program napravljen u Turbo Pascalu 7.0 ima nekakav CRC
> check ili nešto poput toga kao zaštitu integriteta EXE datoteke?
žisto sumnjam.
pascal.234mdave,
■> Wrong, u TPW 1.x i BP 7.x, ta direktiva ima još jednu funkciju,
Ne znam kako vi, ali ja za vreme razvoja programa uključim
obavezno sve check-ove. :)
žak i one koje ne znam čemu služe... :)
*** SOR 2.11 ***
■ Hack by MarkoM ■
pascal.235kriss,
˙˙ Da li EXE program napravljen u Turbo Pascalu 7.0 ima nekakav
˙˙ CRC check ili nešto poput toga kao zaštitu integriteta EXE
˙˙ datoteke?
Ne znam da li ima, ali ne vidim prepreku da se ugradi. :)
pascal.236markom,
:: *** SOR 2.11 ***
:: ■ Hack by MarkoM ■
Znači radi crack, odlično ;)
pascal.237isekulovic,
>> Na heap ide ono što alociraš sa getmem, new i... da'l ima još nešto.
I Initgraph traži malo heapa za sebe.
pascal.238postmast,
From: markom@Osmeh.FON.BG.AC.YU (Marko Milivojevic)
Subject: Re: pascal
Date: Fri, 24 Jun 1994 13:48:50 GMT
Dejan Ristanovic (dejanr@sezam.UUCP) wrote:
: Ako uspes, javi. Mnogi kazu da je "direktorijum zapravo fajl", da se
: moze otvoriti ovako ili onako, ali sta god se proba, ne uspeva. Pricao
: sam i sa nekim ljudima na BIX-u o tome (u vezi mog cuvenog pitanja,
: kako napisati program koji setuje datum kreiranja direktorijuma), i
: na kraju je ispalo da niko ne zna, cak ni covek koji je pisao knjigu
: Undocumented DOS
A sta mislite da neko pita one ljude iz Symantec-a ili Central Pointa, ili ne daj boze Microsoft-a :) Postoje njihovi programcici koji menjaju datum kreiranj direktorijuma ...
pascal.239omega,
Ţ ˙˙ CRC check ili nesto poput toga kao zastitu integriteta EXE datoteke?
Ţ
Ţ Ne znam da li ima, ali ne vidim prepreku da se ugradi. :)
Npr. kako?
pascal.240jasicp,
Da li neko zna kako se izvrsava program pomocu EXEC ( ... ) ali tako
da se rezultati izvrsavanja ne vide na ekranu ? Proba sam sa nesto tipa
PROGRAM.EXE argumenti >NULL, ali ne funkcionise ?
pascal.241djelovic,
> Da li neko zna kako se izvrsava program pomocu EXEC ( ... ) ali tako
> da se rezultati izvrsavanja ne vide na ekranu ? Proba sam sa nesto tipa
> PROGRAM.EXE argumenti >NULL, ali ne funkcionise ?
Da li program koji startuješ piše po ekranu preko BIOS-a ili gađa direktno
u video memoriju? To možeš da proveriš tako što ćeš da ga staviš u dibager, pa
da promatraš odgovarajući interapt.
pascal.242markom,
Ja se stvarno izvinjavam Sezamovcima na ovakvim porukama, ali kad sam
ih pisao, zaboravio sam da lupam enter, tako da je stiglo, ovakvo kako
je.
Evo cele sadržine ...
:: A sta mislite da neko pita one ljude iz Symantec-a ili Central Pointa, ili
:: ne daj boze Microsoft-a :) Postoje njihovi programcici koji menjaju datum
:: kreiranj direktorijuma ...
pascal.243dejanr,
>> A sta mislite da neko pita one ljude iz Symantec-a ili Central Pointa,
>> ili ne daj boze Microsoft-a :) Postoje njihovi programcici koji menjaju
>> datum kreiranj direktorijuma ...
Prvo, ako i postoje, ja ih nisam video. FD, konkretno, ne može da promeni
datum kreiranja direktorijuma.
Datum kreiranja direktorijuma može da se promeni tako što odeš u direktorijum
iznad pa kažeš NU . (ova tačka nije kraj rečenice ;)) i onda setuješ datum
tako što direktno brljaš po zapisu direktorijuma. U tom smislu bi se datum
mogao setovati tako što napišeš program koji prvo nađe gde je root katalog
(što je lako) pa iz njega pročita gde su katalozi, pa iz njih gde su
potkatalozi itd, dok ne nađe traženi katalog, pa onda u zapisu njegovog
"roditelja" promeni datum kreiranja "deteta", direktno pišući po disku.
Samo što bi to zahtevalo da se maltene napiše pola DOS-a, ne-elegantno
je u visokom stepenu, aktiviralo bi sav mogući antivirus softver itd, itd.
Sve skupa, nije neko rešenje.
Ali prečicu niko ne ume da nađe :(
PS Zanimljiva stvar: nije dosta promeniti samo datum direktorijuma, treba
i ući u njega pa promeniti datume kreiranja "fajlova" . i .., da
bi "maskiranje" bilo savršeno.
pascal.244postmast,
From: broker@setgate.setnet.co.yu (Predrag Supurovic)
Subject: pascal
Date: Thu, 23 Jun 1994 09:47:04
"P> Zna li neko da li windows ima neki karakteristican 'potpis' negde
"P> u memoriji dok je aktivan? Ako ima bio bih zahvalan na informaciji.
Imam TP6.0 UNIT koji prpoznaje ne samo Windows, nego i veci broj
drugih multitaskera. Arhiva je velika 6K pa mogu da ti je posaljem
i postom (ako je jos neko zainteresovan, mogu da je ostavim UUENCODE-ovanu
u ovoj konferenciji).
Nazalost, nema source, vec TPU za 6.0
Evo isecka iz interface sekcije. Izvadjeno je mnogo propratnog teksta
i ostavljeno samo ono sto ce ti pokazati sva sve ima unutra.
Unit MulAware;
{
Multitasking Routines for TP 6.0
Copyright (c) 1991,1992 A.B.S. - ALL RIGHTS RESERVED
Type
MultiType = (None, {No Supported MultiTasker Found}
DESQview, {DESQview 2.26+}
TopView, {TopView, TaskView, DESQview 2.00- 2.25,
OmniView, or Compatible}
TaskSwitcher, {MS DOS 5.0 Task Switcher or Compatible}
DoubleDOS, {DoubleDOS}
WinEnh, {MS Windows 3.x in Enhanced Mode}
Win386, {MS Windows 386 v2.xx}
WinStandard, {MS Windows in Real or Standard Mode}
OS2}; {OS/2 1.3 or 2.0}
Var
MultiTasker : MultiType;
Procedure TimeSlice;
Procedure PreventSwitching;
Procedure ResumeSwitching;
Function MulVersion : Word;
Function VirtualBuffer : Word;
Procedure TV_UpdateBuffer(Num : Word; Buffer, CharOffset : Word);
Function DDOS_Visible : Boolean;
... BR> Deca su ukras sveta. Daj da se jos malo okitimo.
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.245postmast,
From: broker@setgate.setnet.co.yu (Predrag Supurovic)
Subject: pascal
Date: Thu, 23 Jun 1994 09:50:05
"P> Zna li neko da li windows ima neki karakteristican 'potpis' negde
"P> u memoriji dok je aktivan? Ako ima bio bih zahvalan na informaciji.
Hi, pored onog UNIT-a nasao sam jos nesto, sto sam skoro zaboravio
da imam. Ovo sam nasao na U'NI-net.
pozdrav,
broker
─ Area: U.pascal ─────────────────────────────────────────────────────────────
Msg#: 5113 Date: 12-22-93 23:59
From: Greg Estabrooks Read: Yes Replied: No
To: Shel Shallon Mark:
Subj: HOW DETECT WINDOWS?
──────────────────────────────────────────────────────────────────────────────
SS>Does anyone know how a DOS program can determine whether it running
as
SS>a DOS application under Windows? Is there an interrupt that can be
SS>tested? Many thanks in advance.
Here are some routines I wrote a while back for a friend to test
for windows which you might find of use:
{***********************************************************************
}
PROGRAM Win3XInf; { Simple Detection routines for Windows 3.X
}
{ Last Updated April 28/93, Greg Estabrooks }
FUNCTION Win3X :BOOLEAN; ASSEMBLER;
{ Routine to determine if Windows is currently running
}
ASM
Mov AX,$4680 { Win 3.x Standard check
}
Int $2F { Call Int 2F
}
Cmp AX,0 { IF AX = 0 Win in real mode
}
JNE @EnhancedCheck { If not check for enhanced
mode}
Mov AL,1 { Set Result to true
}
Jmp @Exit { Go to end of routine
}
@EnhancedCheck: { Else check for enhanced mode
}
Mov AX,$1600 { Win 3.x Enhanced check
}
Int $2F { Call Int 2F
}
Cmp AL,0 { Check returned value
}
Je @False { If not one of the below it
}
Cmp AL,$80 { is NOT installed
}
Je @False
Mov AL,1 { Nope it must BE INSTALLED
}
Jmp @Exit
@False:
Mov AL,0 { Set Result to False
}
@Exit:
END;{Win3X}
FUNCTION WinVer :WORD; ASSEMBLER;
{ Returns a word containing the version of Win Running
}
{ Should only be used after checking for Win installed
}
{ Or value returned will be meaning less
}
ASM
Mov AX,$1600 { Enhanced mode check
}
Int $2F { Call Int 2F
}
END;{WinVer}
BEGIN
IF Win3X THEN { If it is running say so
}
BEGIN
Writeln('Windows is Running! '); { Now display version running
}
Writeln('Version Running is : ',Lo(WinVer),'.',Hi(WinVer));
END
ELSE { If not 'Just say NO!'
}
Writeln('Windows is not
Running!');
END.
{***********************************************************************}
....Greg....
■ OLX 2.1 TD ■ We now return you to your regular programming...
-!-
■ RoseMail 2.10ß: U'NI-net: VE1EI BBS Sambro, NS 90
... BR> Pogubio sam tagove. Postenim nalazacima nagrada.
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.246postmast,
From: markom@Osmeh.FON.BG.AC.YU (Marko Milivojevic)
Subject: Re: pascal
Date: Sat, 25 Jun 1994 15:05:10 GMT
:: Imam TP6.0 UNIT koji prpoznaje ne samo Windows, nego i veci broj
:: drugih multitaskera. Arhiva je velika 6K pa mogu da ti je posaljem
:: i postom (ako je jos neko zainteresovan, mogu da je ostavim UUENCODE-ovanu
:: u ovoj konferenciji).
Evo ga C source za detektovanje Windows-a ...
int win (void) {
union REGS regs;
regs.x.ax = 0x1600;
int86(0x2F, ®s, ®s);
if (regs.h.al == 0)
return 0;
zija (3), a u AH je minor (1, 11 ili sta vec ;)
pascal.247markom,
:: PROGRAM.EXE argumenti >NULL, ali ne funkcionise ?
^ Imaš L viška ;)
PROGRAM.EXE argumenti > NUL :)
pascal.248ognjen,
Help me!
FindFirst('*.*', AnyFile, DirInfo);
If (DirInfo.Attr and Directory)=0 Then
Ovo ne kapiram. DirInfo.Attr je char. A Directory je Boolean?
kako onda (baba i zaba)=integer ????
pascal.249mmitrovic,
Ů█▀█Ţ Ako uspeš, javi. Mnogi kažu da je "direktorijum zapravo fajl", da se
Ů█▀█Ţ može otvoriti ovako ili onako, ali šta god se proba, ne uspeva. Pričao
Ů█▀█Ţ sam i sa nekim ljudima na BIX-u o tome (u vezi mog čuvenog pitanja,
Ů█▀█Ţ kako napisati program koji setuje datum kreiranja direktorijuma), i
Ništa ne pali sem direktnog pisanja po disku.
Tužno, ali istinito. :(
pascal.250mmitrovic,
Ů█▀█Ţ Da li EXE program napravljen u TP 7.0 ima nekakav CRC check
Nema.
pascal.251srdjan.j,
==> If (DirInfo.Attr and Directory)=0 Then
==>
==> Ovo ne kapiram. DirInfo.Attr je char. A Directory je Boolean?
==> kako onda (baba i zaba)=integer ????
Ovde se radi o integer operatoru _and_ ( ekstenzija TP-a ). Otkud ti da je
Directory Boolean ? Ovde se radi o maskiranju jednog bita iz DirInfo.Attr :
Neka je DirInfo.Attr = 01010011B ( binarno )
a neka je Directory = 00010000B ( takođe binarno, neznam je baš ovaj broj,
ali za primer je dobro )
-------------------
Onda se radi bit po bit operacija and i dobija se sledeci rezultat:
00010000B
E, sad, pozicija one jedinice u Directory predstavlja mesto gde se u okviru
DirInfo.Attr nalazi informacija da li je dati fajl direktorijum ili nije. Ako
je na toj poziciji nula, onda je rezultat prethone operacije 0, znači nije
direktorijum; u suprotnom rezultat je različit od nule, => našli smo dir !
Srđan.
pascal.252kriss,
˙˙ Ţ ˙˙ CRC check ili nesto poput toga kao zastitu integriteta
˙˙ EXE datoteke? Ţ
˙˙ Ţ Ne znam da li ima, ali ne vidim prepreku da se ugradi. :)
˙˙
˙˙ Npr. kako?
U TP 7.0 ne znam kako da ga ugradim, ;) ali u program bi znao i to
veoma lako. Ako je 'običan' CRC u pitanju - ima dosta rutina za isti i
posao se jednostavno sređuje iz asemblera, a on se pak lako ugrađuje u
Paskal program. Ako treba i rešenje može ... :)
pascal.253mmitrovic,
Ů█▀█Ţ je u visokom stepenu, aktiviralo bi sav mogući antivirus softver itd,
Ů█▀█Ţ itd.
Nebi. Šta misliš kako DOS dolazi do svojih dir-ova.
pascal.254dejanr,
>> > je u visokom stepenu, aktiviralo bi sav mogući antivirus softver itd,
>> > itd.
>>
>> Nebi. Šta misliš kako DOS dolazi do svojih dir-ova.
Kada god sam pravio neke apsolutne upise na disk u zoni direktorijuma
(jednom sam pisao program koji koristi onih par praznih bajtova),
antivirusi su vrištali. Možda sada prave bolje antiviruse :)
Možda DOS koristi neke nedokumentovane pozive DOS-a ;)
pascal.255dr.grba,
>> ˙˙ Da li EXE program napravljen u Turbo Pascalu 7.0 ima nekakav
>> ...
>> Ne znam da li ima, ali ne vidim prepreku da se ugradi. :)
Uf, vidim da je bilo nejasno. Naime, pored mene je u trenutku pisanja sedeo
jedan dečko, pascal wizard (: i pitanje je zapravo njegovo. U međuvremenu je
empirijski pokazano da nema ni govora o postojanju slične kontrole po
defaultu kompajlera. Anyway, hvala svima na odgovoru.
pascal.256omega,
Ţ veoma lako. Ako je 'obican' CRC u pitanju - ima dosta rutina za isti i
Ţ posao se jednostavno sreduje iz asemblera, a on se pak lako ugraduje u
Ţ Paskal program. Ako treba i resenje moze ... :)
Moze...
pascal.257mmitrovic,
Ů█▀█Ţ Možda DOS koristi neke nedokumentovane pozive DOS-a ;)
Možda, dal se neko setio da debaguje CD funkciju?
pascal.258kriss,
˙˙ Ţ veoma lako. Ako je 'obican' CRC u pitanju - ima dosta rutina
˙˙ za isti i
˙˙ Moze...
Uh, nemam vremena za kompletnu proceduru, nadam se da će biti jasno
kako se primenjuje fajl uz poruku. :)
crc32.zippascal.259omega,
Ţ Uh, nemam vremena za kompletnu proceduru, nadam se da ce biti jasno
Ţ kako se primenjuje fajl uz poruku. :)
Ma ok, to je 32-bitni crc, ali pitanje je kako ugraditi self-check
u exe program?
pascal.260bulaja,
│Ma ok, to je 32-bitni crc, ali pitanje je kako ugraditi self-check
│u exe program?
└───
Pa biće dovoljno da pri svakom startovanju radi CRC svog headera
(početka EXE datoteke, bilo bi suviše sporo da radi CRC za ceo file),
a da pri prvom startovanju taj CRC snimi negde (u samog sebe ili u
neki CFG file).
pascal.261omega,
Ţ Pa bice dovoljno da pri svakom startovanju radi CRC svog headera
Ţ (pocetka EXE datoteke, bilo bi suvise sporo da radi CRC za ceo file),
Ţ a da pri prvom startovanju taj CRC snimi negde (u samog sebe ili u
Ţ neki CFG file).
Pa u tome i jeste problem. I to naravno samo u situaciji koja
mene zanima, a to je: EXE program koji si napravio je pekalajtisan,
i potreban ti je jedan self-check svaki put kada se startuje, i to BEZ
koriscenja drugih fajlova - znaci cisto crc zapis u samom spakovanom
exe-u! Naravno, pitanje je da li to uopste moze da se izvede...
pascal.262dpriest...,
>>> Da li neko zna kako se izvrsava program pomocu EXEC ( ... ) ali
>>> tako da se rezultati izvrsavanja ne vide na ekranu ? Proba sam
>>> sa nesto tipa PROGRAM.EXE argumenti >NULL, ali ne funkcionise ?
Swap;
Exec(GetEnv('comspec'), ' /c program.exe arg1 arg2 >NUL');
Swap;
I nema nista na ekranu ako program.exe koristi bios rutime za ispis. Ako
pise direktno, probaj da pre ovog exec-a exec-ujes burnmon.exe (dejanR)
i nista se nece videti na ekranu :)))))))))))
DP...
pascal.263postmast,
From: Nenad.Radosavljevic@f114.n103.z38.setgate.setnet.co.yu (Nenad Radosavljevic)
Subject: Pascal
Date: Mon, 27 Jun 1994 17:19:02
..│Imam TP6.0 UNIT koji prpoznaje ne samo Windows, nego i veci broj
..│drugih multitaskera. Arhiva je velika 6K pa mogu da ti je posaljem
..│i postom (ako je jos neko zainteresovan, mogu da je ostavim
..│UUENCODE-ovanu
..│u ovoj konferenciji).
Ima zainteresovanih!
Pozdrav,
Nenad R.
■ CMPQwk 1.30 #316 ■ bius tagline. This is a mebius tagline. This is a me ..
* Origin: SETNet:INFOSYS*informacije*NON-STOP*BG*011-414940* (38:103/114)
pascal.264kriss,
˙˙ Ma ok, to je 32-bitni crc, ali pitanje je kako ugraditi
˙˙ self-check u exe program?
Iskoristiš fajl prikačen uz moju poruku. ;) Kako - ako nema nekih
mutnih radnji (direktno upisivanje u EXE i sl.), uradi se CRC prvih n
bajtova (ili celog programa - nije bitno) i uporedi se sa prethodno
izračunatim CRC-om koji stoji kao zadnja dva (četiri) bajta EXE-a. Ako
nije OK - već_šta_treba_da_se_uradi. :)
pascal.265jasicp,
> :: PROGRAM.EXE argumenti >NULL, ali ne funkcionise ?
> ^ Imas L viska ;)
>
> PROGRAM.EXE argumenti > NUL :)
Jok, isti je efekat. Opet pise. Osim toga, mislim da bi trebalo NULL,
ali svejedno. U cemu je stos ?
pascal.266jasicp,
> Da li program koji startujes pise po ekranu preko BIOS-a ili gada direktno
> u video memoriju? To mozes da proveris tako sto ces da ga stavis u dibager,
> pa da promatras odgovarajuci interapt.
Iskreno, ne znam. Radilo se o PKZIP-u, ali je pitanje postavljeno u
generalnom smislu. U cemu je razlika, sa moje/ tacke gledista ?
Dibager mi nije na kucnoj masini ( imam 286/1MB ) pa i ne mogu da ga
startujem...
Sem toga, izvestaj o izlasku iz pozvanog programa je u DOSERROR
varijabli, je'l tako ?
pascal.267jasicp,
> I nema nista na ekranu ako program.exe koristi bios rutime za ispis. Ako
> pise direktno, probaj da pre ovog exec-a exec-ujes burnmon.exe (dejanR)
> i nista se nece videti na ekranu :)))))))))))
Objasni :?...
pascal.268dzakic,
> Jok, isti je efekat. Opet pise. Osim toga, mislim da bi trebalo
> NULL, ali svejedno. U cemu je stos ?
Da bi se ispis mogao preusmeriti u 'ništa', potrebno je da program piše
preko DOS-a a ne preko BIOS-a! To postavljanje redirekcije radi komandni
interpreter, pa startovanje sa
Exec('prog.exe','> nul')
nema efekta jer se string '> nul' prosređuje kao parametar a uređaj za
izlaz je i dalje ekran (odnosno, onaj koji je postavljen prilikom
startovanja našeg programa). Da bi sve radilo kako treba, uradi:
Exec(GetEnv('comspec'),'/c prog.exe > nul');
pascal.269markom,
:: Jok, isti je efekat. Opet pise. Osim toga, mislim da bi trebalo NULL,
:: ali svejedno. U cemu je stos ?
Nema šanse da je NULL. NUL: ti je DOS uređaj, a NULL je 0 u
C-u :)
-=> MM <=-
pascal.270bulaja,
│Pa u tome i jeste problem. I to naravno samo u situaciji koja
│mene zanima, a to je: EXE program koji si napravio je pekalajtisan,
│i potreban ti je jedan self-check svaki put kada se startuje, i to BEZ
│koriscenja drugih fajlova - znaci cisto crc zapis u samom spakovanom
│exe-u! Naravno, pitanje je da li to uopste moze da se izvede...
└───
Ok, npr. možeš da iskoristiš nekoliko bajtova u copyright poruci koju
PKLite stavlja na početak fajla. Kad se program startuje prvi put posle
PKLite-ovanja provalićeš da ima originalni header ("PKLITE..."), onda
lepo izračunaš CRC cele datoteke sem ta 4 bajta gde ćeš strpati CRC i
upišeš ga u file. Posle prilikom svakog startovanja vidiš da je header
izmenjen, pokupiš ta 4 bajta iz njega, izračunaš CRC datoteke i uporediš
:). PKLite se neće buniti pošto i ovako ta poruke ničemu ne služi, usput
inicijalizaciona procedura (ona koja prilikom prvog startovanja računa
CRC i upisuje ga) može da upiše i neke druge podatke u sam header (npr.
konfiguraciju i sl.) i rešio si problem :).
pascal.271omega,
Ţ Ok, npr. mozes da iskoristis nekoliko bajtova u copyright poruci koju
Ţ PKLite stavlja na pocetak fajla. Kad se program startuje prvi put posle
Ok, probacu za neki dan pa cu da javim za rezultate...
pascal.272dejanr,
>> > Da li program koji startujes pise po ekranu preko BIOS-a ili gada direktno
>> > u video memoriju? To mozes da proveris tako sto ces da ga stavis u
>> > dibager, pa da promatras odgovarajuci interapt.
>>
>> Iskreno, ne znam. Radilo se o PKZIP-u, ali je pitanje postavljeno u
>> generalnom smislu.
Izlaz PKZIP-a može da se "rediriguje", dakle ne gađa video memoriju direktno.
Nećeš imati problema sa opisanim metodima.
>> Sem toga, izvestaj o izlasku iz pozvanog programa je u DOSERROR
>> varijabli, je'l tako ?
Da, PKZIP vraća ERRORLEVEL
pascal.273tbecej,
Da li neko ima YU fontove u BORLANDOVOM CHR font formatu, neka se javi na mail
ili na telefon 021 811 558 i trazi Jovu. Hvala.
pascal.274maksa,
>> Da li neko ima YU fontove u BORLANDOVOM CHR font formatu, neka
Da li neko ume da kaže nešto više o ovom formatu, ili može
da podeli neke CHR fontove ? Dobro bi došao neki 'običan' 9x16,
ili tako nešto. One gotice i slični ne liče ni na šta u 640x480,
a ovaj 8x8 je jako mali. :(
pascal.275dtadic,
>> Da li neko ima YU fontove u BORLANDOVOM CHR font formatu, neka
Zašto ih ne napraviš sam, sa nekim editorom CHR fontova?
pascal.277jasicp,
> Nema sanse da je NULL. NUL: ti je DOS uredaj, a NULL je 0 u
> C-u :)
Imas pravo, zeznuo sam se. Bas cu da isteram ovo pisanje/ne pisanje na
cistac.
pascal.278postmast,
From: broker@setgate.setnet.co.yu (Predrag Supurovic)
Subject: pascal
Date: Sun, 03 Jul 1994 10:04:01
"P> Pa u tome i jeste problem. I to naravno samo u situaciji koja
"P> mene zanima, a to je: EXE program koji si napravio je pekalajtisan,
"P> i potreban ti je jedan self-check svaki put kada se startuje, i to BEZ
"P> koriscenja drugih fajlova - znaci cisto crc zapis u samom spakovanom
"P> exe-u! Naravno, pitanje je da li to uopste moze da se izvede...
Moze. Imao sam negde TP unit predvidjen za to... Probac da ga pronadjem
pa stavim. Cini se da e bio u ekom stranom casopisu..uh, treba to
prekucavati...
Broker
... BR> Da li si clan YUCCA? Ne? Pa sta cekas?!
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.279postmast,
From: broker@setgate.setnet.co.yu (Predrag Supurovic)
Subject: pascal
Date: Sun, 03 Jul 1994 10:07:02
"M> Nema sanse da je NULL. NUL: ti je DOS uredaj, a NULL je 0 u
"M> C-u :)
U oba slucaja, ako se pise preko DOS-a na ekranu se nista ne bi
videlo. U jedniom slucaju ispis bi isao na NUL uredjaj a u drugom u NULL
datoteku.
broker
... BR> Pusenje ili zdravlje. Odlucite sami.
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.280omega,
Ţ Moze. Imao sam negde TP unit predvidjen za to... Probac da ga pronadjem
Ţ pa stavim. Cini se da e bio u ekom stranom casopisu..uh, treba to
Ţ prekucavati...
Odlicno :) Nadam se samo da taj unit ne zavisi od verzije TP-a?
pascal.281postmast,
From: Nenad.Radosavljevic@f114.n103.z38.setgate.setnet.co.yu (Nenad Radosavljevic)
Subject: Unit Za Miltitaskere
Date: Wed, 06 Jul 1994 21:51:00
Svojevremeno je neko ovde pominjao da ima unit za prepiznavanje i
vrsenje funkcije pod nazivom "giving up time slice" za DesqView,
Windows i jos neki software-a koji omogucavaju multasking. Tom prilikom
je receno da je unit mali i da ce ga poslati UUEnsode-ovanog u ovu
konferenciju.
Molio bih doticnog da mi javi gde mogu da skinem unit ili da ga
UUEncode-uje i posalje ovde.
Unapred zahvalan!
Pozdrav,
Nenad R.
■ CMPQwk 1.30 #316 ■ We now return to our regularly scheduled flame-throwing.
* Origin: SETNet:INFOSYS*informacije*NON-STOP*BG*011-414940* (38:103/114)
pascal.282postmast,
From: broker@setgate.setnet.co.yu (Predrag Supurovic)
Subject: Unit Za Miltitaskere (1/2)
Date: Thu, 07 Jul 1994 00:29:01
NR> Svojevremeno je neko ovde pominjao da ima unit za prepiznavanje i
NR> vrsenje funkcije pod nazivom "giving up time slice" za DesqView,
NR> Windows i jos neki software-a koji omogucavaju multasking. Tom
NR> prilikom je receno da je unit mali i da ce ga poslati UUEnsode-ovanog
NR> u ovu konferenciju.
Ja sam bio taj. Evo sad saljem. Podelio sam u dve poruke pa sastavi
pre nego sto dekodujes. Koristi UUENCODE.
broker
begin 644 TPMUL310.ZIP
M4$L#!`H````&`$$9#!GF1H>3X`8``/D.```,````355,05=!4D4N24Y4#0(!
M$B,4%38W:(F:VSP%!A(31,7VEO>KNDU+%V33NFR#W@TKM^S.A@KW"&\0SY..
M]0X[=VU:MV=!2GU;AWF[+3L7I-FW<D%2A0K2IDL8XZM\#GT+-Z_<M&?1_&^4
M8U."C)DS9TP6Q"\39%"70EU.=0FR!?)FRJ1_)SV*E.H4XUUT:E&I5HL2R:]C
M"&N8*XQW4K=TR\IU&Y8MR*ISRX)\ZI9MGNTI8_N*-TBC:>7.P=9$TQ`O<2T&
MZ"Y+1EB795M&ZBXS7L<8K_%<_Q6NF^S;.U[W4+1EQ\`=X&4,\*?Z]NU:$'X?
MI-6F:;&\?3+]I8S^)%&B3Z=DM[?/]`TP!UD7+DBG;^VX:S;M98SV%'I)9>IB
M?KIO08HM4WS&>VX;/C>=+WO;/._ZKEN09Z@W&?Y2!G_$H&?#B"MAOQHF;B*_
M$[72_C2L/.@U5Z%5[ONM&?]I<\6QG$%E%:S;PB%R=:\E_XK03;>,=O%U@-5N
MB+TJ7+)AK#,Q^U,X>^RV:?50[[1OK-7U[O.GW$LR:$N60H0W$>%M1'@G$=Y.
MA/<3X2U%>$\1WE9;C#<MNMFP8Y8M>`_9?SJ7%Z=W*]L;9$^0)\;ER1WADVI>
MN&5P3S$/[T<QI*I]LQAZP>6>YPURBI8:CMG5A$BO1'?*;D2,)82RM_5$<"<R
M^XYJ!TU]9YC<\YQ96;V'TH:&:\4]\;Z>4^8BN1*&@U*W0)8U61R#%ASV:9O1
M*O\J3!-B-.EBC%A`0SKWJ7>NV&.NT'**_MXFF5N=FS76E78'L9T=`S:1)]?U
MZ3\+O,1SIAX*;[^H6S1EHN3%8[$N-I[%/0CO#^MV3)S"=P<,_)DX;0`#YWJ#
MM"/FQHNG/OA3/JW,U^*;+(OZ</+6.37I&VOBF3ZPGFJ9?7=\'O>\7\K0M,_0
M'U_<X5CPM@*L,I=XO=9QND3O.E2Y;\!ZG<LI,Q5K=]FI;-..260^-&S=.;ER
M.G1JD&.^%_BJ[`9AR:$;>39-J%>JQ_;`7JNZUYP7:_V$#=)K6+H`MDRYF75%
M5;*1](;3O>^B39/$*EZ#WG1N@T'=><6^(2N@-YQ4;1>%G_@ZWW"D9L,^ILG-
M9FC5^$Q+!MC3>&;*Z5?U.JT9K9![@JBM=&%*7A9O&%=/'7CV*_ALU"M^+X'7
M<.#^'"D,3A47$OJ!)BDV#W[U+)#;;C-GZO:FW(RX[ZIT67/C+<&>+7[6E6CC
MMG,9V[,/$A&2=UD[;9IZI>8]47C=<^98DZ\F=YN0ARG]^E2^8'8J:FU'J<$1
MBI661-%MHT"/`:2GT=+4E&?EI+F86(3:8TS9V&^I=GLB?[W\C6'*ZXQV"F,(
MI;]#&.+#:`(SG9Y;A\\3FU$^Y4BWKI%=7`DL)X%A)+"^#+</SG4HK`OC*:0A
MF;G-T'ZC<Y!H=OYR7FVYWEQ.4E6;_]$)1F]TH9$NB<2P7_`YRP,Q^DJV)L.W
MD*KI9-5N]JC`<R=$%=HMA[*,>J-9Z1MZ/O=CM#<=@[WU:F>W&B_>37IGL?A8
MMNO!QK[3'L+)<3?7,,S5L>=YF#%S>PQG*<KJM664F6/L9>UE)U.W*$]HS4^L
M:Z1I43!%IGC>)UU0'T$OZM@40])%%`-#\/`T9:1Q=FF2,%1&!Z$Y7;,FS11W
M`CB!P>(DB-4T#F,F*9\K09KXN7`^-_M\$9KZHM=U$+>%UC5K9I5,C&"%M"93
MJ&'+X3SMU%?'Y[AU4<;?:I,P.EBU<%.325\VM0BGYP!&"4[>N5)<THHW&I24
M)P!W@9UH4KOKM*%/!(O/N1R)@X%B&%LH4:2]7EP>/Z:WU6!?;IY"Z'GH%[;/
M10-9H<H/HX_-LYL9]'L,*`B@3&Y%K%K.SY:=HWDY)^`RJ]1<+/(3DR[#NEDG
M;`_#B7?;<@X=*=VD3E>FL6^FXG;0+F<U9?O&3C=<867=;5#.YX;P`Y!,#0BI
M6OTB$503-(K'7!0X".F:18$;T/U$>1FYZ6B7*=H@FUP)0>>6&S?SVJT;$6-S
M6>922GT,)RT7\PW%7KR@4A";&:09J;O-Z9%"3V79=E.D$]R43Z30&)K?[^U9
MOY'"RC<(/*K'INR-[2)R[5.,T/H8^\S_UM?V;AO&%9B?:MZ,')6&)&ABL4>M
MX]89I*<1>XK?Q>\QL_0YAN9A</\R4UKH-1EC"Y+6`20\G+%/A\A6+<T,L&:,
MHGFQ'T[R\<HVFYCNDX8++YJ+L*N3Q3:X;-3NC?,E5C^EXB3+3(/+-'K#R%P@
MNH5@I##Y)7O/F7&1^@MYV/6Q[R;38$#?929JQ&1H1DD[_\5TKZ/IB"Z.X73X
M9CL'F7U0QE3D+G\JY1M(P3:^QF&6]"R%-E'S,2YTM&0D9`^CCDDZX8N@R29Q
M0!]02P,$"@`&``8`01D,&5;IC(?R"```ZQ8```P```!-54Q!5T%212Y$3T-A
M"GL'!AL&NPQ+`PD'"PD+"0<6!P@&!08'!@4V!Q87"PH&"`H+!085!`87!0H(
M!085!@HE!@@'&`H'"@@+!PL$)00E!`H&!`44!0DT!P87"1HK_/S\^_O[#`LL
M"RP+/`LL*ZP,`2(C%!4V-VB)FML\!082(Q3E]I;W1<4"!^9_@4,ES^<X_MGN
M7RCQEZOUK`GW]DF>@I^=-\F5.WRTE\)M5[6R_,)&P9]$CS[)1_@Y?YR7FM?.
M^],_[O=_9Q`U2JO].V_[[83Q#O4/9GBO5_6XZS_D/_)V+<M]_&:X'V)/(^%W
MKGHU_@D'.Z#@!U`"1R8]U?M/L,XJS0)=\@%4<.,_-NKV6F^OU08^#Z^U<3Y7
MV;K/RQ,XP/R?;7E.V>X;:QE7)7[Y/A;3`]+RN,M>MJLY+]=^_/'6J%P1;O]]
MR-3+RGJ@+8]'KCS+OU;,IL8#D"A[_%_VG[C>G`?(_[,LSYV[JKP^QHM]`Y3E
M:>MN5(ZK\9R_/9=*^T;?@+#\F9;G<2/AV.//NVY8T6Z@+`\A%E"5'+&`7@P'
M[5%_/$A^.\1G_'I;_UZS/BW/Z_*?1N,N+7^I4.=UUD"=OM'?GF,)%PWP&@?N
M3/57K_J\Z+V?E>/C]:W*_9]YJ>P;XWG]SWDR7JY[S8>\WN%+V[VN>!_K7V7'
M)_]?1^.<Z]=1S?_QE^.?EW]>Y6N!SN0#[9OR1/*JM+%VHX+RG^9U7DNX_QRL
MO_9KUW(8_U\C_L\1[I?FK;2O-]0PQ.NSKG/Y7O^Q@W_&B]M;?\I*]9H/NK>[
ML6BMC?U8[Y#-P/GUG%"[<C4JC-?R$^ZS;@;K7]OV,M@R@X?%F^3%`2I.Z;QO
MY''G_>.H$C]9U]TBH9G[Y\>I^;A2VO;J]I3C$"\VW^-'N.H$U<5N5>@WTWS9
M&:_^UXU\I]SW^1U?!*]KQ?99E#L_W#YO-/^ZCSKTEG/_I?-^V';=\7+LRZ\Z
MNB7[#ZDU:KW<&UX9ORX]:O[&^W'Z%;A\#;<N=SF/<92G2:_;^DV5!7`?N+NQ
ME_VJEOV_CPC7MA_^3OQ+T&K5O9KDFBOD=17;C9ONUV_HMDK0/_ZIJ>V_EVX;
M=^`O6"7J(?(_:%L?8X@B?AJ,?F6/OR/<6S[47^?FVMBN$K`;SAFA(WLHR>NU
M`CTX69#:IDL[,.Q[NT\\QQ@U>RA#%'Y+\DA=>H3;C]LS5-52B%XG639*PB4>
MO=WE^;A=;*7UBWBM7=MJLRR/81RK]5E\,D^]+N$7I3Z%K$4?F9`KI(R/5@C0
M*,UQH]K6OTD9LI=)/J+]&>Y7??SZ;]JM-MXWP8MB>*\>5TB!OI,ZP%HX;B<5
M,&:?.EX.7=FA\_579\G^O`S]61:T&,TDN,?S04+6N5%A.2:>:6*9'SI]#?<V
MB8B+J*Y?IO493B`)4:N.DW5AGM0C7&RQJUE5KTTQZ-]X#JPW0=3I7)HN^[2N
M^Z6#N5?X^E;]S'\U[.XU<A^1!VCCK<X@-;$UZ/;^N#.*,@CC=5"@0]MGB'(-
M(2O\UO:3LK9>:]>)U^OO5E)R8C][DIL7R\8D)'_L[S6OE90(:MU*^C'R<G&3
M)AZXD:U.AMV1U4<Z#_?&#!8+DM$Z]*#7TOH#CWRK/6+^2E6R8Y_@)ZXN!87X
MM-YV*R]IW/Z(OVWN>V3NQ[GW^JU;.%9T&CG*N*7LU_$2XI@.N-:\-7=[XY5<
M*_CJO))GRT_";>%8V5'V?`:-*Y[B"I!YY#J`F\B47$<=1$\:\[8A]Q[^*ZOB
MU2819<]U\5S6:.(21<SW^/5GI\?X.7GAP[,<GA>>,ZOS[Z/RRQ8UT!%FKW)%
MZMJYE7NMNKV@_&>K_V2ST^';#M$(UQV/]G-SPT:Y['/SO(?=ML>UVXZ9\R=Y
MV:@/U&>Z=-L_$Z\&J?XV;K@!;]7H'>WE$FV.^,D],7K#</[YO[67(.YN^;@D
M[I"#'4EV#2/Y"MW4LYCV:O/#?5HS:SZZ2^MU0M.LG7F915+)$Q8]-QC_,;5Z
M6?AO?C'Y?+H@>(?[=ZUV-2X8JRIO[5GU[2H^G-<HW<B_U?V)[1<I$*)KFTSY
MEI.M&T,7E=TZ-GB][T#J@]CE7]U='856S1S[*T\$/Y?OAO^+)]0JF!H\\]*\
M>$DUWM6;U>H)-PL&[%+W!4'KU9C/1UMKFU2NN/*)[A>CZ>$;++G;K,X0SM8F
>> nastavak u sledecoj poruci
... Ovo ovde je Balkan, zemlja iz snova.
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.283postmast,
From: broker@setgate.setnet.co.yu (Predrag Supurovic)
Subject: Unit Za Miltitaskere (2/2)
Date: Thu, 07 Jul 1994 00:29:02
>> nastavak iz prethodne poruke
MTN5E##S:%BQ)/)N*G`[W-1@I-&55RU#??M([D5T`%ZNAR0'9]V*J5M]#*-JT
M%:XD+3>,9R.0/BG>E/EH.+V^EB9M>^.N0]<F'3`;`[P)AN!SF::R/@2K4`FA
MI8+N0**>)JI`KF:^,GXF'U>8M]LZ/T3_\>]MV[>3S%PD_F`*HU$2+\?.@F)E
M);5HYXV*:G5,:A4K0DB:S"HP#+.1C5<%S9"SHU9A%IMFZ89DTB6FFB@Q2W67
M2!2WV8^OJ,D/?N/>EN<Z>$/C2<.,UW-?P'\2@NCM?EA->_(HFK^=$/K?SZ;(
M?Q.)%.WE+B1TM[Q+Q%#\,K!J!3K5MHLF&U"-LH2)6W:T:(3G.I6R,D\H,G/-
M?&%J._)R8W6W/1R6\'#T0I^7<]AT.\M,Q;.O?#B];:%1K&<NB?6('T]0MT'E
M>\H(#1/`)1A4PT0=6N\H2F\P&O=_.S$IJ=OAY5&QB<*<U\W[J7OXGYD9(RL#
MY0I(ZHJ\)K=_=O2<Z#&F."<Q<B?3[!@YTXS,Z-'_C_Z4IS%*Y3]J`Y]*^$V]
MJC_U87?'^+NSLPQ_OV,QII,8,;)^882\[)SFM<:,TFX5`)Y'DMI([8S<C*S<
M_*Q,>4O:_8B]>Y%X<S)SHV7GYL3,S,X13+GJ.\X]B98=(SLGYB0WBZ-Y/`JS
MUXW<?X=1DP%E+!:H@U#+`%/#R,^"D"T_6P**W51N?[*LJ)+#(6/)XUA6_=3%
MJ.!!3+X:V[[NM06XYF"^P<EX+!*=&A[$$)VM[>]-S3KA=_7,WK]MQ(VX(;$`
MC2`>A!$.E[8Y-C_1Z[J+_(5.YUBP&J,.0,9@^C`LP\K,A0EKW+*/:1LN7,H%
M'#R]-D%&2]:,+QZ#W7GRY^.DXA;SB;?@3\[I74<BHR#"),J*10<"4$L#!`H`
M```&`$$9#!D$]7$_V`0``/`)```,````355,05=!4D4N5%!5#P`2`R05-B<X
M.6I[3)UN'PD&`1,TY?:6]ZE"K9KC6*4#A`J0Y$"2!$D6")Y%L-\LN"389P[(
M'FR`X05TV],`T2]`?,=\=$"4`J;QV@'W"O37C+8;T'N`8_T4[06&W7&`?UCS
M`)\\0X]I1O^XAI=R[\>>N;&K4<'(K`B;5F4:]&I0J466!T\@ZLU-J\&I6:=2
M+=HD^;F3RFFH"\IQJT6E@@8('R#!F2YCPK@^:H)KIYJ4:E:H14.H-<"'`.[&
M$0Q;M!X$""*9,)H3=/K4:9%F[-D1$BTZ-:K5I$6O3,L^#?4@U:=0I#&X:*@,
MJ0:=NG3JE;,?BL3OKG7`-9V0Z-.J0ID6*7X*M1*@I@V<-_9.D41K@6CD3)PV
MHM6`DXEH"_-!G1*)\D3,HJSY`*27X:P(\$0OX#*UM]5=--L6WG]J`NJ;W#73
MI$.+!E`G@C?8D,`4T1`#3H4(14WJE`I=%-L?21]".@C!3WV`_M0J3ALZ$@,Z
MB.VD7D%3UD>?FD2(!Z@B&T<*#`B/:;H!GI9*M6I0ID*K&C6BGODHS('^D*K5
MKU6A\+G1#YT.#!#&W*`'N',!Q(A[9TA$C?YE[(:JCD8_#GIH&%V3`"J;"![;
M,0GNF$1W3)SCT(Y)1,<$45@PMD4L3QB6,#YC7<:.PH$<DT@\%SLFL1R38(Y)
M-,<DG&,2SS$)Z)B$=$QB.B9!'9.HCDE8QR2N8Q+8,8D,3\3P__\-O^"8/'!,
M1C@F01R3#([!W6/'8`L<DQR.20=/@]]P3%IX&KR(.]DY;(=C$L([>`3'I(%C
MH,J(RXYUR1?L6'W<T8YAF1R3>@[?CH54,4Q%<9[W1\PP(X-GW"64R"R<-T<Y
MG#;,YB%Y*IPK$"8P96X8_'#<@(TV?]F#>[H$IE\O$'8`Z`4NC;G=\?#$WZQG
M/'SP?H!U%R;>9RS?3N>;`Z0WM`NT,[0LTP&N6WYY<_K#F^L3?I_P_!EEGZO4
MUAUU*NZ`*[[]/UV%@?=K%"B70/_KZF4;/C&VH1<)X>V;5[B.;$-Z_\"@,><#
MUKGW@`KR/D96$S2\;]VK)BZ/6R.$[1<;)4`\[A+)WE78GZLV:+9,`O:Q9J=+
MP5@%WFU(^_]BIPH=&T6XV*_!YA"[*BOCM!\<S_,@W0)[C7O]`.)A#X,F#T"[
M([2[=EC&Q_Q/VU_UC,*L%HY4F-U`D2W.U#.WJY`GH&EZ736*B1KHV(H75,P!
M%<M3/IB]@,BVH9U`G:Z+@#(\L5'_ZR7R)+",-G!,#7G_B=EW719O[A+D$5!E
M\@^L6\#;U\OXOVX"LSOEF+4DSP+=CJ#;#733%)HV9+Y`;#]@3BB-RM<-^72*
M_-!I$/'XA7CS1BN`VJ(<W=(/R:$?D#GT`PW/&)K1,/YM&2?QUW4?+'M,Z;D5
M`KP?3UHC?`F^P.PG)2AK1_"['S166D:XGVF&+[@^2S,\PO5+FN$)KN_1#*?5
M+YKA#:X/T0Q_</V$9O@!?F<L1390@D`57N"89'!,'D@44D(FDAY"A33Q31)(
M)7)"(),@8B$9(Y)(':%,'GF'.]<'@8#$$$MDB'/2Q3F(\,Y)0.<@'LA$TD'&
M)S6D0M)$*)(YL$P2N#(BX7$)SZ2&4$"">"911`+B:]Q&+"1Y/)-$4AZIY)F4
M$O%)+,\DF&'2S#/IYIB0W5!+`P0*````!@!!"0P9%]QO>V,"``"0!```"P``
M`$U53%1%4U0N4$%3#0(!$B,4%38W:(F:VSP%!A(31,7VEO>ARGU[5F[8MB";
MUF5+M>Q<NCL;*MPCO$$.?0LWK]RT9]'2!8ER;$J0,7/FE`DRJ$NA+J>Z!-D"
M>;-E"U+*]IQCO.)W6;EVRY*)7_,?TR5,&,9U3!#..JW;MW*,-=JP;L^,K^H>
M$T;UK@J7;%@Z[ANDF>UW6_8.O0QZ-ZS<,N"[C[#<2S)H2Y9"A#<1X6U$>"<1
MWDZ$]Q/A+45X3Q'>5H0WUA;F99-G#5,F398P@A=TKSIGG#FC=U`/K#Y&7==I
MWB")OJ5J1?JM9"_R:27NGIOVK5N0.D%>*;K)7+_0LF?8KNS(/9)%<P%^V3NI
M&>XT3Y\@D&JZ:,LD[RM@KJ4:Y4DJ:FZK:9:ZW9,L02)-BR(_F>)YGW1!_4S?
M4,>F>)9EV<1=_^FP<]<`"_1-M.C4J':4I8PDO07QEEEC>C]MZS9-=^6D?-L6
MSI\[K5BV94^FN/I%W9))RX"BHCD3N=5R\:VP((*HF@!GS.XC#@VC]>;/7&$=
M=->]-F,]@K<3OKO,\0CN.OIFU1ODU+IPX7!=5@C[N&P2!%6$?:3J5)T!IYF\
M@E;5U6B(AJE^LF_O.$[;G9$?BK.#\-X@ZD]Q>LS8^99L&:[IIU-E2$4Y(ZKW
M2QE8`YS1[3I6/!']919"=1:/:CV+)S1':"5GXK2A%1C:TX[D&R^>9,29/O4.
M^1Z+AHR+1P3]&KZO[@[".[5[*/'D5#I5+LDHPZIXD-@%_IA2XP%2J'J'9>,\
MXE-(PI=!')M=W%5=!GF/D?Q`%S*28TT7Y1-@C:+U^!2.+5WT:@-02P$""P`*
M````!@!!&0P9YD:'D^`&``#Y#@``#``````````!`"``````````355,05=!
M4D4N24Y44$L!`@L`"@`&``8`01D,&5;IC(?R"```ZQ8```P``````````0`@
M````"@<``$U53$%705)%+D1/0U!+`0(+``H````&`$$9#!D$]7$_V`0``/`)
M```,````````````(````"80``!-54Q!5T%212Y44%502P$""P`*````!@!!
M"0P9%]QO>V,"``"0!```"P`````````!`"`````H%0``355,5$535"Y005-0
52P4&``````0`!`#G````M!<`````
`
end
sum -r/size 64/8739 section (from "begin" to "end")
sum -r/size 7153/6321 entire input file
... BR> Jedan im'o s kim, im'o s cim, im'o i gde - pa sad nema kud.
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.284postmast,
From: Vasil.Bacovski@f108.n108.z38.setgate.setnet.co.yu (Vasil Bacovski)
Subject: pascal
Date: Wed, 06 Jul 1994 09:04:02
Tema: pascal
Datum: 03 Jul 94 14:38
Citat: "Damir Tadic" --> All
"T> From: "Damir Tadic" <dtadic@sezam.UUCP>
"T> Newsgroups: yu.prog.pascal
"T> Organization: SEZAM Beograd, 011 648-422
>> Da li neko ima YU fontove u BORLANDOVOM CHR font formatu, neka
"T>
"T> Zasto ih ne napravis sam, sa nekim editorom CHR fontova?
Gde moze da se nadje takav editor?
Pozdrav Vasil
... A black hole is where God divided by ZERO...
* Origin: Struga BBS +389 96 74074 * Macedonia * SETNet: (38:108/108)
pascal.285postmast,
From: broker@setgate.setnet.co.yu (Predrag Supurovic)
Subject: pascal
Date: Sat, 09 Jul 1994 11:28:26
"P> Moze. Imao sam negde TP unit predvidjen za to... Probac da ga
"P> pronadjem pa stavim. Cini se da e bio u ekom stranom casopisu..uh,
"P> treba to prekucavati...
"P>
"P> Odlicno :) Nadam se samo da taj unit ne zavisi od verzije TP-a?
Ne bi trebalo, ako je u izvornom kodu, sem TP7.0 posto su u njemu uvedene
neke novine koje programeri obilato koriste...
Broker
p.s. a kakva je rutina bila u pitanju, zaboravih...
... BR> Sto ne uradis danas - moraces sutra.
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.286postmast,
From: markom@Osmeh.FON.BG.AC.YU (Marko Milivojevic)
Subject: Re: pascal
Date: Mon, 11 Jul 1994 08:38:43 GMT
Predrag Supurovic (broker@setgate.setnet.co.yu) wrote:
: U oba slucaja, ako se pise preko DOS-a na ekranu se nista ne bi
: videlo. U jedniom slucaju ispis bi isao na NUL uredjaj a u drugom u NULL
: datoteku.
Da, tacno, ali u onom drugom slucaju, ne bi postigao
zeljeni efekat, zar ne? :)
-=> MM <=-
pascal.287postmast,
From: broker@setgate.setnet.co.yu (Predrag Supurovic)
Subject: User Interface
Date: Sun, 10 Jul 1994 13:58:00
Postoji li neka biblioteka funkcija namenjana pravljenju
korisnickog interfejsa? Ne mislim na menije, vec na zamene za
ReadLn, WriteLn i slicne funkcije. Nesto sto formatira unos
i ispis podataka i tako to.
broker
* Origin: Oreska BBS, Uzice = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.288nikac,
Ajde da me neko prosvetli :)
U svom progrsmu preuzmem npr. int 08h tj. sa setintvec postavim neku
moju interupt proceduru. E sad, iz tog mog programa pozovem za exec
preko command.com -a neki drugi program. Sta se desava sa preuzetim
interuptima za vreme izvrsavanja ovog podprocesa? Da li ce se izvrsavati
moje interupt procedure jer je moj program u memoriji, ili ne?
pascal.289omega,
Ţ Ja sam bio taj. Evo sad saljem. Podelio sam u dve poruke pa sastavi
Ţ pre nego sto dekodujes. Koristi UUENCODE.
Pitam u pogresnoj conf, ali gde sa nadjem taj UUENCODE. Sta je to
uopste?
pascal.290omega,
Ţ p.s. a kakva je rutina bila u pitanju, zaboravih...
Rutina za crc proveru exe programa pisanog u TP-u...
pascal.291omega,
Ţ Postoji li neka biblioteka funkcija namenjana pravljenju
Ţ korisnickog interfejsa? Ne mislim na menije, vec na zamene za
Ţ ReadLn, WriteLn i slicne funkcije. Nesto sto formatira unos
Ţ i ispis podataka i tako to.
U kom smislu zamene? Potrebno ti je nesto kao writeln a nije writeln!?
pascal.292dejanr,
>> Pitam u pogresnoj conf, ali gde sa nadjem taj UUENCODE.
U direktorijumu COM, zove se UUEXE525.ZIP
pascal.293vitez.koja,
#=> moju interupt proceduru. E sad, iz tog mog programa
#=> pozovem za exec preko command.com -a neki drugi program.
#=> Sta se desava sa preuzetim interuptima za vreme
#=> izvrsavanja ovog podprocesa? Da li ce se izvrsavati moje
#=> interupt procedure jer je moj program u memoriji, ili
#=> ne?
Interapt procedure (tvoje) će se izvršavati ukoliko taj
novostartovani program ne menja interapt vektore.
Međutim, sve što možeš da postigneš na ovaj način je duboko
smrzavanje računara. Pretpostavljam da pokušavaš da izvedeš
iskakanje programa na pritisak tastera (popup)... To se ne
radi tako.
pascal.294evlad,
>> U svom progrsmu preuzmem npr. int 08h tj. sa setintvec postavim neku
>> moju interupt proceduru. E sad, iz tog mog programa pozovem za exec
>> preko command.com -a neki drugi program. Sta se desava sa preuzetim
>> interuptima za vreme izvrsavanja ovog podprocesa? Da li ce se izvrsavati
>> moje interupt procedure jer je moj program u memoriji, ili ne?
1) Zavisi da li si upotrebio funkciju SwapVectors.
Iz turbo pascal-ovog helpa:
" Swaps the SaveIntXX pointers in the System
unit with the current vectors. "
Spiasak vektora koje paskal u sebi preusmerava imas u helpu,
so, evo ti primera iz helpa kako treba pozvati novi komandni procesor.
{$M 8192,0,0}
uses Dos;
var
Command: string[79];
begin
Write('Enter DOS command: ');
ReadLn(Command);
if Command <> '' then
Command := '/C ' + Command;
SwapVectors;
Exec(GetEnv('COMSPEC'), Command);
SwapVectors;
if DosError <> 0 then
WriteLn('Could not execute COMMAND.COM');
end.
O ovom slucaju interapt procedure se nece izvrsavati. (probano sa
interruptom 1Bh, u aplikaciji ne radi Ctrl-Break dok u shell-u radi).
2) Kombinaciju za izostavljanje funkcija SwapVectors nisam probao.
3) Ako mislis da pravis neki rezidentan program tada treba koristiti
funkciju Keep.
pascal.295postmast,
From: broker@setgate.setnet.co.yu (Predrag Supurovic)
Subject: pascal
Date: Tue, 12 Jul 1994 01:43:39
MM> : U oba slucaja, ako se pise preko DOS-a na ekranu se nista ne bi
MM> : videlo. U jedniom slucaju ispis bi isao na NUL uredjaj a u drugom u
MM> NULL : datoteku.
MM>
MM> Da, tacno, ali u onom drugom slucaju, ne bi postigao
MM> zeljeni efekat, zar ne? :)
Decku je problem bio u tome sto je u oba slucaja ispis i dalje isao
na ekran, tj. ispis nije uopste isao preko BIOS-a.
... BR> Danas sam mladji no sto cu ikada biti.
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.296postmast,
From: Nenad.Radosavljevic@f114.n103.z38.setgate.setnet.co.yu (Nenad Radosavljevic)
Subject: User Interface
Date: Tue, 12 Jul 1994 08:56:01
PS│Postoji li neka biblioteka funkcija namenjana pravljenju
..│korisnickog interfejsa? Ne mislim na menije, vec na zamene za
..│ReadLn, WriteLn i slicne funkcije. Nesto sto formatira unos
..│i ispis podataka i tako to.
..│
Imas F/X Utils, na Fon File Server-u, koji ima dosta dobrih unita i
za formatiranje "upisa" i "ispisa" za kontrolu misa, Fossil rutine itd.
Pozdrav,
Nenad R.
■ CMPQwk 1.30 #316 ■ Mnoge devojke vole da pokazuju noge, a i sire.
* Origin: SETNet:INFOSYS*informacije*NON-STOP*BG*011-414940* (38:103/114)
pascal.297dtadic,
>> "T> Zasto ih ne napravis sam, sa nekim editorom CHR fontova?
>> Gde moze da se nadje takav editor?
Po beogradskim BBS-ovima se mogu naći dva:
- SFE.ARJ
- BGIFONT.ARJ
pascal.298igors,
Arhiva IMENIK.ZIP sadrzi program cija je namena servisiranje baze
podataka sa informacijama o vasim prijateljima i poslovnim partnerima tj. neka
vrsta elektronskog imenika i adresara. Program je pisan u TP 6.0 uz koristenje
dve eksterne biblioteke, GUILIB koju je napisao Mladen Perkovic i Sasa Cuturic
(namenjena je kreiranju elemenata korisnickog interfejsa) i TPDB (Turbo Pascal
Tools for Data Base) koja se bavi kontolom DBase kompatibilnih fajlova
koriscenih u programu.
Program IMENIK.EXE je stoga demonstracija mogucnosti koju nude ove dve
biblioteke.
Posle raspakivanja arhive prvo startujte IMENINS.EXE (setup program) gde
morate podesiti parametre vazne za rad. Najvazniji su PATHs (tj. direktorijumi
u kojima ce se nalaziti *.DBF, *.HLP, *.CFG, *.RSC fajlovi koji su neophodni za
rad programa). Ostali parametri su manje vazni i podesavaju se opciono.
Program sam poslao na SEZAM na molbu njegovog autora Mladena Perkovica.
P.S.
GUILIB biblioteka ce nakon finalne dorade biti poslana na SEZAM u
dogledno vreme. TPDB je uzeta sa SEZAMA i verovatno se nalazi pod imenom
TPDB314.ZIP u PASCAL direktorijumu.
imenik.zippascal.299isekulovic,
>> U svom progrsmu preuzmem npr. int 08h tj. sa setintvec postavim neku
>> moju interupt proceduru. E sad, iz tog mog programa pozovem za exec
>> preko command.com -a neki drugi program. Sta se desava sa preuzetim
>> interuptima za vreme izvrsavanja ovog podprocesa? Da li ce se izvrsavati
>> moje interupt procedure jer je moj program u memoriji, ili ne?
Zbog specifičnosti interapta 08h program iako menja interapt proceduru
mora da pozove staru da ne bi došlo do neželjenih posledica, najverovatnije
zbingovanja računara, tako da će se tvoja procedura izvršavati i posle
startovanja drugog programa▀
Ovo sam i praktično proverio kada sam pravio auto-dl za mte. žak sam
koristio i SwapVectors pre i posle exec procedure jer pošto promenim
proceduru na int 08h ona ne može da je dira da ne bi napravila haos, a
ostale vektore sredi ok.
pascal.300msmiljanic,
Ukratko: do 4 igraca, boje, ton, zvuk, brzina itd. sve se
podesava. One koji su skinuli neku od prethodne 2 verzije iz drugih
konferencija nek ne mrzi da skinu i ovu jer je doterana i finalna.
Program je napisan u TP-u i interesantan je kao primer da Crt unit
radi i sa nestandardnim modovima i fontovima.
yamb.zippascal.301postmast,
From: Nenad.Radosavljevic@f114.n103.z38.setgate.setnet.co.yu (Nenad Radosavljevic)
Subject: Pascal
Date: Fri, 15 Jul 1994 08:44:00
..│Ajde da me neko prosvetli :)
..│U svom progrsmu preuzmem npr. int 08h tj. sa setintvec postavim neku
..│moju interupt proceduru. E sad, iz tog mog programa pozovem za exec
..│preko command.com -a neki drugi program. Sta se desava sa preuzetim
..│interuptima za vreme izvrsavanja ovog podprocesa? Da li ce se izvrsav
..│moje interupt procedure jer je moj program u memoriji, ili ne?
Ovako kao sto si napisao trebalo bi da se izvrsavaju ukoliko taj
program koji je pozvan preko Comman.com-a --ne menja-- interupt vector
tabelu (koliko ja znam sam command.com ne menja tabelu). Medjutim
postoji dva ogranicenja:
1. U tvojim interrupt rutinama --ne sme-- se pozivati ni jedan DOS
servis, jer ce (zbog problema reentrant-osti) sistem "puci").
2. Na samom pocetku tvoje interrupt rutine (pogotovo za one rutine
koje se "kace" na Int $08h i $09h) moras pozvati starog nosioca int
vektora i to ne iz pascala vec preko masinske direktive. Primer:
Vektor stare rutine si sa getintvec($08,oldvec) snimio u oldvec
promenljivu (tipa pointer):
Proceure CallOldInt(Sub : Pointer);
begin
InLine ($9C/$5E/$06); {* PUSHF *}
{* call dword ptr [bp+6] *}
end;
a onda u tojoj inerrupt proceduri:
Procedure My interrupt(.....); Interrupt;
...
...
begin
CallOldInt(oldvec);
...
...
...
...
end;
Nadam se da sam pomogao. Ako ti treba jos objasnjenja pisi - ja cu biti
u Bgd-u od 24.07. pa ocekuj odgovor od tog datuma pa na dalje.
Pozdrav,
Nenad R.
■ CMPQwk 1.30 #316 ■ My other computer is a VAX.
* Origin: SETNet:INFOSYS*informacije*NON-STOP*BG*011-414940* (38:103/114)
pascal.302postmast,
From: broker@setgate.setnet.co.yu (Predrag Supurovic)
Subject: pascal
Date: Fri, 15 Jul 1994 10:22:19
"P> From: "Ivan Petrovic" <omega@sezam.UUCP>
"P> Pitam u pogresnoj conf, ali gde sa nadjem taj UUENCODE. Sta je to
"P> uopste?
Ako ti nije teko na pocetku poruke navdi za koga je, posto SEZAM,
kada je posalje u BInt napise da je za All. Jedva sam skontao da je za
mene.
UUENCODE i UUDECODE je par programa namenjenih za konvertovanje binarnih
datoteka u ASCII i ponovno konvertovanje iz ASCII u originilnu binarnu
datoteku. Na ovaj nacin se datoteke mogu poslati u obliku poruke, sto je
vrlo zgodno kada se radi sa mrezama (naravno, administratori ne vole predugacke
poruke.
Pogledaj, siguran sam da na SEZAM-u imas ovaj par programa.
broker@setgate.setnet.co.yu
... BR> Sta sam to popio? - rece Sokrat.
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.303postmast,
From: broker@setgate.setnet.co.yu (Predrag Supurovic)
Subject: pascal
Date: Fri, 15 Jul 1994 10:22:19
"P> p.s. a kakva je rutina bila u pitanju, zaboravih...
"P>
"P> Rutina za crc proveru exe programa pisanog u TP-u...
E da. Bacio sam se u prelistavanje literature i nasao u jednom
casopisu par rutina za menjanje izvrsnog koda, sto bi moglo da
se primeni i na cuvanje CRC-a. Znam da sam negde imao i TPU
koji je bas bio namenjen CRC proveri i jos uvek prevrcem casopise da
ga nadjem...
broker
... Svuda muskarci i zene - a nigde ljudi.
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.304postmast,
From: broker@setgate.setnet.co.yu (Predrag Supurovic)
Subject: pascal
Date: Fri, 15 Jul 1994 10:22:20
"P> From: "Ivan Petrovic" <omega@sezam.UUCP>
"P> Postoji li neka biblioteka funkcija namenjana pravljenju
"P> korisnickog interfejsa? Ne mislim na menije, vec na zamene za
"P> ReadLn, WriteLn i slicne funkcije. Nesto sto formatira unos
"P> i ispis podataka i tako to.
"P>
"P> U kom smislu zamene? Potrebno ti je nesto kao writeln a nije
"P> writeln!?
Upravo tako. Treba mi nesto kao Clipper GET i SAY. Ako to ne nadjem
sescu da sam napravim, ali bolje je da se prvo raspitam, zar ne? :)
broker
... BR> Ups. Opet ostadoh bez tagova...
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.305omega,
From: broker@setgate.setnet.co.yu (Predrag Supurovic) :)
> Upravo tako. Treba mi nesto kao Clipper GET i SAY. Ako to ne nadjem
> sescu da sam napravim, ali bolje je da se prvo raspitam, zar ne? :)
Ne znam kako to radi Clipper, ali ja sam pre nekoliko nedelja okacio
print proceduru koja pise direktno u video memoriju. Ali ne radi bas
kao writeln, vec se daju koordinate. Da li to pomaze?
pascal.306mmitrovic,
Ů█▀█Ţ InLine ($9C/$5E/$06); š* PUSHF *ć
Inline je stvar prošlost. Koristi asm direktivu.
pascal.307kriss,
˙˙>> nastavak iz prethodne poruke
˙˙
˙˙ MTN5E##S:%BQ)/)N*G`[W-1@I-&55RU#??M([D5T`%ZNAR0'9]V*J5M]#*-JT
Jel nije teško onom ko ovo sve dešifruje i sredi da zakači ovde običan
name.TPU i šta već ide uz to. Hvala.
pascal.308postmast,
From: anubis@hobbiton.CO.YU
Subject: Re: pascal
Date: Tue, 26 Jul 1994 00:45:46 GMT
Ivan Petrovic (omega@sezam.UUCP) wrote:
>>> Ne znam kako to radi Clipper, ali ja sam pre nekoliko nedelja okacio
>>> print proceduru koja pise direktno u video memoriju. Ali ne radi bas
>>> kao writeln, vec se daju koordinate. Da li to pomaze?
Imam ja svoju funkciju InputXY (x,y,'Text')
Moguca su razna editovanja samog unesenog texta.
pascal.309inesic,
Patim se sa nekim kalendarom. Treba mi formula za izračunavanje
broja dana od 1. jan. 1. god. do tekućeg (zadatog) datuma. Isto
tako trebala bi mi formula za obrnutu stvar. Ako je neko
svojevremeno imao HP-71B, i ako se seća onih francuskih diskova,
to su bile funkcije
day(dat:longInt):longInt gde je dat neki intidžer u
formatu ggggmmdd, a rezultat je broj dana
proteklih od "nulte" godeine
datum(d:longInt):longInt gde je d broj dana proteklih od
"nulte" godine, a rezultat je datum u
gorenavedenom intidžer formatu
Meni lično ne treba funkcija koja će vraćati brojeve u ovim
formatima, treba mi samo formula po kojoj se to računa. Probao
sam nešto da skrpim ali mi nije išlo. Što je najgore, pozajmio
sam od druga HP-71B, tako da uvek znam kad pogrešim, a pogrešim
uvek. :( Dobijam sve neke približne brojeve.
E da, sad sam se setio da je nekada, u uputstvima za stare
pakardove kalkulatore sa RPNom, bio dat program za izračunavanje
bioritma. Tu je, imeđu ostalog bila data funkcija day(). Ako neko
još ima, i nostalgično čuva makinu, ako je nekom ostala knjižica
"Aplications on your HP-33" (davnih li vremena) ili neka slična
nek mi časkom prekuca onaj deo programa koji to računa.
Unapred ću se zahvaliti svakom dobronamernom.
inesic
pascal.310djelovic,
> Patim se sa nekim kalendarom. Treba mi formula za izračunavanje
> broja dana od 1. jan. 1. god. do tekućeg (zadatog) datuma.
Dejanr je svojevremeno napisao veoma lep tekst na tu temu, pogledaj u
starijim računarima ili se uputi odmah u /RSOFT direktorijum.
pascal.311andrejt,
Svugde kaze (u prevodu) : JMP FFFF : 0 resetuje
comp ako je na adr. 40h : 72h upisana vrednost
1234h, medjutim ne uspeva bas najbolje.Ako
neko zna nesto nek mi kaze.
pascal.312andrejt,
Mrzim reply na sopstvene porue ali jedno objasnjenje
doticna jmp ff... nece iz pascala (6.0) preko direktive
asm ...
pascal.313dejanr,
>> Patim se sa nekim kalendarom. Treba mi formula za izračunavanje
>> broja dana od 1. jan. 1. god. do tekućeg (zadatog) datuma. Isto
>> tako trebala bi mi formula za obrnutu stvar.
Ha! Imam gotovo rešenje za tebe :)
Pogledaj tekst iz "Računara 94", zove se "Sve po kalendaru", takve stvari
vrlo detaljno objašnjene. žak nije od 1.1.1. nego i od ranije :)
Ako ti trebaju samo programi (procedure), imaš ih u direktorijum RSOFT,
fajl R094KAL.ZIP.
pascal.314dejanr,
PS Procedure možeš bezbedno koristititi za "razumne" datume iz prethodnih
par vekova, ali treba da budeš oprezan sa datumima od pre pet-šest
vekova zbog promene kalendara (mada procedure podržavaju i Julijanski
kalendar. Sa datumima sa samog početka nove ere treba da budeš još
oprezniji, jer je tada vladao haos sa kalendarima. Sa datumima od pre
nove ere... najbolje da ih i ne računaš :)
O svemu tome piše u rečenom tekstu.
pascal.315evlad,
>> Mrzim reply na sopstvene porue ali jedno objasnjenje
>> doticna jmp ff... nece iz pascala (6.0) preko direktive
>> asm ...
Probaj:
Program Ctrl_Alt_Del;
Uses
Crt;
Var
Key : Char;
Procedure RESET;
Begin
(* Load Reset_Flag [0000:0472] with 1234H *)
Mem [$0000:$0472] := $34;
Mem [$0000:$0473] := $12;
(* JMP FFFF:0000 *)
InLine ($EA/$00/$00/$FF/$FF);
End;
Begin (* MAIN *)
ClrScr;
GotoXY(27,12);
Write ('Reboot System Now <Y/N> ?');
Key := ReadKey;
if UpCase(Key) = 'Y' then RESET;
ClrScr;
Write('Have a nice day.');
end. (* MAIN *)
Kod mene radi.
pascal.316omega,
Ţ PS Procedure mozes bezbedno koristititi za "razumne" datume iz prethodnih
Ţ par vekova, ali treba da budes oprezan sa datumima od pre pet-sest
Kad smo vec kod toga, da li se zna kada je sve menjano vreme u ovom
veku? (Mislim na to sto je sada vremenska razlika izmedju nas i GMT 1
cas).
pascal.317andrejt,
__>>> Mrzim reply na sopstvene porue ali jedno objasnjenje
__>>> doticna jmp ff... nece iz pascala (6.0) preko direktive
__>>> asm ...
__>
__>Probaj:
__>
__>Program Ctrl_Alt_Del;
__> ...
Da radi.Ali sam u medjuvremenu i sam uspeo,
mislim makar malo jednostavnije (zbog asm ... end;
umesto inline(...);)
Dakle :
Var P : Pointer;
Begin
MemW[$42:$72] := $1234;
P := Ptr($FFFf,0);
ASM JMP P End;
End.
Hvala ipak.
pascal.318dejanr,
>> Kad smo vec kod toga, da li se zna kada je sve menjano vreme u ovom
>> veku? (Mislim na to sto je sada vremenska razlika izmedju nas i GMT 1
>> cas).
Razlika je zbog toga što je London zapadnije od nas za jednu časovnu
zonu, a ne zato što su oni menjali vreme a mi nismo, ili obrnuto.
Istina je da se povremeno vreme pomeri za neku sekundu da bi se uskladilo
sa kretanjem nebeskih tela, ali to se radi sinhronizovano u čitavom svetu.
pascal.319omega,
Ţ Razlika je zbog toga sto je London zapadnije od nas za jednu casovnu
Ţ zonu, a ne zato sto su oni menjali vreme a mi nismo, ili obrnuto.
Ma to je ok, ali izgleda da ja nisam najbolje objasnio. Naime, mi
pomeramo vreme u martu i septembru za sat vremena. Ali da li to vazi/
da li je vazilo za njih uvek?
pascal.320evlad,
>> Hvala ipak.
U svako doba, ako nesto treba moze ovde, moze mail. Sto znam, pomoci cu.
pascal.321dejanr,
>> Ma to je ok, ali izgleda da ja nisam najbolje objasnio. Naime, mi
>> pomeramo vreme u martu i septembru za sat vremena. Ali da li to vazi/
>> da li je vazilo za njih uvek?
Uvek svakako nije, ali su to uveli pre nas. Međutim, za ovu raspravu je
to sasvim nebitno, pošto smo govorili o programu koji računa referentni
broj dana u okviru kalendara, dakle na primer koliko je dana prošlo
između 12. januara 1905 i 30. jula 1994. Tu su sati uglavnom nebitni.
pascal.323omega,
Ţ Uvek svakako nije, ali su to uveli pre nas.
Pa to me i zanima. Od kog do kog trenutka je postojala neuskladjenost
(aada valjda postoji - razlika je 1 cas)?
Ţ Medutim, za ovu raspravu je to sasvim nebitno,
Pa pitanje i nije vezano za raspravu, nego samo za sebe. Ja sam se
samo nadovezao.
pascal.324todorp,
Subject: Re: unit za multitaskere
> Jel nije tesko onom ko ovo sve desifruje i sredi da zakaci ovde obican
> name.TPU i sta vec ide uz to. Hvala.
Evo ide :)
tpmul310.arjpascal.325mmitrovic,
Ů█▀█Ţ pomeramo vreme u martu i septembru za sat vremena. Ali da li to vazi/
Mislim da oni pomeraju časovnike u aprilu i oktobru.
Reference: Sky News's clock. Neko vreme nakon što mi pomerimo
satove englezi imaju isto vreme kao mi.
pascal.326omega,
Da li neko zna na koji nacin se pisu asm delovi za protected mod u
BP-u, posto nijedan koji radi za realni mod ne funkcionise :(
I drugo, zasto SetMemTop ne postoji u MEMORY.TPP, vec samo u MEMORY.TPU?
Mozda postoji neki njegov ekvivalent za protected mod?
pascal.327omega,
E sad je vec ovo pocelo da me nervira :(( BP ne podnosi cak ni
writeln(mem[$B800:0]) u protected modu. Zasto!? Izgleda da je
takav problem i sa onim asemblerskim delovima - naime i oni
rade direktno sa memorijom...
pascal.328bearboy,
> E sad je vec ovo pocelo da me nervira :(( BP ne podnosi cak ni
> writeln(mem[$B800:0]) u protected modu. Zasto!? Izgleda da je
> takav problem i sa onim asemblerskim delovima - naime i oni
> rade direktno sa memorijom...
Zato što u slučaju da se radi u protected modu ono $B800 gubi smisao. Adresa
video memorije za tvoj program nije više ono $B000, kao što nijedna adresa
nije ona koja je bila (mislim na ostale adaptere u 640k-1m).
pascal.329omega,
Ţ Zato sto u slucaju da se radi u protected modu ono $B800 gubi smisao.
Ko trazi, taj i nadje. Umesto writeln(mem[$B800:0]) treba
writeln(mem[SegB800:0]); i to je to! Moram da priznam da pored ogromnog
nedostatka (nema step by step :(( ), u protected modu neverovatno
efikasno pronalazim bagove za koje obican (real) uopste i nije cuo :)
Samo se pojavi ono Runtime Error 216 i sve mi je jasno :)) Uskoro
stize Chat Off-Line Reader za dpmi, pa cete da vidite kako to izgleda
i u stvarnosti ;)
E da, za distribuiranje dpmi programa iz BP7, potrebni su valjda
RTM.EXE i onaj OVL. Da li to moze da se ugradi u exe ili nekako
izbegne?
pascal.330postmast,
From: broker@setgate.setnet.co.yu (Predrag Supurovic)
Subject: transfer
Date: Sun, 24 Jul 1994 09:58:30
NS> Da te covek lepo pita sta sam ja prekrsio ovom porukom? Da nisam zbog
NS> glagola "smrdeti" i "usmredwti", epiteta "glupav" (koji se odnosi na
NS> rutinu) zaradio LockOut? E bas bih voleo da to vidim, pa da stvarno
Ovim si vredjao druge a to ovde nije dozvoljeno.
> Sto se tice tema u konferenciji, slobodno pokreni neku koja ce
> ti biti zanimljiva i onda ce biti razgovora i na tu temu. Trenutno su
> ove teme zanimljive.
NS> Ako hocete predloge, pogledacu sta me vec interesuje, ali misljenja
NS> sam da BI MODERATORI MOGLI DA SE AKTIVIRAJU I DA ANIMIRAJU OSTALE
NS> REDOVNE KORISNIKE, da pisu o necemu, da se interesuju!
Moderatori za to nisu zaduzeni i od njih se to ne moze zahtevati. Ako
te nesto zanima u vezi teme, slobodno pitaj i siguran sam da ce ljudi
pokusati da ti odgovore.
... BR> Sacekaj samo malo, da napunim bacac plamena.
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.331postmast,
From: Attila.Csipa@f107.n111.z38.setgate.setnet.co.yu (Attila Csipa)
Subject: UNITI
Date: Mon, 25 Jul 1994 01:33:49
> Kad smo vec kod unita - kako deklarisati promenljivu koja ce
>se koristiti
>u drugom unitu i obratno ?
> Tj. UNIT A - VAR B
> UNIT B - VAR A
> Gde A koristi A, a B, B.
PS> Ja to radim ovako:
PS> Unit A - definicija tipova, konstanti i promenljivih
PS> Unit B - koristi unit A
PS> unit C - koristi unit A
Brrrrr :( Koza mi se jezi kad moram da radim ovakve stvari. Eh, moja
Modulico...
... Kukavica u opasnosti ne misli mozgom vec nogama.
* Origin: Prometheus BBS - The Northern Frontier - SETNET (38:111/107)
pascal.332postmast,
From: broker@setgate.setnet.co.yu (Predrag Supurovic)
Subject: pascal
Date: Wed, 27 Jul 1994 11:21:50
> Upravo tako. Treba mi nesto kao Clipper GET i SAY. Ako to ne nadjem
> sescu da sam napravim, ali bolje je da se prvo raspitam, zar ne? :)
"P>
"P> Ne znam kako to radi Clipper, ali ja sam pre nekoliko nedelja okacio
"P> print proceduru koja pise direktno u video memoriju. Ali ne radi bas
"P> kao writeln, vec se daju koordinate. Da li to pomaze?
Nazalost, to je okaceno samo na Sezam, pa ne mogu da vidim. U Clipperu
ako das komandu
@1,1SAY 'Unesi cenu:' GET cena PICTURE "99,999,999.99"
Onda ce na koordinati 1,1 otvoriti polje duzine 13 znakova, dozvoliti
unosenje samo brojeva i ukucane brojeve rasporediti automatski dodajuci
zareze za hiljade i decimanu tacku...
Vec sam digao ruke od trazenja i pripremam teren da sam napisem tako nesto.
... Necu da budem clan nikakve mafije.
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.333inesic,
> @1,1SAY 'Unesi cenu:' GET cena PICTURE "99,999,999.99"
>
> Onda ce na koordinati 1,1 otvoriti polje duzine 13 znakova,
> dozvoliti unosenje samo brojeva i ukucane brojeve rasporediti
> automatski dodajuci zareze za hiljade i decimanu tacku...
>
> Vec sam digao ruke od trazenja i pripremam teren da sam napisem
> tako nesto.
Ajd da ne pišeš sve from d veri bigining, ja sam nešto takvo već
napisao, pa ti šaljem sors.
Nemoj da te uplaši što sam ti poslao pet junita, samo je jedan
važan - u ostalima su neke funkcije koje fieldMan (junit koji
pravi polje na datom mestu) koristi.
Ako praviš neku aplikaciju u kojoj se koristi prva tvoja citirana
linija, verovatno će ti biti od koristi funkcija slovima(), kojoj
daš broj, a ona ti vrati string u kome piše slovima koliko je to
dinara. Izgubio sam jedan dan dva sata dok nisam potrefio sve
rodove brojeva, jedninu, nekolicinu i množinu, pa će mi biti
drago da još neko nađe da je korisna.
Ono što tebi treba je procedura makeField() kojoj se prosledi
rekord tipa field u kom piše i gde i kojom bojom, i da li je
polje alfa, da li je intidžer, floating point, ili flag, pa u kom
formatu, skoro da nema šta nema. Ako ti se učini zgodnim, tj. ako
ti radi posao kad ga prekrojiš na svoju meru, mogu da ti pošaljem
junit kalendarske tematike koji ima funkciju koja, koristeći
makeField(), radi unos datuma i pri tom kontroliše njegovu
ispravnost.
Primetio sam bug (treba da ga ispravim, ali me mrzelo jer nije
ništa strašno). Kad unosiš alfa polje, onda Ctrl-left i
Ctrl-right rade reč levo i reč desno. To se radi malo traljavo,
jer mi je, kao dilimiter za reči, stavljen samo chr(32). Možeš da
staviš bilo šta još u skup. Kad pritisneš Ctrl-Backspace on bi
trebao da obriše sve što je uneto u polje i da vrati kursor na
početak. Funkcija uradi samo ono prvo, pa moraš sam da pritiskaš
home. Uostalom, eto ti nedokumentovan sors, pa ga prepravi po
svojoj meri, radi sa njim šta god hoćeš. Ne da je PD, ne da ne
tražim da mi se pominje ime pri korišćenju, nego nema ni readOnly
flag setovan, pa je free to delete, ako ti se ne sviđa. :)
Ako ti šta još u vezi ovog treba, redovno pratim ovu
konferenciju, a može i u mail.
inesic
field.zippascal.334postmast,
From: Attila.Csipa@f107.n111.z38.setgate.setnet.co.yu (Attila Csipa)
Subject: UNITI
Date: Mon, 25 Jul 1994 01:33:49
> Kad smo vec kod unita - kako deklarisati promenljivu koja ce
>se koristiti
>u drugom unitu i obratno ?
> Tj. UNIT A - VAR B
> UNIT B - VAR A
> Gde A koristi A, a B, B.
PS> Ja to radim ovako:
PS> Unit A - definicija tipova, konstanti i promenljivih
PS> Unit B - koristi unit A
PS> unit C - koristi unit A
Brrrrr :( Koza mi se jezi kad moram da radim ovakve stvari. Eh, moja
Modulico...
... Kukavica u opasnosti ne misli mozgom vec nogama.
* Origin: Prometheus BBS - The Northern Frontier - SETNET (38:111/107)
pascal.335postmast,
From: broker@setgate.setnet.co.yu (Predrag Supurovic)
Subject: pascal
Date: Wed, 27 Jul 1994 11:21:50
> Upravo tako. Treba mi nesto kao Clipper GET i SAY. Ako to ne nadjem
> sescu da sam napravim, ali bolje je da se prvo raspitam, zar ne? :)
"P>
"P> Ne znam kako to radi Clipper, ali ja sam pre nekoliko nedelja okacio
"P> print proceduru koja pise direktno u video memoriju. Ali ne radi bas
"P> kao writeln, vec se daju koordinate. Da li to pomaze?
Nazalost, to je okaceno samo na Sezam, pa ne mogu da vidim. U Clipperu
ako das komandu
@1,1SAY 'Unesi cenu:' GET cena PICTURE "99,999,999.99"
Onda ce na koordinati 1,1 otvoriti polje duzine 13 znakova, dozvoliti
unosenje samo brojeva i ukucane brojeve rasporediti automatski dodajuci
zareze za hiljade i decimanu tacku...
Vec sam digao ruke od trazenja i pripremam teren da sam napisem tako nesto.
... Necu da budem clan nikakve mafije.
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.336postmast,
From: broker@setgate.setnet.co.yu (Predrag Supurovic)
Subject: UNITI
Date: Fri, 29 Jul 1994 17:54:00
> PS> Ja to radim ovako:
> PS> Unit A - definicija tipova, konstanti i promenljivih
> PS> Unit B - koristi unit A
> PS> unit C - koristi unit A
> Brrrrr :( Koza mi se jezi kad moram da radim ovakve stvari.
>Eh, moja Modulico...
Ja sam nasao da je ovaj nacin mnogo zgodniji. Sve definicije bitne za ceo
program se nalaze na jednom mestu, pregledno slozene tako da se covek vrlo
lako snadje.
* Origin: Oreska BBS, Uzice = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.337postmast,
From: stomic@hobbiton.CO.YU (Slobodan Tomic)
Subject: Re: UNITI
Date: Sun, 31 Jul 1994 08:01:38 GMT
Attila Csipa (Attila.Csipa@f107.n111.z38.setgate.setnet.co.yu) wrote:
$ > Kad smo vec kod unita - kako deklarisati promenljivu koja ce
$ >se koristiti
$ >u drugom unitu i obratno ?
$
$ > Tj. UNIT A - VAR B
$ > UNIT B - VAR A
$
$ > Gde A koristi A, a B, B.
$ Brrrrr :( Koza mi se jezi kad moram da radim ovakve stvari. Eh, moja
$ Modulico...
:) Definises promenljivu u Interface delu i ona je vidljiva za sve
koji koriste taj unit. BTW, u Turbo Pascal-u mozes da referenciras
promenljivu kao i u Moduli-2, tj. ImeUnita.ImePromenljive, u slucaju
da koristis ista imena u razlicitim unitima.
--
Slobodan Tomic (stomic@hobbiton.co.yu, stomic@sezam.co.yu)
--
Slobodan Tomic (stomic@hobbiton.co.yu, stomic@sezam.co.yu)
pascal.338omega,
Ţ NS> Ako hocete predloge, pogledacu sta me vec interesuje, ali misljenja
Ţ NS> sam da BI MODERATORI MOGLI DA SE AKTIVIRAJU I DA ANIMIRAJU OSTALE
Ţ NS> REDOVNE KORISNIKE, da pisu o necemu, da se interesuju!
Ţ
Ţ Moderatori za to nisu zaduzeni i od njih se to ne moze zahtevati. Ako
Ţ te nesto zanima u vezi teme, slobodno pitaj i siguran sam da ce ljudi
Ţ pokusati da ti odgovore.
Wrong :) Jesu zaduzeni i bas za to:
[Dejanr,Sezam.7:2.213]:
Ţ Duznost moderatora je da relativno redovno zove Sezam, pazljivo prati
Ţ konferenciju koju moderise, odgovara na pitanja korisnika (koja dobija
Ţ javno, u konferenciji, ili privatnom postom), pokusa da kanalise poruke
Ţ u odgovarajuce teme, po potrebi uklanja poruke koje su u suprotnosti
Ţ sa Ugovorom o koriscenju Sezama ili koje su "zalutale" u konferenciju, da
Ţ se trudi da njegova konferencija bude sto zanimljivija i sto posecenija.
Ţ To obuhvata i pokretanje novih tema za diskusiju,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
pascal.339omega,
Ţ Ajd da ne pises sve from d veri bigining, ja sam nesto takvo vec
Ţ napisao, pa ti saljem sors.
Zaboravio si da on nije na Sezamu, pa to nece moci da vidi...
pascal.340dejanr,
>> > Moderatori za to nisu zaduzeni i od njih se to ne moze zahtevati. Ako
>> > te nesto zanima u vezi teme, slobodno pitaj i siguran sam da ce ljudi
>> > pokusati da ti odgovore.
>>
>> Wrong :) Jesu zaduzeni i bas za to:
>> [Dejanr,Sezam.7:2.213]:
Ako malo pogledaš, videćeš da je poruka na koju si odgovorio stigla
preko Beointerneta sa nekog drugog sistema, dakle odnosila se na njihove
moderatore, a moja poruka iz Sezam konferencije na naše.
Obaveze moderatora na raznim sistemima ne moraju biti iste.
pascal.341inesic,
> Zaboravio si da on nije na Sezamu, pa to nece moci da vidi...
Kako bre, neće moći da vidi? Pa ja sam u malim oglasima ostavio
pitanje ko menja ribone za štampače i taj isti čovek mi je
odgovorio u mailu. To valjda znači da je moju poruku pročitao i
da može da čita i sve ostale. Istina, poruka je bila dugačka
kilobajt i preko celog ekrana sevale su linije from@... ali su
one meni, "expertu" za telekomunikacije, veoma malo značile. Da
onda ipak, za svaki slučaj, ovde ostavimo poruku
EJ POSTMAST, AKO SI PROžITAO PORUKU, JAVI SE U ROKU TRI DANA. AKO
SE NE JAVIŠ, DA ZNAMO, PA DA NEKAKO ISKOPAMO PUT DO TEBE.
Stvarno mi nije jasno kako čitam njegove poruke, kako on odgovara
na moje, a da pri tom nije na Sezamu.
inesic
pascal.342omega,
Ţ> Zaboravio si da on nije na Sezamu, pa to nece moci da vidi...
Ţ
Ţ Kako bre, nece moci da vidi?
Nisi razumeo ;) Nece moci da vidi FAJL koji je zakacen...
pascal.343inesic,
> Nisi razumeo ;) Nece moci da vidi FAJL koji je zakacen...
Pa šta da mu radim? Ako svi ostali neće da se ljute, meni nije
teško da fajl anzipujem, i ostavim poruku od 12k :>
inesic
pascal.344cira,
Da ne bi gledali ono PASCAL cudoviste evo jednog asm programcica za reset.
Za one koje ono mov ax,2143h zbunjuje da kazem sledece :
U TechRefu pise da ako je na adresu 0:0472h upisan broj 4321h dolazi do
reseta ali uz ocuvanje memorije (ovo drugo je cist laz). Mozda je moglo i
krace ali... Inace u DEBUGu je moguce direktno uneti liniju jmp f000:fff0
dok u TASMu nije.
.MODEL tiny
.CODE
jmpfar dw 0fff0h,0f000h
start:
xor ax,ax
mov es,ax
mov bx,472h
mov ax,2143h
mov es:[bx],ax
jmp dword ptr cs:jmpfar
end start
pascal.345boccaccio,
YOU> Pa šta da mu radim? Ako svi ostali neće da se ljute, meni
YOU> nije teško da fajl anzipujem, i ostavim poruku od 12k :>
Nema potrebe. Ja sam mu to prebacio na Oresku.
Pozdrav,
Boris
pascal.346omega,
Ja se vratih i vidim da vec nedelju dana cutite :(( Moracu da predjem
na C :)
pascal.347dejanr,
Pazite glupog (?) problema:
var izlaz: file;
buf: array [1..100] of byte;
upisano: word;
begin
{$I-}
...
assign (izlaz, 'A:test.txt');
reset (izlaz, 1);
seek (izlaz, 100);
blockwrite (izlaz, buf[1], 100, upisano);
if (ioresult<>0) or (upisano<>100) then
begin
writeln('Greška pri upisu');
halt(1);
end;
close(izlaz);
if (ioresult<>0) then
begin
writeln('Greška pri zatvaranju');
halt(1);
end;
end.
Rekao bi čovek, ništa prostije i običnije. E, probajte da disketa A
na kojoj postoji test.txt bude zaštićena od upisa. Računar se zaglu :(
Šta se u stvari desi (bar po mom mišljenju)? On proba da upiše, i izađe
kao da je upisao, promenljiva upisano ima vrednost 100 a ioresult je
nul(zašto?). E sada se dođe na 'close (izlaz)' i tu zatvaranje ne uspe,
i ioresult više nije nula. Ispiše 'Greška pri zatvaranju', i krene da
izvršava halt naredbu. Na nesreću, fajl je i dalje otvoren, i on proba da
ga, tokom DOS funkcije koja koja uklanja program, zatvori. Ali to i dalje
ne ide, on stalno pokušava i tako u beskraj.
Naravno, moglo bi se lako odmah proveriti da li je diskete write
protected, ali ima li izlaza iz ove situacije? Dakle fajl je otvoren,
ne može da se zatvori, može li se izaći iz programa a da se računar
ne zaglupi?
pascal.348omega,
Ţ Rekao bi covek, nista prostije i obicnije. E, probajte da disketa A
Ţ na kojoj postoji test.txt bude zasticena od upisa. Racunar se zaglu :(
Ovo je stvarno neverovatno, ali istinito. Pitanje je gde on to pise u
prazno :))
Ţ Sta se u stvari desi (bar po mom misljenju)? On proba da upise, i izade
Ţ kao da je upisao, promenljiva upisano ima vrednost 100 a ioresult je
Ţ nul(zasto?).
To mi sve lici kao da postoji neki interni bafer, ali vise puta sam se
uverio da ne postoji (nazalost). Ko zna u cemu je poenta...?
Ţ protected, ali ima li izlaza iz ove situacije? Dakle fajl je otvoren,
Ţ ne moze da se zatvori, moze li se izaci iz programa a da se racunar
Ţ ne zaglupi?
Izgleda da legalne "paskalske" tehnike nema :(( Mora znaci na pocetku
da se chekira da li je write-protected disketa...Bas me zanima kako
stoji stanje sa C-om po ovom pitanju...
pascal.349postmast,
From: Attila.Csipa@f107.n111.z38.setgate.setnet.co.yu (Attila Csipa)
Subject: UNITI
Date: Sat, 06 Aug 1994 11:32:27
> PS> Ja to radim ovako:
> PS> Unit A - definicija tipova, konstanti i promenljivih
> PS> Unit B - koristi unit A
> PS> unit C - koristi unit A
> Brrrrr :( Koza mi se jezi kad moram da radim ovakve stvari.
>Eh, moja Modulico...
PS> Ja sam nasao da je ovaj nacin mnogo zgodniji. Sve definicije bitne za
PS> ceo program se nalaze na jednom mestu, pregledno slozene tako da se
PS> covek vrlo lako snadje.
Da, ALI :) to nisu bile definicije za program, tj. sto se tice hijerarhije
unita, oni su na dubini 5-6, i to ne na istoj, pa ta definicija
promenljivih se 'vuce' koz nekoliko unita gde uopste nije potrebna (samo
ometa).
... ThIs Is a CaSe SeNsiTivE TagLiNe (pOrTed FrOm UNIX)
* Origin: Prometheus BBS - The Northern Frontier - SETNET (38:111/107)
pascal.350postmast,
From: Attila.Csipa@f107.n111.z38.setgate.setnet.co.yu (Attila Csipa)
Subject: UNITI
Date: Sat, 06 Aug 1994 11:42:40
$ > Tj. UNIT A - VAR B
$ > UNIT B - VAR A
ST> $
$ > Gde A koristi A, a B, B.
ST>
ST> $ Brrrrr :( Koza mi se jezi kad moram da radim ovakve stvari. Eh,
ST> moja $ Modulico...
ST>
ST> :) Definises promenljivu u Interface delu i ona je vidljiva za sve
ST> koji koriste taj unit. BTW, u Turbo Pascal-u mozes da referenciras
ST> promenljivu kao i u Moduli-2, tj. ImeUnita.ImePromenljive, u slucaju
ST> da koristis ista imena u razlicitim unitima.
Da, da. Elem da malo pojasnim
A Eto. E sad, jedan junit mi je E, a drugi B. Ako
/ \ radim po interface principu ja to moram da definisem
B C jos u glavnom programu, zar ne ? A onda mi se te
/ \ promenljive vuku kao globalne po celom programu,
D E sto ja (naravno) ne zelim.
... Brain damage ? No, thanks, I already have some.
* Origin: Prometheus BBS - The Northern Frontier - SETNET (38:111/107)
pascal.351postmast,
From: markom@Osmeh.FON.BG.AC.YU (Marko Milivojevic)
Subject: Re: pascal
Date: Mon, 8 Aug 1994 18:11:35 GMT
Ivica Nesic (inesic@sezam.UUCP) wrote:
: Kako bre, nece moci da vidi? Pa ja sam u malim oglasima ostavio
: pitanje ko menja ribone za stampace i taj isti covek mi je
: odgovorio u mailu. To valjda znaci da je moju poruku procitao i
Aman, ljudi shvatite da se poruke vide, ali se ne vide fajlovi
okaceni uz njih :)
Nego, kad smo vec kod price sa posmastom, odnosno komunikacijama.
Zna li neko postoji li nada da ce uskoro moci da se dodje do Dra-
gishinog Hobbitona, posto tamo ocekujem prilicno vazan mail, od
kako je Sloba uveo sankcije, izbacuje posle 076 :(((
-=> MM <=-
pascal.352postmast,
From: broker@setgate.setnet.co.yu (Predrag Supurovic)
Subject: UNITI
Date: Sun, 07 Aug 1994 11:21:00
> A Eto. E sad, jedan junit mi je E, a drugi B. Ako
> / \ radim po interface principu ja to moram da definisem
> B C jos u glavnom programu, zar ne ? A onda mi se te
> / \ promenljive vuku kao globalne po celom programu,
> D E sto ja (naravno) ne zelim.
Pa ne moze i jare i pare. Ako B i E TPU treba da koriste iste promenljive
onda te promenljive moraju biti globalne. Mozes eventualno da koristis
B TPU u okviru E TPU-a u implementation sekciji, pa da izbegnes da
budu globalne.
* Origin: Oreska BBS, Uzice = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.353de.pavlov,
> Pazite glupog (?) problema:
žini se da su se tu našla zajedno bar četiri problema :
Prvi je nesrećna Turbo Pascalova procedura Reset, koja otvara
ne-tekstualnu datoteku _i za čitanje i za pisanje_ . Kada se
otvara datoteka na zaštićenoj disketi tada se Reset ponaša
kao da ne zna ( a i ne zna ) da li će se ta datoteka koristiti
za čitanje, što je dopušteno, ili za pisanje, što nije
dopušteno na zaštićenoj disketi. Problem je u tome što se
kasnije blockwrite izgleda služi samo podatkom da je
Reset uspešno obavio operaciju otvaranja datoteke ( što
je donekle i istina ), i ne proverava dalje ništa u vezi sa
datotekom sve dok ne počne pisanje. Po pokušanom pisanju
trebalo bi da blockwrite vrati izveštaj o količini uspešnog upisa
(upisano) ali se tu javlja drugi problem jer upisano
javlja 100 što nikako nije tačno jer je disketa zaštićena od upisa.
Treći problem, u tom trenutku ni IOResult nije ažurno
pa stoji IOResult = 0 iako nije bio uspešan upis.
I da se sve začini, četvrti problem, nekada je nemoguć izlazak iz programa
bez reseta celog računara.
Veliki deo problema ( ako ne i svi ) dolazi od Reset procedure.
Obično Rewrite pokušano na zaštićenoj disketi daje lepo
grešku IOResult=150, Disk is write-protected, pa je onda sve jasno.
Ne bi smetalo da je Borland bolje rešio rad sa datotekama :)
pascal.354evlad,
>> To mi sve lici kao da postoji neki interni bafer, ali vise puta sam se
>> uverio da ne postoji (nazalost). Ko zna u cemu je poenta...?
Probaj sa debugerom step-by-step do blockwrite (izlaz ....
pa jos jednom do if(ioresult .....
e sada pozovi help Ctrl-F1
poruka :
Critical Error
Disk is Write-protected in drive A. Retry or Abort ?
TP je trebao da sa C diska ucita help, a otkud grom iz vedra neba ?
stisnes A i ponovo Ctrl-F1 i gle cuda help je tu.
E sad cudo broj 2:
ako se malo prosetas po help-u, tada komotno mozes da izadjes iz TP sa Alt-X.
ali ako stisnes ESC i probas Alt-X tada se ponovo javi gore pomenuti
prozor Critical Error ...
Sve mi se cini da je stvar do Borlandovske brace po tastaturi :).
u literaturi pise IOResult vraca ustvari Dos Error Code.
u ovom slucaju kada predje preko close kod je 150 ?
[Ko li ispravi krivu drinu ?]
pascal.355quale,
Subject: Dva modema u j[e|a]dnom PC-u
Hi, sta mi sve treba da bi imao dva modema u jednom PCu i da obadva
mogu da primaju pozive. Sorry ako je bilo nesto slicno....
Cisto softwerski kako bi zgledalo, BTW.
pascal.356postmast,
From: broker@setgate.setnet.co.yu (Predrag Supurovic)
Subject: pascal
Date: Mon, 08 Aug 1994 20:06:18
==== "Ivica Nesic" rece: ======================================
> @1,1SAY 'Unesi cenu:' GET cena PICTURE "99,999,999.99"
>
> Vec sam digao ruke od trazenja i pripremam teren da sam napisem
> tako nesto.
"N>
"N> Ajd da ne pises sve from d veri bigining, ja sam nesto takvo vec
"N> napisao, pa ti saljem sors.
E hvala. Bas me zanima kako ovo tvoje izgleda. U medjuvremenu sam
nasao neke TPU koji ce mi zavrsiti posao, ali ni oni to ne rade bas
ovako...
Sors si mi ostavio na Sezamu gde ja nemam pristup, ali vec se nasao
neko ko ce to da mi skine.
Pozdrav,
broker
p.s. posebno me zanima ona funkcija sto "prica" brojeve...
... BR> Do you speak Yamaikian english?
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.357postmast,
From: broker@setgate.setnet.co.yu (Predrag Supurovic)
Subject: pascal
Date: Mon, 08 Aug 1994 20:06:19
NS> sam da BI MODERATORI MOGLI DA SE AKTIVIRAJU I DA ANIMIRAJU OSTALE
NS> REDOVNE KORISNIKE, da pisu o necemu, da se interesuju!
"P>
"P> Moderatori za to nisu zaduzeni i od njih se to ne moze zahtevati.
"P> Ako te nesto zanima u vezi teme, slobodno pitaj i siguran sam da ce
"P> ljudi pokusati da ti odgovore.
"P>
"P> Wrong :) Jesu zaduzeni i bas za to:
"P>
"P> [Dejanr,Sezam.7:2.213]:
"P> Duznost moderatora je da relativno redovno zove Sezam, pazljivo
"P> prati konferenciju koju moderise, odgovara na pitanja korisnika (koja
...
"P> sto zanimljivija i sto posecenija. To obuhvata i pokretanje novih
"P> tema za diskusiju, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
To je stvar razlicite koncepcije. Na Sezamu moderator jeste zaduzen za taj
deo posla, a kod nas na SETNet-u nije obavezan da to radi. No, stvar je
malo krenula i kako se cini bice ovde lepih tema.
broker
... COMPLAINTS > NUL
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.358pedjak,
> Hi, sta mi sve treba da bi imao dva modema u jednom PCu i da obadva
> mogu da primaju pozive. Sorry ako je bilo nesto slicno....
Moraš imati prvo dve telefonske linije, a zatim modemi se mogu naći
na sledećim portovima ( ovo su kombinacije )
-COM1,COM2
-COM1,COM4
-COM3,COM2
-COM3,COM4
Ovo ograničenje je zbog toga da bi se izbeglo poklapanje IRQ
brojeva ( standarno COM1 i COM3 imaju IRQ3, a COM2 i COM4 su na
IRQ4 ). Ukoliko imaš softver koji je u stanju da koristi i druge
IRQ za komunikaciju sa modemom i ako modem možeš podesiti da bude
na drugom IRQ, onda mogu da važe i druge kombinacije. Te druge
kombinacije nisam probao, ovo gore što sam ja napisao je probano u
praksi i radi.
Sa softverske strane, komunikacija sa modemom preko DOS-a ili BIOS-a je
slaba i ne može se koristiti za neku pravu komunikaciju, rutine su više
nego bedne :( Jedini programski jezik kod koga je savršeno rešena
komunikacija preko portova je verovali ili ne GWBASIC (!) ali sa obzirom
da ga je pregazilo vreme, ostaje nam samo da napišemo sopstvene rutine
za kontrolu portova.
Potrebno je rudimentalno poznavanje programiranja kontrolera 8250 i 8259 i
rutine su tu. Najpre se popune odgovarajući registri kontrolera 8250 i pri
tome se odredi na kakve interapte će reagovati kontroler ( znak stigao na
port, promena statusa ili znak je poslat ), postave se parametri komunikacije
( jedino ovo možemo raditi preko BIOS-a, rutina je korektna ) i zatim se
preko kontrolera 8259 dozvoli generisanje interapta i to: ukoliko se primi
zahtvev preko linije IRQ4 generisaće se INT 0CH, a preko linije IRQ3 INT 0BH.
Znači, ukoliko želiš da tvoj program kontroliše istovremeno dva modema,
moraš ih podestiti na odgovarajuće portove, a zatim preuzeti int 0ch i 0bh i
primljene znakove smeštati u prihvatne bafere ( preporučujem da budu kružnog
tipa ). Ista stvar važi i za znake koje želiš da šalješ na portove.
Ukoliko želiš da u mašini imaš samo više modema, onda preporučujem neko
multitasking okruženje ( DV ili Win )
Ukoliko želiš da vidiš kako je sve to realizovano u praksi, skini sa Sezama
/RSOFT/R057COM.ZIP, u kome se nalazi lcomm biblioteka za rad sa portovima,
pisana u asembleru, tako da se može prilagoditi bilo kom jeziku...
Ako te još nešto zanima, reci slobodno..:)
pedja
pascal.359dejanr,
>> Hi, sta mi sve treba da bi imao dva modema u jednom PCu i da obadva
>> mogu da primaju pozive.
Trebalo bi da bude moguće. Ako je taj PC namenjen komunikacijama, izbaci
iz njega sve serijske i slične kartice, i konfiguriši modeme kao COM1 i
COM2. Naravno, ako su modemi eksterni, onda će kartica morati da ostane.
Sada je glavno pitanje kako da program kontroliše oba modema "istovremeno".
Sigurno se može napisati, ali ti je u praksi znatno lakše da pokreneš
dva taska pod Windowsom (ili DV-om), pa u svakom od njih po program koji
komunicira preko jednog od modema. Uz relativno brz računar (kritična
je memorija, mnogo više nego mikroprocesor) ovo bi moglo pristojno
funkcionisati.
Ako neko proba, zanimalo bi me uspeva li "paralelna" komunikacija na
većim brzinama, npr. 14400. Na 2400 sam davno probao i radilo je lepo,
čak je prvi modem mogao da zove "komšiju" u susednom slotu preko
telefona.
pascal.360i.mandic,
Objasni malo ono "verovali ili ne GWBASIC (!)"?
pascal.361postmast,
From: markom@Osmeh.FON.BG.AC.YU (Marko Milivojevic)
Subject: Re: pascal
Date: Thu, 18 Aug 1994 16:49:19 GMT
Ivan Petrovic (omega@sezam.UUCP) wrote:
: Ovo je stvarno neverovatno, ali istinito. Pitanje je gde on to pise u
: prazno :))
A da probate da iskljucite raznorazne cashe-ove? Mozda upali :)
-=> MM <=-
pascal.363mmitrovic,
Ů█▀█Ţ Hi, sta mi sve treba da bi imao dva modema u jednom PCu i da obadva
Ů█▀█Ţ mogu da primaju pozive. Sorry ako je bilo nesto slicno....
Prvo treba da rešiš problem sa IRQ. Pošto na raspolaganju
imaš samo dva, mož' da se oprostiš od miševa ;)
Kad podesiš modeme jedan na COM1/3 drugi na 2/4 i namestiš im
IRQ3 i 4, pisanje softvera ti je lako. Samo ti umesto jednog
hendlera treba dva (za IRQ 3 i 4).
pascal.364mmitrovic,
Ů█▀█Ţ Pa ne moze i jare i pare. Ako B i E TPU treba da koriste iste
Ů█▀█Ţ promenljive onda te promenljive moraju biti globalne. Mozes eventualno
Ne mora, može da napravi modul F sa tim promenljivama i ubaci ih
samo u B i E.
pascal.365mmitrovic,
Ů█▀█Ţ Šta se u stvari desi (bar po mom mišljenju)? On proba da upiše, i izađe
Ů█▀█Ţ kao da je upisao, promenljiva upisano ima vrednost 100 a ioresult je
Ů█▀█Ţ nul(zašto?). E sada se dođe na 'close (izlaz)' i tu zatvaranje ne uspe,
Ů█▀█Ţ i ioresult više nije nula. Ispiše 'Greška pri zatvaranju', i krene da
Ů█▀█Ţ izvršava halt naredbu. Na nesreću, fajl je i dalje otvoren, i on proba
Ů█▀█Ţ da ga, tokom DOS funkcije koja koja uklanja program, zatvori. Ali to i
Ů█▀█Ţ dalje ne ide, on stalno pokušava i tako u beskraj.
Evo rezultata male seansice sa TDom.
- reset(izlaz,1);
Poziva DOS funkciju 3Dh (open with handle), sa al=System.Filemode
Filemode određuje kako će se fajl otvoriti
0 - read
1 - write
2 - erad/write (default)
u primeru sve prođe OK. Naravno fajl mora postojati na disketi.
- fseek(izlaz,100);
Prvo proveri da li je fajl otvoren.
Poziva DOS funkciju 42 za seek i ako je fajl veći od 100bl sve je OK.
- blockwrite(izlaz,buf,100,ispis);
E ovde se dešava fešta. Prvo normalno proveri da li je otvoren fajl,
onda pomnoži 100 sa 1(veličina bloka) i pozove funkciju 40h (write
with handle) koja NE VRATI grešku, ali u TDu ako probam bilo šta da
izvedem sem single stepa (pr da resetujem program) dobijem Abort,
retry za PRN:. Znači ovde nije u pitanju Borlandov sistem fajliranja
već sam DOS, koji ima bafere za fajlove (neko ih je ovde spomenuo kao
razlog) za razliku od pascala. Ako nastavim dalje da izvršavam
program onda:
- close(izlaz)
vraća grešku 150 (write protected) i proglašava fajl zatvorenim
(za pascal). Međutim kad se izvrši halt i postmortem rutina
počne da zatvara fajlove, TD kao i kad se izvršava program u DOSu
izbacuje "Write protected Abort,Retry?", dok pascalov Critical
Handler zakaže i blokira kompjuter (ovo je teorija koja se slaže
sa činjenicama). On izbaci Enter,Esc za Retry,Abort što znači da
je pozvan ali blokira nakon odgovora. Druga teorija je da se
kontrola i posle ovoga vraća DOSu i on ponovo pokušava da zatvori
fajl i ponovo ide Critical error pa se onda zaglupi handler. Sve
u svemu ovaj kraj nije do DOSa jer kad se startuje program iz
DOSa njegov handler obavi posao kako treba.
Pokušao sam da učitam turbo.exe u td386 i da vidim njegov handler
međutim stalno dobijam invalid opcode kad startujem dejanov program
u koji sam ubacio INT 3. Pokušavaću i dalje, so, ako uspem javiću.
Znači jedan DOSov bug i jedan pascalov zajedno prave sra*e, al
samo dok se radi u IDEu.
pascal.366dejanr,
>> Znači jedan DOSov bug i jedan pascalov zajedno prave sra*e, al
>> samo dok se radi u IDEu.
Hvala na detaljnoj analizi. Još samo da nađemo kako zatvoriti ovako
"vrljav" fajl, a da se računar ne zaglupi.
pascal.367pedjak,
> Objasni malo ono "verovali ili ne GWBASIC (!)"?
Mišljenja sam da je GWBASIC okolina koju je pregazilo vreme, ali
ipak ima razvijene rutine za komunikaciju... za mene kuriozitet.
pascal.368postmast,
From: Sasko.Celakovski@f108.n108.z38.setgate.setnet.co.yu (Sasko Celakovski)
Subject: modem via pascal
Date: Fri, 19 Aug 1994 14:31:00
Zdravo... Imam eden mal problem ... Kako preku TP da isprakam naredbi do
modemot ??? Imam eden primer:
program modem;
var com:text;
begin
assign (com,'com4'); bidejki modemot mi e na com port 4
reset (com);
problemot e vo toa sto sega koga ke probam da zapisam nesto vo com
datotekata so write (com,'naredba') TP javuva greska deka datotekata ne
e otvorena za pisenje nego samo za citanje (read only), dali mozda ima drug
nacin za rabota so modem preku TP (verzija 6.0).
pozdrav Sassko
* Origin: Struga BBS +389 96 74074 * Macedonia * SETNet: (38:108/108)
pascal.369mmitrovic,
Ů█▀█Ţ Hvala na detaljnoj analizi. Još samo da nađemo kako zatvoriti ovako
Ů█▀█Ţ "vrljav" fajl, a da se računar ne zaglupi.
Pada mi na pamet tri rešenja
I) promeniti IDEov critical handler, tj onaj iz Turbo Visiona
sa kojim je IDE pisan, što ne dolazi u obzir.
I'm a copyright loving kind of guy :)
II) Ubaciti tokom razvoja programa kod koji će ako close vrati grešku
150 (wr. prot.) ući u petlju dok user ne odštiti disketu. Ovde
možda kao opciju dodati "resetovanje" dosovih buffera (za ovo treba
da pogledam).
III) napraviti lični rezidentni critical handler i malo prljavog koda
koji će sprečiti IDE da instalira svoj handler ;). Ili možda samo
ovo drugo, pošto DOSov handler dobro obavi stvar.
pascal.370quale,
Subject: Re: Dva modema
██ Sigurno se moze napisati, ali ti je u praksi znatno lakse da pokrenes
██ dva taska pod Windowsom (ili DV-om), pa u svakom od njih po program koji
██ komunicira preko jednog od modema. Uz relativno brz racunar (kriticna
██ je memorija, mnogo vise nego mikroprocesor) ovo bi moglo pristojno
E to upravo i hocu da pokrenem dva programa koji ce raditi pod Win/DV.
Ostaje mi jedno ogromno pitanje a to je na koji nacin mogu ta dva programa
da komuniciraju. Dakle ako ja otkucam npr. u prvom send "Hi komso!" na koji
fazon ce da primi drugi program ovu poruku.
IMHO koliko mi je poznato to se radi sa sharetom ili tako nesto.
█
pascal.371postmast,
From: Ivan.Markovic@f114.n103.z38.setgate.setnet.co.yu (Ivan Markovic)
Subject: MODEM VIA PASCAL
Date: Sun, 21 Aug 1994 20:31:11
Rekao Sasko ...
-> Zdravo... Imam eden mal problem ... Kako preku TP da isprakam
-> naredbi do modemot ??? Imam eden primer:
Sasko - komunikacija sa modemom, tj sa COM portovima nije bas tako
jednostavna da mu se mozes obracati kao datotaci. Za te stvari bi
morao da koristis interapte - mozes kao jednostavnije resenje da
koristis neki FOSSIL driver i njegove interapte za rad sa portom
ili da pak - sto je malo slozenije resenje - napravis svoje rutine
za rad sa COM portovima ...
Pozdrav XENOX
i SySop Fenix-a
---FidoPCB v1.0 [NR]
* Origin: * Fenix BBS (011) 414-312;404-679 * SetNet: 38:103/122
pascal.372postmast,
From: broker@setgate.setnet.co.yu (Predrag Supurovic)
Subject: modem via pascal
Date: Sun, 21 Aug 1994 11:08:04
SC> Zdravo... Imam eden mal problem ... Kako preku TP da isprakam
SC> naredbi do modemot ??? Imam eden primer:
SC>
SC> program modem;
SC> var com:text;
SC> begin
SC> assign (com,'com4'); bidejki modemot mi e na com port 4
SC> reset (com);
Ne moze to tako. Najbolje je da pronadjes neku biblioteku funkcija
za rad sa serijskim portom. Za pocetak, preporuujem ASYNC. Mala je,
zgodna, ima sve sto je neophodno.
Ako je nemas u blizini, mozes je dobiti od mene.
... BR> Ja sam stvarno uvek u pravu. Dokazano.
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.373i.mandic,
Pa imaju i ostali Basic-jezici (sa prijatnijom okolinom) razvijene rutine za
komunikaciju...
Bilo mi je cudno ono "verovali ili ne" jer kako ne bih verovao, pisao sam i
sam, ali pre 4 godine ;>
pascal.375.bata.,
Ako neko nema sta da radi bio bih mu neizmerno zahvalan kad bi
mi preveo ovaj idiotski program u Pascal. Program ima 16 linija
i jedini problem je to što treba napisati funkciju koja
izracunava X ^ Y. Unapred hvala na trudu...
***********************************************
E = 2.7182818#: REM osnova prirodnog logaritma
INPUT "Unesi maksimalanu magnitudu minus minimalna magnituda plus 1: ", n
FOR i = 1 TO n
INPUT "Unesi srednji broj meteora po intrervalu: ", m
INPUT "Unesi broj klase (broj meteora u intervalu): ", k
pomocna = k
faktorijel = 1
WHILE (pomocna > 1) :REM ovaj deo
faktorijel = faktorijel * pomocna :REM izracunava
pomocna = pomocna - 1 :REM faktorijel
WEND
rezultat = m ^ k * E ^ (-k)
hi = hi + rezultat - k / rezultat
NEXT i
PRINT "X na kvadrat je: ", hi
END
***********************************************
Pozdrav... Saša
pascal.376pedjak,
> Ostaje mi jedno ogromno pitanje a to je na koji nacin mogu ta dva
> programa da komuniciraju. Dakle ako ja otkucam npr. u prvom send "Hi
> komso!" na koji
> IMHO koliko mi je poznato to se radi sa sharetom ili tako nesto.
Ukoliko misliš na poruke tipa page na sezamu, onda sami programi
moraju podržavati deljenje datoteka pod mrežom ( zbog toga se
startuje SHARE u multitasking okruženjima )
pascal.377quale,
Hi, imam sledeci problem.
Imam text file koji sadrzi text (oko 300kb). Interesuje me, naprimer,
kako najbrze doci do npr. hiljadite linije. Dakle, da li postoji neki seek
(koliko znam pisano je nesto u racunarima ali neverujem da je to to, posto
linije nisu konstantne duzine). Do sad sam radio na vrlo grub nacin,
ako hocu do hiljadite pucam ReadLn (f) hiljadu puta :).
Sigurno moze elegantnije.
pascal.378dejanr,
>> Do sad sam radio na vrlo grub nacin,
>> ako hocu do hiljadite pucam ReadLn (f) hiljadu puta :).
Hm. Radiće malo brže ako mu dodaš nekih 20-tak kilobajta kao
settxtbuf. Ne vidim kako bi se našla hiljadita linija, ako su
linije raznih dužina. Jedino što pada na pamet je da se napravi
neki indeksni fajl u kome će biti onoliko longint brojeva koliko
fajl ima linija - jednom pročitaš fajl, formiraš indeks, i onda
ga kasnije otvaraš kao netipiziran i radiš seek na poziciju koju
vadiš iz indeksa. Naravno, moraćeš još da napraviš programče
koje izdvaja liniju iz netipiziranog fajla, ali to nije poseban
problem.
Ako se fajl promeni, moraće da se regeneriše i indeks.
pascal.379postmast,
From: broker@setgate.setnet.co.yu (Predrag Supurovic)
Subject: pascal
Date: Mon, 22 Aug 1994 10:38:19
"U> Hi, sta mi sve treba da bi imao dva modema u jednom PCu i da obadva
"U> mogu da primaju pozive. Sorry ako je bilo nesto slicno....
Probao sam par COMM biblioteka za TP koje su imale tu mogucnost,
a i fossil drajveri to podrzavaju. Nisam probao ali sumnjam da nece
da radi.
... TAG loading error...
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.380postmast,
From: Attila.Csipa@f107.n111.z38.setgate.setnet.co.yu (Attila Csipa)
Subject: UNITI
Date: Mon, 22 Aug 1994 14:09:14
> A Eto. E sad, jedan junit mi je E, a drugi B. Ako
> / \ radim po interface principu ja to moram da definisem
> B C jos u glavnom programu, zar ne ? A onda mi se te
> / \ promenljive vuku kao globalne po celom programu,
> D E sto ja (naravno) ne zelim.
PS> Pa ne moze i jare i pare. Ako B i E TPU treba da koriste iste promenljive
PS> onda te promenljive moraju biti globalne. Mozes eventualno da koristis
PS> B TPU u okviru E TPU-a u implementation sekciji, pa da izbegnes da
PS> budu globalne.
Ne moze, jer i E koristi delice B-a :(
* Origin: Prometheus BBS - The Northern Frontier - SETNET (38:111/107)
pascal.381postmast,
From: broker@setgate.setnet.co.yu (Predrag Supurovic)
Subject: pascal
Date: Tue, 23 Aug 1994 23:42:27
To: "Bratislav Urakovic" <quale@sezam.UUCP>
"U> E to upravo i hocu da pokrenem dva programa koji ce raditi pod Win/DV.
"U> Ostaje mi jedno ogromno pitanje a to je na koji nacin mogu ta dva
"U> programa da komuniciraju. Dakle ako ja otkucam npr. u prvom send "Hi
"U> komso!" na koji fazon ce da primi drugi program ovu poruku.
Ako radis pod multitaskingom, i ako je sve dobro podeseno, uslovno
mozes matrati da imas dva racunara sa po jednim modemom i tako treba
i da ih tretiras. Mozes ih povezati na isti nacin kao i dva racunara
koji su potpuno odvojeni.
... BR> Lako je biti zao gospodar, ali kratko.
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.382djelovic,
> Hm. Radiće malo brže ako mu dodaš nekih 20-tak kilobajta kao
> settxtbuf. Ne vidim kako bi se našla hiljadita linija, ako su
> linije raznih dužina. Jedino što pada na pamet je da se napravi
> neki indeksni fajl u kome će biti onoliko longint brojeva koliko
> fajl ima linija - jednom pročitaš fajl, formiraš indeks, i onda
> ga kasnije otvaraš kao netipiziran i radiš seek na poziciju koju
> vadiš iz indeksa.
Ukoliko se zaista radi o hiljadu-dve linija, onda indeks komotno može da
se drži u memoriji (2000 linija * četiri bajta = 8K), i da bude manji od onog
settxtbuf-a od 20K :). A i može da se formira inkrementalno, tako da praktično
ne usporava sistem.
pascal.383pedjak,
> i jedini problem je to što treba napisati funkciju koja
> izracunava X ž Y. Unapred hvala na trudu...
Function Power( x,y: Real): Real;
Begin
If y = 0 Then
power := 1.0
Else if x = 0 Then
Power := 0.0
Else If x > 0 Then
Power := exp( y * ln(x))
Else if Trunc(y) mod 2 = 0 Then
Power := exp( y * ln(abs(x)))
Else
Power := -exp( y * ln(abs(x)));
End;
pedja
pascal.384cira,
Kako do pow(x,y) :
> Else if Trunc(y) mod 2 = 0 Then
> Power := exp( y * ln(abs(x)))
> Else
> Power := -exp( y * ln(abs(x)));
Ovaj deo funkcije je malo problematican. Tacnije, ne vraca ispravnu
vrednost ako je 0<y<1 (x<0) za neke y. Posto je TRUNC(y) uvek jednako 0
ako je y izmedju 0 i 1 onda je i TRUNC(y) mod 2 uvek 0 za takvo y.
Primer : x=-2,y=1/3 => power=1.25992... a ne kao sto bi trebalo da bude
power=-1.25992...( sto bi se dobilo izrazom iza
poslednjeg ELSE).
Moguce ispravke su da proveris kakav je deo iza tacke (paran/neparan) ili
da proveris da li se desila greska u f-ji EXP pa ako jeste da predjes na
sledeci korak, a ako nije da vratis rezultat. Verovatno ima jos nacina ali
mi ne pada ni jedna druga ideja sem mozda razvoja u red.
pascal.385stomic,
Subject: Re: UNITI
$ PS> B TPU u okviru E TPU-a u implementation sekciji, pa da izbegnes da
$ PS> budu globalne.
$
$ Ne moze, jer i E koristi delice B-a :(
IMHO, organizacija modula (unita) ti je loša. Ja težim da svaki modul
bude što je moguće crnja kutija - što više zatvoren, i pristupačan samo
preko par definisanih procedura u interface-u (bez ikakvih globalnih
promenljivih). Znači najbolje rašenje je da preorganizuješ čitavu
hijerarhiju i/ili kao što je već neko predlagao da ti svi globalni
tipovi i promenljive idu u zaseban modul.
---
Slobodan Tomić (stomic@hobbiton.co.yu, stomic@sezam.co.yu)
pascal.386omega,
Ţ vec sam DOS, koji ima bafere za fajlove (neko ih je ovde spomenuo kao
Ţ razlog) za razliku od pascala. Ako nastavim dalje da izvrsavam
Da ponovim jos jednom :) Je l' postoji neko lepo resenje za baferisanje
iz Pascala? Mislim na zvanicno koje mi je promaklo (mada nema sanse :))?
pascal.387omega,
Ţ Ukoliko mislis na poruke tipa page na sezamu, onda sami programi
Btw, kako to uopste funkcionise? I kako svaki od nodova "zna" ko je
on-line?
pascal.388omega,
Ţ Ovaj deo funkcije je malo problematican. Tacnije, ne vraca ispravnu
Ţ vrednost ako je 0<y<1 (x<0) za neke y. Posto je TRUNC(y) uvek jednako 0
Ţ ako je y izmedju 0 i 1 onda je i TRUNC(y) mod 2 uvek 0 za takvo y.
Pa fino si to zakljucio, ali to je i resenje :))
else if (y>0) and (y<1) then
if Trunc(1/y) mod 2 = 0 Then
Power := exp( y * ln(abs(x)))
Else
Power := -exp( y * ln(abs(x)));
Ali sve je to neverovatno komplikovano ;) Mora da postoji i nesto krace,
lepse :) Btw, uvek sam se pitao zasto ni Pascal i C nemaju normalnu
Power rutinu :(((
pascal.389omega,
Ţ Hm. Radice malo brze ako mu dodas nekih 20-tak kilobajta kao
Ţ settxtbuf. Ne vidim kako bi se nasla hiljadita linija, ako su
Hmm, ja bas nisam primetio da se dobijaju neka velika ubrzanja
posle povecanja settextbuf posle cini mi se par kilobajta...?
Verovatno je "krivac" disk kes, ali me u svakom slucaju zanima
koja je optimalna vrednost za bafer pri dosta velikom radu sa
datotekama?
pascal.390pedjak,
> Ovaj deo funkcije je malo problematican. Tacnije, ne vraca ispravnu
> vrednost ako je 0<y<1 (x<0) za neke y. Posto je TRUNC(y) uvek
> jednako 0 ako je y izmedju 0 i 1 onda je i TRUNC(y) mod 2 uvek 0 za
> takvo y.
Hvala na primećenom bagu :) Evo ispravne verzije:
Function Power( x,y: Real): Real;
var
imenilac:real;
Begin
imenilac:=round(100000000000.0/(y*100000000000.0));
If y = 0 Then
power := 1.0
Else if x = 0 Then
Power := 0.0
Else If x > 0 Then
Power := exp( y * ln(x))
Else if Trunc(imenilac) mod 2 = 0 Then
Power := exp( y * ln(abs(x)))
Else
Power := -exp( y * ln(abs(x)));
End;
pedja
pascal.391zeljkoj,
> lepse :) Btw, uvek sam se pitao zasto ni Pascal i C nemaju
> normalnu Power rutinu :(((
U C-u imaš funkciju pow. Ipak je to u BASIC-u bolje. ;)
pascal.392zeljkoj,
> koja je optimalna vrednost za bafer pri dosta velikom radu sa
Nema tu optimalno. Što više, to bolje. (a to znači 64 kB)
pascal.393dejanr,
>> > Ukoliko mislis na poruke tipa page na sezamu, onda sami programi
>>
>> Btw, kako to uopste funkcionise? I kako svaki od nodova "zna" ko je
>> on-line?
Svaki nod ima svoj redni broj, i čim neko dođe na vezu (ili ode sa veze)
upiše u odgovarajući segment jednog deljenog fajla na serveru odgovarajuće
podatke o korisniku. I page-ovanje ide preko deljenih fajlova u posebnom
direktorijumu, svaki nod povremeno (i to dosta često) skanira ima li šta
za njega, pa ako ima izvrši komandu koja mu je poslata.
pascal.394omega,
Ţ Nema tu optimalno. Sto vise, to bolje. (a to znaci 64 kB)
Pa da mi popuni ceo data segment? No way :)
pascal.395omega,
Ţ U C-u imas funkciju pow. Ipak je to u BASIC-u bolje. ;)
Koji je to C? Nijedan BASIC to nema sredjeno...O cemu pricas? ;)
pascal.396djelovic,
> koja je optimalna vrednost za bafer pri dosta velikom radu sa
> datotekama?
Pri sekvencijalnom čitanju, bolji je što veći bafer mada preko neke
određene cifre (20K mi deluje previše?) dobici na performansama postaju
zanemarljivi. Na drugu stranu, ukoliko se radi o slučajnom pristupu datoteci,
onda je najbolje da veličina bafera *tačno* odgovara veličini podataka koji se
čitaju.
pascal.397pedjak,
> Btw, kako to uopste funkcionise? I kako svaki od nodova "zna" ko je
> on-line?
Pa, ovako uprošteno, komunikacija se odvija preko zajedničkih
fajlova.. s vremena na vreme nod konsultuje taj fajl da vidi da li
ima novih poruka za njega, pa ako ima ispiše ih.. Na isti način
funkcioniše i chat.
pascal.398pedjak,
> Da ponovim jos jednom :) Je l' postoji neko lepo resenje za
> baferisanje
Za tekstualne postoji, dok za ostale ne.
pascal.399zeljkoj,
> Pa da mi popuni ceo data segment? No way :)
Pa ti nemoj da koristiš niz, nego listu, pa će ti data segment
ostati netaknut.
pascal.400zeljkoj,
> Koji je to C? Nijedan BASIC to nema sredjeno...O cemu pricas?
> ;)
Izgleda da nisi dobro razumeo o čemu je reč i šta sam ja napisao.
Da počnemo od početka :). Neko (mislim .bata.) je zamolio nekog da
mu konvertuje program sa BASICa na Pascal. Citiram:
> Ako neko nema sta da radi bio bih mu neizmerno zahvalan kad bi
> mi preveo ovaj idiotski program u Pascal. Program ima 16 linija
> i jedini problem je to što treba napisati funkciju koja
> izracunava X ^ Y. Unapred hvala na trudu...
Znači, čoveku treba funkcija za stepenovanje u Pascalu, pošto to
u istom NE POSTOJI. U BASICu za to služi operator ^, što se može
videti i iz same poruke! I kako onda "Ni jedan BASIC to nema sređeno?"
Očigledno da ne čitaš pažljivo poruke, jer čak i da ne znaš BASIC
iz navedenog programa si mogao da vidiš da BASIC TO IMA SREĐENO!!!
Ako si i dalje ubeđen da si u pravu :) evo navodim deo iz Quick
Basic Proffessional 7.1 helpa koji se odnosi na aritmetičke operatore:
^ Exponentiation
- Negation
*,/ Multiplication and division
\ Integer division
MOD Modulo division
+,- Addition and subtraction
To važi i za sve ostale BASICe na PC-u, a i šire :)
žak i u Spectrumovom BASICu postoji operator za stepenovanje. Poslaću ti
Sinclair ZX Spectrum BASIC priručnik pa pogledaj, ako ne veruješ.
To bi bilo što se tiče BASICa, a sada da pređemo na C :))
Ti kažeš "Koji je to C?", a niko od tolikih C-ovaca na Sezamu se ne buni!
Za Microsoft C ne znam ali svaki Borlandov C ima funkciju pow. Navodim
deo Turbo C++ 1.0 helpa kao dokaz:
█Ů pow
Power function, x to the y
real: double pow(double x, double y);
complex: complex pow(complex x, complex y);
Prototype in math.h (real)
complex.h (complex)
Complex pow is defined by
pow(base, expon) = exp(expon log(base))
Real pow returns x^y. Error handling for this
routine can be modified by the function
matherr.
Evo i primera:
#include <math.h>
#include <stdio.h>
int main(void)
{
double x = 2.0, y = 3.0;
printf("%lf raised to %lf is %lf\n", x, y, pow(x, y));
return 0;
}
"O čemu pričaš" - Preporučujem ti da lepo pročitaš celu ovu poruku,
pa će ti biti jasno o čemu pričam, pošto ono što sam do sada rekao
očigledno nije bilo dovoljno. Još nešto za kraj: ako nekog zanima
u FORTRANu se stepenovanje vrši operatorom ** i ja preporučujem
onome od koga je diskusija i počela da svoj programčić sa BASICa,
umesto na Pascal, prevede na FORTRAN, jer ipak je on BOLJI za te
stvari.
Toliko od mene. Ako treba još dokaza, samo reci :).
Pozdrav, čeljko The Sorcerer
('ajd da dodam potpis, kad je već tolika poruka ;>)
pascal.401mjova,
> Svaki nod ima svoj redni broj, i čim neko dođe na vezu
> (ili ode sa veze) upiše u odgovarajući segment jednog
> deljenog fajla na serveru odgovarajuće
beše i neki tekst u računarima o ovome. mislim da ima i primer po
imenu CHAT.C
pascal.402i.mandic,
Najzad neko ko ima PDS 7.1 :))
Da li je neko pokusavao da koristi QLB biblioteke za Quick Basic 4.5 na PDS
7.1?
pascal.403omega,
Ţ u istom NE POSTOJI. U BASICu za to sluzi operator ^, sto se moze
Ţ videti i iz same poruke! I kako onda "Ni jedan BASIC to nema sredeno?"
Ţ Ocigledno da ne citas pazljivo poruke, jer cak i da ne znas BASIC
Ţ iz navedenog programa si mogao da vidis da BASIC TO IMA SREDENO!!!
Ţ Ako si i dalje ubeden da si u pravu :) evo navodim deo iz Quick
Naravno da sam u pravu! Sve to sto si ti naveo ne vredi ni pet para
jer ne ume da izvadi neparne korenove iz negativnih brojeva. O TOME JA
PRICAM. Znaci probaj u bilo kom BASIC-u "PRINT (-27)^(1/3)" pa ces da
vidis da sam u pravu...Probaj i u C-u: "printf ("%lf\n",pow (-27,1/3)"...
Prema tome, NEOPHODNO JE PISANJE SOPSTVENE FUNKCIJE ZA STEPENOVANJE.
Ţ "O cemu pricas" - Preporucujem ti da lepo procitas celu ovu poruku,
Ţ pa ce ti biti jasno o cemu pricam, posto ono sto sam do sada rekao
Ţ ocigledno nije bilo dovoljno.
To isto jedino ja tebi mogu da preporucim...
pascal.404ognjen,
)-> Znaci, coveku treba funkcija za stepenovanje u Pascalu, posto
)-> to u istom NE POSTOJI.
Sad mi pade na pamet. Zar ne bi moglo ovako? :
Resenje := X
For I := 1 to Y-1 (recimo trazi se X^Y)
Resenje := Resenje * X
I, gotovo!
pascal.405zeljkoj,
> Najzad neko ko ima PDS 7.1 :))
> Da li je neko pokusavao da koristi QLB biblioteke za Quick
> Basic 4.5 na PDS 7.1?
Nisam pokušao to, ali mislim da ne može. To kažem zato što VB for DOS
nije hteo da učita biblioteke napravljene sa QBX PDS 7.1. Taj problem
se može rešiti na sledeći način:
Obriše se .QLB a ostavi .LIB, pošto su .LIB fajlovi kompatibilni.
Zatim se napravi prazan .QLB (bez bilo kakvih funkcija i subrutina).
i onda pomoću LIB.EXE i LINK.EXE doda stari .LIB u taj novi prazan
.QLB i - dobijen je novi .QLB. Ako treba detaljnije kako se to radi,
samo reci.
BTW ovo je tema pascal, a mi pričamo o BASICu - mogli bismo polako
da se preselimo tamo gde nam je i mesto.
pascal.406vpudar,
-> Ů█▀█Ţ "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.
Definitivno. Probleme je pravio FASTVID, programčić za ubrzavanje
(i to drastično!) ispisa na DOS-ov ekran. žudno je to da do sada (6
meseci) nisam imao nikakvih problema, sem pomenutih s CRT Unit-om TP-a.
pascal.407mboban,
**> Sad mi pade na pamet. Zar ne bi moglo ovako? :
**>
**>
**> Resenje := X
**> For I := 1 to Y-1 (recimo trazi se X^Y)
**> Resenje := Resenje * X
**>
**> I, gotovo!
Može, ali ako važi
(X ţ R+) /\ (Y ţ N)
A šta ako je Y realan broj? A šta ako je Y negativan broj? A šta ako
je X negativan broj?
Prve dve stvari mogu da se urade pomoću par If-ova, ali ovo treće...
Mrzi me da kopam po udžbenicima (dok je još uvek raspust :) da tražim
formule.
pascal.408postmast,
From: broker@setgate.setnet.co.yu (Predrag Supurovic)
Subject: pascal
Date: Mon, 29 Aug 1994 11:05:54
"T> IMHO, organizacija modula (unita) ti je losa. Ja tezim da svaki
"T> modul bude sto je moguce crnja kutija - sto vise zatvoren, i
"T> pristupacan samo preko par definisanih procedura u interface-u (bez
"T> ikakvih globalnih promenljivih). Znaci najbolje rasenje je da
Ponekad globalne promenljive dobro dodju. Recimo neki parametar je
potreban velikom broju funkcija u unit-u, ali se menja zavisno od
SETUP-a na pocetku programa. Nezgodno je traziti od proramera da
taj paametar svaki put prosledjuje funkcijama, vec je jednostavnije da
na pocetku podesi sadrzaj neke globalne promenljive iz unit-a i posle
to funkcije same upotrebljavaju kad im zatreba.
Recimo, radis Unit koji radi razne stvari sa stringovima, ali vodi
racuna o nasim slovima. Umesto da svakoj funkciji prosledjuje podatak
koja su nasa slova, to jednostavno podesis u glob promenljivoj...
Mislim da je tako lakse...
... BR> Sto vise TAG-ova imam, sve bolje lezu uz poruke...
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.409omega,
Ţ Resenje := X
Ţ For I := 1 to Y-1 (recimo trazi se X^Y)
Ţ Resenje := Resenje * X
Jok bre, mora preko log i exp zato sto su x,y realne vrednosti.
pascal.410i.mandic,
Ili ipak da osnujemo grupu...
pascal.411stomic,
Subject: Re: pascal
$ "T> pristupacan samo preko par definisanih procedura u interface-u (bez
$ "T> ikakvih globalnih promenljivih). Znaci najbolje rasenje je da
$ racuna o nasim slovima. Umesto da svakoj funkciji prosledjuje podatak
$ koja su nasa slova, to jednostavno podesis u glob promenljivoj...
Naravno, ali ta promenljiva je globalna na nivou unita (modula), ne
na nivou celog programa (mislio sam na te globalne promenljive). Znači
globalna promenljiva se nalazi samo u IMPLEMENTATION delu (nevidljiva je
za ostatak programa), a njen sadržaj se menja preko vidljivih procedura,
čime i dalje imamo lepu crnu kutijicu :).
---
Slobodan Tomić (stomic@hobbiton.co.yu, stomic@sezam.co.yu)
pascal.412mmitrovic,
Ů█▀█Ţ Naravno, ali ta promenljiva je globalna na nivou unita (modula), ne
Ů█▀█Ţ na nivou celog programa (mislio sam na te globalne promenljive). Znači
Ů█▀█Ţ globalna promenljiva se nalazi samo u IMPLEMENTATION delu (nevidljiva je
Ů█▀█Ţ za ostatak programa), a njen sadržaj se menja preko vidljivih procedura,
Ů█▀█Ţ čime i dalje imamo lepu crnu kutijicu :).
Ovo meni sve liči na "Što prosto kad može komplikovano". Crne kutijice
kako ih ti zoveš su ostavljene proizvođačima modula da zaštite princip
rada svojih modula i da preko funkcija kontrolišu da li su prosleđeni
podatci validni. Ako ti sam pišeš modul za sebe onda uopšte nemaš potrebe
za tim. Em ima više koda, em je sporije. Navedeš promenljivu u
INTERFACE delu i nju će videti svi moduli i program koji ima uses za taj
modul.
Jedno modul.promenljiva:=vrednost je mnogo efikasnije od
modul.PostaviPromenljivu(vrednost);
Sad ako misliš da ćeš uspeti da sam sebi ukradeš modul, onda
ne znam. ;)
pascal.413djelovic,
> Ovo meni sve liči na "Što prosto kad može komplikovano". Crne kutijice
> kako ih ti zoveš su ostavljene proizvođačima modula da zaštite princip
> rada svojih modula i da preko funkcija kontrolišu da li su prosleđeni
> podatci validni. Ako ti sam pišeš modul za sebe onda uopšte nemaš potrebe
> za tim. Em ima više koda, em je sporije. Navedeš promenljivu u
> INTERFACE delu i nju će videti svi moduli i program koji ima uses za taj
> modul.
Pogrešno. Koncept skrivanja informacija ne služi da bi proizvođač krio
svoje tajne, već da bi svaki modul imao jasno definisan interfejs. Kako to da
nikome u toku vožnje automobila ne pada na pamet da odvrće šrafove sa motora,
dok u programiranju većina misli da je time čini nešto posebno? :)
pascal.414postmast,
From: Attila.Csipa@f107.n111.z38.setgate.setnet.co.yu (Attila Csipa)
Subject: pascal
Date: Tue, 30 Aug 1994 06:55:47
$ PS> B TPU u okviru E TPU-a u implementation sekciji, pa da izbegnes da
$ PS> budu globalne.
"T> $
"T> $ Ne moze, jer i E koristi delice B-a :(
"T>
"T> IMHO, organizacija modula (unita) ti je losa. Ja tezim da svaki
"T> modul bude sto je moguce crnja kutija - sto vise zatvoren, i
"T> pristupacan samo preko par definisanih procedura u interface-u (bez
"T> ikakvih globalnih promenljivih). Znaci najbolje rasenje je da
"T> preorganizujes citavu hijerarhiju i/ili kao sto je vec neko predlagao
"T> da ti svi globalni tipovi i promenljive idu u zaseban modul.
Jasno, ali je poenta u tome sto je doticni program pisan u Moduli, a sad
bi trebalo da se prevede na Paskal. Posto se radi o povecem programu, nesto
mi nije do reorganizacije, pa sam bas zato pitao :) Dovoljan problem mi je
to sto je program pisan da koristi Modulin multitasking...
... Error 216: Tagline out of paper.
* Origin: Prometheus BBS - The Northern Frontier - SETNET (38:111/107)
pascal.415mmitrovic,
Ů█▀█Ţ svoje tajne, već da bi svaki modul imao jasno definisan interfejs.
Uhh :)
Recimo da si u pravu, i nazovimo to (u nedostatku boljeg izraza)
čistim programiranjem. žisto programiranje nije i efikasno
programiranje, zbog razloga koje sam već naveo. Ne postoje apsolutno
nijedan dobar razlog zbog koga bi trebalo sakrivati promenljive od
samog sebe. Specijalno one koje se koriste u višim modulima i u samom
programu.
Ů█▀█Ţ dok u programiranju većina misli da je time čini nešto posebno? :)
Pa istini za volju i nije ti neka metafora :)
Skidajući šrafove sa motora tokom vožnje će pre il kasnije izazvati
havariju. ;) Sa druge strane to što ćeš dati majstoru da ti skida
šrafove ne znači da neće doći do havarije (koja analogija :).
Stvarno, izbegavanje funkcija je veoma posebno (less & faster code),
ako znaš mašinac i pascal ili c (a verovatno znaš) uporedi oba
metoda za postavljanje promenljive i kaži iskreno koji je bolji.
Što se tiče zaštite o kojoj sam govorio, nju sam naveo iz ličnog
iskustva vezanog za analizu TVision objekata. Kad se izvuku privatni
metodi i polja, ceo princip funkcionisanja TVa postaje mnogo jasniji.
Probaj (opet ako si radio sa TVom) da objasniš na koju foru rade
Load, Store, PutPeerView, itd objekti za rad sa Strimovima. Odokativno
izgleda kao da tu nešto fali i uopšte nije bilo jasno šta se tu i
na koji način odvija (naročito sa snimanjem pointera koji se svaki put
drugde nalaze). Analizom metoda i privatnih polja koja koriste ceo
princip se pokazao savršeno jednostavnim.
To je bilo pre nekih 6 meseci dok sam se zanosio da napravim Graphic
Vision :) Silly of me.
pascal.416omega,
Ţ To je bilo pre nekih 6 meseci dok sam se zanosio da napravim Graphic
Ţ Vision :) Silly of me.
Steta :( Ja sam video da su neki nasi klinci iz unutrasnjosti uspeli,
i to vrrrrrlo lepo :)
pascal.417pedjak,
> Ovo meni sve liči na "Što prosto kad može komplikovano". Crne
> kutijice kako ih ti zoveš su ostavljene proizvođačima modula da
> zaštite princip rada svojih modula i da preko funkcija kontrolišu da
> li su prosleđeni podatci validni. Ako ti sam pišeš modul za sebe
> onda uopšte nemaš potrebe za tim. Em ima više koda, em je sporije.
> Navedeš promenljivu u
Nije stvar u proizvođačima, nego se na taj način pišu čistiji i
čitljiviji programi, a po potrebi se posle i lakše menjaju, pogotovo
ako radiš u nekom timu.
pascal.418dejanr,
>> Kao što se vidi iz priloženog, on je ignorisao net.cfg instrukcije iako
>> je gore napisao da koristi "net.cfg".
Imao sam nedavno sličan problem, i evo u čemu je bila stvar: *SVE* što
piše u NET.CFG mora da bude tačno! Kod mene, konkretno, nije bio tačan
port, i on mi je stalno prijavljivao da koristi nekakav INT 15. Naravno,
to je upućivalo da se podešava onaj red u kome piše INT, ali je on bio
dobar, i što mu god radio, prijavljivao je 15. Kada sam podesio i port
tačno, odjednom je dobro preuzeo i INT 5.
Ne znam da li će to rešiti i tvoj problem, ali vredi da se proveri.
pascal.419pedjak,
> Jasno, ali je poenta u tome sto je doticni program pisan u Moduli, a
> sad bi trebalo da se prevede na Paskal. Posto se radi o povecem
> programu, nesto
Eh, da me sad vidi dragisha :) Koja te je muka navela da prevodiš
program na paskal..?
pascal.420de.pavlov,
Ima li kakvih nagoveštaja za pojavljivanje Borland Pascal 8.0 ?
pascal.421mmitrovic,
Ů█▀█Ţ Steta :( Ja sam video da su neki nasi klinci iz unutrasnjosti uspeli,
Ů█▀█Ţ i to vrrrrrlo lepo :)
Stvarno, jel imaš neki primer, da vidim kako izgleda. Ja sam radio
do trenutka kad je počinjalo da radi, međutim u grafičkom modu je
radilo veoma sporo i miš je stalno bio problem, pa sam ja izgubio
volju ;) Mislio sam da se ne može uraditi, sad možda i nastavim gde sam
stao.
pascal.422mmitrovic,
Ů█▀█Ţ Nije stvar u proizvođačima, nego se na taj način pišu čistiji i
Ů█▀█Ţ čitljiviji programi, a po potrebi se posle i lakše menjaju, pogotovo
Ů█▀█Ţ ako radiš u nekom timu.
Što stalno potežete to pitanje timova, ja znam šta treba za rad u
timu, pošto sam većbio u jednom. Međutim ova diskusija je počela oko
jednog programa jednog autora. Takvo čistunisanje je samo teret, jer
da su globalne promenljive nepotrebne ne bi ih ni bilo.
pascal.423omega,
Ţ Stvarno, jel imas neki primer, da vidim kako izgleda. Ja sam radio
Program je Font Maker v3.0. Pravila su ga dva klinca iz Nis ;) Kad
startujes, ne poverujes da nisi u Win! Cak i system.fon koriste!!!
E sad to sve zajedno je oko 400kb pa jedino da posaljem jedan exe,
ali time bi se narusio sw koncept...? :)
pascal.424postmast,
From: markom@Osmeh.FON.BG.AC.YU (Marko Milivojevic)
Subject: Re: pascal
Date: Fri, 2 Sep 1994 14:44:16 GMT
Ivan Petrovic (omega@sezam.UUCP) wrote:
:: Btw, kako to uopste funkcionise? I kako svaki od nodova "zna" ko je
:: on-line?
Pa lepo, kad se korisnik uloguje u jedan share-ovan faj se upise, ili
njegov username, ili user ID, vreme logovanja i sta vec treba :) Pos-
le kad korisniku saljes page, prvo proveris jel ga ima ulogovanog,
ako ima, onda u nekom drugom fajlu proveris sta radi, pa ako prima pa-
ge, u neki fajl PAGE??.DAT upises page poruku, a onda u drugom tasku
programa (2. nod) funkcija check(), koja stalno proverava sta se
dogadja procita velicinu fajla PAGE??.DAT, pa ako je > 0, onda ima
page-a i to bacis na ekran, prosto, zar ne? :)
-=> MM <=-
pascal.425postmast,
From: markom@Osmeh.FON.BG.AC.YU (Marko Milivojevic)
Subject: Re: pascal
Date: Fri, 2 Sep 1994 14:46:25 GMT
Dejan Ristanovic (dejanr@sezam.UUCP) wrote:
: Svaki nod ima svoj redni broj, i cim neko dode na vezu (ili ode sa veze)
: upise u odgovarajuci segment jednog deljenog fajla na serveru odgovarajuce
: podatke o korisniku. I page-ovanje ide preko deljenih fajlova u posebnom
: direktorijumu, svaki nod povremeno (i to dosta cesto) skanira ima li sta
: za njega, pa ako ima izvrsi komandu koja mu je poslata.
Vidi ti ovo, pa znaci nisam ni ja za bacanje :) To mu dodje isto ono
sto mu ja napisah, hehe O:))
-=> MM <=-
pascal.426postmast,
From: broker@setgate.setnet.co.yu (Predrag Supurovic)
Subject: pascal
Date: Sat, 03 Sep 1994 13:17:30
==== "Slobodan Tomic" rece: ======================================
"T> $ racuna o nasim slovima. Umesto da svakoj funkciji prosledjuje
"T> podatak $ koja su nasa slova, to jednostavno podesis u glob
"T> promenljivoj...
"T> Naravno, ali ta promenljiva je globalna na nivou unita (modula), ne
"T> na nivou celog programa (mislio sam na te globalne promenljive). Znaci
"T> globalna promenljiva se nalazi samo u IMPLEMENTATION delu (nevidljiva
"T> je za ostatak programa), a njen sadrzaj se menja preko vidljivih
"T> procedura, cime i dalje imamo lepu crnu kutijicu :).
Star kako ko vise voli. Meni se vise svidja da tu promenljivu
ostavim vidljivu, nego da pisem funkcije za menjanje njenog sadrzaja.
Posebno mi to vise odgovara ako je promenljiva neki record, posto
korisnik onda moze da promeni sadrzaj samo dela strukture bez nekih
vecih komplikacija.
=======
Usput, hteo bih da zamolim sezamovce da na pocetku poruke stavljaju
jedno: 'To: username' posto mi ovde dobijamo da su poruke za All. Slucajno
prepoznah da je citiran deo moje poruke pa sam pretpostavio da je odgovor
bio upucen meni.
... COMPLAINTS > NUL
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.427szeman,
Baš me zanima kao je rešeno deljenje pristupa datoteka u programu RIND.
(Program je pisan na TP-u za one koji se pitaju zašto ovde postavljam
pitanje ;) Ako neko može nešto više da napiše o deljenu pristupa datoteka na
TP pri upisu, pošto to u osnovi (ako uopšte jeste) nije podržano kao kod C-a.
Pozdrav, Saša
pascal.428dejanr,
>> Baš me zanima kao je rešeno deljenje pristupa datoteka u programu RIND.
Jako jednostavno, na početak programa se stavi filemode:=$42 i posle toga
se koristi normalno reset. Fajlovi se tako otvaraju u modu koji omogućava
da više programa istovremeno otvori isti .DBF.
Naravno, sve to može zato što kod RIND-a svi samo čitaju bazu, a niko ne
piše u nju. Ako treba da se obezbedi i upis u neku bazu, onda se mora ići
na rešenje sa zaključavanjem slogova, za šta Turbo Pascal baš i nije
opremljen, pa se koriste direktni pozivi DOS funkcija.
pascal.429kenza,
(;> Ima li kakvih nagovestaja za pojavljivanje Borland Pascal 8.0 ?
Rece mi ssokorac pre neki dan da bi trebalo uskoro
da se pojavi. Kaze da je u Kanadi reklamna kampanja u toku i
da se ocekuje svakog casa.
pascal.430szeman,
>> Jako jednostavno, na početak programa se stavi
>> filemode:=$42 i posle toga se koristi normalno reset.
>> Naravno, sve to može zato što kod RIND-a svi samo čitaju
>> bazu, a niko ne piše u nju.
Naravno, to sam i predpostavljao. Ima li nekih indicija da će se to
rešiti u nekoj od sledećih verzija TP-a?
pascal.431peca.st,
!-> Program je Font Maker v3.0. Pravila su ga dva klinca iz Nis ;) Kad
!-> startujes, ne poverujes da nisi u Win! Cak i system.fon koriste!!!
Pa jel' u pitanju samo program koji ima Windows look, ili je
to kompletna biblioteka (dakle, nevezana sa taj program) kao
što je to Turbo vision?
Peđa.
pascal.432omega,
ŢPa jel' u pitanju samo program koji ima Windows look, ili je
Ţto kompletna biblioteka (dakle, nevezana sa taj program) kao
Ţšto je to Turbo vision?
Nažalost samo look :(
pascal.434postmast,
From: markom@Osmeh.FON.BG.AC.YU (Marko Milivojevic)
Subject: Re: pascal
Date: Mon, 5 Sep 1994 21:19:38 GMT
Sasa Zeman (szeman@sezam.UUCP) wrote:
:: Bas me zanima kao je reseno deljenje pristupa datoteka u programu RIND.
:: (Program je pisan na TP-u za one koji se pitaju zasto ovde postavljam
:: pitanje ;) Ako neko moze nesto vise da napise o deljenu pristupa datoteka
:: na TP pri upisu, posto to u osnovi (ako uopste jeste) nije podrzano kao kod
:: C-a.
Pogledaj po starim PC.PROG konferencijama DZakiceve poruke u temi
Pascal, nema ih mnogo, a jedna je bas na tu temu, ali za pocetak
pogledaj u dokumentaciji/help-u FileMode... :)
pascal.435pedjak,
> Rece mi ssokorac pre neki dan da bi trebalo uskoro
> da se pojavi. Kaze da je u Kanadi reklamna kampanja u toku i
> da se ocekuje svakog casa.
Koje su novosti..?
pascal.436pedjak,
> Naravno, to sam i predpostavljao. Ima li nekih indicija da će se to
> rešiti u nekoj od sledećih verzija TP-a?
A šta bi trebalo da se reši..? Jednostavno napišeš rutine za
zaključavanje/otključavanje slogova i eto ti rešenja.
pascal.437stomic,
$ Ovo meni sve liči na "Što prosto kad može komplikovano". Crne kutijice
$ kako ih ti zoveš su ostavljene proizvođačima modula da zaštite princip
$ rada svojih modula i da preko funkcija kontrolišu da li su prosleđeni
$ podatci validni. Ako ti sam pišeš modul za sebe onda uopšte nemaš potrebe
$ za tim. Em ima više koda, em je sporije. Navedeš promenljivu u
Prvo, izvinjavam se što tek sada odgovaram na poruku :).
Crne kutijice (npr. apstrakcija) ne služe da bi proizvođači zaštitili
princip rada svojih modula, već da bi onaj koji koristi te module (makar
na programu radio samo jedan čovek sa svim modulima koje je on napisao)
oslobodio sebe razmišljanja baš o tom principu rada.
Uopšte, zašto moraš da znaš princip rada modula koje koristiš? Tebe
interesuje šta oni rade, a ne kako (tačka gde postaješ programer-korisnik).
Samim tim se bolje koncentrišeš na glavni program a ne na neke pomoćne
module koji se bave sporednim stvarima kao npr. interfaceom :)
Da ne spominjem lakoću održavanja i čistoću izvornog koda.
BTW, gotovo identična rasprava je bila pre nekih godinu i po :).
---
Slobodan Tomić (stomic@hobbiton.co.yu, stomic@sezam.co.yu)
pascal.438stomic,
$ timu, pošto sam većbio u jednom. Međutim ova diskusija je počela oko
$ jednog programa jednog autora. Takvo čistunisanje je samo teret, jer
$ da su globalne promenljive nepotrebne ne bi ih ni bilo.
žistunisanje može biti trenutni teret, ali te oslobaća od kasnijih
problema koji mogu nastati prljavim programiranjem. Zašto pereš zube
kada je u trenutku samo teret :)?
Glupo bi bilo tvrditi da su globalne promenljive nepotrebne; unutar
samog modula ih često koristim. Ali se u velikoj većini slučajeva mogu
izbeći (bez gotovo ikakvog dodatnog napora) za komunikaciju među
modulima.
Prilično velika diskusija na istu temu je bila pre oko godinu i po,
tako da ne bih želeo da ponavljam iste odgovore :).
---
Slobodan Tomić (stomic@hobbiton.co.yu, stomic@sezam.co.yu)
pascal.439postmast,
From: broker@setgate.setnet.co.yu (Predrag Supurovic)
Subject: pascal
Date: Thu, 08 Sep 1994 19:19:17
"M> Sto stalno potezete to pitanje timova, ja znam sta treba za rad
"M> u timu, posto sam vecbio u jednom. Medutim ova diskusija je pocela
"M> oko jednog programa jednog autora. Takvo cistunisanje je samo teret,
"M> jer da su globalne promenljive nepotrebne ne bi ih ni bilo.
Ako i kad si sam radis kao da si u timu, pri ukljucivanju u timove ne
moras ni malo da se prilagodjavas. Programiranje je izmedju ostalog i
stvar navike i treba raditi tko da se naviknes na ono sto je najefikasnije.
... BR> Oreska BBS, Uzice, 031 28276 = 23:00-09:00
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.440kenza,
(;> Koje su novosti..?
Kaze da bi DELPHI(bp8.0) trebao da podrzava CHICAGO,
i da ce izaci u novembru.Videcemo..
pascal.441drpr,
Haj svima,
pravio sam jedan program tj. malo se igram sa merenjem vremena
na compu, ne toliko merenjem, već da imam jedan što tačniji
interval vremena (sekundu ili pola sekunde). Za tu svrhu sam
koristio INT 15h fja 83h. Taj interapt postavlja user alarm
koji će se javiti za broj mikrosekundi koji mu se zada. Sve sam
ja to lepo napisao i probao da merim. Ja sam očekivao tačnost
bar na milisekundu (greška od 1000 mikrosekundi), ali takvu
tačnost nisam dobio, zašto ne znam. Nemoguće je da se vreme
razlikuje za 3-4 mili sekunde?? Zanimljivo je da se proteklo
vreme menja u intervalima, recimo kao (0.88 0.88 0.82 0.87.0.88
0.82.....) intervali su različiti za različite vremenske
intervale, što bi verovatno trebalo da bude nekom indikativno.
U samom sorsu (test.pas) se nalaze i procedure za startovanje i
zaustavljanje int70h koje je pisao Vasic , jer neki biosi ovo
isključuju, što kod mene nije slučaj, pa reko ajd da stavim ako
nekom ko proba neće da radi. Sam sors je mali i ništa ne radi
(sem dekrementiranja jednog brojaca) dok se na promenljivu
"dali" ne postavi najviši bit kada je aktiviran alarm. Toliko
od mene s nadom da će mi neko pomoći.
cope
PS
Pitanje je možda čisto hardversko/asemblersko/msdosovsko pa su
i ostale sugestije dobrodošle!
PPS
Ako mi neko predlaže da se kačim o int 1ch ili ostale tajmerske
intove odma da kažem džaba, jer ako rešim ovo bezveze je kačiti
se o neke interapte i tako praviti gluposti.
PPPS
Dat je i sors tpu-a kojim merim proteklo sistemsko vreme.
alarm.zippascal.442postmast,
From: dragisha@hobbiton.CO.YU (Dragisa Duric)
Subject: Re: pascal
Date: Thu, 15 Sep 1994 15:33:32 GMT
Miljan Mitrovic (mmitrovic@sezam.UUCP) wrote:
: Naravno, ali ta promenljiva je globalna na nivou unita (modula), ne
: na nivou celog programa (mislio sam na te globalne promenljive). Znaci
: globalna promenljiva se nalazi samo u IMPLEMENTATION delu (nevidljiva je
: za ostatak programa), a njen sadrzaj se menja preko vidljivih procedura,
: cime i dalje imamo lepu crnu kutijicu :).
: Ovo meni sve lici na "Sto prosto kad moze komplikovano". Crne kutijice
: kako ih ti zoves su ostavljene proizvodacima modula da zastite princip
: rada svojih modula i da preko funkcija kontrolisu da li su prosledeni
: podatci validni. Ako ti sam pises modul za sebe onda uopste nemas potrebe
: za tim. Em ima vise koda, em je sporije. Navedes promenljivu u
: INTERFACE delu i nju ce videti svi moduli i program koji ima uses za taj
: modul.
:
: Jedno modul.promenljiva:=vrednost je mnogo efikasnije od
: modul.PostaviPromenljivu(vrednost);
Mnogo? Koliko je to mnogo?:) Moderni kompajleri znaju da salju
argumente u registrima, sto kad se primijeni na gornji primjer donosi za
nijansu sporiji kod od direktnog pridruzivanja.
Samo, nije poenta u tome koliko je sta brze. Najbrze je da se sve
radi u jednom modulu, i to u asembleru. Banalizujem, ali ne mnogo vise nego
ti.
Za programe koji se rade adhoc, za jednokratnu upotrebu, i uz to su
nekoliko kilo linija, nije bitno kako ga pises. Mnogi su se slozili.
Medjutim, za projekte preko 10K linija, koji se odrzavaju vise godina, bitno
je da su komponente sto slabije povezane (pojam slabe veze ima mnooogo veze
sa globalnim varijablama, jer zahtijeva da moduli komuniciraju u sto manjem
broju strogo kontrolisanih tacaka). Ja sam imao priliku da se vracam na
programe koje sam radio prije dvije-tri godine, i veoma mi je pomogao nacin
na koji su pisani.
: Sad ako mislis da ces uspeti da sam sebi ukrades modul, onda
: ne znam. ;)
Ukrades?
pascal.443postmast,
From: dragisha@hobbiton.CO.YU (Dragisa Duric)
Subject: Re: pascal
Date: Thu, 15 Sep 1994 15:49:02 GMT
Miljan Mitrovic (mmitrovic@sezam.UUCP) wrote:
: svoje tajne, vec da bi svaki modul imao jasno definisan interfejs.
: Uhh :)
: Recimo da si u pravu, i nazovimo to (u nedostatku boljeg izraza)
: cistim programiranjem. Cisto programiranje nije i efikasno
: programiranje, zbog razloga koje sam vec naveo. Ne postoje apsolutno
: nijedan dobar razlog zbog koga bi trebalo sakrivati promenljive od
: samog sebe. Specijalno one koje se koriste u visim modulima i u samom
: programu.
Naveo si nesto sto TI smatras argumentom, a prosta analiza dva
fragmenta koda bi pokazala da je razlika smijesna. Drugo, dobar razlog za
sakrivanje promjenljivih je pojednostavljivanje interfejsa, nebitno za
interfejse sa tri varijable i pet procedura uz jedan ili dva tipa podataka,
koji se uz to koristi u jednom ili najvise dva modula. Jos jedan dobar
razlog je cistoca koda i imena koja se daju. Lakse cu i kvalitetnije dati
dva nego dvadeset imena. T(B)P ima (po meni) gadan ambiguity, a to je da
nece da vrisne ako se ponovi neko ime u nekom interfejsu pri parsiranju USES
(dozvoljava on modul.objekat, ali treba to PRIMIJETITI na vrijeme, sto je
lako kad se cijeli program radi u komadu, a nemoguce kad program raste
vremenom, sto je common case).
Prava potreba za skrivanjem nastupa kod apstraktnih tipova podataka.
ADT je uglavnom pointer na neku strukturu, a operacije nad njim su procedure
koje izmedju ostalog postavljaju i razna polja unutar te strukture. Mnoge
procedure samo to i rade, pa bi (po tebi) najbolje bilo ubaciti tu strukturu
u interfejs i izbaciti suvisne procedure:). I naravno, pozdraviti se sa
idejom o unapredjivanju takvog ADT, jer svaka promjena povlaci promjenu u
proizvoljnom broju modula koji uvoze taj interfejs.
: Sto se tice zastite o kojoj sam govorio, nju sam naveo iz licnog
: iskustva vezanog za analizu TVision objekata. Kad se izvuku privatni
: metodi i polja, ceo princip funkcionisanja TVa postaje mnogo jasniji.
: Probaj (opet ako si radio sa TVom) da objasnis na koju foru rade
: Load, Store, PutPeerView, itd objekti za rad sa Strimovima. Odokativno
: izgleda kao da tu nesto fali i uopste nije bilo jasno sta se tu i
: na koji nacin odvija (narocito sa snimanjem pointera koji se svaki put
: drugde nalaze). Analizom metoda i privatnih polja koja koriste ceo
: princip se pokazao savrseno jednostavnim.
Da si probao RTFM, sto je standardni pristup, skontao bi i prije. Da
radis sa iole kompleksnijim klasama/modulima/unitima, ili nekima koje si
kupio/dobio kao object module, to bi ti jedino i ostalo, a to i jeste
profesionalni pristup.
pascal.444pedjak,
> Pitanje je možda čisto hardversko/asemblersko/msdosovsko pa su
> i ostale sugestije dobrodošle!
Zašto ne probaš da kontrolišeš vreme preko 8253 i njegovog
kanala/porta 0, koji je odgovoran za aktiviranje int 8h ? Naime,
njegov brojac broji od 65535 do 0 i zatim okida int 8h. Teoretski
možeš postići rezoluciju od 838 nanosekundi.
Sa nekih prašnjavih disketa sam iskopao ovo TPHRT V3. Mana je
jedino što ima .tpu fajlove za TP 5.0 i 5.5, tako da jedino da
probaš sa nekim od njih ili da probaš da propustiš .tpu kroz
TPU2ASM i da probaš da isčupaš relevantne rutine. Evo šta kaže DOC:
TPHRT (Turbo Pascal High Resolution Timer) is a software library that
provides the software developer with reliable timing functions that
work across the entire Intel 80xxx PC compatible hardware environment
with microsecond resolution. The TPHRT timing logic calibrates itself
to the host PC clock rate and processor environment at run-time, so a
single executable program will yield accurate results regardless of
the host microprocessor and clock speed.
tphrtv3.arjpascal.445omega,
Ţ Zasto ne probas da kontrolises vreme preko 8253 i njegovog
Ţ kanala/porta 0, koji je odgovoran za aktiviranje int 8h ? Naime,
Ţ njegov brojac broji od 65535 do 0 i zatim okida int 8h. Teoretski
Ţ mozes postici rezoluciju od 838 nanosekundi.
Naravno, to je CISTA teorija. 1.19Mhz nema sanse da izvuces, ali
mozes bar 22KHz, tj. oko 45 mikrosekundi...Jos ako kupis nove Racunare
(102), sve ce ti biti jasno ;)
pascal.446postmast,
From: dragisha@hobbiton.CO.YU (Dragisa Duric)
Subject: Re: pascal
Date: Thu, 15 Sep 1994 15:50:50 GMT
Predrag Knezevic (pedjak@sezam.UUCP) wrote:
: > Jasno, ali je poenta u tome sto je doticni program pisan u Moduli, a
: > sad bi trebalo da se prevede na Paskal. Posto se radi o povecem
: > programu, nesto
: Eh, da me sad vidi dragisha :) Koja te je muka navela da prevodis
: program na paskal..?
Big Brother is watching you!:))))
A bogami i Atilu! :)
pascal.447janko,
Da li je operator @ dokumentovan u Turbo Paskalu i sta uopste radi?
pascal.448ilazarevic,
> Da li je operator č dokumentovan u Turbo Paskalu i sta uopste radi?
Prvo, sori što je to kod mene č a ne "majmun", radim na juskiju.
Drugo, dokumentovan je, i vraća adresu promenljive ili čega već. Sinonim je
funkcija Addr.
pascal.449petkovicd,
kN
Kako se u TVisionu Prozor = object(TWindow) moze koristiti
kao obican ekran na koji neka procedura posle obavlenog posla
izbaci izvestaj (neki tekst)? U Prozor je ubacen TScroller.
Nije problem otvoriti prozor i ubaciti u njega tekst koji je
jednom procitan nego u isti prozor stalno ubacivati nov tekst.
:)ejan
pascal.450dejanr,
>> Da li je operator @ dokumentovan u Turbo Paskalu i sta uopste radi?
Dokumentovan je, vraća adresu onoga na šta ga primeniš (obično promenljive)
pascal.451janko,
Nevr majnd za juski, i ja ga koristim, otkačio sam ga samo da bih maksimalno
skratio pitanje.
Pitanje sam postavio jer radim program koji bi trebalo da
parsira TP kod, a pri ruci sam imao samo help iz TP 5.5 i 6.0.
U TP 5.5 se operator pominje samo kada pominju prioritete, a u šestici ga
nema nigde, pa sam se malo čudio.
Pitanje dva:
Ima li neko originalne menjuele koji idu uz TP 4.0?
tag: Manuel!
Ke?H
pascal.452ilazarevic,
> Pitanje sam postavio jer radim program koji bi trebalo da
> parsira TP kod, a pri ruci sam imao samo help iz TP 5.5 i 6.0.
žudi me, zakleo bih se da ga u šestici ima sigurno?!
pascal.453postmast,
From: ss45791d@buefhp.etf.bg.ac.yu (Srdjan Simic)
Subject: pascal
Date: Tue, 20 Sep 1994 01:31:19 GMT
"Ivan Lazarevic" <ilazarevic@sezam.UUCP> je napisao:
> Cudi me, zakleo bih se da ga u sestici ima sigurno?!
I mene cudi narocito sto sam pogledao u help i tamo je :)
--
Srdjan Simic ss45791d@buefhp.etf
pascal.455postmast,
From: Ognen.Duzlevski@f108.n108.z38.setgate.setnet.co.yu (Ognen Duzlevski)
Subject: Re: TP & ASM
Date: Sat, 17 Sep 1994 16:08:01
PS> Nadam se da nece zvucati suvise laicki, ali me oduvek zanimalo kako
PS> se pisu ASM u TP-u; koja je sintaksa, koje mogucnosti, koja
PS> ogranicenja i o cemu treba voditi racuna?
Imass dve moguccnosti za mesanje ASM u TP source:
1. procedure DoSmt(var S:String); assembler;
asm
les di,s
mov es:[di],0 ; duzzina stringa je sada 0...
end;
Ova procedura sa rezervisanom reci assembler generise nesto manji ulazni i
izlazni kod od obicne TP procedure. Kod funkcija rezultat se vraca u
registru AX ili DX:AX, zavisno od tipa funkcije.
2. Direktno mesanje ASm koda u TP kod:
....
WriteLn('.....');
.
.
.
ASM
mov ax,bx
xchg cx,bx
.
.
.
END;
WriteLn('Opet paskal...:) ');
.
.
.
end.
E, sada, ASM kod mozze da pristupa svim TP promenljivima itd. 32-bitne asm
instrukcije nisu direktno podrzane ali se to zaobilazi upotrebom opcode-a
60h ispred date asm instrukcije.
* Origin: Struga BBS +389 96 74074 * Macedonia * SETNet: (38:108/108)
pascal.456mvulovic,
> Ţ Zasto ne probas da kontrolises vreme preko 8253 i njegovog
> Ţ kanala/porta 0, koji je odgovoran za aktiviranje int 8h ?
> Naime, Ţ njegov brojac broji od 65535 do 0 i zatim okida int
> 8h. Teoretski Ţ mozes postici rezoluciju od 838 nanosekundi.
>
> Naravno, to je CISTA teorija. 1.19Mhz nema sanse da izvuces,
> ali mozes bar 22KHz, tj. oko 45 mikrosekundi...Jos ako kupis
> nove Racunare (102), sve ce ti biti jasno ;)
Prvo, piše ematic, istekla mi je pretplata pa do daljneg virim preko
ramena mvul-u ;), a sudeći po novim cenama pretplate tako će i da ostane
;).
Elem, pre par meseci sam imao isti problem kao cope, naime trebale su mi
precizne kratke pauze. Prvo sam probao preko int 15h, f-ja 86h (wait
f-ja). Ona meri vreme uz pomoć RTC-a i njena granularnost je mislim 973
Šs, ali preciznost ipak nije zadovoljavajuća. Bolje rečeno, preciznost
je ok ako se iz komada prave veće pauze reda recimo sekunde, međutim kad
su potrebni intervali reda ms, pa se to još zatvori u neku petlju,
dolazi do greške, pretpostavljam zbog vremena koje odlazi na sam poziv
interapt mehanizma pa se to vreme akumulira ili šta ja znam ;). Zato me
je muka naterala ;) da pročačkam malo oko 8253, da vidim šta može tu da
se uradi.
Za one koji ne znaju, 8253 sadrži tri nezavisna tajmera koji mogu da
rade u 6 modova rada. Izlaz tajmera 0 je vezan za interapt kontroler i
kreše int 8, tajmer 1 je vezan za dma kontroler i služi(o) je za refresh
dinamičkih memorija, a tajmer 2 je namenjen generisanju zvuka.
Vrednosti tajmera 0, 1 i 2 mogu da se čitaju/pišu sa portova 40h, 41h i
42h respektivno, dok se upravljački registar 8253 nalazi na portu 43h i
to je otprilike to što se tiče sâmog 8253. Samo po sebi se nametnulo da
je za zajebanciju ;) najbolje ne čačkati mečku sa tajmerom 0 i 1 nego
iskoristiti tajmer 2. Prema dokumentaciji, gejt tajmera 2 se nalazi na
bitu 0 porta B PPI-a (port 61h), bit 1 istog porta se and-uje sa izlazom
i ide na zvučnik, a sâm izlaz tajmera 2 možemo pratiti na bitu 5 PPI
porta C (62h) (o tome kasnije). Dalje je prosto, ako hoćemo recimo ton
određene frekvencije stavljamo 8253 u mod 0, odabiramo tajmer 2, punimo
ga sa vrednošću kojom delimo ulazni klok 8253 (1.19318 MHz), kresnemo
gejt (PPI B, bit 0), aktiviramo i bit 1 istog porta i svirka kreće. Ako
ne želimo svirku, bit 1 istog porta se stavi da bude nizak i nema
muzike. U modu 3 ciklus se ponavlja samo jednom i nakon toga se izlaz sa
tajmera 2 postavlja na keca i to je to što je potrebno da bi se pravila
kratka pauza, dovoljno je da propratimo izlaz tajmera 2 i gotova stvar
:) Sve je to divno i krasno, i sve piše u dokumentaciji pa da ne
prepisujem.
Međutim, stvar je u tome da jeste to tako kod XT-a, ali već nadalje ovo
ne važi, to jest izlaz sa tajmera 2 se *ne nalazi* tamo gde piše u
dokumentaciji, na bitu 5 PPI porta C, već na bitu 5 PPI porta B (bar kod
moje i još par parova mašina). Dok sam to provalio počeo sam da ćelavim,
što mi pored kilaže koju polako povećavam i nije baš potrebno ;>. To
najbolje znaju zak, cvele i zlaya sa kojima sam brbljao o ovoj temi i
koje sam terao da listaju manuale da vidim gde grešim, međutim pošto ja
ne grešim O;) znači da greši dokumentacija. Koristim ovu priliku i da im
se zahvalim što su saosećali sa mnom ;)
Zato, da bih video gde se nalazi izlaz sa tajmera 2 upotrebio sam silu
;) i sklepao sledeće programče, izvršni program je vezan uz poruku:
TIMERCTRL equ 43h
TIMER2 equ 42h
PPI_B equ 61h
PPI_C equ 62h
CR equ 13
LF equ 10
IFNDEF DELILAC
DELILAC equ 1193
ENDIF
code segment
assume cs:code, ds:code
org 100h
main proc
mov ah, 09h
mov dx, offset header
int 21h
petlja:
mov ah, 0eh
in al, TIMERCTRL
mov dl, al
in al, PPI_B
mov dh, al
in al, PPI_C
mov bh, al
mov al, dl
call write
mov al, dh
call write
mov al, bh
call write
mov al, CR
int 10h
mov ah, 1
int 16h
jz petlja
xor ax, ax
int 16h
cmp al, 'u'
je timeron
cmp al, 'U'
je timeron
cmp al, 't'
je soundon
cmp al, 'T'
je soundon
cmp al, 'i'
je timeroff
cmp al, 'I'
je timeroff
cmp al, ' '
jne petlja
mov ah, 0eh
mov al, CR
int 10h
mov al, LF
int 10h
mov al, LF
int 10h
mov ax, 4c00h
int 21h
timeron:
mov al, 0b6h
out TIMERCTRL, al
mov ax, DELILAC
out TIMER2, al
mov al, ah
out TIMER2, al
in al, PPI_B
or al, 1
out PPI_B, al
jmp petlja
soundon:
mov al, 0b6h
out TIMERCTRL, al
mov ax, DELILAC
out TIMER2, al
mov al, ah
out TIMER2, al
in al, PPI_B
or al, 3
out PPI_B, al
jmp petlja
timeroff:
in al, PPI_B
and al, 0fch
out PPI_B, al
jmp petlja
main endp
write proc
mov bl, al
mov ah, 0eh
mov cx, 8
inner:
mov al, '1'
shl bl, 1
jc dalje
mov al, '0'
dalje:
int 10h
mov al, ' '
int 10h
loop inner
mov al, ' '
int 10h
int 10h
ret
write endp
header db CR, LF
db '''U'' ukljucenje, ''T'' uklj+ton, ''I'' iskljucenje, spejs
kraj'
db CR, LF, CR, LF
db 'TIMER CTRL(43h) PPI PORT B(61h) PPI PORT C(62h)', CR, LF
db '7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0', CR, LF
db '$'
code ends
end main
Dakle, pusti se ovo gore i gde počne da promrdava kec tu je otprilike
izlaz tajmera 2 ;) Kada se to utvrdi, može da se napiše funkcija koja
pravi tačnu i dovoljno kratku pauzu. Evo jedne takve, za pauze od 1 do
55 ms, pa ko hoće nek je koristi i krpi po želji:
void pascal pauza(int vreme) /* u ms */
{
vreme = vreme * 1193;
asm {
cli
mov al, 0b0h
out 43h, al
mov ax, vreme
out 42h, al
mov al, ah
out 42h, al
jmp S2
} S2: asm {
in al, 61h
mov ah, al
or al, 1
out 61h, al
jmp cekaj
} cekaj: asm {
in al, ONAJ_PORT_GDE_JE_IZLAZ_TAJMERA
test al, BIT_NA_KOME_JE_IZLAZ_TAJMERA
jz cekaj
sti
}
}
Zasad toliko. Koga zanima još nešto neka pita slobodno pa da pojasnim.
Takođe se izvinjavam zbog čaršava. Ako je poruka pomalo (xe, pomalo ;)
konfuzna takođe se izvinjavam, beletristika mi nikad nije bila jača
strana ;)
Pozdrav
ematic :)
mrdaj.compascal.457janko,
> "Ivan Lazarevic" <ilazarevicčsezam.UUCP> je napisao:
>> Cudi me, zakleo bih se da ga u sestici ima sigurno?!
>
> I mene cudi narocito sto sam pogledao u help i tamo je :)
A gde tamo, interesantan sam znati. Tamo gde su svi drugi (pod naslovom
"OPERATORS") nema ga, nema ga u indeksu...?
pascal.458postmast,
From: ss45791d@buefhp.etf.bg.ac.yu (Srdjan Simic)
Subject: pascal
Date: Sat, 24 Sep 1994 01:26:48 GMT
>A gde tamo, interesantan sam znati. Tamo gde su svi drugi (pod naslovom
>"OPERATORS") nema ga, nema ga u indeksu...?
Moja greska gledao sam u help od 7.0 :(
Operator @ je doduse objasnjen u knjizi.
--
Srdjan Simic ss45791d@buefhp.etf
pascal.459inikolic,
Imam problem koji i nije za ovu konferenciju, ali posto radim u PASCAL-u
ostavljam ga ovde:
1. zanima me kako da nadjem ENTER u TXT datoteci, svaki znak ima svoj ASCII
karakter pa promena oko rasporeda slova nije problem, ali ENTER-a nigde nema u
ASCII-u , pa me zanima kakoje on zapisan ikako da ga promenim, po mogucstvu u
PASCAL-u premda moze i ASM.
2. HZanima me kako da detektujem ring na modem. U stvari ja ga detektujem
ali mi posle toga blokira i za sledecu zvonjavu ne javlja ring, procedura koju
sam napisao nije velika i stoga je ovde nisam poslao, zato molim one koji imaju
konkretno resenje, da mi ga dostave ovde, predlozi nisu potrebni jer i ja imam
ideju ali nece, zato me zanima konkretno, pomogucstvu neka bude u ASM-u posto
je PASCAL u tim stvarima malo skrt.
unapred hvala IGOR
pascal.460omega,
Ţ 1. zanima me kako da nadjem ENTER u TXT datoteci, svaki znak ima svoj ASCII
Ţ karakter pa promena oko rasporeda slova nije problem, ali ENTER-a nigde
Ţ nema u ASCII-u , pa me zanima kakoje on zapisan ikako da ga promenim, po
Jel nije? ;) A sta je onda ASCII kod 13?
pascal.461dejanr,
>> 1. zanima me kako da nadjem ENTER u TXT datoteci, svaki znak ima svoj
>> ASCII karakter pa promena oko rasporeda slova nije problem, ali ENTER-a
>> nigde nema u ASCII-u , pa me zanima kakoje on zapisan ikako da ga
>> promenim, po mogucstvu u PASCAL-u premda moze i ASM.
Enter je chr(13), a obično do njega ide i chr(10) (line feed).
>> 2. HZanima me kako da detektujem ring na modem.
Imaš dve mogućnosti, svaka ima svoje prednosti i mane. Jedna je da koristiš
RING liniju RS-232 porta, druga je da detektuješ tekst RING (po ASCII-ju)
koji modem šalje. Verovatno je ovo drugo lakše.
Imaš u direktorijumu PASCAL unit(e) koji rešavaju probleme komunikacija,
možda da pogledaš neki od njih?
pascal.462inikolic,
Dorada pitanja:
1. Poznato mi je da je ASCII kod Enter-a #13 i da je #10 prelazak u
sledei red , ali pitanje je gde je to zapisano u TXT datoteci? Konkretno mi
treba da one silne entere koje Word4Win nalazi na kraju svakog reda u tekstu
kucanom u recimo CW-u da skine, da bi moglo lepo da se sredi strana, a ne da ja
peske to skidam u Word-u. Znaci pitanje je gde ih on pise?
2. Ring sam uspeo da detektujem procedura je sledeca:
mov AH,03h
mov AL,00h
mov DX,00h - com1
Int 14h
Test AL,01000000b
jz Detect
HHHjmp Kraj
Detect:
Sta ovde
Kraj:
Problem je dakle sto neznam kako da ovaj ring izbacim na ekran, probao
sam , posto je ovo radjeno u pascal-u, da kada ga detektujem izbacim RING
klasicno naredbom WriteLn ali kada startujem program on odma pocinje da pise
RING. Gde je greska? Molim da mi dostavite ako moze gotovu proceduru.
IGOR
pascal.463evlad,
>> 1. Poznato mi je da je ASCII kod Enter-a #13 i da je #10 prelazak u
>> sledei red , ali pitanje je gde je to zapisano u TXT datoteci? Konkretno
>> mi treba da one silne entere koje Word4Win nalazi na kraju svakog reda u
>> tekstu kucanom u recimo CW-u da skine, da bi moglo lepo da se sredi
>> strana, a ne da ja peske to skidam u Word-u. Znaci pitanje je gde ih on
>> pise?
Uzmes LIST sa sezama i kada udjes u file otkucas ALT H pa ce ti biti jasno
gde se nalaze.
Ako si stavio:
Var
dat : File;
dat1 : Text;
dat je ne tipizirana datoteka i koristis read i write i ako citas datoteku
byte po byte naici ces i na kontrolne CR i LF.
dat1 je tipizirana datoteka i koristis readLN i writeLN tako da sam
paskal 'vodi racuna' od CR i LF.
Capito ?
>> Problem je dakle sto neznam kako da ovaj ring izbacim na ekran, probao
>> sam , posto je ovo radjeno u pascal-u, da kada ga detektujem izbacim
>> RING klasicno naredbom WriteLn ali kada startujem program on odma
>> pocinje da pise RING. Gde je greska? Molim da mi dostavite ako moze
>> gotovu proceduru.
Probaj sa paskalovom naredbom rdbyte := PORT[adresa]
da iscitas vrednost iz registra UART-a. +----------------+
|
(* THE ASYNCHRONOUS COMMUNICATION ADAPTER | *)
(* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *)
(* The Registers of the 8250,16550 Asynchronous Communication Element *)
(* ================================================================== *)
(* *)
(* Recieve Buffer / Transmitter Holding Register port 0x3f8 0x2f8 *)
(* 0-7 8-bit data character *)
(* *)
(* Interrupt Enable Register port 0x3f9 0x2f9 *)
(* 0 Recieved data available *)
(* 1 Transmitter holding register empty *)
(* 2 Receiver line status *)
(* 3 Modem status *)
(* 4-7 (unused) *)
(* *)
(* Interrupt Identification Register port 0x3fa 0x2fa *)
(* 0 Interrupt pending (0 = true, 1 = false) *)
(* 1-2 Interrupt type *)
(* 11 = Receiver line status (OE, PE, FE, BI) *)
(* 10 = Received data available (DR) *)
(* 01 = Transmitter holding register empty (THRE) *)
(* 00 = Modem status (DCTS, DDSR, RI, DDCD) *)
(* 3-7 (unused) *)
(* *)
(* Line Control Register port 0x3fb 0x2fb *)
(* 0 WLS0 Word length select *)
(* 1 WLS1 Word length select *)
(* 00 == 5 bits *)
(* 01 == 6 bits *)
(* 10 == 7 bits *)
(* 11 == 8 bits *)
(* 2 STB Number of stop bits *)
(* 0 == 1 stop bit *)
(* 1 == 2 stop bit *)
(* 3 PEN Parity enable *)
(* 4 EPS Even parity select *)
(* 10 == Undefined *)
(* 00 == No parity *)
(* 01 == Odd parity *)
(* 11 == Even parity *)
(* 5 SP Stick parity *)
(* 6 BRK Set break *)
(* 7 DLAB Divisor latch access bit *)
(* *)
(* Modem Control Register port 0x3fc 0x2fc *)
(* 0 DTR Data terminal ready *)
(* 1 RTS Request to send *)
(* 2 OUT1 (not connected) *)
(* 3 OUT2 Enable interrupt buffer *)
(* 4 LOOP Loopback (CTS, DSR, DCD, RI = DTR, RTS, OUT1, OUT2) *)
(* 5-7 (unused) *)
(* *)
(* Line Status Register port 0x3fd 0x2fd *)
(* 0 DR Data ready *)
(* 1 OE Overrun error *)
(* 2 PE Parity error *)
(* 3 FE Framing error *)
(* 4 BI Break interrupt *)
(* 5 THRE Transmitter holding register empty *)
(* 6 TSRE Transmitter shift register empty *)
(* 7 (always zero) *)
(* *)
(* Modem Status Register port 0x3fe 0x2fe *)
(* 0 DCTS Delta clear to send *)
(* 1 DDSR Delta data set ready *)
(* 2 TERI Trailing edge ring indicator *)
(* 3 DDCD Delta data carrier detect *)
(* 4 CTS Clear to send *)
(* 5 DSR Data set ready *)
(* 6 RI Ring indicator *)
(* 7 DCD Data carrier detect *)
(* *)
(* Note : The port addresses are shown as COM1 first, then COM2 *)
(* *)
(* Divisor Latch Low Byte port 0x3f8 0x2f8 *)
(* Divisor Latch High Byte port 0x3f9 0x2f9 *)
(* *)
(* Example: *)
(* Divisor = 115200 / BaudRate *)
(* *)
(* Baud Rate DLHB DLLB *)
(* 50 0x09 0x00 *)
(* 75 0x06 0x00 *)
(* 110 0x04 0x17 *)
(* 134 0x03 0x59 *)
(* 150 0x03 0x00 *)
(* 300 0x01 0x80 *)
(* 600 0x00 0xC0 *)
(* 1200 0x00 0x60 *)
(* 1800 0x00 0x40 *)
(* 2000 0x00 0x3A *)
(* 2400 0x00 0x30 *)
(* 3600 0x00 0x20 *)
(* 4800 0x00 0x18 *)
(* 7200 0x00 0x10 *)
(* 9600 0x00 0x0C *)
(* 19200 0x00 0x06 *)
(* 38400 0x00 0x03 *)
(* 57600 0x00 0x02 *)
(* 115200 0x00 0x01 *)
(* *)
(*************************************************************************)
U modem status registru je ring inikator, pa se igraj do mile volje ;).
Izvinjavam se sto je poruka mal(k)o duza.
pascal.464inesic,
> Izvinjavam se sto je poruka mal(k)o duza.
Neka, neka.
pascal.465duzle,
Da li je neko video neuralnu mrežu implementiranu u paskalu i kako to
izgleda i da li se neko bavi ovde veštačkom inteligencijom (posebno me
interesuje da li poseduje literaturu u elektronskom obliku vezanu za
neuro-mreže).
pascal.466drpr,
-> pravi tačnu i dovoljno kratku pauzu. Evo jedne takve, za
-> pauze od 1 do 55 ms, pa ko hoće nek je koristi i krpi po
-> želji:
Prvo hvala na iscrpnom odgovoru. Javljam se malo sa
zakašnjenjem jer sam bio na (ne)zasluženom odmoru pa sam tek
sada pročitao tvoju poruku. Moram priznati sa zadovoljstvom.
Napravio sam mali test programčić i sve šljaka kako treba sa
tačnošću koja više nego zadovoljava. Na mestu kada ispituješ
port ja sam samo ubacio jedno inkrementiranje i merio razlike.
Ja imam problem da mi treba vremenski period od jedne sekunde
ili pola sekunde i dosao sam do odličnih rezultata. Prvo
procedura je brojala za oko 1 sec (pisano asemblerski u
pascalu) 376000 puta što mi je više nego dovoljno. najvažnije
je da su se razlike kretale od 0 do 7 brojanja što na toliku
cifru izgleda zanemarljivo i uočio sam da mi je najbolji
osnovni interval negde oko 45 milisekundi. Još jednom ti se
zahvaljujem a ako nekog zanima taj test program vrlo radu ću ga
baciti ovde u conf mada mislim da svako može da prepravi po
svojoj potrebi sors koji si nam dao.
cope
PS
Da upotpuniš kolekciju ljudi i meni je port 61h 5 bit a imam
386 na 33 MHz.
pascal.467mjova,
> treba da one silne entere koje Word4Win nalazi na kraju
> svakog reda u tekstu kucanom u recimo CW-u da skine, da bi
> moglo lepo da se sredi strana, a ne da ja peske to skidam
> u Word-u. Znaci pitanje je gde ih on pise?
uh, svašta. pa zar ne znaš za autoformat? to sve može word sam da
sredi. lakše je napisati čak i makro za word, no petljati po
datoteci...
pascal.468ognjen,
Ja ne znam da li radi onaj Debugger iz TP 6.0 ???
Lepo prekinem program na tacno odredjenom mest, posmatram
promenjljive, i radim step po step, i gldam. I sve izgleda u
redu. Kada dodje do linije Write (WriteFile, TxtChar); sve
izgleda normalno, i izgleda da ga zaista upise, ali kada izadjem
iz programa (pustim ga da se zavrsi do kraja), i pogledam
datoteku, upisao je nekih 10ak znakova, i tu je stao! A ja sam
gledao kako radi program, i nije prijavljivao nikakvu gresku! U
cemu je stvar???
pascal.469janko,
>> treba da one silne entere koje Word4Win nalazi na kraju
>> svakog reda u tekstu kucanom u recimo CW-u da skine, da
>> bi moglo lepo da se sredi strana, a ne da ja peske to
>> skidam u Word-u. Znaci pitanje je gde ih on pise?
>
> uh, svašta. pa zar ne znaš za autoformat? to sve može word
> sam da sredi. lakše je napisati čak i makro za word, no
> petljati po datoteci...
Problem je klasičan i izuzetno lak za rešavanje -- tekst u CW snimiš
kao običan tekst fajl. Onda taj tekst fajl daš jednom malom programčiću
da isfiltrira, pa isfiltrirani fajl uvučeš u Word.
Bitno je da pišeš pasuse tako da izgledaju ovako
red teksta prvog paragrafa
red teksta prvog paragrafa
red teksta novog paragrafa.
tj da paragrafe odvajaš jednim praznim redom.
Programčić za filtriranje iseci iz ove poruke i nazovi todoc.awk
Da bi ga pokrenuo, skini program AWK 3.0 sa Sezama (bio u nekoj od
starijih programerskih konferencija, ne znam zašto ga nema u dirovima
(Bulajoooo? ;) ) i kucaj u DOS komandnoj liniji:
AWK todoc IMETVOGTXTFAJLA > IMENOVOGFAJLA
---- cut ---- (program written by Janko ;> ) ----
BEGIN { p=0 }
/^([\ \t])*$/ { p=1 }
p==0 { printf("%s ",$0) ; p=0 }
p==1 { print $0 ; p=0 }
---- cut ----
Ako ne iskopaš AWK, skini GAWK koga ima u Sez. dir i koji je malo veći
jer ima i sors, ali je u poslednjem parčetu višedelne arhive i .EXE
Njegova sintaksa je
GAWK -f todoc.awk IMETVFAJ > IMENOVFAJ
a programčić je isti.
pascal.470omega,
Ţ redu. Kada dodje do linije Write (WriteFile, TxtChar); sve
Ţ izgleda normalno, i izgleda da ga zaista upise, ali kada izadjem
Ţ iz programa (pustim ga da se zavrsi do kraja), i pogledam
Ţ datoteku, upisao je nekih 10ak znakova, i tu je stao! A ja sam
Ţ gledao kako radi program, i nije prijavljivao nikakvu gresku! U
Ţ cemu je stvar???
Verovatno si zaboravio close(WriteFile); na kraju.
pascal.471dejanr,
>> Kada dodje do linije Write (WriteFile, TxtChar); sve
>> izgleda normalno, i izgleda da ga zaista upise, ali kada izadjem
>> iz programa (pustim ga da se zavrsi do kraja), i pogledam
>> datoteku, upisao je nekih 10ak znakova, i tu je stao! A ja sam
>> gledao kako radi program, i nije prijavljivao nikakvu gresku! U
>> cemu je stvar???
Za početak, proveri da li si datoteku zatvorio.
pascal.472postmast,
From: broker@setgate.setnet.co.yu (Predrag Supurovic)
Subject: pascal
Date: Fri, 30 Sep 1994 11:34:55
"N> Problem je dakle sto neznam kako da ovaj ring izbacim na ekran,
"N> probao sam , posto je ovo radjeno u pascal-u, da kada ga detektujem
"N> izbacim RING klasicno naredbom WriteLn ali kada startujem program on
"N> odma pocinje da pise RING. Gde je greska? Molim da mi dostavite ako
Mislim da nepotrebno komplikujes. Preporucljivije je da RING detektujes tako
sto ocekujes da ti modem posalje rec 'RING' nego da cekas da proveravas
statusne registe. Cak je i standardom ovo preporucen metod. Video sam da
neki programi koriste kombinaciju: cekaju i na promenu statusa i na RING
od modema.
... BR> Jedan im'o s kim, im'o s cim, im'o i gde - pa sad nema kud.
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.473postmast,
From: Stevan.Dejanovic@f119.n111.z38.setgate.setnet.co.yu (Stevan Dejanovic)
Subject: rs232
Date: Thu, 29 Sep 1994 22:01:06
Nabavio sam unit rs232.tpu, i neznam kako da ga koristim,
tj. modem mi je instaliran na com4 i kad unesem taj podatak
nece da posalje poruku modemu kao da program nije predvidjen za
com4. Probao sam sa com1 tj. sa misem i onda radi.
Posto me mrzi da menjam com na modemu da li postoji neko drugo resenje.
=> Mad Dog <=
... Not tonight, dear. I have a modem.
* Origin: ECSTASY BBS * Indjija * 022 53 218 * SETNet: (38:111/119)
pascal.474postmast,
From: broker@setgate.setnet.co.yu (Predrag Supurovic)
Subject: rs232
Date: Sat, 01 Oct 1994 11:35:51
==== Stevan Dejanovic rece: ======================================
SD> Nabavio sam unit rs232.tpu, i neznam kako da ga koristim,
SD> tj. modem mi je instaliran na com4 i kad unesem taj podatak
SD> nece da posalje poruku modemu kao da program nije predvidjen za
SD> com4. Probao sam sa com1 tj. sa misem i onda radi.
Verovatno ta bibilioteka ne podrzava druge portoveosim COM1 i COM2.
Probaj Async. nisam je probao na com3 i 4 posto modeme uvek montiram na
com1 ili com2, ali po dokumentaciji, trebalo bi da radi.
... BR> All good and evil of this world is in a woman.
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.475postmast,
From: broker@setgate.setnet.co.yu (Predrag Supurovic)
Subject: Lokalne konstante
Date: Sat, 01 Oct 1994 23:12:01
Da li i za konstante u TurboPascal-u vazi da su lokalne u proceduri u kojoj
su definisane?
Pojavio mi se problem, da se unapred definisana promenljiva koja je
definisana u const sekciji procedure ponasala kao globalna.
Evo otprilike kako je to izgledalo:
Program test;
Procedure A;
const
testc : string[8] = '00000000';
begin
{ ovde je kod koji menja sadrzaj testc }
end;
begin
Procedure A;
{ medjukod }
Procedure A;
end;
Problem je u sledecem: kada je procedura A prvi put izvrsena, promenljiva
testc dobija zadatu vrednost '00000000', a kasnije se ta vrednost u
samoj funkciji menja. Kada je procedura A u glavnom programu ponovo pokrenuta,
vise se ne menja vrednost testc, tj. ne postavlja se ponovo na '00000000'
vec zadrzava vrednost koju je imala kada je prosli put zavrseno izvrsavanje
procedure.
Problem sam resio tako sto sam preskocio da promenljivu definisem u
const sekciji, nego na uobicajeni nacin, na pocetku procedure, i tada je
sve radilo. Ipak, zanimjivo je da se ovako ponasa...
Broker
... BR> Sankcije? Najzad svoji na svome.
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.476ognjen,
Vec sam rekao da mi ne radi upisivanje u fajl sa
Write (WriteFile, TxtChar);
do kraja, a sada naslucujem i zasto. Naime, primetio sam da
nedovrsen fajl ima duzinu koja je uvek deljiva sa 128. Verovatno
neki disk kes. Koristim SmartDrive, ali kada sam ga izbacio, i
dalje je bila ista stvar. :( Podigao sam i sistem sa diskete, i
ponovio sve, ali i dalje ne radi. Verovatno je 'kriv' TP (6.0).
Da li on ima neki bafer u koji privrmeno smesta podatke za upis,
pa tek kad se isti napuni on ka isprazni na disk? Ne bi trebao,
ali mozda...?
pascal.477mjova,
> Problem je klasičan i izuzetno lak za rešavanje
pazi, nije da mi se rešenje AWKom nije dopalo, već se radi o tome
da Word ima autoformat komandu koja baš to radi i još mnogo više!
samo treba uzeti dokumentaciju (iz helpa ;) u ruke...
pascal.478dejanr,
>> Problem je klasičan i izuzetno lak za rešavanje -- tekst u CW snimiš
>> kao običan tekst fajl. Onda taj tekst fajl daš jednom malom programčiću
>> da isfiltrira, pa isfiltrirani fajl uvučeš u Word.
>>
>> Bitno je da pišeš pasuse tako da izgledaju ovako
>>
>> red teksta prvog paragrafa
>> red teksta prvog paragrafa
>>
>> red teksta novog paragrafa.
>>
>> tj da paragrafe odvajaš jednim praznim redom.
Da... ako se tekst namenski piše tako da bude zgodan za konverziju.
U praksi to obično nije slučaj, dobiješ često tekst bez praznih redova
među pasusima. Ako neko uvlači pasuse za par blankova, i to je dosta,
ali biva da se i to ne radi, ili se ne radi uvek, naročito kada postoje
neka nabrajanja, listinzi itd.
Međutim, Chi (bar verzije koje sam ja viđao) imaju zgodnu osobinu da,
pri export ascii, na krajeve redova koji nisu krajevi pasusa stave po
jedan blanko, dakle tekst izgleda ovako (_ je oznaka za blanko):
red teksta iz prvog pasusa_
drugi red teksta iz provog pasusa_
treći red teksta iz prvog pasusa
čitav drugi pasus
prvi red teksta iz trećeg pasusa_
itd.
Štos je da se to onda uvuče u WordPerfect (ili nešto drugo) pa onda ide:
zameni _[HRt] sa ##$$
zameni [HRt] sa _
zameni ##$$ sa [HRt][HRt]
I rešen problem.
pascal.479isekulovic,
>> Vec sam rekao da mi ne radi upisivanje u fajl sa
Pretpostavljam da radiš
Rewrite(f);
probaj sa:
Rewrite(f,1);
pascal.480janko,
> pazi, nije da mi se rešenje AWKom nije dopalo, već se radi
> o tome da Word ima autoformat komandu koja baš to radi i
> još mnogo više! samo treba uzeti dokumentaciju (iz helpa
> ;) u ruke...
Izvini, kada kažeš Word, na koji Word misliš? 2 ili 6? U 2 nisam
primetio tako nešto, a na 6 se još nisam nakanio...
Svejedno, ovo je programerska konf. pa je bilo logično da se pokaže
programersko rešenje. Ako ništa drugo, viđi ga al' je lijep. ;) Šalim
se, ono što mi stvarno fali je što Word ne ume da radi ništa pod milim
bogom sa regularnim izrazima a oni su takoooo zgodni.
(Jao al' zastranismo ;) Da se ne bi mrdala poruka, moram da dam odgovor
onom momku (Predrag) koji je pitao zašto mu tipizirani CONST zadržava
vrednost između dva poziva TP fje: zato što TAKO TREBA. Tipizirani CONST
u pozivu fje je ono što se u FORTRAN-u zove SAVED promenljiva (ako se
sećam) ili u C-u static promenljiva u fji -- baš joj je i namena da pamti
šta je rađeno u poslednjem pozivu. Dizajneri TP-a su očigledno bili
dobro upoznati sa svim prednostima C-a, pa su se potrudili da što više C
fora ubace u (da zlobno kažem teško upotrebljivu) Virtovu definiciju
Paskala.
pascal.481janko,
> Međutim, Chi (bar verzije koje sam ja viđao) imaju zgodnu
> osobinu da, pri export ascii, na krajeve redova koji nisu
> krajevi pasusa stave po jedan blanko, dakle tekst izgleda
> ovako (_ je oznaka za blanko):
Jao, jeste, jako zgodna osobina, dosta pojednostavljuje... Sad sam se
setio da si o toj osobini CW već negde pisao, nekad. Nema veze, dadoh
rešenje koje radi i za običan tekst fajl koji nije generisan izvozom iz
CW.
U stvari, sve ovo sam pisao najviše zato što je pitanje postavljeno u
temi Paskal, a hteo sam da podsetim da ima jedan jezik koji se specijalno
bavi žvakanjem i prežvakavanjem teksta, te je pogodniji od Paskala za
takve rabote. Na kom još (kompjuterskom) jeziku se gornji problem rešava
u četiri reda? :)
> Štos je da se to onda uvuče u WordPerfect (ili nešto
> drugo) pa onda ide:
>
> zameni _[HRt] sa ##$$
> zameni [HRt] sa _
> zameni ##$$ sa [HRt][HRt]
>
> I rešen problem.
Ne znam šta radi WP, tj ne znam šta mu je to HRt, ali ako je kraj
paragrafa, nešto mi je čudan gornji red, jer, u Wordu (i 2.0 i posle,
sigurno) je dovoljno zameniti razmak i kraj pasusa (kraj pasusa se kuca
strelica na gore pa malo slovo p, tj. ^p) sa običnim razmakom i to je
sve.
pascal.482pedjak,
> Da li i za konstante u TurboPascal-u vazi da su lokalne u proceduri
> u kojoj su definisane?
> Problem je u sledecem: kada je procedura A prvi put izvrsena,
> promenljiva testc dobija zadatu vrednost '00000000', a kasnije se ta
> vrednost u samoj funkciji menja. Kada je procedura A u glavnom
> programu ponovo pokrenuta, vise se ne menja vrednost testc, tj. ne
> postavlja se ponovo na '00000000' vec zadrzava vrednost koju je
> imala kada je prosli put zavrseno izvrsavanje procedure.
> sve radilo. Ipak, zanimjivo je da se ovako ponasa...
Pa da, jeste zanimljivo, i meni se prvi put učinilo da to nije
normalno ponašanje, ali to je dokumentovana osobina, evo:
Note: Typed constants are initialized only once--at the beginning of a
program. For each entry to a procedure or function, the locally-declared
typed constants are not reinitialized.
Jedino bi bilo lepo da postoji neki svič, pa da svako može da
odredi kako će se svaka procedura ponašati.
pascal.483pedjak,
> Mislim da nepotrebno komplikujes. Preporucljivije je da RING
> detektujes tako sto ocekujes da ti modem posalje rec 'RING' nego da
> cekas da proveravas statusne registe. Cak je i standardom ovo
> preporucen metod. Video sam da
Kakvim standardom...?
pascal.484pedjak,
> do kraja, a sada naslucujem i zasto. Naime, primetio sam da
> nedovrsen fajl ima duzinu koja je uvek deljiva sa 128. Verovatno
> neki disk kes. Koristim SmartDrive, ali kada sam ga izbacio, i
Dužina fajla je deljiva sa 128, zato što je inicijalna vrednost
paskalovog bafera za tekstualne datoteke 128 bajtova. Izgleda da ne
zatvaraš datoteku.
pascal.485goxx,
■ Procedure A;
■ const
■ testc : stringŠ8Ć = '00000000';
■ begin
■ š ovde je kod koji menja sadrzaj testc ć
■ end;
Ne zamerite ako grešim (već par godina ne radim pascal), ali kako je
uopšte moguće menjati konstantu. Em se ruši definicija njene suštine,
em kompajler to dozvoljava ?
Goran
pascal.486srdjan.j,
==>■ const
==>■ testc : stringŠ8Ć = '00000000';
==> Ne zamerite ako grešim (već par godina ne radim pascal), ali kako je
==> uopšte moguće menjati konstantu. Em se ruši definicija njene suštine,
==> em kompajler to dozvoljava ?
Ovo je ekstenzija Turbo Pascala. testc je samo inicijalizovana varijabla.
Neznam koji im je djavo bio pa su napravili takvu sintaksu, ali to nije
konstanta !
pascal.487ognjen,
[dejanr]
)-> Za pocetak, proveri da li si datoteku zatvorio.
[omega]
)-> Verovatno si zaboravio close(WriteFile); na kraju.
Hvala vam k'o braci! Niste ni svesni koliko ste mi pomogli.
Mesecima nisam mogao da dovrsim program jer nisam znao sta se
desilo. Pre neki dan sam stampao listing, i sve sam crtao sta
kako ide, ali nisam mogao da ukapiram u cemu je problem... Vec
sam pomislio da je bug u pascalu. :)
[ Treba zatvoriti datoteku.
Treba zatvoriti datoteku.
Treba zatvoriti datoteku.
Treba zatvoriti datoteku.
Treba zatvoriti datoteku.
Treba zatvoriti datoteku.
. . .
Treba zatvoriti datoteku. ]
pascal.488vlador,
> nedovrsen fajl ima duzinu koja je uvek deljiva sa 128. Verovatno
> neki disk kes. Koristim SmartDrive, ali kada sam ga izbacio, i
Pre će biti da ti je TxtChar podatak dužine 128 (array [0..127] of Char,
String[127]...). Izvini ako si ovo znao... Za svaki slučaj. :)
pascal.489ognjen,
)-> Pre ce biti da ti je TxtChar podatak duzine 128 (array
)-> [0..127] of Char, String[127]...). Izvini ako si ovo znao...
)-> Za svaki slucaj. :)
Nije to bilo u pitanju, zaboravio sam da zatvorim datoteku. U
svakom slucaja hvala svima koji su pokusali (i uspeli) da mi
pomognu.
pascal.490nikac,
>■ Procedure A;
>■ const
>■ testc : string[8] = '00000000';
>■ begin
>■ ...
>■ end;
>■ ... ne resetuje se stalno na '000...'
To je dokumentovano ponasanje, tako se u pascalu definisu static
promenljive...
pascal.491mmitrovic,
Ů█▀█Ţ Neznam koji im je djavo bio pa su napravili takvu sintaksu, ali to nije
Ů█▀█Ţ konstanta !
Verovatno zato što bi morala da se dodaje nova rezervisana reč ili da
se menja sintaksa var definicije, a to je teško uraditi bez da se
poremeti sintaksa standardnog pascala.
pascal.492postmast,
From: Sloba.Markovic@f101.n101.z38.setgate.setnet.co.yu (Sloba Markovic)
Subject: String u stringu
Date: Tue, 04 Oct 1994 08:52:00
Da li bi neko bio ljubazan da mi pokaze (napise proceduru) kako da
trazim string u stringu. Npr. kako da nadjem string '445' u stringu
'217364450349267'. Hvala unapred,
+ ,
O:)-|--< MAGIC FLASH!
+ '
... Daddy, what does "FORMATTING DRIVE C:" mean?
* Origin: Oreska BBS, Uzice = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.493postmast,
From: broker@setgate.setnet.co.yu (Predrag Supurovic)
Subject: pascal
Date: Tue, 04 Oct 1994 11:31:06
To: "Ognjen Blagojevic" <ognjen@sezam.UUCP>
"
"B> redu. Kada dodje do linije Write (WriteFile, TxtChar); sve
"B> izgleda normalno, i izgleda da ga zaista upise, ali kada izadjem
"B> iz programa (pustim ga da se zavrsi do kraja), i pogledam
"B> datoteku, upisao je nekih 10ak znakova, i tu je stao! A ja sam
BIlo bi dobro da prilozis malo koda, da vidimo o cemu se radi. U svakom
slucju, probaj da promenljivu TxtChar stavis u Watch i pratis i njen
sadrzaj.
... BR> Nema vise industrijskog zagadjivanja! Hvala UN!
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.494postmast,
From: broker@setgate.setnet.co.yu (Predrag Supurovic)
Subject: String u stringu
Date: Tue, 04 Oct 1994 11:31:06
==== Sloba Markovic rece: ======================================
SM> Da li bi neko bio ljubazan da mi pokaze (napise proceduru) kako da
SM> trazim string u stringu. Npr. kako da nadjem string '445' u stringu
Evo izvoda iz TP Help-a:
Pos (function)
===============
Searches for a substring in a string.
Declaration:
function Pos(Substr: String; S: String): Byte;
Target:
Windows, Real, Protected
Remarks:
Substr and S are string-type expressions. Pos
searches for Substr within S, and returns an
integer value that is the index of the first
character of Substr within S. If Substr is not
found, Pos returns zero.
Sample Code:
{Pos.PAS}
{Sample code for the Pos function.}
var S: String;
begin
S := ' 123.5';
{ Convert spaces to zeroes }
while Pos(' ', S) > 0 do
S[Pos(' ', S)] := '0';
end.
... BR> Jedan im'o s kim, im'o s cim, im'o i gde - pa sad nema kud.
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.495postmast,
From: markom@exodus.fon.bg.ac.yu (Marko Milivojevic)
Subject: Re: pascal
Date: Wed, 5 Oct 1994 07:44:23 GMT
Ognjen Blagojevic (ognjen@sezam.UUCP) wrote:
:: do kraja, a sada naslucujem i zasto. Naime, primetio sam da
:: nedovrsen fajl ima duzinu koja je uvek deljiva sa 128. Verovatno
:: neki disk kes. Koristim SmartDrive, ali kada sam ga izbacio, i
:: dalje je bila ista stvar. :( Podigao sam i sistem sa diskete, i
:: ponovio sve, ali i dalje ne radi. Verovatno je 'kriv' TP (6.0).
:: Da li on ima neki bafer u koji privrmeno smesta podatke za upis,
:: pa tek kad se isti napuni on ka isprazni na disk? Ne bi trebao,
:: ali mozda...?
Jao, jao, cekaj. Kad otvaras fajl koji nije tipa TEXT, ako mu ne
navedes velicinu sloga, po defaultu je 128, zar ne? Ispravite me
ako gresim, ali nisam pratio ovo iz pocetka. Takodje, ako nije
neki TopSecret, posalji deo koda sa kojim otvaras fajl, tako ce
nam biti mnogo lakse...
--
Marko Milivojevic markom@exodus.fon.bg.ac.yu
Home phone: 137-477 (09-22) Exodus phone: +381 11 137-477 (22-09)#! rnews 786
pascal.496postmast,
From: markom@exodus.fon.bg.ac.yu (Marko Milivojevic)
Subject: Re: pascal
Date: Wed, 5 Oct 1994 07:50:39 GMT
Marko Milivojevic (markom@exodus.fon.bg.ac.yu) wrote:
:: Jao, jao, cekaj. Kad otvaras fajl koji nije tipa TEXT, ako mu ne
:: navedes velicinu sloga, po defaultu je 128, zar ne? Ispravite me
Greska, ako je fajl tipa FILE, jer ostali tipovi imaju velicinu
navedenog tipa... Definitivno mislim da je tu omanuo ;)
--
Marko Milivojevic markom@exodus.fon.bg.ac.yu
Home phone: 137-477 (09-22) Exodus phone: +381 11 137-477 (22-09)#! rnews 521
pascal.497sdjordjevic,
EJ PROVALIO SAM KAKO SE PUŠTA BMP NA PASCALU ALI LAKO MOžE DA SE PRERADI ZA
NPR: "C"
UZ PORUKU JE PRIKAžENO TO ŠTO SAM PROVALIO
s_w_bmp.arjpascal.498dejanr,
>> Jao, jao, cekaj. Kad otvaras fajl koji nije tipa TEXT, ako mu ne
>> navedes velicinu sloga, po defaultu je 128, zar ne?
Odnosi se na netipiziran fajl. Dakle, ako otvaraš fajl koji je deklarisan
sa:
var ime: file
onda treba koristiti:
reset (ime, 1)
inače će stvarno biti slog od 128 bajta, što najverovatnije nije ono što
se želelo. To je, inače, zbog kompatibilnosti sa Turbo Pascalom 2 i 3.
Ukoliko fajl ima tip (znači, ne samo tekst, nego bilo koji), onda je slog
onoliki koliki je tip, dakle otvara se običnim reset (ime).
pascal.499postmast,
From: broker@setgate.setnet.co.yu (Predrag Supurovic)
Subject: pascal
Date: Thu, 06 Oct 1994 22:56:01
"B> Vec sam rekao da mi ne radi upisivanje u fajl sa
"B>
"B> Write (WriteFile, TxtChar);
"B>
"B> do kraja, a sada naslucujem i zasto. Naime, primetio sam da
"B> nedovrsen fajl ima duzinu koja je uvek deljiva sa 128. Verovatno
Ako si datteku otvorio kao binarni tj kao tip FILE a ne ka TEXT,
onda pri otvaranju treba da navedes duzinu sloga, npr:
Reset (WriteFile,1); { duzina sloga je jedan bajt }
Ako ovo ne navedes, podrazumeva se da je duzina sloga 128 bajta, pa
ce, cak i ako je ono sto upisujes krace od 128 bajta biti upisano 128 bajta,
s tim da ce 'visak' biti ono sto se naslo u memoriji na odgovarajucoj lokaciji.
... Don't shoot! There are people too.
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.500postmast,
From: broker@setgate.setnet.co.yu (Predrag Supurovic)
Subject: pascal
Date: Thu, 06 Oct 1994 22:56:02
MM> Predrag Supurovic (broker@setgate.setnet.co.yu) wrote:
MM> :: Mislim da nepotrebno komplikujes. Preporucljivije je da RING
MM> detektujes tako :: sto ocekujes da ti modem posalje rec 'RING' nego da
MM> cekas da proveravas :: statusne registe. Cak je i standardom ovo
MM> preporucen metod. Video sam da :: neki programi koriste kombinaciju:
MM> cekaju i na promenu statusa i na RING :: od modema.
MM>
MM> ATQ1, da vidim kako ce da mi stigne RING od modema ;>
ATQ1 se koisti sam u specificnim situacijama. Za normalan rad to bi
bilo katastrofalno iskljuciti jer teminal ne bi od modema mogao da
dobije nijednu informaciju o statusu veze, sem samih podataka koji
se prenose. Ne bi cak mogao da sazna ni kojom brzinom se pravi konekt,
ni da li je BYSY ili NO RESPONSE .... Jednostavno, to je specifican
slucaj koji se moze zanemariti. S druge strane, cesto moze da se desi da
recimo kabal kojim je modam spojen na racunar jednostavno nema RING
liniju, i eto belaja...
... COMPLAINTS > NUL
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.501kenza,
(;> Da li bi neko bio ljubazan da mi pokaze (napise proceduru) kako da
(;> trazim string u stringu. Npr. kako da nadjem string '445' u stringu
Zar to ne radi POS ? Ako ti POS ne odgovara, javi pa cemo
nesto vec da napisemo :)
pascal.502bajaga,
Da li je moguče u paskalovom asembleru koristiti 386 instrrukcije
i ako jeste kako?
pascal.503pedjak,
This package is for users of Turbo Pascal, version 5.0 or later.
These three files are all you need to add XMS support to overlaying.
If you think you can use it, then I probably don't have to explain
what the benefits are of using XMS memory over EMS memory - or
emulations thereof. But I will anyway:
- XMS is found on more machines than EMS.
- All XMS is addressable as one physical unit, not in chunks of 16 kB
like EMS.
- XMS is faster. How much faster, depends on the kind of system.
It probably doesn't matter much on 386/486 systems, but the speedup
is noticable on a 286 with emulated EMS. Or if you have a typical
1 MB 286 clone, configured as 640+384, without either board EMS or
emulated EMS (served by e.g. Quarterdeck's QRAM memory manager),
then thanks to OVERXMS you'll have fast loading overlays at last.
... and last but not least:
- OVERXMS is compact. It adds a mere 425 bytes of code to your .EXE
file.
overxmspascal.504srdjan.j,
==> Verovatno zato što bi morala da se dodaje nova rezervisana reč ili da
==> se menja sintaksa var definicije, a to je teško uraditi bez da se
==> poremeti sintaksa standardnog pascala.
A ovako su poremetili sintaksu const definicije, pa nikom ništa !
Srđan.
pascal.505mmitrovic,
Ů█▀█Ţ Da li je moguče u paskalovom asembleru koristiti 386 instrrukcije
Ů█▀█Ţ i ako jeste kako?
Jeste, ali posredno. moraš da dodaš bajt 66h ispred svake instrukcije
koja koristi 32b registre kako bi naznačio da se radi o recimo EAX a ne
o AX, pošto je opcode za te dve instrukcije identičan.
pascal.506postmast,
From: markom@exodus.fon.bg.ac.yu (Marko Milivojevic)
Subject: Re: pascal
Date: Mon, 10 Oct 1994 19:57:16 GMT
Predrag Supurovic (broker@setgate.setnet.co.yu) wrote:
:: slucaj koji se moze zanemariti. S druge strane, cesto moze da se desi da
:: recimo kabal kojim je modam spojen na racunar jednostavno nema RING
:: liniju, i eto belaja...
Hmda, tacno... Ali veruj mi da je to redje slucaj nego da je
na modemu postavljeno ATQ1 ;)
--
Marko Milivojevic markom@exodus.fon.bg.ac.yu
Home phone: 137-477 (09-22) Exodus phone: +381 11 137-477 (22-09)#! rnews 1389
pascal.507postmast,
From: Slobodan.Popovic@f1.n103.z38.setgate.setnet.co.yu (Slobodan Popovic)
Subject: Editor
Date: Fri, 07 Oct 1994 19:00:04
* Originally from: Igor Loncarevic
* Originally to: All
IL> Zeljko Dakic (Zeljko.Dakic@f116.n103.z38.setgate.setnet.co.yu) wrote:
IL> : Nasam sam savrseni editor !!! Lepo izgleda (mnogo lepse od mnogih,
IL>
IL> Ima jedan jos bolji :). Zasto nikom nije palo na pamet da koristi
IL> editor iz Borland paketa (BP6|7,BC4), moze da edituje koliko i sta
IL> hoces. Btw, meni jos nije palo na pamet :).
Mozda zato sto ima 400 KB?
... Prema zadnjim procenama, preko 67% statisticara gresi.
* Origin: SETNet - Belgrade HUB1 (38:103/1)
pascal.508postmast,
From: Slobodan.Popovic@f1.n103.z38.setgate.setnet.co.yu (Slobodan Popovic)
Subject: Editor
Date: Sat, 08 Oct 1994 04:29:07
* Originally from: Predrag Kraguljac
* Originally to: Slobodan Popovic
PK> Road Runer bar sto se mene tice radi skoro savrseno. Normalno ubacuje
PK> fajlove jedan u drugi kao i sve moguce delove fajla. Verzija koju ima
PK> Miomir je kao i moja posto sam je i uzeo sa Sensible BBS-a. Radio sam
PK> istovremeno sa nekoliko fajlova ukupne duzine preko 3 Mb i sve je
PK> radilo savrseno. Sve u svemu "Nijesam imao zamjerki".
Evo, ovo je jos jedna potvrda o kvalitetu RoadRunnera. Da ne bude da
sam ja "ciganin koji svoga konja hvali"... :)
... Glumiti znaci stajati go i polako se okretati. -- Rosalind Russell
* Origin: SETNet - Belgrade HUB1 (38:103/1)
pascal.509postmast,
From: anubis@hobbiton.CO.YU (Igor Loncarevic)
Subject: Re: pascal
Date: Tue, 11 Oct 1994 22:19:17 GMT
Goran Zafirovic (goxx@sezam.UUCP) wrote:
: Procedure A;
: const
: testc : stringS8C = '00000000';
: begin
: s ovde je kod koji menja sadrzaj testc c
: end;
: Ne zamerite ako gresim (vec par godina ne radim pascal), ali kako je
: uopste moguce menjati konstantu. Em se rusi definicija njene sustine,
: em kompajler to dozvoljava ?
Pa tako deklarisana konstanta je ustvari var promjenjiva koja je inicija
lizovana datom vrijednoscu. I treba da je moguce da se mjenja. Licno,
ja ovu osobinu koristim do bola u programima :).
---------------------------------------------------------------------------
anubis@hobbiton.CO.YU - anubis@hobbiton.sin.com
pascal.510omega,
Ţ Evo, ovo je jos jedna potvrda o kvalitetu RoadRunnera. Da ne bude da
Ţ sam ja "ciganin koji svoga konja hvali"... :)
Pitam se samo ko je ovde konj, a ko ciganin? ;)
pascal.511ddobic,
rz
B00000000000000
Hitno mi je potrebna
ZBIRKA RESENIH ZADATKA
PROGRAMSKI JEZIK PASCAL
autori: Stojkovic i Tosic
izdavac: Naucna knjiga (1989)
Knjigu bih kupio novu ili fotokopiranu ili pozajmio da iskopiram.
Unapred hvala DDobic
pascal.513postmast,
From: dragisha@hobbiton.CO.YU (Dragisa Duric)
Subject: Re: Lokalne konstante
Date: Fri, 14 Oct 1994 17:47:51 GMT
Predrag Supurovic (broker@setgate.setnet.co.yu) wrote:
: Da li i za konstante u TurboPascal-u vazi da su lokalne u proceduri u kojoj
: su definisane?
: Pojavio mi se problem, da se unapred definisana promenljiva koja je
: definisana u const sekciji procedure ponasala kao globalna.
Da ne citiram mnogo, ponasa se kako se i ocekuje. Uporedivo je sa
statickim varijablama u C procedurama.
: Procedure A;
: const
: testc : string[8] = '00000000';
: begin
: { ovde je kod koji menja sadrzaj testc }
: end;
Koji je smisao konstante koju mijenjas kodom? Inicijalizacija? E, morace
drugacije :).
pascal.514postmast,
From: Nikola.Sivacki@f125.n103.z38.setgate.setnet.co.yu (Nikola Sivacki)
Subject: Re: pascal
Date: Sun, 16 Oct 1994 20:12:02
-=> Quoting "Srdan Dordevic" to All <=-
"D> EJ PROVALIO SAM KAKO SE PUSTA BMP NA PASCALU ALI LAKO MOzE DA SE
"D> PRERADI ZA NPR: "C"
"D> UZ PORUKU JE PRIKACENO TO STO SAM PROVALIO
Kako si to uspeo?!?!?!?!?!?!?!?!?!?Molio bih te da mi posaljes mail u kojem bi
to malo pojasnio.Mooooooooooooooooooooolim te...
Nikola Sivacki
* Origin: SetNet:Birostroj BBS,NON-STOP,14400bps,011/609945 (38:103/125)
pascal.515uobradovic,
Da li neko ima Norton Guide za Pascal.Jako mi je potreban.
Sve poruke slati na mail.
Uroš
pascal.516evlad,
>> Da li neko ima Norton Guide za Pascal.Jako mi je potreban.
>> Sve poruke slati na mail.
Moze i meni :)
pascal.517djelovic,
> Da li neko ima Norton Guide za Pascal.Jako mi je potreban.
Originalni NG za Pascal nije PD/SW pa je tako nedostupan preko Sezama.
Ne znam da li postoji i neka PD/SW verzija.
pascal.518jovca.car,
/* > Da li neko ima Norton Guide za Pascal.Jako mi je potreban.
/* Originalni NG za Pascal nije PD/SW pa je tako nedostupan preko Sezama.
Neko je u (valjda) ovoj temi ostavi ng za TurboVision. Potraži.
pascal.519superhik,
=:> Originalni NG za Pascal nije PD/SW pa je tako nedostupan
=:> preko Sezama. Ne znam da li postoji i neka PD/SW verzija.
Jel bi mogao neko da mi
objasni Šta je to Norton Guide tj.
za šta služi
(e jesam neupućen ccc... ;)
pascal.520dejanr,
>> Jel bi mogao neko da mi
>> objasni Šta je to Norton Guide tj.
>> za šta služi
Norton Guide je rezidentni program koji omogućava da, ako imaš odgovarajuću
bazu (.NG fajl), tokom rada sa nekim programom pogledaš sintaksu neke od
naredbi, primer itd. Nešto kao on-line dokumentacija.
Sam Norton Guide (program) nije pd/sw, a pojedine baze jesu, dok su druge
deo komercijalnih paketa pa se ne mogu slobodno distribuirati.
pascal.521superhik,
=:> Sam Norton Guide (program) nije pd/sw, a pojedine baze jesu,
=:> dok su druge deo komercijalnih paketa pa se ne mogu slobodno
=:> distribuirati.
Kog komercijalnog paketa!?
pascal.523uobradovic,
ĆĆĆ Neko je u (valjda) ovoj temi ostavi ng za TurboVision.
ĆĆĆ Potraži.
Treba mi i ostatak Pascala a ne samo TV.
pascal.524dejanr,
>> > a pojedine baze jesu, dok su druge deo komercijalnih
>> > paketa pa se ne mogu slobodno distribuirati.
>>
>> Kog komercijalnog paketa!?
Pa, recimo kupiš Clipper i uz njega dobiješ Norton Guide za Clipper.
Taj fajl (odnosno ti fajlovi) je deo paketa CA Clipper, i ne možeš ga
slobodno distribuirati.
pascal.525postmast,
From: Predrag.Knezevic@f127.n103.z38.setgate.setnet.co.yu (Predrag Knezevic)
Subject: pascal
Date: Wed, 19 Oct 1994 18:55:05
Pozdrav,
"D> Hitno mi je potrebna
"D> ZBIRKA RESENIH ZADATKA
"D> PROGRAMSKI JEZIK PASCAL
"D> autori: Stojkovic i Tosic
"D> izdavac: Naucna knjiga (1989)
Mislim da je na tom nivou i od Cabarkape i Spalivic.
ZBIRKA ZADATAKA IZ PROGRAMIRANJA SA RESENJIMA U PASCAL_u
Moze se lako nabaviti.
Krang
* Origin: SetNET Krang CITY BBS +381-11-474-373, Beograd (38:103/127)
pascal.527uobradovic,
ĆĆĆ Neko je u (valjda) ovoj temi ostavi ng za TurboVision.
ĆĆĆ Potraži.
Treba mi i ostatak Pascala a ne samo TV.
pascal.528pedjak,
Pre jedno mesec dana bilo je rasprave o tome da li postoje juniti
za turboviziju u grafičkom modu... pa postoji :)
TVGRAPH 1.10
TURBO VISION
using TURBO VISION In EGA/VGA graphics
(C) Mindware 1991,1993
Brisbane,QLD,Australia
Fido : 3:640/307
0. See Modified TVDEMO program and STYX.PAS to show you how to do things
To recompile the TVDEMO program, copy TVDEMO.PAS and STYX.PAS to the
TVDEMO directory, then build TVDEMO. Ensure all standard units are the
original (i.e. time stamp is 7.0x) or version mismatches will occur.
1. All that is required is to include TVGRAPH in the uses statement in your
main program and amazing - TV will work in graphics mode.
tvg110a.zippascal.529saricl,
Imam jednu veoma hitnu molbu za one koji imaju iskustva sa
pisanjem softvera na
PASCALU a koji treba da radi pod NOVEL MREžOM.
Radi se o sledećem : prijateljica ide na višu pedagošku i treba da
sastavi sledeći program:
1) Postoji deset grupa pitanja.
2) Svaka grupa pitanja sadrži po deset pitanja.
3) Potrebno je da se na svakom terminalu pojavi pitanje tipa :" broj grupe ?"
nakon unošenja broja grupe treba da se pojave pitanja te grupe.
4) Takođe treba da postoji mogućnost povratka na pitanje "broj grupe?"
i izlaska iz programa.
Ovo je trivijalan problem, međutim ja nisam pravio progarame za mreže pa neznam
na koji se načiin pišu programi za mreže, Takođe me zanima dali je nešto ovako
moguće
uopšte uraditi iz TP v7.0
Zahvaljujem se svima koji mi budu pomogli. Ovo je zaista hitno, treba da
bude gotovo za četvrtak popodne, pa vas molim da mi odgovore pošaljete do tada.
pascal.530pedjak,
> PASCALU a koji treba da radi pod NOVEL MREžOM.
> Radi se o sledećem : prijateljica ide na višu pedagošku i treba da
> sastavi sledeći program:
> 3) Potrebno je da se na svakom terminalu pojavi pitanje tipa :" broj
> grupe ?" nakon unošenja broja grupe treba da se pojave pitanja te
> grupe.
> 4) Takođe treba da postoji mogućnost povratka na pitanje "broj
> grupe?" i izlaska iz programa.
Pa jednostavno, koliko sam shvatio, startuješ napisani program na
svakoj stanici... Program pišeš najnormalnije kao i za go DOS..
jedino ako program treba da vrši neke zajedničke obrade rezultata
koji se ukucavaju sa raznih stanica, onda se koriste zajedničke
datoteke u koje se upisuju podaci.
pascal.531inferno,
Oj ljudi!
Imam jedan problem. Rešio sam da počnem da učim Pascal, pa
sam nabavio TP 6.0. Naravno, nemam pojma da programiram u
TP-u. Od knjiga imama neke starudije, tako da je slaba
vajda. No, da ne davim više... Pravim prg. koji će po
startovanju da pročita datum, zapisan u nekom fajlu, i ako
se taj atm ne poklapa sa sistemskim, on će da u taj fajl
preko starog datuma upiše novi datum i da izvrši jedam batch
file.
Prvo, batch file neće da se izvrši iako sam napisao:
SwapVectors;
exec(path,'batch.bat');
SwapVectors;
Drugo, neće da upiše datum u fajl iako stoji:
LABEL 1,2,3;
const
dat = 'dexe';
path = '.';
exef = 'command /c c:\dexe\dexe.bat';
var
y, m, d, dow, y1, m1, d1, dow1 : word;
f : file of word;
BEGIN
1:
assign(f, dat);
reset(f);
begin
read(f, y1,m1,d1,dow1);
getdate(y,m,d,dow);
end;
IF (d1 = d) then goto 2;
begin
write(f, y,m,d,dow);
writeln('Ecexuting...');
writeln(' ');
close(f);
SwapVectors;
exec('c:\',exef);
SwapVectors;
goto 3;
end;
2:
.... (neke poruke...)..
3:
end.;
p.s. Izvinjavam se na dužini poruke. :(
pascal.532omega,
Ţ Imam jedan problem. Resio sam da pocnem da ucim Pascal, pa
Ţ sam nabavio TP 6.0. Naravno, nemam pojma da programiram u
Ţ TP-u. Od knjiga imama neke starudije, tako da je slaba
Ţ vajda.
Ja sam naucio iz umetaka Racunara (dejanr) i iz help-a samog TP-a.
Srecno! :)
Ţ SwapVectors;
Ţ exec(path,'batch.bat');
Ţ SwapVectors;
SwapVectors;
Exec(getenv('COMSPEC'),'/C '+path+'batch.bat');
SwapVectors;
Ţ LABEL 1,2,3;
Izbegavaj ovo koliko god mozes (citaj: nemoj uopste da upotrebljavas)
Nije ti ovo BASIC ;) Svaki od delova koje pozivas preko labela
prebaci u procedure bez parametara...
Program se vise manje cini ok, verovatno je problem sto datoteka ne
postoji u startu, jer Reset otvara POSTOJECU datoteku.
pascal.533dejanr,
>> SwapVectors;
>> exec(path,'batch.bat');
>> SwapVectors;
Ne radi se tako. Prvo, na početak programa stavi nešto kao {$M 16000,0,0}
Drugo, ne pozivaj direktno batch.bat, nego command.com, kome kao
parametar prosleđuješ ime batch fajla. Dakle, exec ('c:\command.com',
'/C batch.bat). Još bolje je umesto c:\command.com staviti indirektno
njegovo ime, preko environment promenljive COMSPEC, ali može i ovako kako
sam napisao.
>> exef = 'command /c c:\dexe\dexe.bat';
Ovde treba puno ime, dakle C:\COMMAND.COM. I ono .COM je bitno.
File ne treba da ti bude file of word, verovatno će ti bolje poslužiti
neki text fajl.
Pre svega, moraš da naučiš da nazubljuješ program, i da "zaboraviš" na
goto naredbu. Najbolje pročitaj neku početničku knjigu o tome, možda je
umetak iz "Računara" zgodan način da se učine prvi koraci.
pascal.534postmast,
From: broker@setgate.setnet.co.yu (Predrag Supurovic)
Subject: Boje
Date: Sat, 22 Oct 1994 13:38:02
NS> Imam jedan problem.Da li iko zna kako se moze u tp 6.0 (uz SVGA
NS> karticu) U ISTO VREME prikazati 256 boja?
Verovatno ti treba neki poseban drajver. Navrati na Oresku i u pascal
direktorijumu ces naci priican broj alatki za VGA.
... BR> Da li si clan YUCCA? Ne? Pa sta cekas?!
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.535uobradovic,
::> Imam jedan problem. Rešio sam da počnem da učim Pascal, pa
::> sam nabavio TP 6.0. Naravno, nemam pojma da programiram u
::> TP-u. Od knjiga imama neke starudije, tako da je slaba
::> vajda. No, da ne davim više... Pravim prg. koji će po
::> startovanju da pročita datum, zapisan u nekom fajlu, i ako
::> se taj atm ne poklapa sa sistemskim, on će da u taj fajl
::> preko starog datuma upiše novi datum i da izvrši jedam batch
::> file.
Kažeš da nemaš pojma a praviš program do kog bi ti trebalo
više vremena rada.
Uroš
pascal.536bulaja,
│ TVGRAPH 1.10
│ TURBO VISION
│ using TURBO VISION In EGA/VGA graphics
└───
Prebačeno u PASCAL dir, hvala :).
pascal.537postmast,
From: Predrag.Knezevic@f127.n103.z38.setgate.setnet.co.yu (Predrag Knezevic)
Subject: Boje
Date: Mon, 24 Oct 1994 23:38:05
Pozdrav,
NS> Zdravo!
NS> Imam jedan problem.Da li iko zna kako se moze u tp 6.0 (uz SVGA karticu)
NS> U ISTO VREME prikazati 256 boja?
Nikako. Bar ne koristeci standardne TP procedure.
Probaj sa direktnim upisom u video mem (videces u asm-u ima interupt).
Krang
* Origin: SetNET Krang CITY BBS +381-11-474-373, Beograd (38:103/127)
pascal.538postmast,
From: Aleksandar.Sasa.Nikolic@f104.n103.z38.setgate.setnet.co.yu (Aleksandar Sasa Nikolic)
Subject: PITANJE
Date: Tue, 25 Oct 1994 02:43:00
E voleo bih kad bi mi neko pruzio pomoc oko ovoga , zadatak je da se iz TSR-a
startuje posle 3 minuta COMMAND.COM :))) malo tezak zadatak zar ne? mozda i
neostvariv? Naravno za merenje vremena se za one koji ne znaju koristi INT 08
koji kuca 18,2 puta po sekundi dakle da vas vidim hakeri, problem je u ,cemu?,
u exekuciji naravno ;)))
Toliko, ===>> POMAGAJTE OKO OVOGA ! <<==== ;)))
Aca
* Origin: *SETNet: Taurunum BBS +381 11 2354-253, Zemun* (38:103/104)
pascal.539postmast,
From: Sloba.Markovic@f115.n103.z38.setgate.setnet.co.yu (Sloba Markovic)
Subject: Boje
Date: Sun, 23 Oct 1994 00:06:05
NS> Imam jedan problem.Da li iko zna kako se moze u tp 6.0 (uz SVGA
NS> karticu) U ISTO VREME prikazati 256 boja?
Potreban ti je BGI driver za SVGA, on se zove SVGA256.BGI i mozes
ga naci na vecini BBS-ova. Kada ga nabavis onda se on inicijalizuje
pomocu procedure InitSVGAGraph(mode):
Program SVGA_GRAPH;
Uses Graph, Crt;
Var MO, UD, EC, mode, GM, GD : Integer;
{$F+}
Function DetectVGA256 : Integer;
Begin
DetectVGA256:=MO;
end;
{$F-}
Procedure InitSVGAGraph(mode: integer);
Begin
MO:=mode;
UD:=InstallUserDriver('SVGA256', @DetectVGA256);
EC:=GraphResult;
If GraphResult <> grOk then Begin
Writeln('Fatal error: ',GraphErrorMsg(EC));
Halt(1);
end;
GD:=Detect;
InitGraph(GD, GM, '');
EC:=GraphResult;
If (EC <> GrOk) then Begin
Writeln('Fatal error: ',GraphErrorMsg(EC));
Halt(1);
end;
end;
Begin
InitSVGAGraph(2);
{ Tvoj program }
CloseGraph;
end.
Ovo je izvod iz mog TPU-a i na brzaka je skrpljen, pa nisam siguran da je
sve ok, ali bi trebalo da shvatis kako se to radi. U ovom slucaju
promenljiva MODE dobija vrednost 2, sto znaci da ce se inicijalizovati
640x480x256 grafika. Evo i tabele vrednosti, svi modovi su u 256 boja i
za SVGA 512k karticu (postoje vrednosti do 6 za SVGA 1024 kartice, ali sam
ih zabozavio):
Vrednost | Mod
-------------------
0 | 320x200
1 | 640x400
2 | 640x480
3 | 800x600
Play with colours, hope it helps!
MAGIC FLASH!
... Computers are tools, but the Amiga is an instrument.
* Origin: Atlantis BBS 22-05 tel. 3225-548 ■Belgrade■ (38:103/115)
pascal.542inferno,
Ů│ ˙ Ja sam naucio iz umetaka Racunara (dejanr) i iz help-a samog TP-a.
Ů│ ˙ Srecno! :)
Ha! I meni nije išlo dok te nisam poslušao i pročitao
umetak by dejanr. Onda je odjedamput program proradio! :)
Ů│ ˙ SwapVectors;
Ů│ ˙ Exec(getenv('COMSPEC'),'/C '+path+'batch.bat');
Ů│ ˙ SwapVectors;
Aaa, u tome je štos...
A šta je ono COMSPEC ??
Ů│ ˙ Izbegavaj ovo koliko god mozes (citaj: nemoj uopste da upotrebljavas)
Ů│ ˙ Nije ti ovo BASIC ;) Svaki od delova koje pozivas preko labela
Ů│ ˙ prebaci u procedure bez parametara...
U pravu si... Nisam znao za procedure dok nisam pročitao
bas2pas... :)
Veliki pozdrav! :)
pascal.543inferno,
Ů│ ˙>> SwapVectors;
Ů│ ˙>> exec(path,'batch.bat');
Ů│ ˙>> SwapVectors;
Ů│ ˙
Ů│ ˙ Ne radi se tako. Prvo, na početak programa stavi nešto kao {$M
Ů│ ˙ 16000,0,0}
E to mi nije bilo jasno... Dok to nisam stavio program nije
hteo da radi. Uspeo sam da ukapiram da je to nepohodno za
izvršavanje programa van mog programa, ali nisam ukapirao
kako da odredim kolika treba da bude vrednost onih brojeva
(16000,0,0)?
Ů│ ˙>> exef = 'command /c c:\dexe\dexe.bat';
Ů│ ˙
Ů│ ˙ Ovde treba puno ime, dakle C:\COMMAND.COM. I ono .COM je bitno.
Aaaa, znači zato tek sad radi...
Ů│ ˙ File ne treba da ti bude file of word, verovatno će ti bolje poslužiti
Ů│ ˙ neki text fajl.
Probao sam da eksperimentišem s tim, ali javlja da je
pogrešna promenljiva. Mora da sam ja nešto pogrešio?
Javlja error kod read(f, ...
Ů│ ˙ Pre svega, moraš da naučiš da nazubljuješ program, i da "zaboraviš" na
Ů│ ˙ goto naredbu.
Da, program sam nazubio, ali sam ga ovako okačio na SEZAM da
mi se ne bi polomile linije... Što se tiče GOTO naredbe
shvatio sam da je nepotrebna tek kad sam pročitao
bas2pas.zip..
Ů│ ˙ Najbolje pročitaj neku početničku knjigu o tome, možda je
Ů│ ˙ umetak iz "Računara" zgodan način da se učine prvi koraci.
Pročitao sam "Sa BASIC-a na Pascal". Da nisam to našao
nikad ne bih ništa shvatio. :)
pascal.544inferno,
Ů│ ˙ ::> Imam jedan problem. Rešio sam da počnem da učim Pascal, pa
Ů│ ˙ ::> sam nabavio TP 6.0. Naravno, nemam pojma da programiram u
Ů│ ˙ ::> TP-u. Od knjiga imama neke starudije, tako da je slaba
Ů│ ˙ ::> vajda. No, da ne davim više... Pravim prg. koji će po
Ů│ ˙ ::> startovanju da pročita datum, zapisan u nekom fajlu, i ako
Ů│ ˙ ::> se taj atm ne poklapa sa sistemskim, on će da u taj fajl
Ů│ ˙ ::> preko starog datuma upiše novi datum i da izvrši jedam batch
Ů│ ˙ ::> file.
Ů│ ˙
Ů│ ˙ Kažeš da nemaš pojma a praviš program do kog bi ti trebalo
Ů│ ˙ više vremena rada.
Ne razumem? Do tog programa mi je trebalo tri-četri dana.
Druga stvar je što bih ga sad sastavio za pola sata, kao što
bi ga sastavio i svako ko iole zna osnove Pascal-a...
Zar ne valja tehnika: "Uči dok pišeš program"??
pascal.545evlad,
>> A sta je ono COMSPEC ??
Environment varijabla u kojoj se nalazi putanja i ime komandnog
'procesora' (obicno COMMAND.COM), postavlja se u autoexec.bat
datoteci sa SET COMSPEC=[d:\path\name.ext]
pascal.546omega,
Ţ E to mi nije bilo jasno... Dok to nisam stavio program nije
Ţ hteo da radi. Uspeo sam da ukapiram da je to nepohodno za
Ţ izvrsavanje programa van mog programa, ali nisam ukapirao
Ţ kako da odredim kolika treba da bude vrednost onih brojeva
Ţ (16000,0,0)?
Ima resenje i za to, i to najbolje resenje:
uses Memory, Dos;
...
SetMemTop(HeapPtr);
SwapVectors;
Exec(getenv('COMSPEC'),'/C '+path+'batch.bat');
SwapVectors;
SetMemTop(HeapEnd);
...
end.
pascal.547omega,
Ţ Zar ne valja tehnika: "Uci dok pises program"??
To je najbolja tehnika i jedina. Naravno, potrebno je bar neko predznanje.
pascal.548ognjen,
)-> A sta je ono COMSPEC ??
Puno ime komandnog interaptera. Na primer:
c:\4dos\4dos.com ili mnogo cesce:
c:\dos\command.com
pascal.549drpr,
Haj,
mislim da se nekada ovde raspravljalo o X , Y ili Z modemu
pa su mi potrebni ti sorsovi. Zato molim neku dobru dušu da
me uputi gde da tražim .
U napred hvala,
Cope
pascal.550vitez.koja,
#=> U pravu si... Nisam znao za procedure dok nisam
#=> pročitao bas2pas... :)
Auuu... pa ti ne znaš ni basic ;)
Prelažem ti da, umesto 'divlje' metode učenja, uzmeš neku knjigu
i lepo se o svemu informišeš. Umetak iz Računara nisam video, ali
sumnjam da vredi koliko prava knjiga.
pascal.551vitez.koja,
#=> Ţ Zar ne valja tehnika: "Uci dok pises program"??
#=>
#=> To je najbolja tehnika i jedina. Naravno, potrebno je
#=> bar neko predznanje.
Najbolja ? Možda...
Jedina ? Ni slučajno.
Zaboravio si da pomeneš da je utrošak vremena pri "uči dok pišeš
program" dva-tri puta veći nego kod 'tradicionalnih' metoda.
Predložio bih jednu ekstravagantnu metodu učenja programskog
jezika: pisanje interpretera/kompajlera za taj jezik. Na taj
način dobijaš uvid 'unutar' samog jezika, vidiš kako sve to
zapravo funkcioniše. Ovaj metod je ubedljivo najteži i vremenski
najzahtevniji, ali rezultati su veoma dobri (iz iskustva:).
Za ovaj metod je potrebno i ubedljivo najviše literature - ja sam
koristio jednu knjigu o leksičkoj analizi i parserima, jednu
'popularnu' o programskom jeziku (u pitanju je bio 'C'), jednu
nepopularnu ;)) o programskom jeziku - "Programski jezik C" by
njegovi tvorci - i jednu knjigu u kojoj se obrađuje pojam
interpretera u čitaj_listing maniru (mnoogo koda, malo komentara).
Trebalo mi je tri meseca, a rezultirajući interpreter sam već u
trenutku završavanja mogao da napišem dva puta bolje, ali je
vredelo :)
pascal.552vitez.koja,
#=> mislim da se nekada ovde raspravljalo o X , Y ili Z
#=> modemu pa su mi potrebni ti sorsovi. Zato molim neku
#=> dobru dušu da me uputi gde da tražim .
Nekada = juče :))
Sorsovi X i Y -modem protokola su izuzetno jednostavni, mogu se
(između ostalog) naći pri demo programu za PCL biblioteku (ima na
sezamu). Sors Zmodema imaš u COM direktorijumu.
pascal.553mmitrovic,
Ů█▀█Ţ E voleo bih kad bi mi neko pruzio pomoc oko ovoga , zadatak je da se iz
Ů█▀█Ţ TSR-a startuje posle 3 minuta COMMAND.COM :))) malo tezak zadatak zar
...
Ů█▀█Ţ u exekuciji naravno ;)))
Naravno. ;)
Ne mogu se startovati drugi programi iz rezidentnog prvo i osnovno zato
što 90% EXE programa ima u headeru upisano FFFF za maximum memorije, što
rezultira u tome da DOS svu memoriju alocira tom programu, pa ništa ne
ostaje za 4Bh funkciju. Rešenje ti je da pronađeš inkriminisani program i
smanjiš mu memoriju. However, ako je taj program imao neke podatke unutar
svog segmenta (što je vrlo često slučaj), oni će biti uništeni pa će biti
sranja kad se vratiš u program. Tek toliko. ;)
pascal.554mmitrovic,
Ů█▀█Ţ Potreban ti je BGI driver za SVGA, on se zove SVGA256.BGI i mozes
Ovo je najsporiji mogući drajver, i postoji verzija koja se ovde muva
a koja ima bag u radu sa paletama (tu verziju sam inače izvukao iz
SCORCHa ;)). Za brži rad postoji n drajvera, gde n teži broju različitih
kartica, koje su prilagođene i koriste prednosti pojedinačne kartice.
Gde ih ima, to ne znam. Ako neko zna nek kaže, ja imam samo par starih.
pascal.555omega,
Ţ#=> To je najbolja tehnika i jedina. Naravno, potrebno je
Ţ#=> bar neko predznanje.
Ţ
Ţ Zaboravio si da pomenes da je utrosak vremena pri "uci dok pises
Ţ program" dva-tri puta veci nego kod 'tradicionalnih' metoda.
Na koje si ti tradicionalne metode mislio? Ovo sto se radi po nasim
fakultetima je ocaj, nadam se da to ne uzimas u obzir?
pascal.556omega,
Ţ Prelazem ti da, umesto 'divlje' metode ucenja, uzmes neku knjigu
Ţ i lepo se o svemu informises. Umetak iz Racunara nisam video, ali
Ţ sumnjam da vredi koliko prava knjiga.
Sumnjaj ti koliko hoces, ali mislim da je dejanr-ov pristup ubedljivo
najbolji. Ja to iz licnog iskustva. Knjige moze da uzme tek kasnije.
pascal.557omega,
Ţ Ovo je najsporiji moguci drajver, i postoji verzija koja se ovde muva
SVGABGI v5.0? Pa jel ima neki brzi, ali univerzalni koliko toliko?
pascal.558vlador,
> Zar ne valja tehnika: "Uči dok pišeš program"??
Po meni, apsolutno valja!
pascal.559ognjen,
)-> 'procesora' (obicno COMMAND.COM), postavlja se u autoexec.bat
)-> datoteci sa SET COMSPEC=[d:\path\name.ext]
Zar ovo iko postavlja?
Podrazumevana vrednost je iz config.sys-a posle shell=
pascal.560rcolic,
> E to mi nije bilo jasno... Dok to nisam stavio progra
> hteo da radi. Uspeo sam da ukapiram da je to nepoho
> izvrsavanje programa van mog programa, ali nisam uk
> kako da odredim kolika treba da bude vrednost onih b
> (16000,0,0)?
$M je direktiva kompajleru za organizaciju memorije po sledecem principu:
{$M stacksize, heapstart, heapend }PP
U TP-u u Options/Compiler ili tako negde imas da setujes to i ako to uradis
automatski se to primenjuje u svakom programu. Default je 16384,0,655360.
Normalno, u skladu sa potrebama u samom sorsu se ponavlja direktiva pri cemu se
zaobilazi default setovanje.
Nadam se da sam bio od pomoci...
Rcolic
pascal.561mitcho,
> jednu knjigu o leksičkoj analizi i parserima,
Koja je to knjiga (ako je dobra), i gde se može nabaviti?
> jednu knjigu u kojoj se obrađuje pojam interpretera u čitaj_listing
> maniru (mnoogo koda, malo komentara)
Isto me interesuje i za ovu knjigu.
pascal.562uobradovic,
::> Prelažem ti da, umesto 'divlje' metode učenja, uzmeš neku
::> knjigu i lepo se o svemu informišeš. Umetak iz Računara nisam
::> video, ali sumnjam da vredi koliko prava knjiga.
Umetak iz Računara je loš.Nabavi knjigu
'Turbo Pascal 6.0 - Kompletan vodič' Stephena O'Briena.
Uroš
pascal.563rcolic,
> > Zar ne valja tehnika: "Uci dok pises program"??
>
> Po meni, apsolutno valja!
Slazem se sa tobom, ali ipak se ne moze sve nauciti pisuci programe
samoinicijativno.. ipak treba da postoji i literatura pomocu koje ce se
usmeravati samostalni rad (ne mislim na tupave knjige koje se koriste u skolama
za informatiku). Postoji jedna strasna skupina programa pod imenom PCGPE (iliti
PC Games Programming Encyclopaedia) koja sadrzi gomilu sorseva grafickog,
zvucnog, i/o i slicnog sadrzaja. Ja je imam, ali je prilicno velika(>1.5MB) pa
vicite ako vam treba poneki sors..
pozdrav...
rastko
pascal.564ognjen,
)-> 'Turbo Pascal 6.0 - Kompletan vodic' Stephena O'Briena.
Da ne bude oglas, ali moj ortak prodaje za 30 din, nova. Ne
znam koliko je povoljno, pogledajte prvo u Mikro Knjizi (oni to
prodaju), ako nema, mail me.
pascal.565spantic,
> Na koje si ti tradicionalne metode mislio? Ovo sto se radi po nasim
> fakultetima je ocaj, nadam se da to ne uzimas u obzir?
Veoma hrabro uopštavanje, moram primetiti. Sećam se da su mnogi
dok sam bio student kod Hozea kukali na njegov metod predavanja
"Programskih jezika i metoda programiranja". Danas sam pak ubeđen
da je isti ipak superioran u odnosu na druge metode. Stalno domaći
zadaci, tri parcijalna ispita, stalni rad.
pascal.566omega,
Ţ> Na koje si ti tradicionalne metode mislio? Ovo sto se radi po nasim
Ţ> fakultetima je ocaj, nadam se da to ne uzimas u obzir?
Ţ
Ţ Veoma hrabro uopstavanje, moram primetiti. Secam se da su mnogi
Ţ dok sam bio student kod Hozea kukali na njegov metod predavanja
Ţ "Programskih jezika i metoda programiranja". Danas sam pak ubeden
Ţ da je isti ipak superioran u odnosu na druge metode. Stalno domaci
Ţ zadaci, tri parcijalna ispita, stalni rad.
Ja ovo zovem veoma drskim neodgovaranjem na pitanje.
pascal.567andrejt,
__> )-> 'Turbo Pascal 6.0 - Kompletan vodic' Stephena O'Briena.
__>
__> Da ne bude oglas, ali moj ortak prodaje za 30 din, nova. Ne
__> znam koliko je povoljno, pogledajte prvo u Mikro Knjizi (oni to
__> prodaju), ako nema, mail me.
Nije povoljno u Mikro Knjizi je oko 20 din.
pascal.568vvelisavljev,
> program" dva-tri puta veći nego kod 'tradicionalnih'
> metoda.
Baš me zanima šta smatraš pod to 'tradicionalne' metode učenja?
pascal.569superhik,
=:> Da ne bude oglas, ali moj ortak prodaje za 30 din, nova.
=:> Ne znam koliko je povoljno, pogledajte prvo u Mikro Knjizi
=:> (oni to
25 din u Mikro KnjIGi!
pascal.570postmast,
From: Bosko.Rafajlovic@f125.n103.z38.setgate.setnet.co.yu (Bosko Rafajlovic)
Subject: Re: pascal
Date: Fri, 28 Oct 1994 11:03:00
"D> Oj ljudi!
"D>
"D> Imam jedan problem. Resio sam da pocnem da ucim Pascal, pa
"D> sam nabavio TP 6.0. Naravno, nemam pojma da programiram u
"D> TP-u. Od knjiga imama neke starudije, tako da je slaba
"D> vajda. No, da ne davim vise... Pravim prg. koji ce po
"D> startovanju da procita datum, zapisan u nekom fajlu, i ako
"D> se taj atm ne poklapa sa sistemskim, on ce da u taj fajl
"D> preko starog datuma upise novi datum i da izvrsi jedam batch
"D> file.
"D>
"D> Prvo, batch file nece da se izvrsi iako sam napisao:
"D>
"D> SwapVectors;
"D> exec(path,'batch.bat');
"D> SwapVectors;
...
Pa zar ti nije lakse da eksterne programe ucitavas na sledeci nacin:
{$M 8192, 0, 0}
...
Var c: string;
...
begin
c:=('batch.bat');
if c<>'' then c:='/c'+c;
swapvectors;
exec(getenv('comspec'),c);
end.
The End... Prosto zar ne ?!
Pozdrav Bole...
p.s. javi se malo na RAF BBS, tel. 011/724-073, od 22-06 - bavimo se
programiranjem...
... ARRRRRGGGHHH!!!! ... Tension breaker, had to be done.
* Origin: SetNet:Birostroj BBS,NON-STOP,14400bps,011/609945 (38:103/125)
pascal.573postmast,
From: broker@setgate.setnet.co.yu (Predrag Supurovic)
Subject: pascal
Date: Fri, 28 Oct 1994 11:04:00
>"P> Ja sam naucio iz umetaka Racunara (dejanr) i iz help-a samog TP-a.
>Blago tebi kad si odatle naucio (ako to nazivas naucenim).
Bogami, umetk je odlican kao referenca, jer ima lepo slozeno uglavnom sve sto
zatreba u pocetku. Ipak iz njega ja ne bih mnogo naucio, srecom sam Pascal
prilicno znao i od ranije.
Umetak je prilicno upotrebljiv. Ja ga i danas drzim pri ruci, posto su
funkcije logicno i pregledno rasporedjene i lako je naci sintaksu za svaku.
Meni se vise svidja da koristim stampani materijal od ugradjenog help-a.
* Origin: Oreska BBS, Uzice = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.574inikolic,
Da li neko ima izvorni kod za rad za DBF datotekama(citanje, promena , i sve
ostalo) . Ili moze TPU ali za BP 7.0. Uzgred bi me zanimalo vae misljenje o
Pascal-ovoj bazi : koliko je ona kvalitetna i pouszdana za veliki broj
podataka.
IGOR
pascal.575omega,
Ţ> "P> Ja sam naucio iz umetaka Racunara (dejanr) i iz help-a samog TP-a.
Ţ
Ţ> Blago tebi kad si odatle naucio (ako to nazivas naucenim).
Ovo vec pocinje da me iritira. Izgleda da nam ne stizu sve poruke sa
Beointernet-a, jer ovu quote-iranu poruku nigde ne videh!?
A sto se tice same poruke, bas mi je drago sto mi zavidis na znanju,
ko god da si.
pascal.576vvelisavljev,
> Program Ctrl_Alt_Del;
Zanima me kako bi u Pascalu moglo da se uradi ovo isto da bude
rezidentno u mem i da čeka na pritisak tastera da izvrši onu proceduru u
asembleru za reset? ( uh al ga sroči :)
pascal.577spantic,
> Ja ovo zovem veoma drskim neodgovaranjem na pitanje.
Neodgovaranjem? Jedina zaista drska osoba ovde si bojim se ti.
Prvo, ja sam komentarisao tvoju veoma "hrabru" tvrdnju kako je
"ovo što se radi kod nas na fakultetima očaj".
Da bi mogao sa autoritetom da tako nešto tvrdiš morao bi da
znaš kako se ti programi izvode i šta je uopšte u njima. "Kod nas"
je opet širok pojam. Imaš Univerzitet u Beogradu, Novom Sadu,
Nišu, Podgorici, Prištini... Samo u Beogradu opet imamo, da
nabrojimo samo relevantne, ETF, FON i PMF. Dakle, na kojima
je sve "očaj"?
Drugo, pitaš "koje metode". Direktno sam ti odgovorio koji je
sistem rada bio kod profesora Joze Dujmovića na predmetu "Programski
jezici i metode programiranja I" na ETF Beograd. Isti pristup je
i danas na snazi, mada su ukinuli domaće zadatke, što je jedna
velika greška.
Treće, ti sebi pridaješ veliku važnost kada smatraš da je neko
zaista dužan da ti nešto odgovara. I još se buniš i kada odgovor
dobiješ.
pascal.578omega,
Ţ Neodgovaranjem? Jedina zaista drska osoba ovde si bojim se ti.
Vidis u tome se mi i razlikujemo. Ja se ne bojim. Ja znam.
Ţ Da bi mogao sa autoritetom da tako nesto tvrdis morao bi da
Ţ znas kako se ti programi izvode i sta je uopste u njima. "Kod nas"
Ţ je opet sirok pojam. Imas Univerzitet u Beogradu, Novom Sadu,
Naravno da sam mislio na Univerzitet u Beogradu.
Ţ Drugo, pitas "koje metode". Direktno sam ti odgovorio koji je
Ţ sistem rada bio kod profesora Joze Dujmovica na predmetu "Programski
Ţ jezici i metode programiranja I" na ETF Beograd. Isti pristup je
To nije tradicionalna metoda, vec specificna. Ti znaci pricas na
osnovu jednog jedinog primera, i to specificnog!?
Ţ Trece, ti sebi pridajes veliku vaznost kada smatras da je neko
Ţ zaista duzan da ti nesto odgovara. I jos se bunis i kada odgovor
Ţ dobijes.
Ma niko te nista ne tera. Samo kazem da, ako mi vec protivurecis,
potkrepi to sa cinjenicama.
pascal.579andrejt,
__>> Program Ctrl_Alt_Del;
__>
__> Zanima me kako bi u Pascalu moglo da se uradi ovo isto da bude
__> rezidentno u mem i da ceka na pritisak tastera da izvrsi onu proceduru u
__> asembleru za reset? ( uh al ga sroci :)
Evo otprilike ovako :
{$M 1600,0,0}
Uses Dos;
Var Old28,Old9 : Procedure;
Confirm : Boolean;
{$F+}
Procedure New28; interrupt;
Begin
Old28;
If Confirm Then Alt_Ctrl_Del;
ASM PUSHF END;
End;
Procedure New9; interrupt;
Begin
If Port[$60] = 29 Then Confirm := True
Else Confirm := False;
ASM PUSHF END;
Old9;
End;
{$F-}
Begin
Confirm := False;
GetIntVec(9,@Old9);
GetIntVec($28,@Old28);
SetIntVec(9,@New9);
SetIntVec($28,@New28);
Keep(0);
End.
Ono 29 ti je za Ctrl.
pascal.580vlador,
> From: broker@setgate.setnet.co.yu (Predrag Supurovic)
> Subject: pascal
> Meni se vise svidja da koristim stampani materijal od ugradjenog help-a.
A meni se najviše sviđa da koristim ugrađeni help. :)
pascal.581inferno,
Ů│ ˙#=> U pravu si... Nisam znao za procedure dok nisam
Ů│ ˙#=> pročitao bas2pas... :)
Ů│ ˙
Ů│ ˙ Auuu... pa ti ne znaš ni basic ;)
Ů│ ˙
Ů│ ˙ Prelažem ti da, umesto 'divlje' metode učenja, uzmeš neku knjigu
Ů│ ˙ i lepo se o svemu informišeš. Umetak iz Računara nisam video, ali
Ů│ ˙ sumnjam da vredi koliko prava knjiga.
Sve knjige koje sam ja čitao su SHIT! Jadan onaj ko odatle
mora da uči (studenti). Lepo ljudi listaju program za
programom i odjedamput negde npr. iskrsne neka komanda za
koju nigde nema objašnjenja. Samo gomila beskorisnih
grafikona i listinga.. po principu "snađi se!"
Što se tiče umetka, on je mnogo dobro napisan. Sama
činjenica da nisam ništa uspeo da uradim dok nisam pročitao
bas2pas dosta govori (o textu, a možda i o meni ;))...
pascal.582inferno,
Ů│ ˙ ::> Prelažem ti da, umesto 'divlje' metode učenja, uzmeš neku
Ů│ ˙ ::> knjigu i lepo se o svemu informišeš. Umetak iz Računara nisam
Ů│ ˙ ::> video, ali sumnjam da vredi koliko prava knjiga.
Ů│ ˙
Ů│ ˙ Umetak iz Računara je loš.Nabavi knjigu
Ů│ ˙ 'Turbo Pascal 6.0 - Kompletan vodič' Stephena O'Briena.
Ovo je već nešto novo (za mene)...
Možeš li mi reći nešto o knjizi? Nisam je video po
knjižarama.. :( (mislim na cenu, ko je štampa, i gde je
knjižara budući da je nisam video)
pascal.583inferno,
Ů│ ˙ "O> Kazes da nemas pojma a pravis program do kog bi ti trebalo
Ů│ ˙ "O> vise vremena rada.
Ů│ ˙
Ů│ ˙ Dobro, covek krece odmah sa 'ozbiljnim' stvarima...
Znam ja da to nije ozbiljna sstvar, ali pisao sam pogram
koji mi je trebao za nešto. Sad nije bitno da li je
"ozbiljan" ili ozbijan... ;))
žudno je eto što mi je za istu stvar u BASIC-u trenalo 10=ak
minuta, a za Pascal verziju 3 dana...
pascal.584rccomp,
Da li neko ima program za Stomatolosku ordinaciju ?
Ponude na mail rccomp
pascal.585spantic,
> Vidis u tome se mi i razlikujemo. Ja se ne bojim. Ja znam.
Da si drzak? Svaka čast na iskrenosti.
> Naravno da sam mislio na Univerzitet u Beogradu.
Nije "naravno". Kada već o nečem diskutuješ, onda moraš
jasno da naznačiš o čemu je reč. Ovako možeš posle da
vičeš kako je bila reč o ... tvom Univerzitetu, tvom fakultetu,
tvojoj ulici, a kad te priteraju i tvojoj sobi.
> To nije tradicionalna metoda, vec specificna. Ti znaci pricas na
> osnovu jednog jedinog primera, i to specificnog!?
Tradicionalni metod u predavanju programskih jezika? I ja to negde
tvrdio? Niti je tradicionalni, niti specifičan. Reč je o jednome
od metoda koji se koriste u svetu (a radi tvoje informacije ima ih
više od dva, baš kao što je pre nego što sam ti opisao drugi, bilo
i više od jednog ;)
> Ma niko te nista ne tera. Samo kazem da, ako mi vec protivurecis,
> potkrepi to sa cinjenicama.
Najbolje da se sam sa sobom dogovoriš šta želiš da pokažeš. Ovde
niko drugi do tebe samoga ne upada sebi u usta. Nisam ja pričao o
stvarima koje vrlo slabo poznajem, to si bio ti. Ti pričaš o
"jednom jedinom primeru" što samo pokazuje koliko znaš kada ETF
Beograd zoveš jednim, jedinim primerom.
Usput, o kojoj raspravi i da se govori, kada uopšte nisi ni naveo
GDE se to nastava programskih jezika kod nas odvija loše. Ako misliš
da je samo tvoja paušalna procena dovoljna da potkrepi svoj stav,
nadam se da ćeš pre nego što ti to zaista bude značajno, ipak malo
razmisliti.
pascal.586superhik,
=:> Možeš li mi reći nešto o knjizi? Nisam je video po
=:> knjižarama.. :( (mislim na cenu, ko je štampa, i gde je
=:> knjižara budući da je nisam video)
Mikro knjiga 011 542-516 Petra Martinovića 6
11030 Beograd
pascal.587omega,
Ţ> Vidis u tome se mi i razlikujemo. Ja se ne bojim. Ja znam.
Ţ
Ţ Da si drzak? Svaka cast na iskrenosti.
Ha ha. Al' smo zanimljivi
Ţ Tradicionalni metod u predavanju programskih jezika? I ja to negde
Ţ tvrdio?
Pa ako vec ne mozes da se setis, pogledaj malo tvoje prethodne poruke.
Ţ Niti je tradicionalni, niti specifican. Rec je o jednome
Ţ od metoda koji se koriste u svetu (a radi tvoje informacije ima ih
O, pa mi smo to upoznati i sa predavanjima u svetu ;>
Ţ Najbolje da se sam sa sobom dogovoris sta zelis da pokazes. Ovde
Ţ niko drugi do tebe samoga ne upada sebi u usta.
:))) Mdave, sta ti mislis o ovome? ;)
Ţ stvarima koje vrlo slabo poznajem, to si bio ti. Ti pricas o
Ţ "jednom jedinom primeru" sto samo pokazuje koliko znas kada ETF
Ţ Beograd zoves jednim, jedinim primerom.
ETF JESTE JEDAN JEDINI PRIMER. A ti ako toliko volis svoj fakultet,
ne moras ovde da se lozis.
Ţ Usput, o kojoj raspravi i da se govori, kada uopste nisi ni naveo
Ţ GDE se to nastava programskih jezika kod nas odvija lose.
Vidis, ja znam za bar dva fakulteta pouzdano, a ti samo za jedan.
Ma znas sta, mi zivimo u predivnoj zemlji, sve oko nas cveta, svi
profani su savrseni, svi predaju "tradicionalnim" metodama po
svetskom standardu ;))) Mozda se sad i slozis sa mnom?
pascal.588postmast,
From: Nikola.Sivacki@f125.n103.z38.setgate.setnet.co.yu (Nikola Sivacki)
Subject: Re: Boje
Date: Tue, 01 Nov 1994 19:07:01
SM>
SM> Potreban ti je BGI driver za SVGA, on se zove SVGA256.BGI i mozes
SM> ga naci na vecini BBS-ova. Kada ga nabavis onda se on
SM> inicijalizuje pomocu procedure InitSVGAGraph(mode):
SM> Ovo je izvod iz mog TPU-a i na brzaka je skrpljen, pa nisam siguran
SM> da je sve ok, ali bi trebalo da shvatis kako se to radi. U ovom
Radi, radi i hvala ti mnogo.Medjutim sada mi se javio novi problem, pa sam
mislio da bi ti znao u cemu je problem.Jer niko, ko se bavi Pascalom nije
znao da mi to objasni.Evo u cemu je stvar:Uspeo sam(uz tvoju pomoc) da ko-
ristim 256 boja u programima, i takodje sam uspeo da ucitam sliku od DVE
boje(malo uz pomoc jednog sourcea koji sam skinuo sa nekog BBS-a a malo sam
i ja nesto dodao).Pogadjas, hocu da te pitam kako da ucitam sliku od 256
boja.Pokusao sam sve, pa i sam ne shvatam kako da tako nesto(mozda tebi
jednostavno) uradim.Unapred hvala,
Nikola
... File not found, I'll load something *I* think is interesting.
* Origin: SetNet:Birostroj BBS,NON-STOP,14400bps,011/609945 (38:103/125)
pascal.589postmast,
From: Sloba.Markovic@f115.n103.z38.setgate.setnet.co.yu (Sloba Markovic)
Subject: Boje
Date: Sat, 29 Oct 1994 12:31:02
Origin.SUBJ: Boje
Origin.FROM: Predrag Knezevic
Origin.TO: Nikola Sivacki
NS> Da li iko zna kako se moze u tp 6.0 (uz SVGA karticu)
PK> Probaj sa direktnim upisom u video mem (videces u asm-u ima interupt).
Ajde muni ovde neki LIB ili source za direktan upis u video mem!
Veoma me zanima kako se to radi, ali ne znam! Znam kako se radi
za txt mod, ali ne i za graficki!
MAGIC FLASH!
... "Da se izmirimo i da ona govna izgazimo!"
* Origin: Atlantis BBS 22-05 tel. 3225-548 ■Belgrade■ (38:103/115)
pascal.590postmast,
From: Sloba.Markovic@f115.n103.z38.setgate.setnet.co.yu (Sloba Markovic)
Subject: pascal
Date: Sat, 29 Oct 1994 12:34:03
Origin.SUBJ: pascal
Origin.FROM: "Ivan Petrovic"
Origin.TO: All
"P> Imam jedan problem. Resio sam da pocnem da ucim Pascal, pa
"P> sam nabavio TP 6.0. Naravno, nemam pojma da programiram u
"P> TP-u. Od knjiga imama neke starudije, tako da je slaba
"P> vajda.
Ja sam TP naucio iz sjajne knjige "OSNOVI PASKALA SA EKSTENZIJAMA
TURBO-PASCALA" Milana Cabarkape (crvena knjiga), i iz jos boljeg
(zbog vise primera) TP On-line helpa!
MAGIC FLASH!
... Gluma je umetnost odvracanja publike od zevanja!
* Origin: Atlantis BBS 22-05 tel. 3225-548 ■Belgrade■ (38:103/115)
pascal.591postmast,
From: Sloba.Markovic@f115.n103.z38.setgate.setnet.co.yu (Sloba Markovic)
Subject: tri-door
Date: Sat, 29 Oct 1994 12:40:04
Origin.SUBJ: tri-door
Origin.FROM: Bosko Rafajlovic
Origin.TO: All
BR> Da li je neko ovde radio sa TRI-DOOR-om ?
BR> Ja sam provalio neke funkcije ali nisam sve :( ... pa me interesuje
BR> sta sve moze ... !
Ja sam pravio neke door-ove i mogu ti reci da je TPU -- mrak!
Very easy za upotrebu, jasna imena func. i proc. koje skoro sve rade
za tebe, tako da se pisanje svodi na nesto komplikovanije pisanje
programa za DOS, jer ti TPU proc. i func. same obavljaju prakticno
zezanje sa modemom.
MAGIC FLASH!
... Ostali smo bez senfa na koti 45!
* Origin: Atlantis BBS 22-05 tel. 3225-548 ■Belgrade■ (38:103/115)
pascal.592mdave,
Subject: Re: VOAH!
MD> Ţ Najbolje da se sam sa sobom dogovoris sta zelis da pokazes.
MD> Ţ Ovde niko drugi do tebe samoga ne upada sebi u usta.
MD>
MD> :))) Mdave, sta ti mislis o ovome? ;)
MDave ne razmišljati !
Bledoliki Spantić govoriti zmijskim (tss tss tss) jezikom !
Veliki SysAdm-Manitu njemu obrisati poruku !
HAUG !
pascal.593vvelisavljev,
> Begin
> If Port[$60] = 29 Then Confirm := True
> Else Confirm := False;
> ASM PUSHF END;
> Old9;
> End;
Ovo radi Ok kad pritisneš CTRL. Vidiš, ja sam primetio da svki
taster portu šalje jedan kod dok je pritisnut i drugi kod kad ga pustiš.
E, ja sam imao u planu da mi se računar resetuje kad ja pritisnem ALT-R.
Primetio sam da onda na port izlaze sledeći kodovi: 56 19 147 184. 56 je
za ALT kad ga pritisneš a 19 za r. 147 je za r kad ga pustim a 184 za ALT.
Najverovatnije je da ja sad nisam otkrio nikakvu Ameriku :) ali to je za
mene novina. Mene zanima kako ja da kad proverim da je prvi taster 56 da
prosledim portu sledeći taster da bi video dali je on 19 pa da se mašina
resetuje.
Huh, nadam se da vas nisam ugnjavio.
pascal.594vitez.koja,
#=>> Program Ctrl_Alt_Del;
#=> Zanima me kako bi u Pascalu moglo da se uradi ovo isto
#=> da bude rezidentno u mem i da čeka na pritisak tastera
#=> da izvrši onu proceduru u asembleru za reset? ( uh al ga
#=> sroči :)
Pogledaj primer uz help za "Keep" funkciju - sve će ti se kasti
samo.
pascal.595inferno,
Ů│ ˙
Ů│ ˙ Mikro knjiga 011 542-516 Petra Martinovića 6
Ů│ ˙ 11030 Beograd
Hvala, ovo je stvarno bilo od koristi! :)
pascal.596uobradovic,
::> Možeš li mi reći nešto o knjizi? Nisam je video po
::> knjižarama.. :( (mislim na cenu, ko je štampa, i gde je
::> knjižara budući da je nisam video)
Knjiga je odlična(najbolja za učenje Turbo Pascala).Možeš je
naći u Mikro knjizi(Petra Martinovića 6; tel:542-516) i mislim
da joj je cena 25 dinara.
Uroš
pascal.597pedjak,
> Ů│ ˙ 'Turbo Pascal 6.0 - Kompletan vodič' Stephena O'Briena.
> Možeš li mi reći nešto o knjizi? Nisam je video po
> knjižarama.. :( (mislim na cenu, ko je štampa, i gde je
> knjižara budući da je nisam video)
Mikro knjiga.
pascal.599vitez.koja,
#=> mene novina. Mene zanima kako ja da kad proverim da je
#=> prvi taster 56 da prosledim portu sledeći taster da bi
#=> video dali je on 19 pa da se mašina resetuje.
Svaki taster ima svoj scan code. Broj koji se pojavljuje na
portu 0x60 kada je taster pritisnut je njegov sken kod ;)
a kada se taj taster pusti na taj port stiže njegov sken kod sa
upaljenim sedmim bitom - tj. uvećan za 128.
U programu treba da u neku boolean promenljivu postaviš 1 kada
očitaš da je taster ALT pritisnut, a 0 kada je pušten. Onda:
if alt and port(0x60)=šta_već do to_i_to.
pascal.600kriss,
˙˙ Ţ> Vidis u tome se mi i razlikujemo. Ja se ne bojim. Ja znam.
˙˙ Ţ
˙˙ Ţ Da si drzak? Svaka cast na iskrenosti.
˙˙
˙˙ Ha ha. Al' smo zanimljivi
Baš ste zanimljivi. A zanimljiv je i moderator koji ovo sve trpi u
temi. :<
pascal.601vitez.koja,
#=> i šta raditi da se skine onaj BAD sektor. Ili je to stvarno
#=> oštećen sektor koji se BAŠ tu pojavio u BAŠ tom trenutku?!?!?!
Startuj Disktool iz nortona i obeleži ga kao da je dobar (ako si
siguran da stvarno jeste), u svakom slučaju pusti posle NDD da
proveri disk...
sk
pascal.602vlador,
>> Vidis u tome se mi i razlikujemo. Ja se ne bojim. Ja znam.
> Da si drzak? Svaka čast na iskrenosti.
Da niste malllko promašili conf? :)
pascal.603ognjen,
[uobradovic]
)-> Nabavi knjigu 'Turbo Pascal 6.0 - Kompletan vodic'
)-> Stephena O'Briena.
Da li ima puno razlika u odnosu na 5.5 (ne turbo pascal, nego
knjiga :) ??? Ja imam tu knjigu na engleskom, pa me zanima da li
ad nabavljam novu? Kakav je prevod?
pascal.604andrejt,
__> E, ja sam imao u planu da mi se racunar resetuje kad ja pritisnem ALT-R.
Umesto If Port[$60] = 29 Then Confirm := True
Else Confirm := False;
u proceduri New9,
stavi Case Port[$60] Of
56 : Alt := True; (* 56 - kad pritisnes Alt *)
184 : Alt := False; (* 184 - kad pustis Alt *)
19 : RChar := True; (* 19 - kad pritisnes R *)
147 : RChar := False; (* 147 - Kad pustis R *)
End;
i umesto If Confirm Then ... ;
u proceduri New28, stavi If Alt And RChar Then ... ;
pascal.605inferno,
Ů│ ˙ Da li ima puno razlika u odnosu na 5.5 (ne turbo pascal, nego
Ů│ ˙ knjiga :) ??? Ja imam tu knjigu na engleskom, pa me zanima da li
Ů│ ˙ ad nabavljam novu? Kakav je prevod?
Niam video 5.5 knjigu... Što se tiče ove knjige Stivena O
Brajana ;), sve mje preporuke...
pascal.606postmast,
From: Nikola.Sivacki@f125.n103.z38.setgate.setnet.co.yu (Nikola Sivacki)
Subject: Re: raf bbs
Date: Mon, 31 Oct 1994 18:58:01
-=> Quoting Bosko Rafajlovic to All <=-
BR> raf bbs, tel. 011/724-073
BR> od 22-06 h
BR>
Sta je ovo i kakve to veze ima sa Pascalom? Da li je to neka najnovija metoda
ispisa teksta u Pascalu? Da li mozda ide ovako ?:
program raf_bbs;
uses crt;
begin
clrscr;
writeln('raf bbs, tel. 011/724-073');
writeln('od 22-06 h');
end.
Cini mi se da postoji konferencija NET.Oglasi ili tako nesto. Ako vec imas
toliku neiscrpnu zelju za oglasavanjem probaj tamo ako vec nisi(ma, ne i nisi).
Nikola
... "Mr. Worf, fire phasers at Bosko" ... Zzzzzap!
* Origin: SetNet:Birostroj BBS,NON-STOP,14400bps,011/609945 (38:103/125)
pascal.607superhik,
=:> Da li ima puno razlika u odnosu na 5.5 (ne turbo pascal,
=:> nego knjiga :) ??? Ja imam tu knjigu na engleskom, pa me
=:> zanima da li ad nabavljam novu? Kakav je prevod?
Slušaj... Za 25 DIN ako nađeš bolju knjigu
o TP-u sečem glavu!
pascal.608uobradovic,
::> Da li ima puno razlika u odnosu na 5.5 (ne turbo pascal,
::> nego knjiga :) ??? Ja imam tu knjigu na engleskom, pa me
::> zanima da li ad nabavljam novu? Kakav je prevod?
Nemam tu knjigu(Turbo Pascal 5.5).Video sam je kod jednog
čoveka ali neznam kakva je.Što se tiče knjige Stephena
O'Briena odlična je.Samo toliko.
Ako imaš para ne bi bilo loše da je kupiš.
Uroš
pascal.609vlador,
> Slušaj... Za 25 DIN ako nađeš bolju knjigu
> o TP-u sečem glavu!
žiju? ;)
pascal.610vlador,
JEDNO PITANJE
=============
Već sam pitao u PC.PROG:windows, ali ovo se ne tiče samo Windowsa.
Kako iz Pascala da podesim volume label diskete?
Pkušao sam pozivanjem interapta i to lepo radi kroz DOS, ali ne i kroz
Windows (a ovo drugo mi treba). Pokušao sam setovanjem volume atributa
fajla (SetFAttr), ali ova operacija vraća DosError 5 (Acces denied),
iako na disketi nema postojećeg volume labela. Setovanje nekog "normalnog"
atributa, kao štu su hidden, read-only radi bez problema.
'Ajte ljudi, nije valjda da niko ne zna!
pascal.611ognjen,
)-> Nemam tu knjigu(Turbo Pascal 5.5).Video sam je kod jednog
)-> coveka ali neznam kakva je.Sto se tice knjige Stephena
)-> O'Briena odlicna je. Samo toliko.
Nisi razumeo. Ja imam knjigu:
TURBO PASCAL 5.5 - Complete reference - Stephen O'Brien
Da li da kupujem novu, ili da ucim engleski?
pascal.612postmast,
From: bebek@setgate.setnet.co.yu (Zeljko Stevanovic)
Subject: pascal
Date: Mon, 31 Oct 1994 08:24:07
-=> Quoting "Rastko Colic" to All <=-
Citat: "Rastko Colic" <rcolic@sezam.UUCP>
"C> Slazem se sa tobom, ali ipak se ne moze sve nauciti pisuci programe
"C> samoinicijativno.. ipak treba da postoji i literatura pomocu koje ce
"C> se usmeravati samostalni rad (ne mislim na tupave knjige koje se
"C> koriste u skolama za informatiku). Postoji jedna strasna skupina
"C> programa pod imenom PCGPE (iliti PC Games Programming Encyclopaedia)
"C> koja sadrzi gomilu sorseva grafickog, zvucnog, i/o i slicnog sadrzaja.
"C> Ja je imam, ali je prilicno velika(>1.5MB) pa vicite ako vam treba
"C> poneki sors..
Nevolim da vicem ali evo:
DA SLUCAJNO NEMAS MODEM NA 14400 PA DA MI DAS TO SVE ?
uf ostadoh bez glasa
... BR> Pogubio sam tagove. Postenim nalazacima nagrada.
* Origin: Venik BBS * Smed. Palanka * +381 26 34808 SetNet: (38:103/126)
pascal.613postmast,
From: bebek@setgate.setnet.co.yu (Zeljko Stevanovic)
Subject: pascal
Date: Mon, 31 Oct 1994 08:27:08
Citat: "Ognjen Blagojevic" <ognjen@sezam.UUCP>
)-> 'Turbo Pascal 6.0 - Kompletan vodic' Stephena O'Briena.
"B>
"B> Da ne bude oglas, ali moj ortak prodaje za 30 din, nova. Ne
"B> znam koliko je povoljno, pogledajte prvo u Mikro Knjizi (oni to
"B> prodaju), ako nema, mail me.
Gledah u neki katalog MikroKnjige i tamo pise 20 (bilo letos)
ali kad se uracuna inflacija od letos do sad sumlnjam da je i dalje 20 ..
... BR> Pusenje ili zdravlje. Odlucite sami.
* Origin: Venik BBS * Smed. Palanka * +381 26 34808 SetNet: (38:103/126)
pascal.614postmast,
From: bebek@setgate.setnet.co.yu (Zeljko Stevanovic)
Subject: pascal
Date: Mon, 31 Oct 1994 08:32:09
-=> Quoting "Igor Nikolic" to All <=-
Citat: "Igor Nikolic" <inikolic@sezam.UUCP>
"N> Da li neko ima izvorni kod za rad za DBF datotekama(citanje, promena ,
"N> i sve ostalo) . Ili moze TPU ali za BP 7.0. Uzgred bi me zanimalo vae
"N> misljenje o Pascal-ovoj bazi : koliko je ona kvalitetna i pouszdana za
"N> veliki broj podataka.
Ja imam neke dva paketa za rad sa dbf -ovima ali ni jedna nece
da funkcionise u BP 7.00 isto sam nasao jos TPU-ova za razne
stvari koji necedu da rade...
... ×réss 楜 kłś tĽ ŤĽĄtíĄüŐ žr äŘś žthér kłś tó qüít
* Origin: Venik BBS * Smed. Palanka * +381 26 34808 SetNet: (38:103/126)
pascal.615postmast,
From: Sloba.Markovic@f115.n103.z38.setgate.setnet.co.yu (Sloba Markovic)
Subject: Boje
Date: Thu, 03 Nov 1994 23:07:01
Origin.SUBJ: Re: Boje
Origin.FROM: Nikola Sivacki
Origin.TO: Sloba Markovic
NS> tvoju pomoc) da ko- ristim 256 boja u programima, i takodje sam uspeo
NS> da ucitam sliku od DVE boje(malo uz pomoc jednog sourcea koji sam
NS> skinuo sa nekog BBS-a a malo sam i ja nesto dodao).Pogadjas, hocu da
NS> te pitam kako da ucitam sliku od 256 boja.Pokusao sam sve, pa i sam ne
NS> shvatam kako da tako nesto(mozda tebi jednostavno) uradim.Unapred
Procedure su u glavnom komplikovane, jer se radi o citanju
odredjenog grafickog formata. Ja se nisam bavio takvim stvarima sto
se tice grafike, mada imas npr. na POLITICI ili ECSTASY-ju arhive u
kojima se nalazi source ili TPU za prikazivanje slika (na zalost) u
.PCX formatu, ali zato u 256 boja (sto tebi i treba).
Ako oces sam da prckas po slikama, mogu ti poslati (a mozes i sam
da skines sa gotovog svakog veceg BBS-a) opis najpopularnijih
grafickih formata (GIF, PCX, TIFF...)
Nadam se da sam, iako ne kao za prethodno pitanje, bar malo pomogao.
Pozdrav,
MAGIC FLASH!
... Nije sve u seksu ima nesto i u drzanju za ruke O:)
* Origin: Atlantis BBS 22-05 tel. 3225-548 ■Belgrade■ (38:103/115)
pascal.616postmast,
From: Sloba.Markovic@f115.n103.z38.setgate.setnet.co.yu (Sloba Markovic)
Subject: pascal
Date: Thu, 03 Nov 1994 23:52:02
Origin.SUBJ: pascal
Origin.FROM: "Igor Nikolic"
Origin.TO: All
"N> Da li neko ima izvorni kod za rad za DBF datotekama(citanje, promena ,
Arhiva se nalazi na POLITIKA BBS-u, file oblast 51 ili 53 ne secam
se.
MAGIC FLASH!
... Government isn't the answer... Government is the PROBLEM!
* Origin: Atlantis BBS 22-05 tel. 3225-548 ■Belgrade■ (38:103/115)
pascal.617postmast,
From: nenadr@sunset.fon.bg.ac.yu (Nenad Radosavljevic)
Subject: Re: pascal
Date: Sun, 06 Nov 94 20:59:12 GMT
In article <sezam$pascal uobradovic@sezam.UUCP writes:
>
>::> Da li ima puno razlika u odnosu na 5.5 (ne turbo pascal,
>::> nego knjiga :) ??? Ja imam tu knjigu na engleskom, pa me
>::> zanima da li ad nabavljam novu? Kakav je prevod?
>
> Nemam tu knjigu(Turbo Pascal 5.5).Video sam je kod jednog
> coveka ali neznam kakva je.Sto se tice knjige Stephena
> O'Briena odlicna je.Samo toliko.
> Ako imas para ne bi bilo lose da je kupis.
>
> Uros
>
E pa ja sam procitao i jednu i drugu knjigu i o TP 6.0 -
The Complete Reference knjizi mogu reci samo najbolje stvari.Odlicno je
koncipirana, jasna, i jednom recju treba je imati. Ima sve i za
pocetnika i za iskusnijeg programera, sa gomilom primera za skoro sve
nivoe znanja Pascal-a. Jedina mana koju sam nasao je u delu koji govori
o direktnom pristupu video memoriji gde su primeri uradjeni za CGA i MDA
monitore/kartice, ali se i podaci za VGA/EGA daju izbunariti iz nekog
DOS Thecnical Reference-a. Sve u svemu: svako i malo ozbiljnije radi u
pascalu trebao bi da je ima (bilo original bilo 'prepev' na srpski).
Sto se tice TP 5.5 (citao sam samo prevod) nekako mi je sve u
toj knjizi bilo "nabacano" i nelogicno rasporedjeno. Mogao je covek da
pronadje sta ga zanima ali je morao da pretura i prelistava po knjizi.
Eto toliko. Pozdrav,
Nenad R.
--
-----------------------------------------------------------------------
Nenad Radosavljevic Elektrotehnicki Fakultet
nenadr@sunset.fon.bg.ac.yu Beograd, Yugoslavia
-----------------------------------------------------------------------
pascal.618kriss,
˙˙ Kako iz Pascala da podesim volume label diskete?
Pojma nemam iz paskala, ali u asm-u bi umeo (ne garantujem za Win, jer
ga je gajim na disku. žak štaviše, nemam pojma da radim u njemu! Ne
znam kako se pokreće aplikacija, kako se izlazi i sl. Za izlaz
koristim reset taster ...).
Ideja je u sledećem:
volume label se nalazi u boot sektoru (sektor 0), dakle učitaš ga u
neki bafer od 512 bajtova, izmeniš label i vratiš ga. :) Jednostavno?
:)
pascal.619mjova,
> Kako iz Pascala da podesim volume label diskete?
možda ti mali hint bude od pomoći:
labela je slična imenu datoteke dužine 0 bajtova, ali sa setovanim
atributom VOL.
pascal.620inesic,
># => i šta raditi da se skine onaj BAD sektor. Ili je to stvarno
># => oštećen sektor koji se BAŠ tu pojavio u BAŠ tom
> trenutku?!?!?!
>
> Startuj Disktool iz nortona i obeleži ga kao da je dobar (ako
> si siguran da stvarno jeste), u svakom slučaju pusti posle NDD
> da proveri disk...
> sk
Sećam se jednog virusa, zvao se Ping-pong ili tako nekako -
skakuće ti loptica po ekranu u text režimu. Taj je virus imao
običaj da označi neki sektor kao bad pa da se tamo upiše, ili je
tamo prepisivao but sektor ne sećam se više. Najbolje bi bilo da
se najpre obriše taj bad sector makar bajt po bajt iz pc-toolsa,
pa tek onda da se obeležava da je dobar. Marfi ne spava.
pascal.621omega,
Ţ "C> koriste u skolama za informatiku). Postoji jedna strasna skupina
Ţ "C> programa pod imenom PCGPE (iliti PC Games Programming Encyclopaedia)
Ţ "C> koja sadrzi gomilu sorseva grafickog, zvucnog, i/o i slicnog sadrzaja.
Ţ "C> Ja je imam, ali je prilicno velika(>1.5MB) pa vicite ako vam treba
Ţ "C> poneki sors..
Ţ
Ţ Nevolim da vicem ali evo:
Ţ DA SLUCAJNO NEMAS MODEM NA 14400 PA DA MI DAS TO SVE ?
I ja sam u tom slucaju interesent :)
pascal.622omega,
Ţ volume label se nalazi u boot sektoru (sektor 0), dakle ucitas ga u
Ţ neki bafer od 512 bajtova, izmenis label i vratis ga. :) Jednostavno?
A za DOS ver < 4.0 ? ;>
pascal.623mmitrovic,
Ů█▀█Ţ I ja sam u tom slucaju interesent :)
Ja mu tražio preko mail-a, al me izgleda ne miriše mnogo. ;)
pascal.624kriss,
˙˙ Ţ volume label se nalazi u boot sektoru (sektor 0), dakle
˙˙ ucitas ga u Ţ neki bafer od 512 bajtova, izmenis label i
˙˙ vratis ga. :) Jednostavno?
˙˙
˙˙ A za DOS ver < 4.0 ? ;>
A za to napišeš poruku 'Ako još koristiš DOS < 4.0, onda ti ni ne
treba volume label' ;>
BTW., ako već znaš pomozi čoveku ...
pascal.625sslavko,
Šta mislite šta će ovo dole dati kao rezultat? 36000 ???
E pa to neće. Umesto pravog rezultata dobićete 36000-65536=-29536.
Znam da se to dešava zbog prekoračenja integer-a, ali mi je
opet malo priglupo da Borland nije vodio računa o ovome. Ili
možda jeste ali ja ne znam.
var i:integer;
begin
i:=9;
writeln(i*4000);
end.
pascal.626omega,
Ţ A za to napises poruku 'Ako jos koristis DOS < 4.0, onda ti ni ne
Ţ treba volume label' ;>
Ţ
Ţ BTW., ako vec znas pomozi coveku ...
Ni meni niko ovde nije pomogao, pa ne mogu ni ja njemu...
Hint: Odustani dok jos mozes...
P.S. Sad mi pade na pamet - treba debagovati COMMAND.COM i naci
kako to VOL radi.
pascal.627janko,
> Ideja je u sledećem:
> volume label se nalazi u boot sektoru (sektor 0), dakle
> učitaš ga u neki bafer od 512 bajtova, izmeniš label i
> vratiš ga. :) Jednostavno?
Jednostavno -- pogrešno.
Label se NE nalazi u boot sektoru. Nalazi se u root diru.
Kako mu se pristupa -- skinite TECH Help, ako već niste, za početak.
pascal.628vlador,
> volume label se nalazi u boot sektoru (sektor 0), dakle učitaš ga u
> neki bafer od 512 bajtova, izmeniš label i vratiš ga. :) Jednostavno?
Da. :) Još kad bi radilo u Windowsu... :( Stvarno, zašto bre ovo ne radi u
Windowsu? Inače, nisam čitao boot nego sam preko funkcije $69 int $21 čitao
volume label. Sors sam ostavio u PC.PROG:windows.233. Isti taj sors kroz
DOS radi (???).
pascal.629vlador,
> labela je slična imenu datoteke dužine 0 bajtova, ali sa setovanim
> atributom VOL.
Pokušao sam i to, ali DOS komanda label preimenuje (ili kreira) takav fajl
i plus toga promeni u bootu ime diskete. Za čitanje mi je bilo dovoljno
samo da pronađem fajl sa Vol atributom, ali za promenu ne. Osim toga,
kada sam pokušao da setujem Vol atribut fajla DOS mi je vratio Acces
Denied.
Q: Gde li sam pogrešio?...
A: Što nisam uzeo C...
pascal.630omega,
Ţ Q: Gde li sam pogresio?...
Ţ A: Sto nisam uzeo C...
Da znas, prelazi dok jos mozes. Ja sam se uvalio u taj TP, sad se
jedva prilagodjavam ;)
pascal.631goxx,
Nalazi se i na jednom i na drugom mestu.
Goran
pascal.632uobradovic,
::> TURBO PASCAL 5.5 - Complete reference - Stephen O'Brien
::> Da li da kupujem novu, ili da ucim engleski?
U prethodnoj poruci sam mislio na knjigu Turbo Pascal 6.0.
A da li da je kupiš ili ne,to je tvoja stvar.Ja lično više
volim knjige na srpskom jeziku.
Uroš
pascal.633andrejt,
__> Da. :) Jos kad bi radilo u Windowsu... :( Stvarno, zasto bre ovo ne radi
__> u Windowsu? Inace, nisam citao boot nego sam preko funkcije $69 int $21
__> citao volume label. Sors sam ostavio u PC.PROG:windows.233. Isti taj
__> sors kroz DOS radi (???).
Glupi Windows ;)) Zar on ne preuzima neke interapte ? Nemam veze sa winom
ali mozda preuzme 21 pa onda 21,69h ne radi kako je ocekivano ?
pascal.634pedjak,
> Ni meni niko ovde nije pomogao, pa ne mogu ni ja njemu...
Jako lepo :((
pascal.635kriss,
˙˙> volume label se nalazi u boot sektoru (sektor 0), dakle
˙˙ Jednostavno -- pogrešno.
˙˙ Label se NE nalazi u boot sektoru. Nalazi se u root diru.
E nije pogrešno, već nedorečeno. ;)
Nalazi se *i* u boot sektoru, i to od dos-a 4+, a nalazi se i u root diru
(kao što mjova reče) kao fajl nulte dužine sa setovanim vol atributom.
Ako baš treba, eno u sledećoj poruci sors-a koji radi preko root-a. :)
pascal.636kriss,
˙˙ Da. :) Još kad bi radilo u Windowsu... :( Stvarno, zašto bre
˙˙ ovo ne radi u Windowsu? Inače, nisam čitao boot nego sam preko
˙˙ funkcije $69 int $21 čitao volume label. Sors sam ostavio u
˙˙ PC.PROG:windows.233. Isti taj sors kroz DOS radi (???).
Nemam pojma o čemu se radi, ali evo programa koji radi (u DOS-u), pa
probaj da ga doradiš/ispraviš prema svojim potrebama:
mov ah,1ah ; Set DTA, da bacimo DTA na kraj fajla
mov dx,offset kraj
int 21h
mov ah,4eh ; find first
mov dx,offset filetype
mov cx,8 ; osmi bit je volume label
int 21h
mov ah,4ch ; terminate
int 21h
filetype:
db "*.*",00
kraj:
Ovo dakle _radi_ i pronalazi volume label bez obzira u kom je dir-u
pokrenuto. Volume label ti se nalazi u (novoj) DTA, na adresi
kraj+01eh - tvoje je da ga samo pokupiš. Za win veruj ne znam, ne
gajim to na disku.
pascal.637ognjen,
)-> Znam da se to desava zbog prekoracenja integer-a, ali mi je
)-> opet malo priglupo da Borland nije vodio racuna o ovome. Ili
)-> mozda jeste ali ja ne znam.
Pa i nije tako glupo. Da bi se zapamtio jedan integer potrebno
je (cini mi se) 16 bitova. Ti definises i: integer; i on
rezervise 16 bitova za ti I. Posle samo toliko mozes da koristis,
tj. posle prekoracenja 111..111 (16 puta) dolazi 000..000, sto je
-32767, i tu nema pomoci. Ako zelis da radis sa vecim brojevima
izaberi longint, a ako ti se radi sa bas velikim, radi sa REAL.
pascal.638sslavko,
>> je (cini mi se) 16 bitova. Ti definises i: integer; i on
>> rezervise 16 bitova za ti I. Posle samo toliko mozes da koristis,
Jeste ali ni sledeći program ne radi:
var i:integer;
j:longint;
begin
i:=6;
j:=10
writeln(i*3600+j);
end.
...na primer. Iako se za ispis gura i longint writeln opet
brlja.
pascal.639vlador,
> Glupi Windows ;)) Zar on ne preuzima neke interapte ? Nemam veze sa winom
> ali mozda preuzme 21 pa onda 21,69h ne radi kako je ocekivano ?
Stvarno, možda... Kako da saznam šta je Windows uradio sa interaptima?
pascal.640andrejt,
__> Stvarno, mozda... Kako da saznam sta je Windows uradio sa interaptima?
Zavisi kako ih preuzima ... Ako ih preuzima preko int 21,25
onda je jednostavno : samo preuzmes int 21h i cekas da ti se u ah pojavi
25h a u AL npr. 8,9 ili koji vec interapt oces da vidis i onda procitas
DS:DX - pointer na novi int. E sad ako samo upise u memoriju na mesto
int vectora ono sto mu treba onda nemam pojma.
pascal.641janko,
>>> je (cini mi se) 16 bitova. Ti definises i:
>>> integer; i on rezervise 16 bitova za ti I. Posle samo
> toliko mozes da koristis,
>
> Jeste ali ni sledeći program ne radi:
>
> var i:integer;
> j:longint;
>
> begin
> i:=6;
> j:=10
> writeln(i*3600+j);
> end.
Zbog prekoračenja međurezultata. Probaj
var i : integer;
var j : integer; (* ovo je dovoljno za ovu upotrebu *)
...
writeln( longint(i)*3600 + j ) i sve je OK.
Takođe probaj da nađeš negde neki tekst o implicitnim konverzijama,
napravio si stratešku grešku, koju ne bi da si znao tu priču.
pascal.642postmast,
From: Nikola.Sivacki@f125.n103.z38.setgate.setnet.co.yu (Nikola Sivacki)
Subject: Re: Boje
Date: Sun, 06 Nov 1994 16:43:00
SM> Nadam se da sam, iako ne kao za prethodno pitanje, bar malo
SM> pomogao.
Jesi! Hvala ti mnogo! :)))))
... Sreca.To je...NO CARRIER
* Origin: SetNet:Birostroj BBS,NON-STOP,14400bps,011/609945 (38:103/125)
pascal.643postmast,
From: Vladimir.Bonc@f101.n101.z38.setgate.setnet.co.yu (Vladimir Bonc)
Subject: Konverzija tipova
Date: Tue, 08 Nov 1994 06:44:11
Sta ovde ne valja:
...
var
dd, mm, gg: integer;
datum : longint;
...
begin
datum := dd + mm*100 + gg*10000
...
Moj kolega je skoro koristio slicnu konstrukciju u TP i, umesto
ocekivanog rezultata, dobio je rezultat tipa integer, iako je datum
deklarisao kao longint.
U uputstvu za Kickpascal koji sam ranije koristio za Amigu,
upozoravaju na ovakvu situaciju
Program IntToLong;
Var
a,b: integer;
begin
a:=26731; b:=20000;
write(a+2*b);
end.
i predlazu resenje: write(a+2*long(b)), znaci, prisiljavanje
kompajlera da racuna u opsegu longint.
Kako se ovo izvodi u TP a da se varijable dd, mm i gg ne deklarisu
kao long?
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.644sslavko,
>> Sta ovde ne valja:
Isto što i u mom primeru od pre par dana :)))
>> Kako se ovo izvodi u TP a da se varijable dd, mm i gg ne deklarisu
>> kao long?
Evo Janko je to objasnio u 7.641. Znači Longint(b);
pascal.645evlad,
>> begin
>> datum := dd + mm*100 + gg*10000
>>
>> Kako se ovo izvodi u TP a da se varijable dd, mm i gg ne deklarisu
>> kao long?
datum := LongInt(dd) + LongInt(mm)*100 + LongInt(gg)*10000;
pascal.646uobradovic,
::> Zavisi kako ih preuzima ... Ako ih preuzima preko int 21,25
::> onda je jednostavno : samo preuzmes int 21h i cekas da ti se
::> u ah pojavi 25h a u AL npr. 8,9 ili koji vec interapt oces da
::> vidis i onda procitas DS:DX - pointer na novi int. E sad ako
::> samo upise u memoriju na mesto int vectora ono sto mu treba
::> onda nemam pojma.
E,a kako ja da naučim sve ovo.Mislim kada da koristim DS kada
DX,zašto nije AL nego AX ......
Uroš
P.S. Ovo sam lupao jer neznam ništa o tome.Probao sam da učim
iz Brian-ove knjige ali ne ide.
pascal.647szeman,
>> Znam da se to dešava zbog prekoračenja integer-a, ali mi je
>> opet malo priglupo da Borland nije vodio računa o ovome. Ili
>> možda jeste ali ja ne znam.
Integer * integer = integer i tu nema pomoći, osim ako se ne promeni
tip varijable ili ne napiše konstanta u real obliku, kao 4000.0.
pascal.648pedjak,
> Jeste ali ni sledeći program ne radi:
> writeln(i*3600+j);
> ...na primer. Iako se za ispis gura i longint writeln opet
> brlja.
Zato što TP smatra da je rezultat neke računske operacije istog
tipa kao i prvi operand, ukoliko ti eksplicitno ne tražiš
drugačije. Prilično glupo, ali šta je tu je :) To se može rešiti
sa:
writeln(longint(i)*3600+j);
pascal.649vukov,
Pitanje za poznavaoce Turbo Pascala:
Da li je moguce iz programa usmeriti stampanje na port LPT2, uz potpuno
ocuvanje udobnosti rada sa LST datotekom iz Borlandovog PRINTER Unit-a?
Zahvaljujem unapred na svim sugestijama.
pascal.650vlador,
> 25h a u AL npr. 8,9 ili koji vec interapt oces da vidis i onda procitas
Ok, probaću. I šta da radim ako je preuzeo int?
pascal.651uobradovic,
U Pascalu neće da mi radi sledeći program.
{$M 2000,0,0}
Uses Dos;
begin
exec('ime fajla','');
end;
Imam 2 Mb Ram-a.Neznam kako da deklarišem direktivu i oslobodim
stek jer treba da startujem neke programe,naprimer TM.
Uroš
pascal.652dares,
VL> U Pascalu neće da mi radi sledeći program.
VL>
VL> š$M 2000,0,0ć
VL> Uses Dos;
VL> begin
VL> exec('ime fajla','');
VL> end;
VL>
VL> Imam 2 Mb Ram-a.Neznam kako da deklarišem direktivu i oslobodim
VL> stek jer treba da startujem neke programe,naprimer TM.
VL>
Probaj ovako:
š$M 2000,0,0ć
Uses Dos;
begin
SwapVectors;
exec('Ime_fajla','');
MMM SwapVectors;
end.
pascal.653pedjak,
> Da li je moguce iz programa usmeriti stampanje na port LPT2, uz
> potpuno ocuvanje udobnosti rada sa LST datotekom iz Borlandovog
> PRINTER Unit-a?
Naravno, potrebno je sledeće:
var
lst:text;
Assign(lst,'lpt2');
Reset(lst);
Ostatak koda ne moraš da menjaš.
pascal.654pedjak,
> exec('ime fajla','');
Ime fajla mora biti sa kompletnom putanjom i ekstenzijom, na primer
c:/pera/mika/laza.exe
pascal.655andrejt,
__> E,a kako ja da naucim sve ovo.Mislim kada da koristim DS kada
__> DX,zasto nije AL nego AX ......
Imas cini mi se i na sezamu neki spisak intova od 4 mb ;))
Koristio sam HelpPC 2.01 - moze da se skine i sa sezama kolko mi se cini.
(Nije veliki - oko 800k texta)
__> P.S. Ovo sam lupao jer neznam nista o tome.Probao sam da ucim
__> iz Brian-ove knjige ali ne ide.
Kako ne ide ? Sta ti ne ide ?
(Jel' mislimo na istog Briana ? ;))
pascal.656andrejt,
__> Ok, probacu. I sta da radim ako je preuzeo int?
Ne znam dal' bi ovo radilo - ne koristim win ali mogo bi
da probas da napravis jos jedan int21 (mislim da ga preuzmes jos jednom)
i da kao adresu neke globalne prom. tipa procedure stavis ono sto
dobijes kao adresu winovog int handlera i onda u novom intu
proveris ono sto ti treba pa ako je funkcija za menjanje voluma
(jel se o ovome bese radilo ?) ti pozoves onaj prvi - dosov int21
a ako to nije ta funkcija onda samo pozivas winov int21.
pascal.657vlador,
> Da li je moguce iz programa usmeriti stampanje na port LPT2, uz potpuno
Evo potpunog kratkog sorsa printer.tpu-a. Možeš promeniti šta ti se
ne sviđa. :)
--- Cut here ---
{*******************************************************}
{ }
{ Turbo Pascal Runtime Library }
{ Printer Interface Unit }
{ }
{ Copyright (C) 1988,92 Borland International }
{ }
{*******************************************************}
unit Printer;
{$I-,S-}
interface
var
Lst: Text;
implementation
procedure LstBinaryMode;
inline(
$8B/$1E/Lst/ { MOV BX,Lst.Handle }
$B8/$00/$44/ { MOV AX,4400H }
$CD/$21/ { INT 21H }
$80/$CA/$20/ { OR DL,20H }
$B6/$00/ { MOV DH,0 }
$B8/$01/$44/ { MOV AX,4401H }
$CD/$21); { INT 21H }
begin
Assign(Lst,'LPT1');
Rewrite(Lst);
LstBinaryMode;
end.
--- Cut here ---
pascal.658omega,
Ţ U Pascalu nece da mi radi sledeci program.
A da pogledas poruke od pre jedno mesec dana?
pascal.659evlad,
>> š$M 2000,0,0ć
>> Uses Dos;
>> begin
>> exec('ime fajla','');
>> end;
begin
exec ...
WriteLn (OutPut,'Dos greška: ',DosError);
ReadLn; (* ovo čeka enter, da bi na miru pročitao poruku *)
end
Pokušaj da očitaš DOSERROR variablu, da vidiš šta ti je dos prijavio
(šta ga boli doktore ?) ... E onda probaš swapvect, puno ime datoteke,
povećaš, kompajlersku direktivu $M na 8000 ili 16000 etc ...
Prijatno ...
pascal.660superhik,
=:> MMM SwapVectors;
^^^
Jel treba i ovo ;) ili je samo loša veza!?
pascal.661janko,
> Da li je moguce iz programa usmeriti stampanje na port
> LPT2, uz potpuno ocuvanje udobnosti rada sa LST datotekom
> iz Borlandovog PRINTER Unit-a?
Da. Odgovor je prost -- ne koristi taj junit, otvori svoju datoteku lst2
i gotovo.
pascal.662janko,
> U Pascalu neće da mi radi sledeći program.
>
> {$M 2000,0,0}
> Uses Dos;
> begin
> exec('ime fajla','');
> end;
>
> Imam 2 Mb Ram-a.Neznam kako da deklarišem direktivu i
> oslobodim stek jer treba da startujem neke
> programe,naprimer TM.
Stek si već rešio, ono što ti nije uspelo je da ti program nađe fajl --
nisi naveo punu adresu programa.
Neispravno:
exec("TM");
exec("\kumun\TM");
ispravno:
exec("\komun\TM.exe");
Sa TM-om (ako je reč o komunikacionom programu, a ne Nortonovom Time
Mark) ima šanse da ti ni ispravna varijanta ne uspe, jer TM je mnogo
alav za memorijom (bar ova verzija koju ja koristim).
pascal.663superhik,
=:> (šta ga boli doktore ?) ... E onda probaš swapvect, puno ime
=:> datoteke, $$$$$$$$
Zašta uopšte služi naredba SwapVectors ?
pascal.664evlad,
>> Zašta uopšte služi naredba SwapVectors ?
The following variables are all of the type pointer, and save the original
values of interrupt vectors that Turbo Pascal changes. Their names are of
the form SaveIntXX, where XX is the interrupt number in hex:
SaveInt00,SaveInt02,SaveInt1B,SaveInt23,SaveInt24,SaveInt34,SaveInt35,
SaveInt36,SaveInt37,SaveInt38,SaveInt39,SaveInt3A,SaveInt3B,SaveInt3C,
SaveInt3D,SaveInt3E,SaveInt3F,SaveInt75: pointer;
Sve ove interrupt vektore paskal preusmerava. Naredba SwapVector ih postavlja
na originalnu vrednost.
pascal.665postmast,
From: Bosko.Rafajlovic@f125.n103.z38.setgate.setnet.co.yu (Bosko Rafajlovic)
Subject: tri-door
Date: Sat, 12 Nov 1994 12:09:00
> Ja sam pravio neke door-ove i mogu ti reci da je TPU --
> mrak!
> Very easy za upotrebu, jasna imena func. i proc. koje
> skoro sve rade
> za tebe, tako da se pisanje svodi na nesto
> komplikovanije pisanje
> programa za DOS, jer ti TPU proc. i func. same obavljaju
> prakticno
> zezanje sa modemom.
:)) Da li si mozda provalio kako moze da se izabere (naravno iz TPU-a) ANSI,
ASCII ili AVATRRAT grafika - ja sam napravio neki door - ali samo podrzav
ANSI grafiku, tj. moze on da radi i sa ASCII-em i AVATAR-om ali nece sve da se
ispise na ekranu kao sto bi to ANSI uradio :(
Pozdrav Bole...
p.s. raf bbs / tel. 011/724-073 svakog dana od 22-06 h
* Origin: SetNet:Birostroj BBS,NON-STOP,14400bps,011/609945 (38:103/125)
pascal.666postmast,
From: Zoran.Rilak@f125.n103.z38.setgate.setnet.co.yu (Zoran Rilak)
Subject: (R) PITANJE
Date: Sat, 12 Nov 1994 20:55:00
[ Citat iz poruke (autor: Aleksandar Sasa Nikolic) na temu PITANJE : ]
ASN> ... Naravno za merenje vremena se za one koji
ASN> ne znaju koristi INT 08 koji kuca 18,2 puta po sekundi dakle...
Moj ti je savet da taj INT ostavis na miru; on je potreban hardveru.
Umesto njega koristi INT 1CH, on se poziva iz INT 8H (dakle svakih 55 ms) i
originalno sadrzi pointer na IRET. Ovo ti je "cistiji" nacin da uradis istu
stvar. Sa druge strane, ako ti je potrebno MNOGO preciznije merenje vremena
mozes to izvesti pomocu INT 15H, funkcije 83H/86H. Prva se zove "Event
Wait" a koristi se ovako: u AL upises vrednost podfunkcije (0 - postavljanje,
1 - brisanje intervala). Ako ti je AL = 0, onda u ES:BX upises seg:ofs bajta
u memoriji koji ce signalizirati kraj intervala u milisekundama, koga
postavljas u LONGWORD CX DX (CX je visi WORD). Kada sve to tako postavis
(ne zaboravi AH = 83H!), izvrsi INT 15H i tada se kontrola vraca tvom
programu. Na njemu je da s vremena na vreme proveri da li je bajtu na adresi
ES:BX setovan bit 7; ako jeste, period CX DX je istekao.
Funkcija 86H se koristi isto kao i 83H, samo ne postavljas ES:BX niti AL;
po isteku CX DX kontrola se vraca tvom programu. Interapti se ne izvrsavaju
dok interval ne istekne. Kako bilo da bilo, imaj u vidu da ove funkcije nisu
dostupne na svim racunarima (ima ih na AT i +). Ako funkcije ne postoje,
nakon INT 15H bice setovan CF.
... Who made you God to say: "I will disconnect you!" (obrada Metalike)
* Origin: SetNet:Birostroj BBS,NON-STOP,14400bps,011/609945 (38:103/125)
pascal.667vukov,
> Da li je moguce iz programa usmeriti stampanje na port LPT2, uz
>> Naravno, potrebno je sledeće:
>> var lst:text;
>> Assign(lst,'lpt2');
>> Reset(lst);
Zahvaljujem na poruci. Isprobano i fino radi, uz jednu malu korekciju:
naime, datoteku LST treba otvoriti za upis, tj. potrebno je staviti
Rewrite(lst) umesto Reset(lst).
Pozdrav
Vukov
pascal.668zarkos,
U Turbo Pascalu 6.0 sam uradio rezidentni program koji
skuplja podatke sa serijskog porta. Program koristi nedokumentovane
DOS funkcije, i to lepo funkcionise do momenta pokretanja Windows-a.
Naime Windows proradi lepo, ali moj rezidentni program nestaje, tj.
nema ga vise. Potrebno je naravno da programcic zivi i pre i posle
pokretanja Windows-a. Ako neko ima resenje... Pomagajte!!!
P.S. Znam da nije bas neki opsiran opis, ali mozda je neko imao neki
slican problem.
Zarkos
pascal.669andrejt,
__> P.S. Znam da nije bas neki opsiran opis, ali mozda je neko imao neki
__> slican problem.
Imao je neko ovakve probleme - samo ne znam da li su nedokumentovane
funkcije bile u pitanju - ja sam dao "objasnjenje" da win preuzima
intove i onda ne moze da se normalno radi samo njima - mada verovatno
nije samo to u pitanju. Dakle pogledaj malo unazad poruke iz ove teme
i pitaj coveka kako je to resio - verovatno jeste posto se posle nije
javljao vise.
pascal.670inikolic,
Imam jedan problem vezan za TriDoor, napravio sam jedan door ali kad ga
startujem pri vezi i ako veza pukne , racunar se zablokira. Da li je problem u
meni(nesto sam izostavio i sta) ili je problem u TriDoor-u. Unapred zahvalan...
Igor
pascal.671zeljkoj,
> U pravu si... Nisam znao za procedure dok nisam procitao
> bas2pas... :)
I funkcije i procedure postoje u BASIC-u!
pascal.672pedjak,
> Imam jedan problem vezan za TriDoor, napravio sam jedan door ali kad
> ga startujem pri vezi i ako veza pukne , racunar se zablokira. Da li
> je problem u meni(nesto sam izostavio i sta) ili je problem u
> TriDoor-u. Unapred zahvalan...
Da li kontrolišeš iz svog doora da je došlo do prekida veze..? Ako
ne, onda bi trebalo da kontrolišeš i shodno tome postupiš, recimo
vratiš kontrolu BBS aplikaciji.
pascal.673vlador,
> i pitaj coveka kako je to resio - verovatno jeste posto se posle nije
> javljao vise.
Nije. ;) Rekao sam da ću probati kad budem imao vremena... A ovih danas
nisam imao vremena. :)
pascal.674frant,
> Sa TM-om (ako je reč o komunikacionom programu, a ne Nortonovom Time
> Mark) ima šanse da ti ni ispravna varijanta ne uspe, jer TM je mnogo
> alav za memorijom (bar ova verzija koju ja koristim).
Radiće sa Telemate-om 4.12 sigurno, probao sam.
Frant
pascal.675dzakic,
> Evo potpunog kratkog sorsa printer.tpu-a. Možeš promeniti šta ti se
Odakle ti ovo? Imaš li sors i ostalih tpu-ova?
pascal.676inikolic,
Zanima me kako da kontrolisem prekid veze u TriDoor-u ako je to moguce, jer
mislim da on to sam radi. Kod druga u C-u kada pukne veza ispadne se iz dora
automatski, kao recimo da u pascalu kazete HALT. Ali kod mene nece, jednostavno
kada pukne program on stane i mogu samo da resetujem racunar. Neverujem da je
problem u TriDoor- posto sam ga skinuo sa SEZAM-a. Verovatno sam ja nesto
izostavio, ali pitanje je STA???
IGOR
pascal.677andrejt,
__> jer mislim da on to sam radi. Kod druga u C-u kada pukne veza ispadne se
__> iz dora automatski, kao recimo da u pascalu kazete HALT. Ali kod mene
Sta je tu automatski kod HALT ?
__> nece, jednostavno kada pukne program on stane i mogu samo da resetujem
Pukne program ?
__> racunar. Neverujem da je problem u TriDoor- posto sam ga skinuo sa
__> SEZAM-a. Verovatno sam ja nesto izostavio, ali pitanje je STA???
Kako mi to da znamo - mislim dal' si ti nesto izostavio - sta si uopste
stavio ?
P.S. Jel' si probao sa funkcijom offline (vraca boolean) ?
pascal.678uobradovic,
::> Kako ne ide ? Sta ti ne ide ?
::> (Jel' mislimo na istog Briana ? ;))
Mislim na Stephena O'Briena i knjigu 'Turbo Pascal 6.0 - Kompletan
vodič'
Uroš
pascal.679uobradovic,
::> A da pogledas poruke od pre jedno mesec dana?
Nemam ja toliko vremena.
pascal.680andrejt,
__> Mislim na Stephena O'Briena i knjigu 'Turbo Pascal 6.0 - Kompletan
__> vodic'
E, pa ne znam sta moze da ti ne ide sa tom knjigom ? Stvarno ima dosta
stvari vrlo lepo objasnjenih. Dakle ponavljam pitanje : Ti rece da ti
nesto ne ide - sta ti nije islo - konkretno ?
pascal.681vlador,
> Odakle ti ovo? Imaš li sors i ostalih tpu-ova?
Imam. To je deo Run Time Library-ja za BP 7.0.
pascal.682omega,
Ţ::> A da pogledas poruke od pre jedno mesec dana?
Ţ
Ţ Nemam ja toliko vremena.
E pa nemam ni ja. Ako ti treba resenje - gledaj.
pascal.683duzle,
Da li neko ima paskal source (ako nema, moze i samo algoritam) sledecih
metoda za resavanje sistema linearnih jednacina:
- Direktni metodi:
1)Gauss
2)Cholasky
3)metod glavnih elemenata
4)Banachiewisz (metod kvadratnih korena)
- Iterativni metodi:
1)Jakobi
2)Leibman (Gauss-Seidel)
Jos ako neko ima isto i za dobijanje inverzne matrice (preferably Gausovim
metodom).... ;). Pogadjate da mi je ovo potrebno za ispit is numericke
matematike sa programiranjem (tako se u Skopju zove predmet) :)
pascal.684d.stamen,
> Da li neko ima paskal source (ako nema, moze i samo algoritam)
> sledecih metoda za resavanje sistema linearnih jednacina:
>
> - Direktni metodi:
> 1)Gauss
Prilazem source u Fortranu, lako ces ga promeniti...
Matrica A su koeficijenti uz clanove, a u nizu X su resenja.
Resava se sistem n*n, ali lako se da pretvoriti u n*m.
subroutine GAUS(A,X,n)
real pom,mx,A(300,301),X(300)
integer I,J,K,L
do 10 K=1,(n-1)
mx=abs(A(K,K))
L=K
do 20 I=(K+1),n
if (mx.lt.abs(A(I,K))) then
mx=A(I,K)
L=I
end if
20 continue
if (L.ne.K) then
do 30 J=1,(n+1)
pom=A(K,J)
A(K,J)=A(L,J)
A(L,J)=pom
30 continue
endif
do 40 I=(K+1),n
do 40 J=(K+1),(n+1)
A(I,J)=A(I,J)-A(I,K)*A(K,J)/A(K,K)
40 continue
10 continue
X(n)=A(n,(n+1))/A(n,n)
I=n-1
50 continue
if (I.eq.0) then
goto 70
end if
X(I)=A(I,(n+1))
do 60 K=(I+1),n
X(I)=X(I)-A(I,K)*X(K)
60 continue
X(I)=X(I)/A(I,I)
I=I-1
goto 50
70 end
pascal.685duzle,
>**>> 1)Gauss
>**>
>**> Prilazem source u Fortranu, lako ces ga promeniti...
>**> Matrica A su koeficijenti uz clanove, a u nizu X su resenja.
>**> Resava se sistem n*n, ali lako se da pretvoriti u n*m.
Hvala.
Ognen
P.S. Da li su bas sve knjige i svi programi koji nesto rade sa ovim
metodama vezani za Fortran (do sada mi je kroz ruke proslo jedno 15-tak
knjiga iz numericke i svi primeri su u ovom jeziku) ? Problem je u tome sto
bih sam seo i napisao ovo ali, nema se vremena (zato sam i zamolio da mi
neko sa sezama da gotov source). Anyway, thanx a lot.
pascal.686duzle,
Malopre sam naleteo na datoteku PROBOTS.ZIP (ne znam odakle mi je, mozda
je i sa Sezama pa je u ovoj poruci ne saljem). U njoj se nalazi P-code
pascal kompajler. Svrha programa je borba medju robotima koji su napisani u
paskalu. Roboti imaju svoj motorni pogon, svoje oruzje, radare itd. koje
koriste na bojnom polju. E, sad, da li ima zainteresovanih da se organizuje
takmicenje borbe medju robotima (svako ko je zainteresovan napise svojeg
robota - pravila za pisanje su jednostavna, neke vec predefinisane
procedure postoje, mainly za skeniranje bojista, pucanje, pomeranje,
dobijanje koordinata robota, ocitavanje momentalne stete itd.) ? Cisto da
vidimo ko najbolje poznaje paskal (i ko je najbolji strateg, a bogami i
programer ;)).
pascal.687uobradovic,
::> stvari vrlo lepo objasnjenih. Dakle ponavljam pitanje : Ti
::> rece da ti nesto ne ide - sta ti nije islo - konkretno ?
Za sad nema ništa tako mnogo konkretno.Jednostavno nerazumem.
Na primer xoću da napravim sat neznam koje registre da koristim
i kako.Ili da na primer izlistam direktorijum u dve kolone.....
Uroš
P.S. Hvala na pomoći
pascal.688uobradovic,
::>> Odakle ti ovo? Imaš li sors i ostalih tpu¤ša?
::> ćmaÁŚ$TĚ$je deo Run Time Library-j! sa BP 7.0.
Može li neko da mi kaže o čemu se radi jer se nisam javljao oko
7 dana na Sezam a pad mi je bio ogroman da bi uspeo da ga skinem.
pascal.690andrejt,
__> Za sad nema nista tako mnogo konkretno.Jednostavno nerazumem.
__> Na primer xocu da napravim sat neznam koje registre da koristim
Najbolje je da pogledas malo unazad u ovu temu jer se pre raspravljalo
o merenju vremena - a mene mrzi da sad pisem. (Ako ti bas toliko nije
jasno pitaj me na mail sta ti treba - kad ti nesto konkretno bude trebalo -
- pa cu da ti kazem).
__> i kako.Ili da na primer izlistam direktorijum u dve kolone.....
Imas primer za 'dir' bas u o'brianovoj knjizi ako se ne varam.
(Pogledaj u helpu za findfirst,findnext itd.)
pascal.691inesic,
> Malopre sam naleteo na datoteku PROBOTS.ZIP (ne znam odakle mi
> je, mozda je i sa Sezama pa je u ovoj poruci ne saljem). U njoj
> se nalazi P-code
Buuuu, shmrtz. Oćemo PROBOTS.zip
pascal.692uobradovic,
::> Malopre sam naleteo na datoteku PROBOTS.ZIP (ne znam odakle
::> mi je, mozda je i sa Sezama pa je u ovoj poruci ne saljem). U
::> njoj se nalazi P-code
A jel možeš ti da pošalješ to pa da kasnije vidimo ko to može
a ko nemože da nastavi sa takmičenjem.Možda u tom programu ima
korisnog sora.
pascal.693uobradovic,
::> Malopre sam naleteo na datoteku PROBOTS.ZIP (ne znam odakle
::> mi je, mozda je i sa Sezama pa je u ovoj poruci ne saljem). U
::> njoj se nalazi P-code
A jel možeš ti da pošalješ to pa da kasnije vidimo ko to može
a ko nemože da nastavi sa takmičenjem.Možda u tom programu ima
korisnog sora.
pascal.694postmast,
From: Bosko.Rafajlovic@f125.n103.z38.setgate.setnet.co.yu (Bosko Rafajlovic)
Subject: Re: pascal
Date: Sat, 19 Nov 1994 14:33:00
-=> Quoting "Igor Nikolic" to All <=-
"N> From: "Igor Nikolic" <inikolic@sezam.UUCP>
"N> Newsgroups: yu.prog.pascal
"N> Organization: SEZAM Beograd, 011 648-422
"N> Imam jedan problem vezan za TriDoor, napravio sam jedan door ali kad
"N> ga startujem pri vezi i ako veza pukne , racunar se zablokira. Da li
"N> je problem u meni(nesto sam izostavio i sta) ili je problem u
"N> TriDoor-u. Unapred zahvalan...
I meni se to dogadja isto ... :(( Kada napravis door u TRIDOOR-u da li
ti je orijentisan samo za ANSI grafiku (osim ako koristis naredbe TD_naredba)
Ja nisam primetio nikakvu razliku izmedju naredbe TD_CLRSCR i ANSI_CLRSCR ?!
Da li si provalio kako moze da se ocita AVATAR skrin iz tridoor-a ? Ja nisam :(
Pozdrav Bole...
p.s. pozovi RAF BBS / tel. 011/724-073 svakog dana od 22-06 h
Ja sam SySop... :))
... My hard disk is full! Maybe I'll try this message section thing.
* Origin: SetNet:Birostroj BBS,NON-STOP,14400bps,011/609945 (38:103/125)
pascal.695postmast,
From: Bosko.Rafajlovic@f125.n103.z38.setgate.setnet.co.yu (Bosko Rafajlovic)
Subject: Re: pascal
Date: Sat, 19 Nov 1994 14:37:01
-=> Quoting "Igor Nikolic" to All <=-
"N> From: "Igor Nikolic" <inikolic@sezam.UUCP>
"N> Newsgroups: yu.prog.pascal
"N> Organization: SEZAM Beograd, 011 648-422
"N> Zanima me kako da kontrolisem prekid veze u TriDoor-u ako je to
"N> moguce, jer mislim da on to sam radi. Kod druga u C-u kada pukne veza
"N> ispadne se iz dora automatski, kao recimo da u pascalu kazete HALT.
"N> Ali kod mene nece, jednostavno kada pukne program on stane i mogu samo
"N> da resetujem racunar. Neverujem da je problem u TriDoor- posto sam ga
"N> skinuo sa SEZAM-a. Verovatno sam ja nesto izostavio, ali pitanje je
"N> STA??? IGOR
Najbolje bi bilo da sacekamo verziju 4.0 (ili koje vec ide...) pa da onda
vidimo kako ce se desavati ! I meni se to dogadja...Kakve door-ove pravis
u tridoor-u ? i koji TP koristis ?
Mozda je u ovoj verziji taj problem neostvarljiv ili je neki bug... :((
Pozdrav Bole...
... ebius tagline. This is a moebius tagline. This is a mo ...
* Origin: SetNet:Birostroj BBS,NON-STOP,14400bps,011/609945 (38:103/125)
pascal.696postmast,
From: bear@setnet.co.yu (Attila Csipa)
Subject: Modula 2
Date: Thu, 17 Nov 1994 20:35:22
Bas sam pre neki dan pregledavao ponudu prodavca softvera iz Madjarke i vidim sledece:
Borland:
Borland xxx vx.xx
Turbo xxx vx.xx
Symantec:
Modula 2 v9.1
E sad, dal' neko zna kakva je to Modulica ? Cudi me da je dosad prosla neopazeno (kod relativno poznatog izdavaca), a ima i relativno veliki broj verzije (cak 9.1). So, ako neko zna nesto...
Bear@setnet.co.yu
* Origin: Prometheus BBS - The Northern Frontier - SETNET (38:111/107)
pascal.697mdave,
Subject: Re: Modula 2
MD> From: bear@setnet.co.yu (Attila Csipa)
MD> Symantec:
MD> Modula 2 v9.1
Pošteno da ti kažem, nikad čuo. Inače, ne znam koliko si
upoznat ali modulaši uveliko prelaze na Modula-3. :)
SRC DEC je "proizvođač", a aminovano je od strane Wirth-a.
pascal.698vlador,
> Malopre sam naleteo na datoteku PROBOTS.ZIP (ne znam odakle mi je, mozda
> je i sa Sezama pa je u ovoj poruci ne saljem). U njoj se nalazi P-code
Šalji! :)
pascal.699duzle,
>**> A jel možeš ti da pošalješ to pa da kasnije vidimo ko to
>**> može a ko nemože da nastavi sa takmičenjem.Možda u tom
>**> programu ima korisnog sora.
Source (ako si na to mislio sa onim "sora" :)) kod kompajlera nije dat u
arhivi, ali postoji uputsvo i primeri jedno 20-tak robota.Evo je i
arhiva. :)
probots.arjpascal.700andrejt,
Jel' ima neko neki primer TSRa koji preuzima INT 21h ?
P.S.
Moze i na mail.
pascal.701inesic,
> Source (ako si na to mislio sa onim "sora" :)) kod kompajlera
> nije dat u arhivi, ali postoji uputsvo i primeri jedno 20-tak
> robota.Evo je i arhiva. :)
Skinuo arhivu. Pročitao .doc i probao nekoliko robota sa target.
Mislim da je jako zanimljivo. Pokušaću ovih dana na poslu da
nađem vremena pa da i ja napravim nekog robota. Interesantna
igra, čak bih rekao dobra za početnike koji uče paskal. Ako ima
još zainteresovanih nek se jave, a ako nema, da ne opterećujem
conf eventualno napravljenim robotima. Ili da se otvori grupa?
pascal.702sslavko,
Prilično interesantna igra. Nije toliko u pitanju poznavanje
programiranja koliko algoritmika. Ja sam napravio nekoliko
varijanti i zainteresovan sam za razmenu i okršaj sa ostalima.
P.S. Ajde neka neko pobedi GORO-a. ja ne uspevam nikako.
Naravno direktno kopiranje datih robota ne dolazi u obzir.
pascal.703ognjen,
Moze li se nekako upisati neki znak u donji desni ugao ekrana
a da isti ne 'odskroluje' za jedan red?
pascal.704andrejt,
__> Moze li se nekako upisati neki znak u donji desni ugao ekrana
__> a da isti ne 'odskroluje' za jedan red?
Nisam siguran nasta mislis ali probaj :
Var VM : Array[1..4000] Of Byte Absolute $B000:$8000;
Ch : Char;
Begin
Read(Ch);
VM[3999] := Ord(Ch);
VM[4000] := 15;
End.
P.S.
Posto upisuje direktno u video memoriju nece 'odskrolovati'.
P.P.S.
Za vise o ovome me pitaj na mail.
pascal.705sslavko,
Apropo onih robota. Evo mog remek-dela pa ko voli nek izvoli.
Pobedite me u većini slučajeva pa da ga dorađujem. Naravno, ne
Još nešto. Ako vas nervira čekanje pri startovanju probots.exe
onda ga izeditujte, nadjite niz: 36 8B 57 04 i zamenite ga sa:
BA 00 00 90. Ovo izbacuje čekanje ali ostavlja uvodnu poruku.
(da se ne ogrešim baš mnogo).
killer.prpascal.706sslavko,
Evo ti kako sam ja rešio presretanje int $21. Ako se radi o
upisu u fajl onda postavljam pointer strp na string koji se
upisuje, a u strplen upisujem veličinu stringa. Ovo zato što
on posle upisa poništi veličinu stringa pa je potrebno
sačuvati je. Naravno meni je trebalo ovako, a ti vidi.
var strp:žstring;
strplen:byte;
old21:procedure;
š$F+ć
procedure new21;interrupt;
label dalje;
begin
asm
pop bp
pop es
pop d
pop di
pop si
pop dx
pop cx
pop bx
pop ax
push word ptr old21+2
push word ptr old21
pushf
cmp ah,$40
jne dalje
push d
pop word ptr strp+2
sub dl,1
mov word ptr strp,dx
add dl,1
mov strplen,cl
dalje:popf
mov ds,d
retf
end;
end;
š$F-ć
pascal.707inesic,
> Moze li se nekako upisati neki znak u donji desni ugao ekrana
> a da isti ne 'odskroluje' za jedan red?
Ja koristim procedure writeStr i sriteChr iz unita win koji je
priložen uz TP5.5 (nisam prešao na noviju verziju jer mi je pri
kompajliranju demoa iz TP6.00 prijavljivao not inaf memori: imam
XT sa 640k). Ove priložene procedure rade ispis direkto u
memoriju, nešto su brže, i nema tih neželjenih efekata. Ja uvek
pazim da formatiram ispis, tj. string mi nikad nije duži nego što
bi smeo da bude, pa ne znam šta se dešava kad na poziciji 79,25
ispišeš string dug 10 karaktera, ali vredi probati. Jedina
nezgoda je ta što pre ispisa moraš broj da konvertuješ u string.
U tu svrhu sam napravio proceduru koja od broja pravi string sa
željenim brojem decimala, umeće zareze (ili tačke) na svaka tri
mesta (odvaja klase) opciono. Napraviš sebi jednom takvu uslužnu
proceduru i prebrineš brigu za sva vremena.
pascal.708inferno,
Ů│ Apropo onih robota. Evo mog remek-dela pa ko voli nek izvoli.
Ů│ Pobedite me u većini slučajeva pa da ga dorađujem. Naravno, ne
ja se stvarno izvinjavam (nisam pratio raspravu od pocetka),
pa ako mogu znati o kakvim je robotima rec? :))
pascal.709duzle,
>**> robota. Interesantna igra, čak bih rekao dobra za
>**> početnike koji uče paskal. Ako ima još zainteresovanih nek
>**> se jave, a ako nema, da ne opterećujem conf eventualno
>**> napravljenim robotima. Ili da se otvori grupa?
Ja mislim da se otvori grupa.
pascal.710duzle,
>**> P.S.
>**> Posto upisuje direktno u video memoriju nece 'odskrolovati'.
>**> P.P.S.
>**> Za vise o ovome me pitaj na mail.
Nece ni ako koristis Int 10h, funkcija 09h (write char at cursor). Normalno
pre toga treba da se postavis na zeljenu poziciju.
pascal.711andrejt,
__> Evo ti kako sam ja resio presretanje int $21. Ako se radi o
__>
__> procedure new21;interrupt;
...
__> pop bp
__> pop es
__> pop d <-
__> pop di
__> pop si
__> pop dx
__> pop cx
__> pop bx
__> pop ax
...
__> push d <-
...
Sta je ovo 'd' ?
pascal.712sslavko,
>> ...
>> __> pop d <-
>> ...
>> __> push d <-
>> ...
>>
>> Sta je ovo 'd' ?
Ops, sorry. Na to sam zaboravio.
var d:word;
promenljiva u kojoj čuvam DS registar. Ako DS napuniš
originalnom vrednošću onda gubiš sve svoje promenljive, a
potrebno je ponekad u INT proslediti i originalnu vrednost
DS-a. Zato sam to tako uradio. Ako neko ima bolje rešenje neka
kaže.
pascal.713dares,
Roboti su stvarno prava stvar. Ima li neko možda neko
source onog kompajlera, da borbu prebacimo u grafički mod?
Time bi beorba bila i vizuelno mnogo interesantnija.
Zna li neko po kom principu glavni program (PROBOTS) prebacuje
kontrolu sa jednog na drugi robot? Da li se jedno vreme
kontroliše jedan pa se onda isti vremenski interval kontroliše
drugi, ili je to rešeno nekako drugačije?
A mogli bi da osnujemo i tu grupu.
pascal.714sslavko,
>> kontrolu sa jednog na drugi robot? Da li se jedno vreme
>> kontroliše jedan pa se onda isti vremenski interval kontroliše
>> drugi, ili je to rešeno nekako drugačije?
E to i mene interesuje. ako je u pitanju isti vremenski
interval onda to u mnogome menja potrebnu strategiju, a ako je
u pitanju protok cele petlje jednog pa onda drugog to je onda
prava stvar. U prvom slučaju bi manji algoritam bio bolji, a u
drugom veličina nema veze, svi su podjednaki.
pascal.715postmast,
From: Sloba.Markovic@f115.n103.z38.setgate.setnet.co.yu (Sloba Markovic)
Subject: pascal
Date: Fri, 25 Nov 1994 00:52:04
Origin.SUBJ: pascal
Origin.FROM: "Ognen Duzlevski"
Origin.TO: All
"D> Malopre sam naleteo na datoteku PROBOTS.ZIP (ne znam odakle mi je,
"D> mozda je i sa Sezama pa je u ovoj poruci ne saljem). U njoj se nalazi
"D> P-code pascal kompajler. Svrha programa je borba medju robotima koji su
"D> ko je zainteresovan napise svojeg robota - pravila za pisanje su
JA SAM! Koliki je program i gde da ga nadjem!
MAGIC FLASH!
... Nasao sam devojku, ali ona tvrdi da nije ni bila izgubljena :)))
* Origin: Atlantis BBS 22-05 tel. 3225-548 ■Belgrade■ (38:103/115)
pascal.716djelovic,
> A mogli bi da osnujemo i tu grupu.
Nema razloga za skrivanje u grupama, ukoliko je stvar toliko zanimljiva
koliko kazete, verujem da ce zanimati i siru publiku. Zar nije cilj svake igre
da ima sto vise zainteresovanih za nju?
pascal.717sslavko,
Lupam, lupam. Ponekad mnogo, ponekad malo manje. MORA da
koristi isti (ili sličan) vremenski interval inače bi bilo
moguće napraviti robota od par hiljada linija koje su sve:
cannon(dir,scan(dir,5));dir:=dir+20;
i uništiti drugog robota u jednom ili dva prolaza. Direktna
posledica ovoga je da treba imati jedan scan..cannon na svakih
desetak redova koda. (Potrebno je neko vreme da se top napuni)
pascal.718inesic,
> ja se stvarno izvinjavam (nisam pratio raspravu od pocetka),
> pa ako mogu znati o kakvim je robotima rec? :))
Skini fajl uz poruku 7.699
pascal.719inesic,
> P.S. Ajde neka neko pobedi GORO-a. ja ne uspevam nikako.
> Naravno direktno kopiranje datih robota ne dolazi u obzir.
Probaj goro vs. abasiri. Ja sam probao nekoliko puta i abasiri je
uvek pobeđivao. Šteta na njemu je bila između 65 i 89.
pascal.720duzle,
>**> Roboti su stvarno prava stvar. Ima li neko možda neko
>**> source onog kompajlera, da borbu prebacimo u grafički mod?
>**> Time bi beorba bila i vizuelno mnogo interesantnija.
Konacno sam se setio odakle je ova arhiva (InForma BBS u Skopju - imaju
prikaceno jedno 3-4 CD-a). Pogledacu, mozda se i nadje nesto.
>**> Zna li neko po kom principu glavni program (PROBOTS)
>**> prebacuje kontrolu sa jednog na drugi robot? Da li se jedno
>**> vreme kontroliše jedan pa se onda isti vremenski interval
>**> kontroliše drugi, ili je to rešeno nekako drugačije?
Nisam mnogo razmisljao o ovome. Ako nekoga interesuje kako da simulira
multi-tasking u paskalu, evo jedna arhiva iz knjige Turbo Pascal 6.0 -
Techniques & Utilities (Neil Rubenking). Princip je jednostavan - svi znaju
da konstante koje su deklarisane kao const ime:tip = nesto unutar
procedure/funkcije zadrzavaju svoju tekucu vrednost i po izlasku iz
procedure/funkcije. E, sad takva procedura se deli na vise delova koji
zavise od vrednosti jedne takve konstante. Onda se dve takve procedure
pozivaju naizmenicno. Ko nije shvatio - evo mu source :)
>**> A mogli bi da osnujemo i tu grupu.
Moze, moze...
multitsk.zippascal.721duzle,
Malopre sam pregledao neke prasnjave diskete ;) i naleteh na Pascal
Newsletter (autori su isti kao i za Windows Programmers Journal). Ima jedno
6 zipova. Da li ih vec ima na Sezamu, ili da ih saljem ?
Ogi
P.S. neko je pitao kako da ulinkuje slike i slicno u .EXE. U nekom od
brojeva Pascal Newsletter-a ima bas ovo :).
pascal.722jkpbvk,
>< P.S. neko je pitao kako da ulinkuje slike i slicno u .EXE. U nekom od
>< brojeva Pascal Newsletter-a ima bas ovo :).
Ako neces sve da saljes , vidi da posaljes samo taj .
P.S. Ja sam bio taj koji je pitao :))
pascal.723postmast,
From: dragisha@hobbiton.CO.YU (Dragisa Duric)
Subject: Re: Modula 2
Date: Fri, 25 Nov 1994 07:20:36 GMT
-> Symantec:
-> Modula 2 v9.1
->
-> E sad, dal' neko zna kakva je to Modulica ? Cudi me da je dosad prosla
-> neopaze o (kod relativno poznatog izdavaca), a ima i rel
Koliko sam üuo, Symantec je kupio Logitech. Znaüi, to je Logitech
Modula-2, a 9.1... pa moderno je praviti skokove u verzijama da se, k'o
fol, stigne konjkurencija.
Mene zanima neäto viäe o toj Moduli, äta sve moée (32bitna, Windows
prog...) kao i njena cijena... Ajde please raspitaj se malo.
--
[Cure for postal strikes: mail them their strike pay.]
pascal.724postmast,
From: dragisha@hobbiton.CO.YU (Dragisa Duric)
Subject: Re: pascal
Date: Fri, 25 Nov 1994 07:36:47 GMT
-> MD> Symantec:
-> MD> Modula 2 v9.1
->
-> Posteno da ti kazem, nikad cuo. Inace, ne znam koliko si
-> upoznat ali modulasi uveliko prelaze na Modula-3. :)
Hehe, uveliko = ?... Glede Module-3, to radi i na 386icama, postoje dva
porta, jedan ima üak i Threads. Ovaj bez Threads (zbog ograniüenja GO32
extendera) imam i moée se dobije.
[i bi noć, i drugi dan...]
He, sada imam i drugu verziju, to je pet disketa, podrzava Threads, XMS
only i ima interno mapiranje 32char imena fajlova preko FATa. Viäe ću
napisati kad stignem to da instaliram i probam. Ovo je portovana verzija
3.1 (aktuelna M3 je 3.3, ali to su minor razlike, niäta suätinski) a ona
prva je 2.11 verzija SRC M3.
--
[I wanna see 'em explode in every zip code!]
pascal.725postmast,
From: dragisha@hobbiton.CO.YU (Dragisa Duric)
Subject: Re: File Find Algoritam...
Date: Fri, 25 Nov 1994 07:36:59 GMT
-> SSta mislite koji je algoritam za File Find najefikasniji??
Onaj kod SSTa :)
-> Ja koristim rekurzivni (onaj tipiccno sskolski algoritam), ali kada na
-> disku ima veeeeeliki broj direktorijuma, program mi puca radi stack over
-> flow (iako sam stavio pomoccu $M max za STACK..)
Ima logike da pukne na stkovf samo ako imas jako duboku strukturu ili
gresku u strukturi koja stvara privid beskonacnog stabla, desi se to DOSu
ponekad. Jako duboka struktura, plus previse lokalnih varijabli u toj
proceduri (koje se alociraju na steku) ce da ubije program. Mislim da bi
trebalo da ti pomogne smanjivanje broja tih varijabli.
-> Isto, dali je neko od vas imao visse iskustva pri radu sa FAT -ovima, i
-> ako da, dali je voljan da napisse nessto visse o tome...
mjova je (cini mi se) pravio fajlfinder koji je isao direktno na disk, i
dao je sors uz njega.
--
[An optimist is a guy without much experience]
pascal.726postmast,
From: bole@mrsys1.MR-Net.co.yu (Bosko Radivojevic)
Subject: Recordi
Date: Thu, 24 Nov 1994 17:44:24 GMT
Hay!
Eto ovih dana sam nesto pravio u Turbo Pascalu 6.0 (da se zna:)
E i trebali mi recordi.. Zam ja (mislim ja:) te recorde nije to tesko..
imas seek imas typove i sve je ok! ... ALi ne bi ni bilo ove poruke da
to nije bas tako:) I pocne da me zeza.. zeza.. pa rastura:) Pa evo vam
otprilike skracena verzija mog programa (nesto bezveze) ...:
i recimo ima 4 rekorda on prodje 4 puta i ispise tacno ali prodje i 5-ti
put i kaze na read (uf, user) DISK READ ERROR i to u svim kombinacijamA:)
Tako posto ovde ima jaaako dobrih programera.. POMOZ'TE! :)
program proba_Za_rekord;
Type juzer = Record
ime: String;
End;
Var user: juzer;
uf : File Of juzer;
i,a: Integer;
b : String;
Begin
Assign (uf, 'users1.dat');
{$I-}
Reset (uf);
if ioresult <> 0 then rewrite (uf);
{$I+}
ReadLn(a);
Seek (uf, a);
ReadLn (b);
user.ime := b;
Write (uf, user);
Close (uf);
Reset (uf);
WriteLn (FileSize (uf) );
For i := 0 To FileSize (uf) Do
Begin
Seek (uf, i);
Read (uf, user);
WriteLn (user. ime);
ReadLn;
End;
End.
--
Pozdravlja vas,
Bole@Mrsys1.MR-Net.co.yu
pascal.727sslavko,
Evo ga šampion!! Predlažem da se roboti nazovu po korisničkim
imenima onih koji ih prave, pa da se tako takmičimo. Evo ga
moj SSLAVKO!!! Ajde ko će da ga pobedi.
Moramo da napravimo i propozicije. Recimo da se igra 20 ili 50
partija.
procedure SSlavko;
var r,dir,head,range:integer;
procedure go(d,s:integer);
begin
if loc_x<200 then head:=0;
if loc_x>800 then head:=180;
if loc_y<200 then head:=90;
if loc_y>800 then head:=270;
drive(d,s);
end;
begin
dir:=0;
head:=0;
r:=0;
repeat
range:=scan(dir,10);
while range=0 do
begin
range:=scan(dir,10);
if range>40 then cannon(dir,range) else
begin
dir:=dir+170;
r:=0;
end;
go(head,100);
end;
dir:=dir-5;
range:=scan(dir,5);
if range=0 then
begin
dir:=dir+10;
range:=scan(dir,5);
end;
if range>40 then
begin
r:=trunc((r-range)/2);
cannon(dir,range-r);
r:=range;
end;
head:=dir;
go(head,40);
until dead or winner;
end;
pascal.728sslavko,
>> Probaj goro vs. abasiri.
Probao sam i tačno je da abasiri uglavnom pobeđuje. Dobar je i patrol.
Moj sslavko :)) gubi od gorooa sa 70-80% (u proseku). A goro ima izuzetno
jednostavan algoritam. Najvažnije je napraviti algoritam koji će dovoljno
brzo i dovoljno precizno skenirati okoliknu i nalaziti neprijatelja.
pascal.729sslavko,
>> For i := 0 To FileSize (uf) Do
i ti ide od 0 do FileSize(uf), odnosno jedan put više nego što ih stvarno
ima. Daj mu "To FileSize(uf)-1".
pascal.730postmast,
From: bebek@setnet.co.yu (Zeljko Stevanovic)
Subject: pascal
Date: Sun, 27 Nov 1994 09:03:00
To: "Ivica Nesic" <inesic@sezam.UUCP>
> Source (ako si na to mislio sa onim "sora" :)) kod kompajlera
> nije dat u arhivi, ali postoji uputsvo i primeri jedno 20-tak
> robota.Evo je i arhiva. :)
"N>
"N> Skinuo arhivu. Procitao .doc i probao nekoliko robota sa target.
"N> Mislim da je jako zanimljivo. Pokusacu ovih dana na poslu da
"N> nadem vremena pa da i ja napravim nekog robota. Interesantna
"N> igra, cak bih rekao dobra za pocetnike koji uce paskal. Ako ima
Interesuje me ta igra ili vec sta je ??
... Ali mama, pa tamo su svi dorovi registrovani...
* Origin: Venik BBS * Smed. Palanka * +381 26 34808 SetNet: (38:103/126)
pascal.731postmast,
From: bebek@setnet.co.yu (Zeljko Stevanovic)
Subject: pascal
Date: Sun, 27 Nov 1994 09:07:01
To: "Slavko Snjegota" <sslavko@sezam.UUCP>
"S> sacuvati je. Naravno meni je trebalo ovako, a ti vidi.
"S> procedure new21;interrupt;
"S> label dalje;
"S> begin
"S> asm
"S> pop bp
"S> pop es
"S> pop d
"S> pop di
"S> pop si
"S> pop dx
"S> pop cx
"S> pop bx
"S> pop ax
Sta radi ova ASM naredba nikako da shvatim...
"S> push word ptr old21+2
"S> push word ptr old21
Takodjer i ova ..
"S> pushf
... IBM-PC - Imbecil Bussines Machine - Permanently Craches
* Origin: Venik BBS * Smed. Palanka * +381 26 34808 SetNet: (38:103/126)
pascal.732postmast,
From: broker@setnet.co.yu (Predrag Supurovic)
Subject: pascal
Date: Sun, 27 Nov 1994 12:45:00
> Moze li se nekako upisati neki znak u donji desni ugao
>ekrana a da isti ne 'odskroluje' za jedan red?
Da li ga ispisujes sa WriteLn() ili sa Write()? Ako koristis prvu
funkciju onda je zameni drugom i resices problem.
* Origin: Oreska BBS, Uzice = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.733postmast,
From: broker@setnet.co.yu (Predrag Supurovic)
Subject: Recordi
Date: Sat, 26 Nov 1994 13:06:00
>i recimo ima 4 rekorda on prodje 4 puta i ispise tacno ali
>prodje i 5-ti
>put i kaze na read (uf, user) DISK READ ERROR i to u svim
>kombinacijamA:)
> For i := 0 To FileSize (uf) Do
Klasicna greska. FileSize() vraca broj slogova u datoteci,
a ti pocinjes da brojis od nule, sto znaci da se petlja vrti
za jedan krug vise nego sto treba.
Pocni da brojis od 1.
Ja vise volim da citam podatke u WHILE NOT EOF(uf) petlji.
Tako sigurno izbegavam disk error a sigurno cu da procitam
sve podatke.
Broker
* Origin: Oreska BBS, Uzice = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.734postmast,
From: nenadr@sunset.fon.bg.ac.yu (Nenad Radosavljevic)
Subject: Re: pascal
Date: Tue, 29 Nov 94 20:13:58 GMT
In article <786090458.AA09777@setgate.setnet.co.yu>
broker@setnet.co.yu writes:
>
>> Moze li se nekako upisati neki znak u donji desni ugao
>>ekrana a da isti ne 'odskroluje' za jedan red?
>
>Da li ga ispisujes sa WriteLn() ili sa Write()? Ako koristis prvu
>funkciju onda je zameni drugom i resices problem.
>
Malko teze u ovom slucaju. Naime pascal-ove naredbe za pristup
CRT-u writeln() i write(), prepoznaju kada se nesto upisuje u poslednji
karakter na ekranu (donji desni ugao) i automatski scroll-uju ekran za
jedan red vise (obe naredbe). Jedno od mogucih resenja je da prestanes
da koristis write i writeln, da sa od nekud preuzmes arhivu TPFAST, sa
asemblerski pisanim rutinama za pristup video memoriji kod SVIH do sada
poznatih tipova kartica. Rutine cak podrzavaju i video pages (kao kod
Norton Commander-a - vise screen-ova koji se preklapaju momentalno) i
pravljenje windows-a a imas i gomilu drugih korisnih rutina (za
stringove, matematicke f-je itd. itd.). I sto je (barem meni) najlepse
cela arhiva je srazmerno mala a u sebi sadrzi i source-ove svega sto je
napisano).
Pozdrav,
--
=======================================================================
Nenad Radosavljevic E-mail: nenadr@sunset.fon.bg.ac.yu
=======================================================================
pascal.735vlador,
> Probaj goro vs. abasiri. Ja sam probao nekoliko puta i abasiri je
Ja nisam našao robota koji može u većini slučajeva da pobedi abasirija,
mada nisam sve isprobao.
pascal.736uobradovic,
::> if loc_x<200 then head:=0; \
::> if loc_x>800 then head:=180; \ --- šta ovo znači
::> if loc_y<200 then head:=90; /
::> if loc_y>800 then head:=270; /
::> drive(d,s); /
.
.
::> dir:=0;
::> head:=0;
::> r:=0;
.
.
::> range:=scan(dir,10); \
::> while range=0 do \
::> begin \
::> range:=scan(dir,10); \
::> if range>40 then cannon(dir,range) else \ --- šta ovo znači
::> begin /
::> dir:=dir+170; /
::> r:=0; /
.
.
::> end;
::> dir:=dir-5; \
::> range:=scan(dir,5); \
::> if range=0 then \
::> begin \
::> dir:=dir+10; \--- šta i ovo znači
::> range:=scan(dir,5); /
::> end; /
::> if range>40 then /
.
.
::> r:=trunc((r-range)/2); \
::> cannon(dir,range-r); \
::> r:=range; \
::> end; \----- šta ovo znači
::> head:=dir; /
::> go(head,40); /
::> until dead or winner; /
::> end; /
Može li neko da mi objasni kako se pravi procedura za P-ROBOTS.
Šta je CANNON,SCAN,DIR,LOC_X,LOC_Y,RANGE,HEAD....
Hoću i ja da ga napravim ali moram da znam sta je sta.OK.
Hvala Uroš
P.S. Izvinite na velikom replyu.
pascal.737vitez.koja,
#=> <broker@setnet.co.yu (Predrag Supurovic)>
#=>> Moze li se nekako upisati neki znak u donji desni ugao
#=>> ekrana a da isti ne 'odskroluje' za jedan red?
#=>
#=> Da li ga ispisujes sa WriteLn() ili sa Write()? Ako
#=> koristis prvu funkciju onda je zameni drugom i resices
#=> problem.
Ne pomaže to :) Zapravo, sa Write će dobiti jedan prazan red, sa
Writeln cela 2, i to zato što ove procedure pomeraju kursor za
jedno mesto iza onoga što ispišu; kako je jedno mesto iza
poslednjeg karaktera u redu prvi karakter u sledećem redu, kursor
se pomera u sledeći red. Kada je, usto, u pitanju karakter i u
posledjoj koloni, ceo ekran ode za jedan red...
Rešenje je direktno pisanje po video memeoriji.
pascal.738vitez.koja,
#=> Evo ga šampion!! Predlažem da se roboti nazovu po korisničkim
#=> imenima onih koji ih prave, pa da se tako takmičimo. Evo ga
#=> moj SSLAVKO!!! Ajde ko će da ga pobedi.
Pa i nije se pokazao...
Abasiri vs SSlavko , a uzvratni meč SSlavko vs Abasiri
19 1 2 18
sk
pascal.739ognjen,
)-> 6 zipova. Da li ih vec ima na Sezamu, ili da ih saljem ?
Salji.
pascal.740szeman,
>> For i := 0 To FileSize (uf) Do
!!!!!!!!!!!!!
>> Begin
>> Seek (uf, i);
>> Read (uf, user);
>> WriteLn (user. ime);
>> ReadLn;
>> End;
Normalno je da javi grešku - učitavao je ono što ne postoji. :)
- FileSize(f: file of type) - daje UKUPAN BROJ zapisa (slogova) u bazi
- Seek(f,num) prelazi na Record.No koji se nalazi u varijabli num.
- Tipizirana baza počinje od NULTOG SLOGA, dakle:
R.No USERS1.DAT
=================
0. sima
1. pera
2. laza
3. mika
4. žika
Dakle:
- FileSize(f) daje kao rezultat: 5
- Seek(f,4) pozicionira se na R.No: 4
Stoga, rešenje tvog problema je da umesto:
For i := 0 To FileSize (uf) Do
napišeš:
For i := 0 To FileSize (uf) - 1 Do
Pozdrav, Sale
P.S. Loša ti je praksa ako bazu ne popunjavaš "postepeno" - uvek osiguraj
da svaki slog u bazi ima definisanu početnu vrednost. Dakle, ovako nešto
je "štetno po zdravlje" ;)
rewrite(f);
ime:='R.No 0'
seek(f,0);
write(f,ime);
ime:='R.No 5'
seek(f,5)
write(f,ime);
close(f);
jer će u R.No od 1 - 4 (uključno) biti nedefinisane vrednosti, što može
da bude veoma iritirajuće prilikom štampanja.
pascal.741sslavko,
>> "S> push word ptr old21+2
>> "S> push word ptr old21
>>
>> Takodjer i ova ..
>>
>> "S> pushf
Prva gura na stek adresu old21 procedure, a druga flegove.
pascal.742sslavko,
>> Može li neko da mi objasni kako se pravi procedura za P-ROBOTS.
Sve ti piše u P-ROBOTS.DOC.
pascal.743sslavko,
>> Pa i nije se pokazao...
Ajde da vidimo vitez.koja vs sslavko. Nemoj mi porediti
abasirija. Sa njim ćemo da se poredimo kasnije kad razradimo
taktiku :))
pascal.744andrejt,
__> For i := 0 To FileSize (uf) Do
__> Begin ^^^^^^^^^^^^^
__> Seek (uf, i);
__> Read (uf, user);
__> WriteLn (user. ime);
__> ReadLn;
__> End;
Dolazi do FileSize(UF) i pokusava da dodje do njega sa Seek ali to
je nemoguce jer je prvi slog u stvari 0 a zadnji slog FileSize-1.
Resenje je da stavis, tamo gde je podvuceno, FileSize(UF)-1.
Nadam se da sam dovoljno razumljiv :)
pascal.745inikolic,
jedini meni poznati nacin da se upise karakter na koordinate 80,25 jeste da se
on upise direktno u memoriju.
karakter se upisuje u $b000:$0fde(ako je u pitanju hecules) i u
Hgreska : to je $b000:$0f9e(herc) i $b800:$0f9e(VGA) tu je karakter a sledeci
je njegov atribut(0f9f) . Ako te zanima odakle to -> pa prvi karakter za VGA je
$b800:$0000 , tu je karakter , a u $b800:$0000 ide njegov atribut i tako dalje
svaki drugi je karakter(za herc. je isto samo je $b000). Obrati paznju da je
rec o heksa zapisu.
Komanda kojom ces to obaviti je :
MEM[$b800:$****]:=65 {upisuje A na odredjeno mesto}
Nadam se da je to sto ti je trebalo...
Ivan
pascal.746mboban,
Subject: P-Robots
**> Ja sam napravio nekoliko varijanti i zainteresovan sam za razmenu
**> i okršaj sa ostalima.
So, otvaramo grupu?
**> P.S. Ajde neka neko pobedi GORO-a.
:)) Joj, gde Goroa nađe? :)
Leader lepo počne protiv njega, dere ga, dere... a onda ga Goro na krJaju :)
s*ebe... A Gorov algoritam - nema 4-5 redova :)
Sve u svemu, interesantna igrica, samo bih ja dodao više različitog oružja,
kao i više sposobnosti i karakteristika robota (probojnost oklopa, max
brzina, preciznost...)
pascal.747inesic,
> Apropo onih robota. Evo mog remek-dela pa ko voli nek izvoli.
> Pobedite me u većini slučajeva pa da ga dorađujem. Naravno, ne
Isprobao sam tvoga killera. Najpre sa abasirijem koji ga je dobio
u 6 od 10, a i imao je manje oštećenje pri kraju partije nego
killer, kad ubije. Isprobao sam ga i sa subminijem, koji ga je
dobio u sve četiri partije, ali sa manjom razlikom u šteti.
Nego nije to ono na šta bih hteo da osvrnem pažnju. Ima jedan bug
ili u kompajleru ili u killeru. Kad startuješ program tako da je
killer prvi, a onaj drugi robot drugi, onda sve radi. S druge
strane kad ti je prvi argument neki drugi robot, a drugi killer,
onda kompajler prijavi BEGIN expected. Probao sa dva robota i
simptom se ponovio.
Neko je ovde pominjao prerađivanje programa tako da radi u
grafičkom modu. Kako će to da radi na mom herculesu? Mislim da je
program i bez toga dovoljno spor.
pascal.748uobradovic,
Slušajte pažljivo:
- Kako treba da mi glasi linija pod brojem 2
1-Startujem neki program iz mog programa
2-Kad izlazim iz tog nekog programa da se ponovo vrati
u moj program.
Mislim da ste me razumeli.
Uroš
pascal.750zeljkoj,
> 2-Kad izlazim iz tog nekog programa da se ponovo vrati
> u moj program.
exec (tvoj_program, parametri);
pascal.751vlador,
> program i bez toga dovoljno spor.
:) Kako kome... Ja moram da isključim turbo i da dooobro pratim šta se
dešava. :)
pascal.752sslavko,
>> Isprobao sam tvoga killera. Najpre sa abasirijem koji ga
>> je dobio u 6 od 10, a i imao je manje oštećenje pri
>> kraju partije nego killer, kad ubije. Isprobao sam ga
>> i sa subminijem, koji ga je
Dobro, nisam ni mislio da me testiraš sa datim primerima. Za robota
koji je uradjen na brzaka, metodom grube sile i nije loš. Primere
su radili ljudi koji su se sa PROBOTS zezali malo duže nego ja.
Ajde ti napravi svog robota pa ga isprobaj sa mojim. Za nedelju-dve
i moji će derati Goroa i Abasirija O;).
P.S. Naravno rename abasiri ne dolazi u obzir. Mora da bude baš
tvoja kreacija.
pascal.753sslavko,
Evo ga nova verzija mog favorita. Nešto je bolji od Goro-a.
procedure SSlavko;
var r,dir,head,range:integer;
procedure go(d,s:integer);
begin
if loc_x<200 then head:=0;
if loc_x>800 then head:=180;
if loc_y<200 then head:=90;
if loc_y>800 then head:=270;
drive(d,s);
end;
begin
dir:=0;
head:=0;
r:=0;
repeat
range:=scan(dir,10);
while range=0 do
begin
range:=scan(dir,10);
if range>40 then cannon(dir,range) else
begin
dir:=dir+20;
r:=0;
end;
go(head,100);
end;
dir:=dir-5;
range:=scan(dir,5);
if range=0 then
begin
dir:=dir+10;
range:=scan(dir,5);
end;
if range>40 then
begin
r:=trunc((r-range)/2.5);
cannon(dir,range-r);
r:=range;
end;
head:=dir;
go(head,50);
until dead or winner;
end;
pascal.754uobradovic,
::> Nego nije to ono na šta bih hteo da osvrnem pažnju. Ima jedan
::> bug ili u kompajleru ili u killeru. Kad startuješ program
::> tako da je killer prvi, a onaj drugi robot drugi, onda sve
::> radi. S druge strane kad ti je prvi argument neki drugi
::> robot, a drugi killer, onda kompajler prijavi BEGIN
::> expected. Probao sa dva robota i simptom se ponovio.
U soru Killera promeni jedan deo i sve će da radi,a to je:
zameni mesta tako da prvo piše PROCEDURE ......,a zatim
VAR .... Mislim da je ovo bio problem kod ovog robota ili
kod SSLAVKO-vog.
Uroš
pascal.755inferno,
Ů│ ˙> program i bez toga dovoljno spor.
Ů│ ˙
Ů│ ˙ :) Kako kome... Ja moram da isključim turbo i da dooobro pratim š
Ů│ ˙ dešava. :)
Meni ni to ne pomaže. :( :>>
pascal.756dzakic,
> For i := 0 To FileSize (uf) Do
for i:=0 to filesize(uf)-1 do ...
Ako filesize vrati da ima 4 rekorda, onda bi trebalo od 1 do 4, ali
pošto ti seek traži poziciju računajući od nula, onda ako počneš od nula
ideš do filesize-1, prosto... :)
pascal.757inferno,
HI, ima li iko onog roborta Target, malo mi je nezgodno da isprobavam svoje
kreacije sa Abasirijem ili onim samoubicom, na primer.. :))
p.s. kako da usporim bitku (i sa turbom ide ko munja). Mislim da ima neki prg.
SLOW ili tako nekako...
pascal.758lovro,
Kako da napravim rezidentan program, a da ne stoji ceo u
memoriji:
begin
writeln('Hvala na pitanju, dobro sam.');
radinesto;
zabavljajnarod;
. . .
swapvectors;
getintvec(...
setintvec(...
keep(0);
end.
Sve ono pre tri tacke povećavaće zauzetu memoriju. Kako? Zašto?
Lovro
pascal.759mboban,
**> HI, ima li iko onog roborta Target, malo mi je nezgodno da isprobavam
**> svoje kreacije sa Abasirijem ili onim samoubicom, na primer.. :))
:)) Target, kažeš? :)
Fajt svog robota protiv robota Target startuješ tako što izostaviš naziv
protivničkog robota.
Znači: PROBOTS dileja
će da startuje borbu robota Dileja, protiv Targeta.
**> p.s. kako da usporim bitku (i sa turbom ide ko munja).
────────────────────────
Pa isključi turbo :))
**> Mislim da ima neki prg. SLOW ili tako nekako...
U direktorijumu UTIL, program AT-SLOW. Samo, piše da neregistrovana
verzija traje samo 5 min :))
pascal.760sslavko,
>> HI, ima li iko onog roborta Target
Edituj PROBOTS.EXE. Unutar njega imaš lepo ispisan kod Target-a.
A ćto se tiče isprobavanja, napravi robota koji se samo kreće,
ne puca ili stoji u mestu ili tako nešto, zavisi šta
isprobavaš. Ja imam par takvih, Proba1, Proba2...
pascal.761sslavko,
>> Isprobao sam tvoga killera. Najpre sa abasirijem koji ga
>> je dobio u 6 od 10, a i imao je manje oštećenje pri
>> kraju partije nego killer, kad ubije. Isprobao sam ga
>> i sa subminijem, koji ga je
Dobro, nisam ni mislio da me testiraš sa datim primerima. Za robota
koji je uradjen na brzaka, metodom grube sile i nije loš. Primere
su radili ljudi koji su se sa PROBOTS zezali malo duže nego ja.
Ajde ti napravi svog robota pa ga isprobaj sa mojim. Za nedelju-dve
i moji će derati Goroa i Abasirija O;).
P.S. Naravno rename abasiri ne dolazi u obzir. Mora da bude baš
tvoja kreacija.
pascal.762sslavko,
>> Kako da napravim rezidentan program, a da ne stoji ceo u
>> memoriji:
Sve o tome imaš u Računarima 93 i 94. Doduše pisano je za C ali
se da preraditi i za Pascal.
pascal.763kriss,
˙˙ p.s. kako da usporim bitku (i sa turbom ide ko munja). Mislim
˙˙ da ima neki prg. SLOW ili tako nekako...
Ima, program se zove slower.
pascal.764postmast,
From: Amir.Zolic@f115.n103.z38.setgate.setnet.co.yu (Amir Zolic)
Subject: pascal
Date: Wed, 30 Nov 1994 02:55:06
-=> Quoting Predrag Supurovic to "Ognjen Blagojevic" <=-
> Moze li se nekako upisati neki znak u donji desni ugao
>ekrana a da isti ne 'odskroluje' za jedan red?
PS> Da li ga ispisujes sa WriteLn() ili sa Write()? Ako koristis prvu
PS> funkciju onda je zameni drugom i resices problem.
Mislim da nisi u pravu ;)
Sta ce dati ovaj program?
┌────────────────────────────────────────┐
│ uses crt; │
│ begin │
│ ClrScr; │
│ WriteLn('Ovo je prva linija'); │
│ WriteLn('Ovo je druga linija'); │
│ WriteLn('a ovo je treca'); │
│ GoToXY(80, 25); │
│ Write('1'); { WriteLn('1') } │
│ end. │
└────────────────────────────────────────┘
U prvom slucaju ( Write() ), na ekranu ce ostati 'druga' i 'treca'
poruka i '1' na (80, 24) i kursor ce biti na (1,25).
U drugom slucaju ( WriteLn() ), na ekranu ce ostati samo 'treca'
poruka i '1' na (80,23) i kursor na (1, 25).
Resenje je da se koristi direktno pisanje u video memoriju. Tada ne
dolazi do pomeranja kursora posle ispisa teksta (ovo je uzrok
'podizanja' ekrana za jedan red) pa nema nikakvih problema :))
Pozdrav
Amir
P.S. Mislim da sam pre nekih mesec dana poslao funkcije koje vrse
pisanje direktno u Video memoriju.
... Pisac je covek koji prazni glavu da bi napunio stomak.
* Origin: Atlantis BBS 22-05 tel. 3225-548 ■Belgrade■ (38:103/115)
pascal.765postmast,
From: bebek@setnet.co.yu (Zeljko Stevanovic)
Subject: pascal
Date: Wed, 30 Nov 1994 12:43:05
* Citat: Predrag Supurovic --> "Ognjen Blagojevic"
* Tema : pascal
> Moze li se nekako upisati neki znak u donji desni ugao
>ekrana a da isti ne 'odskroluje' za jedan red?
PS> Da li ga ispisujes sa WriteLn() ili sa Write()? Ako koristis prvu
PS> funkciju onda je zameni drugom i resices problem.
Ako i to neuspe uzmi direktan upis u memoriju...
... IBM-PC - Imbecil Bussines Machine - Permanently Craches
* Origin: Venik BBS * Smed. Palanka * +381 26 34808 SetNet: (38:103/126)
pascal.766postmast,
From: bebek@setnet.co.yu (Zeljko Stevanovic)
Subject: Recordi
Date: Wed, 30 Nov 1994 12:45:06
* Citat: Predrag Supurovic --> Bosko Radivojevic
* Tema : Recordi
>i recimo ima 4 rekorda on prodje 4 puta i ispise tacno ali
>prodje i 5-ti
>put i kaze na read (uf, user) DISK READ ERROR i to u svim
>kombinacijamA:)
> For i := 0 To FileSize (uf) Do
PS> Klasicna greska. FileSize() vraca broj slogova u datoteci,
PS> a ti pocinjes da brojis od nule, sto znaci da se petlja vrti
PS> za jedan krug vise nego sto treba.
PS> Pocni da brojis od 1.
Ali onda mora u Seek(x) da stavlja i-1 ako koristi Seek...
... IBM-PC - Imbecil Bussines Machine - Permanently Craches
* Origin: Venik BBS * Smed. Palanka * +381 26 34808 SetNet: (38:103/126)
pascal.767postmast,
From: broker@setnet.co.yu (Predrag Supurovic)
Subject: Recordi
Date: Thu, 01 Dec 1994 09:22:00
> >put i kaze na read (uf, user) DISK READ ERROR i to u svim
> >kombinacijamA:)
>
> > For i := 0 To FileSize (uf) Do
> PS> Klasicna greska. FileSize() vraca broj slogova u datoteci,
> PS> a ti pocinjes da brojis od nule, sto znaci da se petlja vrti
> PS> za jedan krug vise nego sto treba.
> PS> Pocni da brojis od 1.
>Ali onda mora u Seek(x) da stavlja i-1 ako koristi Seek...
Pa dobro onda neka broji od f:=0 do FileSize (uf)-1. Dodje na isto.
* Origin: Oreska BBS, Uzice = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.768postmast,
From: bebek@setnet.co.yu (Zeljko Stevanovic)
Subject: pascal
Date: Thu, 01 Dec 1994 09:26:06
* Citat: Amir Zolic --> Predrag Supurovic
* Tema : pascal
AZ> Resenje je da se koristi direktno pisanje u video memoriju. Tada
AZ> ne dolazi do pomeranja kursora posle ispisa teksta (ovo je uzrok
AZ> 'podizanja' ekrana za jedan red) pa nema nikakvih problema :))
AZ>
AZ> Pozdrav
AZ> Amir
AZ>
AZ> P.S. Mislim da sam pre nekih mesec dana poslao funkcije koje vrse
AZ> pisanje direktno u Video memoriju.
Jeste to je bilo za mene ako nemas taj tekst u nekom fajlu ja mislim
da ga cuvam u nekom fajlu pa ako treb poslacu..
Pretpostavljam da znas asembler..
Cemu sluze nareba POP i PUSH kao i one sto su slicne PUSH-u samo neko
slovo je izmenjeno ..
... BR> Da li je Internet interna ili internacionalna mreza?
* Origin: Venik BBS * Smed. Palanka * +381 26 34808 SetNet: (38:103/126)
pascal.769postmast,
From: bebek@setnet.co.yu (Zeljko Stevanovic)
Subject: pascal
Date: Thu, 01 Dec 1994 09:48:07
* Citat: Nenad Radosavljevic --> All
* Tema : pascal
NR> From: nenadr@sunset.fon.bg.ac.yu (Nenad Radosavljevic)
NR> broker@setnet.co.yu writes:
>
>> Moze li se nekako upisati neki znak u donji desni ugao
>>ekrana a da isti ne 'odskroluje' za jedan red?
>
>Da li ga ispisujes sa WriteLn() ili sa Write()? Ako koristis prvu
>funkciju onda je zameni drugom i resices problem.
>
NR>
NR> Malko teze u ovom slucaju. Naime pascal-ove naredbe za pristup
NR> CRT-u writeln() i write(), prepoznaju kada se nesto upisuje u
NR> poslednji karakter na ekranu (donji desni ugao) i automatski scroll-uju
NR> ekran za jedan red vise (obe naredbe). Jedno od mogucih resenja je da
NR> prestanes da koristis write i writeln, da sa od nekud preuzmes arhivu
NR> TPFAST, sa asemblerski pisanim rutinama za pristup video memoriji kod
NR> SVIH do sada poznatih tipova kartica. Rutine cak podrzavaju i video
NR> pages (kao kod Norton Commander-a - vise screen-ova koji se preklapaju
NR> momentalno) i pravljenje windows-a a imas i gomilu drugih korisnih
NR> rutina (za stringove, matematicke f-je itd. itd.). I sto je (barem
NR> meni) najlepse cela arhiva je srazmerno mala a u sebi sadrzi i
NR> source-ove svega sto je napisano).
Dobro nisam bas bio siguran ... Koristi tu rutinu ili
napravi sam rutinu za direktan upis u memoriju...
Amir mi je objasnio pre neki mesec kako se to radi pa ako hoces to da ti
posaljem...
x
... Da siljnem dve pricice...?
* Origin: Venik BBS * Smed. Palanka * +381 26 34808 SetNet: (38:103/126)
pascal.770postmast,
From: Vasiljevic.Igor@p1.f107.n111.z38.setgate.setnet.co.yu (Vasiljevic Igor)
Subject: CZONE
Date: Thu, 01 Dec 1994 21:47:00
Evo samo da obavestim zainteresirane da kod mene na Takeda Inc.
BBS-u mozete naci igru CZone (za Win.). Igra podseca na ovo o cemu
se ovde vodi prica. Jedino ima malo robota. Ince igra je sharware, pa
ako je neko zainteresiran da je skine nek mi se javi.
Vigor
* Origin: # TĺKţDĺ Inc. # Zrenjanin # $ţTNţT # (38:111/107.1)
pascal.771inesic,
> Može li neko da mi objasni kako se pravi procedura za P-ROBOTS.
> Šta je CANNON,SCAN,DIR,LOC_X,LOC_Y,RANGE,HEAD....
> Hoću i ja da ga napravim ali moram da znam sta je sta.OK.
Pročitaj probots.doc, ima ga u arhivi.
pascal.772inesic,
> Interesuje me ta igra ili vec sta je ??
Skini fajl uz poruku 7.699 u ovoj konferenciji. Ne znam kako se
to radi sa long distance. Ako ni ti ne znaš, pitaj sysAdma.
pascal.773duzle,
Evo ga pascal source programa Infoplus (u dokumentaciji pise da je kao neki
naslednik/klon programa SYSID). Namena mu je identifikacija komponenti
sistema. Pogledajte, ima nekih interesantnih trikova ;).
Pozdrav,
Ognen.
P.S. Sorry ako se ova datoteka vec nalazi u sezamovim konf/dirovima :)
infoplus.arjpascal.774inesic,
> ... Da siljnem dve pricice...?
Pošalji, naravno! :)
pascal.775djelovic,
> Evo ga pascal source programa Infoplus (u dokumentaciji pise da je kao neki
> naslednik/klon programa SYSID). Namena mu je identifikacija komponenti
> sistema. Pogledajte, ima nekih interesantnih trikova ;).
Hvala na zanimljivom prilogu!
pascal.776postmast,
From: Amir.Zolic@f115.n103.z38.setgate.setnet.co.yu (Amir Zolic)
Subject: pascal
Date: Sat, 03 Dec 1994 22:04:00
-=> Quoting Zeljko Stevanovic to Amir Zolic <=-
AZ> P.S. Mislim da sam pre nekih mesec dana poslao funkcije koje vrse
AZ> pisanje direktno u Video memoriju.
ZS>
ZS> Jeste to je bilo za mene ako nemas taj tekst u nekom fajlu ja mislim
ZS> da ga cuvam u nekom fajlu pa ako treb poslacu..
Ako neko bude trazio, salji. Imas moju pisanu dozvolu :))
Samo treba da dodas
Copyright (c)by Amir Zolic 1994. All rights reserved.
I sve ostalo sto ide uz svaki PD/SW software :)))
ZS> Pretpostavljam da znas asembler..
ZS> Cemu sluze nareba POP i PUSH kao i one sto su slicne PUSH-u samo neko
ZS> slovo je izmenjeno ..
Odgovor na ovo je u NET.PC Prog posto nema puno veze sa Pascal-om.
Pozdrav
Amir
... Postoje tri vrste lazi; laz, prokleta laz i statistika.
* Origin: Atlantis BBS 22-05 tel. 3225-548 ■Belgrade■ (38:103/115)
pascal.777duzle,
Paskal, C i ASM source za pusstanje .mod-ova na SoundBlasteru, Covoxu i (!)
zvucniku :). ModOBJ_1.ZIP.
Pozdrav,
Ogi
modobj_1.zippascal.778ognjen,
)-> Neko je ovde pominjao preradivanje programa tako da
)-> radi u grafickom modu. Kako ce to da radi na mom herculesu?
)-> Mislim da je program i bez toga dovoljno spor.
Da li pominjani program radi u tekstualnom modu?
pascal.779postmast,
From: Marko.Milivojevic@p1.f1.n103.z38.setgate.setnet.co.yu (Marko Milivojevic)
Subject: Re: pascal
Date: Sun, 04 Dec 1994 05:19:01
"O> Slusajte pazljivo:
"O> - Kako treba da mi glasi linija pod brojem 2
"O> 1-Startujem neki program iz mog programa
"O> 2-Kad izlazim iz tog nekog programa da se ponovo vrati
"O> u moj program.
Probaj exec funkciju (ili je be{e procedura?)
-=> MM <=-
* Origin: SETNet - Belgrade HUB1 (38:103/1.1)
pascal.780postmast,
From: bebek@setnet.co.yu (Zeljko Stevanovic)
Subject: pascal
Date: Sun, 04 Dec 1994 13:42:11
* Citat: Amir Zolic --> Zeljko Stevanovic
* Tema : pascal
AZ> Copyright (c)by Amir Zolic 1994. All rights reserved.
AZ>
AZ> I sve ostalo sto ide uz svaki PD/SW software :)))
AZ>
Naravno ...
... Zivjeti je vrlo nezdravo. Tko zivi, taj umire.
* Origin: Venik BBS * Smed. Palanka * +381 26 34808 SetNet: (38:103/126)
pascal.781postmast,
From: Robert.Mileski@f108.n108.z38.setgate.setnet.co.yu (Robert Mileski)
Subject: Seriski borj!
Date: Sun, 04 Dec 1994 22:01:00
Zdravo,
Imam jedno pitanje koje je u vezi toga,dali moze Turbo Pascal da procita
seriski broj Hard Diska? Ako je to moguce,molim vas posaljite mi taj program
ovde u SET.PASCAL !
... Everyone has a photographic memory. Some don't have film.
* Origin: Struga BBS +389 96 74074 * Macedonia * SETNet: (38:108/108)
pascal.782postmast,
From: Zoran.Rilak@f125.n103.z38.setgate.setnet.co.yu (Zoran Rilak)
Subject: Re: Konverzija tipova
Date: Mon, 05 Dec 1994 15:42:01
VB> Sta ovde ne valja: ...
VB> var
VB> dd, mm, gg: integer;
VB> datum : longint;
VB> ...
VB> begin
VB> datum := dd + mm*100 + gg*10000
VB> ...
Videh u ovoj konf. poruke na slicnu temu. Problem je u tome sto kompajler
izracunava medjurezultate mm*100 i gg*10000 vodeci racuna ne o tipu lvalue-a,
vec o tipu promenljivih koje figurisu u medjurezultatu. Posto su promenljive mm
i gg intidzeri, a takodje i konstante 100 i 10000, medjurezultati ce biti
smesteni takodje u intidzere, sto dovodi do (logicke) greske rezultata.
Ako ti je potreban (a i jeste ti potreban) dugi intidzer, izvrsi konverziju
tipova "u letu", to jest:
datum := dd + LONGINT (mm) * 100 + LONGINT (gg) * 10000
3OPAH
... Zvrrr... (klik) "Zdravo, Mile, kako... (BIIIIIIIIP) Mile? Sta ti je?"
* Origin: SetNet:Birostroj BBS,NON-STOP,14400bps,011/609945 (38:103/125)
pascal.783postmast,
From: Zoran.Rilak@f125.n103.z38.setgate.setnet.co.yu (Zoran Rilak)
Subject: Re: pascal
Date: Mon, 05 Dec 1994 15:42:02
IN> ...prijavljivao not inaf memori: imam XT sa 640k...
Nisi ni ti jedini. I ja imam XT/8 MHz/640 Kb/32.6 Mb HD/360 Kb FD uf
ostadoh bez daha ali sam imao dovoljno memorije za sve programe/demoe iz
TP6.0. Da li si podesio Link buffer -> Disk i Compile to -> Disk?
P. S. Mene Paskal ne odusevljava, a POGOTOVO ne Turbo Paskal. Ali ako cemo
o tome, bolje da skoknemo do PC.PROG.
3OPAH
... Sueprbrazo kucnje ima svcoje poslefdcie!
* Origin: SetNet:Birostroj BBS,NON-STOP,14400bps,011/609945 (38:103/125)
pascal.784postmast,
From: Zoran.Rilak@f125.n103.z38.setgate.setnet.co.yu (Zoran Rilak)
Subject: Pascal
Date: Mon, 05 Dec 1994 15:42:03
OD> ...ako nekoga interesuje kako da simulira multi-tasking u paskalu...
Vidi, vidi... Pa ovde se pravi operativni sistem! :) Mislio si na multi-
-threading? OK. Samo, za to vam je M2 prava stvar.
3OPAH
... E, izvinite me, ja sada zurim na cas dopunske nastave iz informatike.
* Origin: SetNet:Birostroj BBS,NON-STOP,14400bps,011/609945 (38:103/125)
pascal.785postmast,
From: Zoran.Rilak@f125.n103.z38.setgate.setnet.co.yu (Zoran Rilak)
Subject: M3
Date: Mon, 05 Dec 1994 15:42:04
Neko ovde spomenu Modulu-3? Ja koristim Modulu-2 i odusevljen sam i samim
programskim jezikom i kompajlerom (TopSpeed, razume se ;) ). I ranije sam
cuo za M3, ali tada nisam imao modem... Da li bi neko mogao da mi objasni
(u NET.PCPROG) sustinske razlike izmedju M3 i M2, i da li je M3 produzedak
M2 ili se radi o programskom jeziku potpuno drugacije osnove?
... Brazo kucanje inmad i svoje poslediuce.
* Origin: SetNet:Birostroj BBS,NON-STOP,14400bps,011/609945 (38:103/125)
pascal.786evlad,
>> From: Robert.Mileskičf108.n108.z38.setgate.setnet.co.yu (Robert Mileski)
>> Imam jedno pitanje koje je u vezi toga,dali moze Turbo Pascal da procita
>> seriski broj Hard Diska? Ako je to moguce,molim vas posaljite mi taj
>> program ovde u SET.PASCAL !
Uses
Dos;
Const
EBPB : Array of Byte =
(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
Procedure GetSerialNumber (Drv : Byte);
Begin š GetSerialNumber ć
R.AH := $69;
R.AL := 0;
R.BL := Drv;
R.DS := Seg (EBPB);
R.DX := Ofs (EBPB);
MsDos (R);
if (R.Flags AND $01) <> 0 then
Begin
Era := R.AX;
WriteLn;
Case Era of
1 : WriteLn ('NetWork drive not supported !');
5 : WriteLn ('No extended BPB found on disk !');
15 : WriteLn ('Invalid drive specified !');
Else WriteLn ('Dos error: ', Era);
End; š of case ć
Halt (Era)
End
End; š GetSerialNumber ć
posle izvršenja procedure getserialnumber serijski broj se nalazi:
EBPB Š3Ć
EBPB Š4Ć
EBPB Š5Ć
EBPB Š6Ć
Pozdrav ....
PS. Sorry za yuscii code
pascal.787andrejt,
Q> seriski broj Hard Diska? Ako je to moguce,molim vas posaljite mi taj
Q> program ovde u SET.PASCAL !
Nema potrebe za programom - to je interrupt.
Evo informacija :
┌───────────────────────────────────────────────────────────────────────────┐
│ INT 21,69 - Get/Set Disk Serial Number (Undocumented DOS 4+) │
│ │
│ AH = 69h │
│ AL = 00 get serial number │
│ = 01 set serial number │
│ BL = drive (0 = default, 1=A:, 2 = B:, ... ) │
│ DS:DX = buffer to contain extended BIOS Parameter Block (BPB, AL=0) │
│ = disk information to set of the form: │
│ │
│ Offset Size Description │
│ 00 word info level (zero) │
│ 02 dword disk serial number (binary) │
│ 06 11bytes volume label or "NO NAME " if not present │
│ 11 8bytes filesystem type string "FAT12 " or "FAT16 " │
│ │
│ returns: │
│ CF = set on error │
│ AX = error code if CF set │
│ = 01 network drive not supported │
│ = 05 no extended BPB found on disk │
│ CF = clear if successful and value in AX is destroyed │
│ AL = 00 buffer filled from Extended BPB on disk │
│ = 01 disk Extended BPB updated from buffer │
│ DS:DX = pointer to returned data, when AL = 0 │
│ │
│ │
│ - copies data from Extended BIOS Parameter Block to buffer │
│ - no critical error is generated on error │
│ - does not work on network drives (returns 01) │
└───────────────────────────────────────────────────────────────────────────┘
Dakle pozivas ga sa MsDos(R); - gde je R promenljiva tipa Registers.
(O msdos proceduri i doticnom tipu mozes pogledati u helpu za TP.)
pascal.788janko,
> Begin š GetSerialNumber ć
> EBPB Š6Ć
> PS. Sorry za yuscii code
Vidiš, za razliku od C-a, Paskal su napravili Evropljani, a oni su imali
iste probleme kao i mi. Zato se Paskal i Juski dovoljno slažu da si
mogao to da napišeš tako da ne moraš da se izvinjavaš:
Begin (* GetSerialNumber *)
EBPB (. 6 .)
Tj. umesto uglastih zagrada [ ] se pišu (. .) a umesto vitičastih { }
zagrada se pišu (* *)
I svi srećni.
pascal.789evlad,
>> Vidiš, za razliku od C-a, Paskal su napravili Evropljani, a oni su imali
nisam prepravljao kod, već je bilo cut & paste iz mojih programa ;)
a i žurio sam da čoveku dam odgovor što pre ...
inače da se nadovežem ... (* je 'starije' od š tako da ako imaš neki
kod sa komentarima pisanim sa šć možeš da lako izbaciti sa (* *), a kada
pokušaš šš ćć turbo pascal 'se buni' ...
NHF!
pascal.790omega,
Ţ Nema potrebe za programom - to je interrupt.
Ţ│ INT 21,69 - Get/Set Disk Serial Number (Undocumented DOS 4+) │
^^^^^^^^^^^^^^^^^^^^^^^
I to kakav ;)
pascal.791zeljkoj,
> Ţ│ INT 21,69 - Get/Set Disk Serial Number (Undocumented DOS
> 4+) │ ^^^^^^^^^^^^^^^^^^^^^^^
> I to kakav ;)
To ne treba koristiti. Lako se može dogoditi da se u nekoj od sledećih
verzija DOS-a nešto promeni, i onda jednostavno stari programi koji
koriste taj int. neće raditi.
pascal.792postmast,
From: avram@setnet.co.yu (Sinisa Avram)
Subject: Re: Exec..
Date: Sat, 10 Dec 1994 03:57:14
RM> Dali neko moze da napise jedan mali primer kako koristiti naredbu
RM> 'exec',ali i objasnjenje jer onaj program u HELP-u Turbo Pascal-a
RM> 6.0,ne radi! :(
Evo ti izvod iz helpa:
Exec (procedure) (Dos unit)
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
Executes a specified program with a specified
command line.
Declaration:
procedure Exec(Path, CmdLine: string);
Target:
Real, Protected
Remarks:
Errors are reported in DosError. When
compiling a program that uses Exec, reduce the
"maximum" heap size; otherwise, there won't be
enough memory (DosError = 8).
Sample Code:
{DOSXCODE.PAS}
{ Example for DosExitCode and Exec }
{$M $4000,0,0 } { 16K stack, no heap }
uses Dos;
var
ProgramName, CmdLine: string;
begin
Write('Program to Exec (full path): ');
ReadLn(ProgramName);
Write('Command line to pass to ',
ProgramName, ': ');
ReadLn(CmdLine);
WriteLn('About to Exec...');
SwapVectors;
Exec(ProgramName, CmdLine);
SwapVectors;
WriteLn('...back from Exec');
if DosError <> 0 then{ Error? }
WriteLn('Dos error #', DosError)
else
WriteLn('Exec successful. ',
'Child process exit code = ',
DosExitCode);
end.
Pozdrav,
Avram.
... If it wasn't for C, we would be using BASI, PASAL and OBOL!
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.793postmast,
From: Robert.Mileski@p1.f108.n108.z38.setgate.setnet.co.yu (Robert Mileski)
Subject: Exec komanda.
Date: Tue, 06 Dec 1994 23:50:00
Dali neko moze da mi posalje neki mali programcic kao primer za naredbu
'exec',ali da radi u Turbo Pacal-u 6.0! Onaj primer koji je u HELP-u ne radi,a
ne mogu da odgatnem zasto! Btw,nek progrm bude,recimo startovanje
Autoexec.Bat-a ! Molim vas za malo objasnenja!
MileR,
* Origin: SetNet: *** VEGA BBS*** +389-91-225-280 (38:108/108.1)
pascal.794postmast,
From: Robert.Mileski@f108.n108.z38.setgate.setnet.co.yu (Robert Mileski)
Subject: Exec..
Date: Wed, 07 Dec 1994 09:06:00
Dali neko moze da napise jedan mali primer kako koristiti naredbu 'exec',ali i
objasnjenje jer onaj program u HELP-u Turbo Pascal-a 6.0,ne radi! :(
... Real programmers practice safe HEX.
* Origin: Struga BBS +389 96 74074 * Macedonia * SETNet: (38:108/108)
pascal.795janko,
> inače da se nadovežem ... (* je 'starije' od š tako da ako
> imaš neki kod sa komentarima pisanim sa šć možeš da lako
> izbaciti sa (* *), a kada pokušaš šš ćć turbo pascal 'se
> buni' ...
Tumačenje ti je pogrešno.
Ni jedno od ta dva nije starije. Ako regularno koristiš (* *) onda ćeš i
tekst koji sadrži (* *) moći da "iskomentarišeš" sa { }.
pascal.796bulaja,
│Nema potrebe za programom - to je interrupt.
│
│INT 21,69 - Get/Set Disk Serial Number (Undocumented DOS 4+)
└───
Nema potrebe ni za ovim, sve se može lepo pročitati iz boot sektora.
pascal.797postmast,
From: bebek@setnet.co.yu (Zeljko Stevanovic)
Subject: Exec komanda.
Date: Fri, 09 Dec 1994 10:23:10
* Citat: Robert Mileski --> All
* Tema : Exec komanda.
RM> Dali neko moze da mi posalje neki mali programcic kao primer za
RM> naredbu 'exec',ali da radi u Turbo Pacal-u 6.0! Onaj primer koji je u
RM> HELP-u ne radi,a ne mogu da odgatnem zasto! Btw,nek progrm bude,recimo
RM> startovanje Autoexec.Bat-a ! Molim vas za malo objasnenja!
RM> MileR,
Evo neceg iz knjige TURBO PASCAL 6 kompletan vodic..
Exec [DOS jedinica]
Sintaksa : Procedure Exec(Path, CmdLine: String);
Opis : Exec izvrsava program sadrzan u datoteci navedenoj putanji
Path sa parametrima linije definisanim u komandnoj liniji CmdLine.
Na primer, u narednim programu:
{$M 2000, 0, 0}
Program TestExec;
Uses Dos;
Begin
Exec ('TESTPROG.EXE', 'A B C');
ReadLn;
Exec ('\COMMAND.COM', '');
End.
Prvi Exec iskaz izvrsava program TESTPROG.EXE sa parametrima
A, B, C. Drugi Exec iskaz aktivira Dos-ov COMMAND.COM bez
parametara; cime se kreira DOS okruzenje u okviru kojeg mozemo
startovati druge programe.
----------------------------------------------------------------------------
Pozdrav,
Blue MAGIC
Blue BeBeK
... IBM-PC - Imbecil Bussines Machine - Permanently Craches
* Origin: Venik BBS * Smed. Palanka * +381 26 34808 SetNet: (38:103/126)
pascal.798andrejt,
Q> To ne treba koristiti. Lako se moze dogoditi da se u nekoj od sledecih
Q> verzija DOS-a nesto promeni, i onda jednostavno stari programi koji
Q> koriste taj int. nece raditi.
Cisto sumnjam da bi bas toliko izmenili da ne moze da se koristi -
- pre bi ubacili novi, kao sto su radili sa drugim intovima (npr.
terminate int, tsr int itd.).
pascal.799andrejt,
Q> Dali neko moze da mi posalje neki mali programcic kao primer za naredbu
Q> 'exec',ali da radi u Turbo Pacal-u 6.0! Onaj primer koji je u HELP-u ne
Q> radi,a ne mogu da odgatnem zasto! Btw,nek progrm bude,recimo startovanje
Q> Autoexec.Bat-a ! Molim vas za malo objasnenja!
Da bi execovao .bat program moras da koristis command.com, 4dos.com
ili sta vec koristis i to :
exec(getenv(comspec) + ' /c',ime_bat + parametri);
pascal.800zeljkoj,
> Cisto sumnjam da bi bas toliko izmenili da ne moze da se
Nikad se ne zna...
pascal.801postmast,
From: Vladimir.Bonc@f101.n101.z38.setgate.setnet.co.yu (Vladimir Bonc)
Subject: Re: Konverzija tipova
Date: Wed, 14 Dec 1994 01:08:54
Zoran Rilak > Vladimir Bonc :
VB> Sta ovde ne valja: ...
VB> var
VB> dd, mm, gg: integer;
VB> datum : longint;
VB> ...
VB> begin
VB> datum := dd + mm*100 + gg*10000
VB> ...
ZR>
ZR> Videh u ovoj konf. poruke na slicnu temu. Problem je u tome sto
Pitanje je poteklo od mene, ako nisi pratio od pocetka, kako TP
resava ovakav problem i naveo sam kako je to reseno kod Kick Pascala
koji sam ranije koristio na Amigi.
ZR> kompajler izracunava medjurezultate mm*100 i gg*10000 vodeci racuna ne
ZR> o tipu lvalue-a, vec o tipu promenljivih koje figurisu u
ZR> medjurezultatu. Posto su promenljive mm i gg intidzeri, a takodje i
ZR> konstante 100 i 10000, medjurezultati ce biti smesteni takodje u
ZR> intidzere, sto dovodi do (logicke) greske rezultata. Ako ti je potreban
ZR> (a i jeste ti potreban) dugi intidzer, izvrsi konverziju tipova "u
ZR> letu", to jest:
ZR> datum := dd + LONGINT (mm) * 100 + LONGINT (gg) * 10000
Probao sam ovo, radi ok.
Resenje je slicno, samo sto je kod KP bilo dovoljno prisiliti jedan
clan (tj. koji se racuna prvi) da bude longint.
... Ateist je stanovnik Atine.
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.802mmitrovic,
Ů█▀█Ţ To ne treba koristiti. Lako se može dogoditi da se u nekoj od sledećih
Ů█▀█Ţ verzija DOS-a nešto promeni, i onda jednostavno stari programi koji
Ů█▀█Ţ koriste taj int. neće raditi.
Pa jedina alternativa tome je čitanje BOOT sektora i vađenje serijskog
broja iz njega. Međutim i deo BOOT sektora u kome se nalazi ser. broj je
nedokumentovan i podložan promenama. Van ova dva načina ne može se nikako
otkriti ser. broj. Zato je za očekivati da će Microsoft dokumentovati ovu
funkciju (pre će to učiniti nego što će dokumentovati reserved deo BOOT
sektora) u sledećoj verziji DOS-a (7.0)
pascal.803sbrk,
Da li neko zna nešto o povezivanju TPascala sa C-om preko OBJ fajlova?
Znam da to ranije nije moglo (sa ranijim verzijama TPa), ali skoro čujem od
jednog drugara da je to sada moguće sa Borland Pascalom 7.0 i nekim
Borlandovim Com (mislim da mi je rekao da nije značajna verzija Ca).
Jesi li neko čuo nešto o ovoj mogućnosti? (da Borland Pascal 7.0 ume da
koristi OBJ fajlove koje napravi C kompajler)
pascal.804szeman,
Poznato je da se parametri, koji se prosledjuju programu pisanom u TP,
odvajaju space karakterom, npr.:
PRIMER.EXE Sima 'Pera Petrović'
- paramcount() : 3
- paramstr(0) : C:ĐTP60ĐPRIMERIĐPRIMER.EXE (pun naziv dir-a gde se prog
nalazi)
- paramstr(1) : _Sima_
- paramstr(2) : _'Pera_
- paramstr(3) : _Petrović'_
Kod nekih aplikacija je potrebno precizno navesti ceo string, pa me
zanima gde se u *NEPROMENJENOM* obliku smeštaju parametri koji su prosledjeni
programu, odnosno, celokupna komandna DOS linija posle starovanja programa.
Pozdrav, Saša
pascal.805andrejt,
Q> Kod nekih aplikacija je potrebno precizno navesti ceo string, pa me
Q> zanima gde se u *NEPROMENJENOM* obliku smestaju parametri koji su
Q> prosledjeni programu, odnosno, celokupna komandna DOS linija posle
Q> starovanja programa.
Sve sto ide posle imena programa se nalazi na ofsetu 81h PSPa (127 byteova).
PSP dobijas (npr.) sledecom funkcijom :
*
Function GetPSP : Word;
Var R : Registers;
Begin
R.AH := $62;
MsDos(R);
GetPSP := R.BX;
End;
*
A u string[127] mozes da procitas celi parametar string :
*
Const CR = 13;
Var Param : String[127];
PSP,i : Word;
Begin
Param := '';
PSP := GetPSP;
i := $81;
While (Mem[PSP:i] <> CR) Do
Begin
Param := Param + Chr(Mem[PSP:i]);
Inc(i,1);
End;
End.
*
pascal.806omega,
Ţ otkriti ser. broj. Zato je za ocekivati da ce Microsoft dokumentovati ovu
Ţ funkciju (pre ce to uciniti nego sto ce dokumentovati reserved deo BOOT
Ţ sektora) u sledecoj verziji DOS-a (7.0)
...koja zvanicno nece ni postojati ;)
pascal.807janko,
> Da li neko zna nešto o povezivanju TPascala sa C-om preko
> OBJ fajlova?
>
> Znam da to ranije nije moglo (sa ranijim verzijama TPa),
> ali skoro čujem od jednog drugara da je to sada moguće sa
> Borland Pascalom 7.0 i nekim Borlandovim Com (mislim da mi
> je rekao da nije značajna verzija Ca).
>
> Jesi li neko čuo nešto o ovoj mogućnosti? (da Borland
> Pascal 7.0 ume da koristi OBJ fajlove koje napravi C
> kompajler)
Moglo je od TP 4.0 nadalje, uvek. Ako imate pune instalacije, bacite
malo pogled. TP ume da koristi .OBJ fajlove.
C rutine možete da trpate u TP programe, OBRNUTO je nemoguće jer TP ne
pravi .OBJ-ove od svog koda.
pascal.808vlador,
> Jesi li neko čuo nešto o ovoj mogućnosti? (da Borland Pascal 7.0 ume da
> koristi OBJ fajlove koje napravi C kompajler)
Možda preko DLL fajlova?
---
■ VLADOR ■ Don't pick up that phonž9ôť NO CARRIER
pascal.809szeman,
>> Sve sto ide posle imena programa se nalazi na ofsetu 81h PSPa (127
>> byteova). PSP dobijas (npr.) sledecom funkcijom :
To je ono što mi treba. Tnx.
Pozdrav, Saša
pascal.810postmast,
From: Robert.Mileski@f108.n108.z38.setgate.setnet.co.yu (Robert Mileski)
Subject: Re: Exec..
Date: Thu, 15 Dec 1994 22:39:00
-=> Quoting Sinisa Avram to Robert Mileski <=-
SA> Evo ti izvod iz helpa:
SA>
SA> Exec (procedure) (Dos unit)
SA> ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
Thanks,a dali znass kako mozze da se procita serijski broj diska ?
... If you can't change Yourself, then change the World ***
* Origin: Struga BBS +389 96 74074 * Macedonia * SETNet: (38:108/108)
pascal.811postmast,
From: Robert.Mileski@f108.n108.z38.setgate.setnet.co.yu (Robert Mileski)
Subject: Re: Exec komanda.
Date: Thu, 15 Dec 1994 22:41:01
-=> Quoting Zeljko Stevanovic to Robert Mileski <=-
ZS> Evo neceg iz knjige TURBO PASCAL 6 kompletan vodic..
Hvala ti,uradio sam to.A kako procitati serijski broj diska?
... Documentation - The worst part of programming.
* Origin: Struga BBS +389 96 74074 * Macedonia * SETNet: (38:108/108)
pascal.812srdjanr,
Evo jednog mog, meni zanimljivog, resenja datumskih funkcija
na TURBO PASCAL-u, koje uvazava Gregorijanski kalendar za
sve godine 1..5,000,000 i vise. Mozda ima i boljih resenja,
ali eto, ipak ...
SrdjanR
dates.arjpascal.813sjocic,
Imao bih dva pitanja:
1. Kako u Turbo Pascalu 6, izvesti štampanje datoteke - naime hoću da
posle pitalice štampa d/n, ide direktna štampa fajla. Nije bitno da li da
ide preko dos-ove naredbe ili preko writeln(Lst,fajl).
2. Kako izvesti hot-key, tj. posle pitalice npr. štampa d/n, pritiskom
na 'd' počne štampa bez prethodnog pritiskanja enter tastera.
Unapred hvala na odgovorima.
pascal.814cira,
Poludeh trazeci fajl (mozda i ne postoji) na Sezamu. Radi se o window TPUu
koji je neophodan za rad programa iz RACUNARA 65 (ono o fraktalima). Bio bih
veoma zahvalan da mi neko pokaze put ili doturi taj TPU. Sto hitnije jer
letim sa Sezama 21.12.1994.:(
pascal.815omega,
Ţ C rutine mozete da trpate u TP programe, OBRNUTO je nemoguce jer TP ne
Ţ pravi .OBJ-ove od svog koda.
Da, ali postojao je bese program tpu->obj.
pascal.816dejanr,
>> 2. Kako izvesti hot-key, tj. posle pitalice npr. štampa d/n, pritiskom
>> na 'd' počne štampa bez prethodnog pritiskanja enter tastera.
Umesto da koristiš readln, stavi na početak uses crt pa onda koristi
readkey, u petlji.
pascal.817evlad,
>> Umesto da koristiš readln, stavi na početak uses crt pa onda koristi
>> readkey, u petlji.
A ako ti readkey vrati #0 tada se radi o funkcijskim tasterima i treba
uraditi još jedan redkey. Da ne bi lutao po literaturi evo ti spisak
funkcijskih i alt-tastera ....
F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12
──┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
Norm│ 59 │ 60 │ 61 │ 62 │ 63 │ 64 │ 65 │ 66 │ 67 │ 68 │ 133 │ 134 │
──┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
Shf │ 84 │ 85 │ 86 │ 87 │ 88 │ 89 │ 90 │ 91 │ 92 │ 93 │ 135 │ 136 │
──┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
Ctrl│ 94 │ 95 │ 96 │ 97 │ 98 │ 99 │ 100 │ 101 │ 102 │ 103 │ 137 │ 138 │
──┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┼─────┤
Alt │ 104 │ 105 │ 106 │ 107 │ 108 │ 109 │ 110 │ 111 │ 112 │ 113 │ 139 │ 140 │
──┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┴─────┘
Norm Ctrl
─────┼─────┼─────┤ Alternate Alternate Shift-Tab == 15
Ins │ 82 │ - │ Q == 16 Z == 44 Ctrl-č == 3
─────┼─────┼─────┤ W == 17 X == 45
Del │ 83 │ - │ E == 18 C == 46
─────┼─────┼─────┤ R == 19 V == 47
Home │ 71 │ 119 │ T == 20 B == 48
─────┼─────┼─────┤ Y == 21 N == 49
End │ 79 │ 117 │ U == 22 M == 50
─────┼─────┼─────┤ I == 23 1 == 120
PgUp │ 73 │ 132 │ O == 24 2 == 121
─────┼─────┼─────┤ P == 25 3 == 122
PgDn │ 81 │ 118 │ A == 30 4 == 123
─────┼─────┼─────┤ S == 31 5 == 124
Up │ 72 │ - │ D == 32 6 == 125
─────┼─────┼─────┤ F == 33 7 == 126
Down │ 80 │ - │ G == 34 8 == 127
─────┼─────┼─────┤ H == 35 9 == 128
Left │ 75 │ 115 │ J == 36 0 == 129
─────┼─────┼─────┤ K == 37 - == 130
Right│ 77 │ 116 │ L == 38 = == 131
─────┴─────┴─────┘
pascal.818andrejt,
Q> Thanks,a dali znass kako mozze da se procita serijski broj diska ?
Pre neku poruku, kad sam ja ovde poslao izvod iz PC Helpa o intu
koji to radi, neko je rekao da je to lepse citati iz BOOTa, pa evo
sada opisa BOOTa :
┌────────────────────────────────────────────────────────────────────────────┐
Boot Sector (since DOS 2.0)
Offset Size Description
00 3bytes jump to executable code
03 8bytes OEM name and version
0B word bytes per sector
0D byte sectors per cluster (allocation unit size)
0E word number of reserved sectors (starting at 0)
10 byte number of FAT's on disk
11 word number of root directory entries (directory size)
13 word number of total sectors (0 if partition > 32Mb)
15 byte media descriptor byte
16 word sectors per FAT
18 word sectors per track (DOS 3.0+)
1A word number of heads (DOS 3.0+)
1C word number of hidden sectors (DOS 3.0+)
20 dword (DOS 4+) number of sectors if offset 13 was 0
24 byte (DOS 4+) physical drive number
25 byte (DOS 4+) reserved
26 byte (DOS 4+) signature byte (29h)
27 dword (DOS 4+) volume serial number
2B 11bytes (DOS 4+) volume label
36 8bytes (DOS 4+) reserved
- implementation format not guaranteed in all OEM DOS releases
- BIOS expects a boot sector of 512 bytes
- DOS 3.2 began reading BIOS Parameter Block (BPB) information from
the boot sector, previous versions used only the media byte in FAT
- DOS 4.x added offsets 20-3Dh and offset 20h determines the number
of sectors if offset 13h is zero
- hard disks have a master boot record and partition boot records;
the master boot record and Disk Partition Table (DPT) share the
same sector
└────────────────────────────────────────────────────────────────────────────┘
pascal.819andrejt,
Q> Bio bih veoma zahvalan da mi neko pokaze put ili doturi taj TPU. Sto
Q> hitnije jer letim sa Sezama 21.12.1994.:(
Ako taj neko moze da doturi u conf ili i meni na mail zamolio
bih ga da to i uradi :)
pascal.821mboban,
=-= >> Umesto da koristiš readln, stavi na početak uses crt pa onda koristi
=-= >> readkey, u petlji.
=-=
=-= A ako ti readkey vrati #0 tada se radi o funkcijskim tasterima i treba
=-= uraditi još jedan redkey.
Onda probaj preko Port[$60]. Nešto ovako.
Repeat
If Port[$60]=49 then WriteLn('Izabrali ste slovo N')
Else If Port[$60]=32 then WriteLn('Izabrali ste slovo D');
Until Port[$60]=1; (* Dok se ne pritisne taster Esc *)
S tim što bi mogao da ubaciš neke promenljive za proveru da li je ta
vrednost Porta već aktivna da se ne ponavlja isto.
Da ne tupim, evo spisak vrednosti Porta[$60], za sve tastere
(tenks tu Ognjen :)
The keyboard scan codes. The characters above the boxes are the key legends.
The numbers in the boxes are the scan codes. The codes for F1-F10 are 59-68.
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
Esc 1 2 3 4 5 6 7 8 9 0 - = Backsp NumLock ScrLock
┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐ ┌────┐ ┌────┐ ┌───┐
│1 ││2 ││3 ││4 ││5 ││6 ││7 ││8 ││9 ││10││11││12││13│ │ 14 │ │ 69 │ │70 │
└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘ └────┘ └────┘ └───┘
Tab Q W E R T Y U I O P [ ] Enter Home ^ PgUp -
┌────┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐ ┌────┐ ┌──┐┌──┐┌──┐┌──┐
│ 15 ││16││17││18││19││20││21││22││23││24││25││26││27│ │ 28 │ │71││72││73││74│
└────┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘ │ │ └──┘└──┘└──┘└──┘
Ctrl A S D F G H J K L ; ' ` │ │ <- -> +
┌────┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐│ │ ┌──┐┌──┐┌──┐┌──┐
│ 29 ││30││31││32││33││34││35││36││37││38││39││40││41││ │ │75││76││77││ │
└────┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└────┘ └──┘└──┘└──┘│78│
Shift \ Z X C V B N M , . / Shift * End V PgDn│ │
┌────┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌────┐┌──┐┌──┐┌──┐┌──┐│ │
│ 42 ││43││44││45││46││47││48││49││50││51││52││53││ 54 ││55││79││80││81││ │
└────┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘└────┘└──┘└──┘└──┘└──┘└──┘
Alt Space Bar Caps Lock Ins Del
┌────┐ ┌──────────────────────────────────────────┐ ┌────┐ ┌────┐ ┌────┐
│ 56 │ │ 57 │ │ 58 │ │ 82 │ │ 83 │
└────┘ └──────────────────────────────────────────┘ └────┘ └────┘ └────┘
P.S. Ono <-, ->, ^ i V na numeričkoj tastaturi zamenjuje strelice...
pascal.822evlad,
>> Onda probaj preko PortŠ$60Ć. Nešto ovako.
Ok, samo šta u međuvremenu radi PIC 59-ka na portu $20 ???
Ovo je bitno zbog interrupta 9, koji će prepuniti buffer ako čitaš direktno
sa keyboard kontrolera ... ;)
pascal.823postmast,
From: Arpadffy.Zoltan@f107.n111.z38.setgate.setnet.co.yu (Arpadffy Zoltan)
Subject: Re: pascal
Date: Fri, 09 Dec 1994 12:47:43
Quoting by Mamut
■From:"Predrag Knezevic"
■To :All
■Date:23 Oct 94 23:56:00
■Subj:pascal
"K> From: "Predrag Knezevic" <pedjak@sezam.UUCP>
"K> Newsgroups: yu.prog.pascal
"K> Organization: SEZAM Beograd, 011 648-422
> PASCALU a koji treba da radi pod NOVEL MREzOM.
> Radi se o sledecem : prijateljica ide na visu pedagosku i treba da
> sastavi sledeci program:
> 3) Potrebno je da se na svakom terminalu pojavi pitanje tipa :" broj
> grupe ?" nakon unosenja broja grupe treba da se pojave pitanja te
> grupe.
> 4) Takode treba da postoji mogucnost povratka na pitanje "broj
> grupe?" i izlaska iz programa.
"K>
"K> Pa jednostavno, koliko sam shvatio, startujes napisani program na
"K> svakoj stanici... Program pises najnormalnije kao i za go DOS..
"K> jedino ako program treba da vrsi neke zajednicke obrade rezultata
"K> koji se ukucavaju sa raznih stanica, onda se koriste zajednicke
"K> datoteke u koje se upisuju podaci.
To nije resenje. Pravi mrezni program bi bilo da sa jednog terminala
saljes ostalima.
To se moze postici koriscenjem BINDERY baze.
Pristup bazi je netrivijalan i na niskom nivou, ali sa nekoliko
f() je relativno prosto se moze resiti.
Na raspolaganju.. :-) Zoli
... RAM DISK is NOT an installation procedure!
* Origin: Prometheus BBS - The Northern Frontier - SETNET (38:111/107)
pascal.824postmast,
From: Arpadffy.Zoltan@f107.n111.z38.setgate.setnet.co.yu (Arpadffy Zoltan)
Subject: Re: pascal
Date: Fri, 09 Dec 1994 13:04:55
Quoting by Mamut
■From:"Ognen Duzlevski"
■To :All
■Date:20 Nov 94 12:12:00
■Subj:pascal
"D> From: "Ognen Duzlevski" <duzle@sezam.UUCP>
"D> Newsgroups: yu.prog.pascal
"D> Organization: SEZAM Beograd, 011 648-422
"D> Da li neko ima paskal source (ako nema, moze i samo algoritam)
"D> sledecih metoda za resavanje sistema linearnih jednacina:
Ja imam skoro sve probleme resene sa menijem itd.
Meni je to trebalo na trecoj iz numericke...
Rado cu ti pomoci u svemu, ali ti ne zelim resiti problem,
jer to su elementarne stvari ako se bavis programiranjem
i nikad neces nauciti ako samo prepises.
BTW te metode mozes naci u skoro svakoj knjizi iz numericke
matematike.
cu Zoli
... RAM DISK is NOT an installation procedure!
* Origin: Prometheus BBS - The Northern Frontier - SETNET (38:111/107)
pascal.825postmast,
From: avram@setnet.co.yu (Sinisa Avram)
Subject: Seriski broj
Date: Sun, 18 Dec 1994 00:02:01
RM> Thanks,a dali znass kako mozze da se procita serijski broj diska ?
RM>
Ovu funkciju imas u zadnjim Racunarima u Bajtovima licne prirode.
function GetDiskSerNo:string; {vratice 10 bajtova}
var bbb,i :integer;
srno: array[1..20] of char;
srnostr : string[10];
begin
while port[$1F7] = $50 do { wait for controller not busy}
begin end;
port[$1F6] :=$A0; {Get first drive }
port[$1F7] :=$EC; {Get drive info data }
while port[$1F7] = $58 do { wait for data ready}
begin end;
delay(1000);
for i:=1 to 10 do bbb:=portw[$1F0];
for i:=1 to 5 do
begin
bbb:=portw[$1F0];
srno[2*i-1] :=Chr(Mem[Seg(bbb):Ofs(bbb)+1]);
srno[2*i ] :=Chr(Mem[Seg(bbb):Ofs(bbb)]);
end;
Move(srno,srnostr[1],10);
srnostr[0]:=Chr(10);
GetDiskSerNo := SrNoStr;
end;
Pozdrav,
Avram.
... Who's not with us, he's against us. (Julius Ceasar)
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.826postmast,
From: broker@setnet.co.yu (Predrag Supurovic)
Subject: pascal
Date: Sun, 18 Dec 1994 22:08:00
To: "Sasa Zeman" <szeman@sezam.UUCP>
> Kod nekih aplikacija je potrebno precizno navesti ceo
>string, pa me zanima gde se u *NEPROMENJENOM* obliku smestaju parametri koji
>su prosledjeni programu, odnosno, celokupna komandna DOS linija posle
>starovanja programa.
Ako ti treba da se recimo Pera Peric prosledi kao jedan parametar,
stavi ga pod navodnike, tj. "Pera Peric". DOS sve izmedju navodnika,
bez obzira na SPACE smatra za jedan parametar.
broker
* Origin: Oreska BBS, Uzice = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.828sjocic,
> Umesto da koristiš readln, stavi na početak uses crt pa onda
> koristi readkey, u petlji.
Ok, to radi fino, ali kako direktno iz programa da stampam text file ?
Probao sam sa imefajla:=imefajla+'lpt1';
Exec('c:\dos\copy','ime fajla') ali nece.
Probah i sa Uses Printer, pa Lst:imefajla, ali ne vredi, odstampa
samo naziv datoteke (napominjem da je imefajla:text).
pascal.829inesic,
Ima jedna DOSova eksterna komanda i zove se print. Divna stvar!
Ti joj, kao parametar, daš ime text fajla, a ona sama printa u
pozadini, vodeći računa o tome da li je printer on-line. Štaviše,
moguće je dati celu listu fajlova, pa će print da ih izbaci jedan
po jedan.
Ono što mene zanima je kako da iz paskal programa printu
prosledim argumente - fajlove za štampu. Da li je to moguće
uraditi pomoću exec naredbe i kako da napišem onu $M kompajlersku
direktivu, da ima memorije i za exec naredbu i za gomilu mojih
procedura, koje su takođe memorijski zahtevne?
pascal.830mboban,
=-= Ok, to radi fino, ali kako direktno iz programa da stampam text file ?
=-= Probah i sa Uses Printer, pa Lst:imefajla, ali ne vredi, odstampa
=-= samo naziv datoteke (napominjem da je imefajla:text).
Ja to radim ovako:
Uses Printer;
Var
f:text;
s:string;
Begin
Assign(f,'fajl.txt');
Reset(f);
While not eof(f) do
Begin
ReadLn(f,s);
WriteLn(lst,s);
End;
End.
Gde je fajl.txt fajl kojeg treba odštampati...
pascal.831evlad,
>> Ok, to radi fino, ali kako direktno iz programa da stampam text file ?
Ako imaš ceo pascal instaliran pogledaj lister.pas koji je sa njim 'došao',
tamo ti je sve lepo objašnjeno !!!
konkretno za tp 7.0 je u ĐtpĐexamplesĐlister.pas
pascal.832dejanr,
>> Ok, to radi fino, ali kako direktno iz programa da stampam text file ?
Najjednostavniji (premda ne baš savršen, kada se radi o slikama) način:
var stampa: text;
assign (stampa, 'lpt1');
rewrite (stampa);
writeln (stampa, "Prvi red");
writeln (stampa, a+b, c+d);
itd
close(stampa);
pascal.833dejanr,
>> Ono što mene zanima je kako da iz paskal programa printu
>> prosledim argumente - fajlove za štampu. Da li je to moguće
>> uraditi pomoću exec naredbe i kako da napišem onu $M kompajlersku
>> direktivu, da ima memorije i za exec naredbu i za gomilu mojih
>> procedura, koje su takođe memorijski zahtevne?
Imaš recept za korišćenje EXEC naredbe ovde bar jedno 10 puta u
zadnjih par meseci :), dakle pogledaj starije poruke. Jako ukratko,
staviš {$M 16000,0,0} (ili ne baš 0,0, ako ti programi koriste heap)
i onda sa exec pozoveš command.com i proslediš mu ime komande.
Međutim, PRINT nije dobro pozivati na ovaj način, pošto (pod odgovarajućim
uslovima) ostavlja deo sebe rezidentan u memoriji, što može da napravi haos
(ili bar fragmentiranu memoriju) kada se pozove iz tvog programa. Mnogo je
bolje da sam rešiš štampu, kao što sam opisao u prethodnoj poruci. Ili, ako
baš hoćeš da pozivaš nešto, pozovi COPY /B fajl LPT1.
pascal.834inesic,
> Međutim, PRINT nije dobro pozivati na ovaj način, pošto (pod
> odgovarajućim uslovima) ostavlja deo sebe rezidentan u
> memoriji, što može da napravi haos (ili bar fragmentiranu
> memoriju) kada se pozove iz tvog programa. Mnogo je bolje da
> sam rešiš štampu, kao što sam opisao u prethodnoj poruci. Ili,
> ako baš hoćeš da pozivaš nešto, pozovi COPY /B fajl LPT1.
Ja printa imam skoro uvek instaliranog u memoriji i spreman sam
na kompromis da najpre njega instaliram, pa onda da startujem moj
program. Ne znam kako bih rešio štampu tako da se ona radi u
pozadini, dok moj program čeka neki unos s tastature (ovaj
program koji sam skrpio i onako 90% vremena radi baš to). Imam
dosta za štampu i malo mi je nezgodno da bacam vreme dok unosim
podatke. žini mi se da COPY /B ne ume da radi u pozadini i da će
mi to vreme računar biti mrtav za unos podataka.
pascal.835aleka,
Hi!
Upravo sam naisao na jednu stvar koju ne mogu
da razjasnim,a to je ovo:
FOR X = 0.1 to 1 step 0.1
PRINT X
NEXT X
Izlaz:
.1
.2
.3
.4
.5
.6
.7
.8000001
.9000001
^^^^^
Zbog radi cega su ove nule?
A interesantno je da se to desava samo pri ovom slucaju!
Pozdrav,
Mindza.
P.S.U nadi da ce vasi programerski mozgovi znati da osvetle ovaj slucaj
(Of Course,ako nije restrikcija;))
pascal.836dejanr,
>> žini mi se da COPY /B ne ume da radi u pozadini i da će
>> mi to vreme računar biti mrtav za unos podataka.
To je tačno, nisam primetio da ti je potrebna štampa u pozadini. Onda je
možda print najjednostavnije rešenje, ako ga najpre rezidentno instaliraš.
Alternativa bi bila da praviš "svoj print" koji radi pod interaptom, što je
u datoj prilici verovatno nepotrebno usložnjavanje.
pascal.837vitez.koja,
#=> Probao sam sa imefajla:=imefajla+'lpt1';
#=> Exec('c:\dos\copy','ime fajla') ali nece.
#=> Probah i sa Uses Printer, pa Lst:imefajla, ali ne vredi,
#=> odstampa
Probaj sa exec('c:\dos\copy', 'ime_fajla prn'),
ili još bolje:
uses printer;
f: text;
s: string;
while not eof(f) do begin
readln(f, s);
writeln(lst, s);
end;
pascal.838vgenije,
Kako da iz pascala napravim plaikaciju koja ce kontrolisati rad modema
konkretno da na upucen pozziv modem se javi i posle je sve prica ostalog
dela programa?
pascal.839vgenije,
e vidite gde je ovde bag.Ubi se trazeci ga a ono nece da mi pretrazuje preko
opisa robe?
kese.paspascal.840andrejt,
Q> Kako da iz pascala napravim plaikaciju koja ce kontrolisati rad modema
Q> konkretno da na upucen pozziv modem se javi i posle je sve prica ostalog
Q> dela programa?
Evo ti jednog programa (mozda ga ima na sezamu ali ipak da posaljem)
koji radi sa modemom - mozda nesto korisno mozes da izvuces iz njega.
comm.arjpascal.841zeljkoj,
> program. Ne znam kako bih rešio štampu tako da se ona radi
> u pozadini, dok moj program čeka neki unos s tastature
> (ovaj program koji sam skrpio i onako 90% vremena radi baš
Pa napravi mali multitasking.
:)
pascal.842dejanr,
>> Kako da iz pascala napravim plaikaciju koja ce kontrolisati rad modema
>> konkretno da na upucen pozziv modem se javi i posle je sve prica ostalog
>> dela programa?
Problem, ako hoćeš da ga rešiš ozbiljno, nije ni malo jednostavan. Pročitaj
tekstove Zorana čivotića iz "Računara" 57, 61 i 95. Imaš i primere u
direktorijumu RSOFT, doduše na C-u, ali nadam se da ćeš se snaći.
Naravno, imaš i gotovu biblioteku za rad sa modemom u direktorijumu PASCAL.
pascal.843sjocic,
Kakva je pouzdanost onog programa za očitavanje serijskog broja diska,
naime isti sam testirao na jednom Quantumu od 82 Mb i radi bez problema,
dok kod mene na Conner-u blokira mašinu, jel imao neko slična iskustva?
pascal.844janko,
> Ako ti treba da se recimo Pera Peric prosledi kao jedan
> parametar, stavi ga pod navodnike, tj. "Pera Peric". DOS
> sve izmedju navodnika, bez obzira na SPACE smatra za jedan
> parametar
DOS, koliko ga ja poznajem, nikada nije umeo da bilo šta smatra za bilo
šta. On programu radi samo dve stvari:
- Prosledi nedirnutu komandnu liniju
- Izdvoji dva imena datoteka iz komandne linije BEZ direktorijuma.
(nasledio od CP/M-a).
Sve ostalo rade aplikativni programi.
>> Kod nekih aplikacija je potrebno precizno navesti ceo
>> string, pa me zanima gde se u *NEPROMENJENOM* obliku
>> smestaju parametri koji su prosledjeni programu, odnosno,
>> celokupna komandna DOS linija posle starovanja programa.
Nalaze se u drugih 128 bajtova DOS-ovog PSP (Program Segment Prefix).
Prvi bajt je dužina komandne linije. Ostatak je nedirnuta komandna
linija, BEZ redirekcionih parametara.
pascal.845janko,
> Ono što mene zanima je kako da iz paskal programa
> printu prosledim argumente - fajlove za štampu. Da li
> je to moguće uraditi pomoću exec naredbe i kako da
> napišem onu $M kompajlersku direktivu, da ima memorije i
> za exec naredbu i za gomilu mojih procedura, koje su
> takođe memorijski zahtevne?
Moguće je pomoću exec. Kolka god ti je gomila procedura, malo je
verovatno da ti treba baš 500K za program. Za rad EXEC-a je dovoljno da
imaš oko 60-tak KB slobodno (ako ne pozivaš PRINT iz komandnog
procesora, već direktno).
Međutim, postoji još elegantnije rešenje, koje zahteva malo više posla
(ako nemaš neke gotove biblioteke):
Koristiti DOS funkcije koje obezbeđuje PRINT po instalaciji! Ako umeš da
pozivaš iz višeg prog. jezika DOS interapte, mnogo je zgodno.
---------------------------------------------
INT 2F - Multiplex - DOS 3+ PRINT.COM - INSTALLATION CHECK
AX = 0100h
Return: AL =
00h not installed, OK to install
01h not installed, not OK to install
FFh installed
---------------------------------------------
INT 2F - Multiplex - DOS 3+ PRINT.COM - SUBMIT FILE
AX = 0101h
DS:DX -> packet (see below)
Return: CF set on error
AX = error code
CF clear if successful
AL = 01h added to queue
9Eh now printing
SeeAlso: AX=0102h
Format of submit packet:
Offset Size Description
00h BYTE level (must be 0)
01h DWORD pointer to ASCIZ filename (no wildcards)
---------------------------------------------
INT 2F - Multiplex - DOS 3+ PRINT.COM - REMOVE FILE
AX = 0102h
DS:DX -> ASCIZ file name (wildcards allowed)
Return: CF set on error
AX = error code
SeeAlso: AX=0103h
---------------------------------------------
INT 2F - Multiplex - DOS 3+ PRINT.COM - REMOVE ALL FILES
AX = 0103h
Return: CF set on error
AX = error code
SeeAlso: AX=0102h
---------------------------------------------
INT 2F - Multiplex - DOS 3+ PRINT.COM - HOLD QUEUE/GET STATUS
AX = 0104h
Return: CF set on error
AX = error code
01h function invalid
02h file not found
03h path not found
04h too many open files
05h access denied
08h queue full
09h spooler busy
0Ch name too long
0Fh drive invalid
DX = error count
DS:SI -> print queue (null-string terminated list of 64-byte ASCIZ
file names)
SeeAlso: AX=0105h
---------------------------------------------
INT 2F - Multiplex - DOS 3+ PRINT.COM - RESTART QUEUE
AX = 0105h
Return: CF set on error
AX = error code
SeeAlso: AX=0104h
---------------------------------------------
INT 2F - Multiplex - DOS 3.3+ PRINT.COM - CHECK IF ERROR ON OUTPUT DEVICE
AX = 0106h
Return: CF set on error
AX = error code
DS:SI -> device driver header
CF clear if successful
AX = 0000h
Note: eventually calls device driver for spooled device with request 0Ah,
looping until not busy or timeout
SeeAlso: AX=0104h
---------------------------------------------
I da, ne obraćaj pažnju na to da PRINT navodno "pravi probleme." Ako
njega instaliraš pri dizanju sistema, a posle samo koristiš usluge, ne
bi trebalo da pukne (godinama mi na par mašina radi tako, aplikacije ga
koriste u toku rada, štampanje je non stop u pozadini i sve je OK.)
pascal.846andrejt,
Q> Kakva je pouzdanost onog programa za ocitavanje serijskog broja diska,
Q> naime isti sam testirao na jednom Quantumu od 82 Mb i radi bez problema,
Q> dok kod mene na Conner-u blokira masinu, jel imao neko slicna iskustva?
Jel' moze broj poruke u kojoj je iznet program ?
pascal.847zeljkoj,
> Kako da iz pascala napravim plaikaciju koja ce kontrolisati rad
> modema konkretno da na upucen pozziv modem se javi i posle je
> sve prica ostalog dela programa?
Pa treba ti neka biblioteka. Ima toga ovde na Sezamu.
pascal.848sjocic,
> Jel' moze broj poruke u kojoj je iznet program ?
Ne znam koja poruka bese, mislim da je tekst bio i u racunarima, ali
evo kompletnog sorsa:
Program disk;
Uses Crt;
Function GetDiskSerNo:string; {vratice 10 bajtova}
var bbb,i :integer;
srno: array[1..20] of char;
srnostr : string[10];
begin
while port[$1F7] = $50 do { wait for controller not busy}
begin end;
port[$1F6] :=$A1; {Get first drive }
port[$1F7] :=$EC; {Get drive info data }
while port[$1F7] = $58 do { wait for data ready}
begin end;
delay(1000);
for i:=1 to 10 do bbb:=portw[$1F0];
for i:=1 to 5 do
begin
bbb:=portw[$1F0];
srno[2*i-1] :=Chr(Mem[Seg(bbb):Ofs(bbb)+1]);
srno[2*i ] :=Chr(Mem[Seg(bbb):Ofs(bbb)]);
end;
Move(srno,srnostr[1],10);
srnostr[0]:=Chr(10);
GetDiskSerNo := SrNoStr;
end;
Begin
Writeln(' Serijski broj diska je:',GetDiskSerNo)
end.
pascal.849szeman,
>> Ako ti treba da se recimo Pera Peric prosledi kao jedan parametar,
>> stavi ga pod navodnike, tj. "Pera Peric". DOS sve izmedju navodnika,
>> bez obzira na SPACE smatra za jedan parametar.
Nikako! TP - ova funkcija paramstr() radi na upravo onaj način koji sam
opisao. Rešenje problema je poslao ANDREJT, pa pogledj.
pascal.850vgenije,
E imam ideju(kao i 500 proslih neostvarenih) da napravim simulacuju berze
na racunaru.naravno prilagodenu modemu-da se covek lepo prikljuci
pokupuje,isprodaje itd..
U startu bi imao otprilik1 oko 100 000 bodova
i imao ponudu robew koju nudi moja firma -tj.racunar a kako bi se
igra razvijala korisnici bi sve vise prelazili natransakcije jedni sa drugima
.Pitanje je dali ce ovo upaliti kod sireg auditorijuma-dali ce ljudi igrati
tu igru?
Sto se programerskog stanovista tice mislim da ne bi bilo problema pri
programiranju
ali me zanima i vase misljenje
pozdrav
pascal.851wizard,
> Probaj sa exec('c:\dos\copy', 'ime_fajla prn'),
Ne bih hteo da ti narušavam koncepciju, a možda i nisam u toku, ali zar
copy nije interna komanda DOS-a? :)
pascal.852andrejt,
Q> Ne znam koja poruka bese, mislim da je tekst bio i u racunarima, ali
Q> evo kompletnog sorsa:
Tenks na sorsu. Inace, meni lepo radi. (Western Digital)
pascal.853ognjen,
)-> ali me zanima i vase misljenje
Ne razumam. Kako ti tu zaradjujes? Uzimas neki mali procenat
od transakcija? Onda, treba ubediti firme da je to dobar softver
i korisna mreza, sto znaci da moras da se pomucis sa programom,
pa da imas jos min 10 linija, da je ponuda povoljna, i da je
sistem siguran. U protivnom, firme nece biti zainteresovane.
Ako mislis na neku mini berzu (prodaje na malo) /sto sam
svojevremeno predlagao na sezamu, ali nije naislo na odziv/ to i
nije losa ideja, i mozda i nije tako glupo za realizaciju, ali
treba nesto razjasniti.
Da li bi na taj sistem bilo pretplate (ako da, onda bi trebala
biti simbolicna, a da je u pocetku i nema)? Bilo bi dobro da
svako da koliko para zeli (recimo 100 din) i za to dobije toliko
bodova (100 bodova) i kad nesto hoce da kupi, odbijaju mu se
bodovi, a prenose se na 'racun' prodavca. S tim da ti dobijas
(recimo) 2% od cene, na racun prodavca.
Koliko ja znam, ti se nalazis van Beograda, pa je to jos jedan
neuslov za realizaciju svega toga.
pascal.854andrejt,
Q>> Probaj sa exec('c:\dos\copy', 'ime_fajla prn'),
Q> Ne bih hteo da ti narusavam koncepciju, a mozda i nisam u toku, ali zar
Q> copy nije interna komanda DOS-a? :)
Mozda je mislio (ko god da je) exec(getenv('comspec'),'/c copy ' + ...) ?
pascal.855duzle,
>**> Ja imam skoro sve probleme resene sa menijem itd.
>**> Meni je to trebalo na trecoj iz numericke...
>**>
>**> Rado cu ti pomoci u svemu, ali ti ne zelim resiti problem,
>**> jer to su elementarne stvari ako se bavis programiranjem
>**> i nikad neces nauciti ako samo prepises.
>**>
>**> BTW te metode mozes naci u skoro svakoj knjizi iz numericke
>**> matematike.
:) Hvala na ponudi, ali me nisi shvatio. Znam ja da su sve to elementarne
stvari i imao sam knjige koje su mi potrebne - ali nisam jednostavno imao
vremena. Thx, anyway.
Ogi
pascal.856vgenije,
> (recimo) 2% od cene, na racun prodavca.
>
> Koliko ja znam, ti se nalazis van Beograda, pa je to jos jedan
> neuslov za realizaciju svega toga.
Mozda ste pogresno protimacili poruku-berza bi radila kao door program
besplatno bi se pristupalo i svi bi u pocetku imali isti broj bodova
Ono sto mene zanima je dali bi siri auditorijum bio zainteresovan za ovako
nesto-dali bi igrao igru,inace zarada mi nije u prvom planu,a i da jeste
nemam toliko programerskog staza da bih mogao da prilagodim program firmama
Inace ne vidim razlog zbog cega je neuslov to sto moj pozivni nije 011
vec 026.tel troskovi?
pascal.857inesic,
Zanimljivo. Zahvaljujem. Ako ima neki pointer na neki fajl
prisutan na sezamu, gde ima detalja o ovome, bio bih još više
zahvalan.
pascal.858vgenije,
sto se tice onog programa za stampanje o kome je bilo reci
comanda preko exec comande nece da mi radi zbog malo memorije .
moze li se to resiti pomocu lst komande stim sto kad napisem
writelN(lst,'imefajla');
on odprinta :imefajla
a ako stavim pod neku varijablu tipa string on stampa njeno ime!
ima li resenja(mislim kako izgleda) ako mi varijabla ima vrednost(??)
a:='fajl1' da on odstampa ceo fajl a ne njeno ime.
Malo sam poduze objasnjavao ali se nadam da ce te shvatiti
pozdrav
vlada biskupljanin
pascal.859sjocic,
Hteo bih da napravim rezidentni help, koji bi se recimo pozivao
pritiskom na npr.F5, i koji bi bilo moguce pozvati u toku rada
sa q editorom i iskljuciti isto sa F5.
Dok sam u cistom DOS-u radi Ok, ali se isto ne iskljucuje, naime
treba da se pritiskom na F5 cuje Beep, pojavi tabela, i ponovnim
pritiskom na F5 cuje beep i ukloni ista (u svakom dos okruzenju).
Kako to izvesti ? Unapred hvala na odgovorima :)
---------------------------------------------------
Program okvir;
{BM B800,0,0 }
uses Crt, Dos;
var
KbdIntVec : Procedure;
Radi:boolean;
{BF+}
procedure Keyclick; interrupt;
begin
if Port[B60] = B3F then
begin
sound(5000);
delay(1);
if not(radi) then begin
Window(10,4,70,12);
write('┌───────────────────────────────────────────────────────────┐');
write('│ │');
write('│ │');
write('│ │');
write('│ │');
write('├───────────────────────────────────────────────────────────┤');
write('│ │');
write('└───────────────────────────────────────────────────────────┘');
radi:=true;end;
if radi then begin { Kako izvesti uklanjanje tabele? } end;
Nosound; {-------------------------------}
end;
inline (B9C);
KbdIntVec;
end;
{BF-}
begin
radi:=false;
GetIntVec(B9,Addr(KbdIntVec));
SetIntVec(B9,Addr(Keyclick));
Keep(0);
end.
pascal.860ognjen,
Mozda vam nikada i nece zatrebati dinamicka alokacija memorije:
const max_imena = 30;
type user = record
ime: string[14];
poruka: integer;
end;
var useri: array [1..max_imena] of user;
!!!!!!!!!!!!
Uglavnom, nisam ubacio nikakvu proveru da li je doslo do 30
(max_imena) jer sam smatrao da nema sanse da taj broj ikada dodje
do 30. Ali, posto se uvek nadje neko da testira program do
poslednjih granica, frizirao sam ulazni fajl, tako da ima 42
username-a, da vidim sta ce se desiti, i gle cuda - program bez
greske odradi posao, iako sam rezervisao memoriju samo za 30
usera! Bug? Feature?
pascal.861sjocic,
├> comanda preko exec comande nece da mi radi zbog malo memorije .
├> moze li se to resiti pomocu lst komande stim sto kad napisem
├> writelN(lst,'imefajla');
├> on odprinta :imefajla
├> a ako stavim pod neku varijablu tipa str
Probaj ovako:
Var
Izlaz:text;
red:string;
begin {BM 2000,0,0}
While not( eof(izlaz) )do begin
Readln(izlaz,red); Writeln(lst,red);
end;Close(izlaz);end;
pascal.862janko,
> Zanimljivo. Zahvaljujem. Ako ima neki pointer na
> neki fajl prisutan na sezamu, gde ima detalja o ovome,
> bio bih još više zahvalan.
Da podsetim (i sam sam zaobravio o čemu je reč ;) ) čovek pita o
korišćenju usluga DOS-ovih PRINT funkcija.
U prethodnoj poruci sam ti dao SVE potrebne detalje, ako umeš da pozivaš
DOS fje iz višeg programskog jezika i imaš pristojno znanje o
"iznutricama" kompajlera i asembleru 80x86.
Kao što se videlo, program PRINT koristi tzv. "multiplex" interapt --
interapt koji je MS specijalno predvideo za proširivanje mogućnosti MS
DOS-a. SVI detalji su u prethodnoj poruci.
Ako ne umeš, hmmm... trebalo bi malo da naučiš o procesoru, malo da
konsultuješ literaturu kompajlera kako se pozivaju fje, pa da paziš da
li pozivi i parametri koje ove fje zahtevaju narušavaju konvencije
kompajlera itd.
Ili da daš da ti neko ko zna napravi biblioteku "omotača" tih DOS fja --
ti ih potom koristiš kao da su to najobičnije procedure ili funkcije iz
višeg programskog jezika. Npr. za Kliper sam video da je neko to već bio
uradio. Za Turbo Paskal je moguće napraviti istu stvar.
Prostije rešenje: ništa ti neće faliti i da pozivaš PRINT pomoću EXEC --
razliku u brzini na keširanoj mašini skoro nećeš primetiti, a i tih par
desetina KB možeš uvek da obezbediš.
pascal.863janko,
> var useri: array [1..max_imena] of user;
> !!!!!!!!!!!!
****************
> poslednjih granica, frizirao sam ulazni fajl, tako da ima
> 42 username-a, da vidim sta ce se desiti, i gle cuda -
> program bez greske odradi posao, iako sam rezervisao
> memoriju samo za 30 usera! Bug? Feature?
Slučajnost. Niko ne može ni da pretpostavi kada će ti ovakav program
pući -- čak ni ti. Može svaki put, može ponekad -- zavisi i od toga gde
su ti ostele promenljive zauzele memoriju i sl.
Hoću da kažem, program ti se ponaša tako, da sluša imperativ kojim si
nazvao svoju promenljivu.
pascal.864andrejt,
Q> Kako to izvesti ? Unapred hvala na odgovorima :)
Da ne ulazim u ono sto si poslao ...
Trebas da 'sacuvas' sadrzaj ekrana pre ispisivanja 'tabele'
i da posle samo popunis taj deo ekrana onime sto si 'sacuvao'.
Ja to radim preko video memorije (za text mod) - bilo je pre
nekih poruka o ovome pa pogledaj.
P.S.
Ako ti nije bilo dovoljno jasno pitaj me u mail pa cu
da ti posaljem neko resenje.
pascal.865drpr,
-> if radi then begin { Kako izvesti uklanjanje tabele? } end;
-> Nosound; {-------------------------------}
Koliko ja znam treba da zapamtiš šta je bilo na ekranu pre
pisanja a onda da to ponovo napišeš i nema problema. To možeš
da uradiš tako što ćeš da cimneš deo video memorije i to je to.
To je onako što mi je prvo palo na pamet e sad verovatno ima i
nekih drugih fora.
cope
pascal.866djelovic,
-> if radi then begin { Kako izvesti uklanjanje tabele? } end;
-> Nosound; {-------------------------------}
BC++ ima funkcije gettext i settext za koje prebacuju sadrzaj dela ekrana u
memoriju i vice versa. Proveri da li mozda i BP ima iste funkcije?
pascal.867vgenije,
> Probaj ovako:
> Var
> Izlaz:text;
> red:string;
> begin {BM 2000,0,0}
> While not( eof(izlaz) )do begin
> Readln(izlaz,red); Writeln(lst,red);
> end;Close(izlaz);end;
e nece ni ovako.Pokusacu da blize objasnim problem(mozda cu biti i
dosadan):
u jednom delu programa racunar zove jednu proceduru i varijabli a(inace
tipa string) dodeljuje vrednost 'd51'
u proceduri za stampanje treba da stoji programcwe koje ce da pokrece
stampac da otprinta fajl 'd51' odnosno A
POzdrav i izvinjavam se ako sam naporan ovim naizgled prostim stvarima
pascal.869beast,
>> { Kako izvesti uklanjanje tabele? }
Procedure StoreWindow(x,y,w,h:integer; var p:pointer);
(* x,y - koordinate, w,h - veličina prozora koji se pamti (wide, high) *)
(* Na primer: StoreWindow(1,1,80,25,p) pamti ceo ekran. *)
begin
GetMem(p,w*2*h+8);
asm
dec x
dec y
push ds
lds si,p
mov di,[si]
mov ax,[si+2]
mov es,ax
mov ax,x
stosw
mov ax,y
stosw
mov ax,w
stosw
mov ax,h
stosw
mov ax,y
mov cl,160
mul cl
mov si,x
add si,si
add si,ax
mov ax,SEG @data
mov ds,ax
mov ax,videoseg
mov ds,ax
mov dx,h
@l1: mov bx,si
mov cx,w
rep movsw
mov si,bx
add si,160
dec dx
jnz @l1
pop ds
end;
end;
Procedure RestoreWindow(var p:pointer);
var x,y,h,w:integer;
begin
asm
push ds
mov ax,videoseg
mov es,ax
lds si,p
mov ax,[si]
mov bx,[si+2]
mov ds,bx
mov si,ax
lodsw
mov x,ax
lodsw
mov y,ax
lodsw
mov w,ax
lodsw
mov h,ax
mov ax,y
mov cl,160
mul cl
mov di,x
add di,di
add di,ax
mov dx,h
@l1: mov bx,di
mov cx,w
rep movsw
mov di,bx
add di,160
dec dx
jnz @l1
pop ds
end;
FreeMem(p,w*2*h+8);
end;
Videoseg definiši kao: const VideoSeg:word=$B000 (ili $B800 (VGA i Herc).
Pozdrav, Dejan
pascal.870postmast,
From: markom@setnet.co.yu (Marko Milivojevic)
Subject: Re: pascal
Date: Thu, 22 Dec 1994 14:10:09
-=> Reply to: Predrag Supurovic <=-
PS> Ako ti treba da se recimo Pera Peric prosledi kao jedan parametar,
PS> stavi ga pod navodnike, tj. "Pera Peric". DOS sve izmedju navodnika,
PS> bez obzira na SPACE smatra za jedan parametar.
Probaj ovo bez NDOS-a ili 4DOS-a...
-=> MM <=-
... Ko tebe kamenom, taj te gadja!
* Origin: SETNet - Belgrade HUB1 (38:103/1.1)
pascal.871postmast,
From: broker@setnet.co.yu (Predrag Supurovic)
Subject: Re: pascal
Date: Tue, 27 Dec 1994 21:34:00
> PS> Ako ti treba da se recimo Pera Peric prosledi kao jedan parametar,
> PS> stavi ga pod navodnike, tj. "Pera Peric". DOS sve izmedju navodnika,
> PS> bez obzira na SPACE smatra za jedan parametar.
> Probaj ovo bez NDOS-a ili 4DOS-a...
Ne koristim nijedan od pomenutih. U uputstvu za neki program sam nasao
ovo i isprobao na par programa i radilo je. Medjutim, ne radi sa svakim...
* Origin: Oreska BBS, Uzice = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.872inikolic,
Imam mali problem vezan za ANSI grafiku. Zanima me sta treba da se posalje
preko modema (koji karakter, odnosno ASCIIkod) da bi se kod onog tamo kursor
pozicionirao u gornji levi ugao, pri cemu ne dolazi do brisanja ekrana. Nasto
kao kada bi rekli GoToXT(1,1) , u PASCAL-u. Prijatelj mi je rekao da za to
postoji kod ali ga on ne zna.
HH IVAN
pascal.873andrejt,
Q> posalje preko modema (koji karakter, odnosno ASCIIkod) da bi se kod onog
Q> tamo kursor pozicionirao u gornji levi ugao, pri cemu ne dolazi do
Nije to bas vezano za pascal. Kod je "ESC[1,1H".
pascal.874postmast,
From: markom@setnet.co.yu (Marko Milivojevic)
Subject: Re: pascal
Date: Wed, 28 Dec 1994 07:42:28
-=> Reply to: Predrag Supurovic <=-
PS> Ne koristim nijedan od pomenutih. U uputstvu za neki program sam nasao
PS> ovo i isprobao na par programa i radilo je. Medjutim, ne radi sa
PS> svakim...
To zavisi od programa i kako oni analiziraju komandnu
liniju. Ako naidje na _"_ onda sve do sledeceg _"_ tretira
kao jedan string. U NDOS-u i 4DOS-u je ovo ugradjeno ;-)
-=> MM <=-
... Death is life's way of telling you you've been fired.
* Origin: SETNet - Belgrade HUB1 (38:103/1.1)
pascal.875postmast,
From: markom@setnet.co.yu (Marko Milivojevic)
Subject: Re: pascal
Date: Wed, 28 Dec 1994 07:44:06
-=> Reply to: "Nenad Milenkovic" <=-
NM> Ne bih hteo da ti narusavam koncepciju, a mozda i nisam u toku, ali
NM> zar copy nije interna komanda DOS-a? :)
Jeste i stoga gorepomenuti primer nece raditi ;->
-=> MM <=-
... Nice girl in sight: (G)o, (R)un, (H)urry, (D)o it?
* Origin: SETNet - Belgrade HUB1 (38:103/1.1)
pascal.876zeljkoj,
> pozicionirao u gornji levi ugao, pri cemu ne dolazi do brisanja
> ekrana. Nasto kao kada bi rekli GoToXT(1,1) , u PASCAL-u.
> Prijatelj mi je rekao da za to
Imaš u DOS helpu ANSI sekvence.
Otkucaj help ansi.sys
pascal.877vitez.koja,
#=>> Probaj sa exec('c:\dos\copy', 'ime_fajla prn'),
#=>
#=> Ne bih hteo da ti narušavam koncepciju, a možda i nisam
#=> u toku, ali zar copy nije interna komanda DOS-a? :)
Koliko ja znam, jeste... :) Nešto sam se očigledno bio zabunio,
ali ideja je tu.
pascal.878vitez.koja,
#=> Hteo bih da napravim rezidentni help, koji bi se recimo
#=> pozivao pritiskom na npr.F5, i koji bi bilo moguce
#=> pozvati u toku rada sa q editorom i iskljuciti isto sa
#=> F5.
Ne valja ti metoda... ti ceo help pokušavaš da smestiš u
interapt rutinu, što naravno nije moguće. U okviru procedure
koja opslužuje interapt moguće je odraditi samo veoma
kratkotrajne poslove, tipa klika iz primera (pisanje po disku
je već kritična kategorija).
Programi koji iskaču na pritisak tastera se pišu tako što se u
interapt rutini glavna procedura tog programa proglasi za 'osnovni
zadatak', pa se po završetku interapt rutine izvršava glavna
procedura.
Elem, za pisanje ozbiljnijeg rezidentnog programa je potrebno
više od primera iz helpa... Za početak (a možda i za kraj, jer
malo toga tamo nema) pročitaj tekstove na temu u Računarima.
pascal.879ognjen,
)-> Probaj ovo bez NDOS-a ili 4DOS-a...
Probao 4dos i MSdos 5.0, ni jedan ne radi.
pascal.880postmast,
From: Ivan.Panasiuk@f119.n111.z38.setgate.setnet.co.yu (Ivan Panasiuk)
Subject: luk
Date: Fri, 30 Dec 1994 12:31:18
Treba da povucem luk izmedju dve tacke, s tim da se on moze
menjati. Tj. nesto kao sto imaju najprostiji programi za crtanje:
Obelze se dve tacke i povuce se luk izmedju i onda se moze taj luk
savijati, uvecavati i smanjivati.
Ako je neko radio nesto slicno nek vice.
Vec sam uradio nesto, ali mi izgleda jako primitivno, tako da me
interesuju i ideje ostalih.
Pozdrav [3,14]
* Origin: ECSTASY BBS * Indjija * 022 53 218 * SETNet: (38:111/119)