pascal.308postmast,
From: nemesis@styx.bc.co.yu (NEMESIS)
Subject: RE: ERRORLEVEL
Date: Tue, 21 Nov 95 00:04:00 +0100
---> Ima li neka dobra dusa da mi kaze kako je moguce reci programu sa kojim
errorle
---> velom da se zavrsi?
---> --== NCK ==-- /SBHS/VBC/
ima HALT(X) .. zaustavlja sa X error-om ...
Ima isto nesto i sa EXIT ...
┌────────────────────────────────────────────────────────────────────Ě
│/\■/\ .:NemesiS:. /\■/\ S.T.Y.X BBS /\■/\ ║
│ / > NEMESIS@STYX.BC.CO.YU >:[] / \ 011\444-95-22 - 22-06 < \ ║
ď════════════════════════════════════════════════════════════════════╝
... /\ S.T.Y.X BBS /\ 011\444-95-22 /\ 22-06 /\
* ■ >:[] NemesiS ■
pascal.309postmast,
From: SKOA@vila.bc.co.yu
Subject: pascal
Date: Sun, 19 Nov 95 12:26:32 GMT
-=> Quoting "Vladimir Maric" <vitez.koja@sezam. to All <=-
#=> "V<> Treba mi nesto da iz DOS programa predem u
#=> Windowse. Tj. program "V<> treba da simulira pritisak na
#=> Alt+Tab. Pokusaj sa rutinicom koja simulira pritisak
#=> tastera. Ako je nemas poslacu ti je.
"M<> Zanimljiva ideja, ali mislim da nece da radi. Da li je neko pokusao?
Ne znam da li Hoce da radi ali evo rutine :
uses Dos;
var ReGs : ReGisters;
procedure WriteToKeyBuff(ScanCode, ASCIICode : InteGer);
beGin
ReGs.AH := 05;
ReGs.CH := ScanCode;
ReGs.CL := ASCIICode;
Intr($10, ReGs);
end;
beGin
WriteToKeyBuff($2E, 65);
ReadLn;
end.
Ovo je moja rutina za slanje karaktera i ima isti efekat kao kod
pritiska na taster `A'. Ako ne bude radila kod tebe u proceduri
umjesto `ReGs.CH := ScanCode' stavi `ReGs.CH := ASCIICode', a kad
zoves proceduru umjesto `WriteToKeyBuff($2E, 65)' stavi
`WriteToKeyBuff(65, 65)'.
Kad se proGram izvrsi na ekranu ce ti biti slovo `A'.
Samo trebas saznati ASCII code tastera Alt+Tab.
... Bilo kuda kiki svuda
--- FMail/386 1.02
* Origin: Vila co.BBS ■ Prijedor_RS ■ +381 79 11 301 ■ B.C.: (95:790/113)
pascal.310postmast,
From: SKOA@vila.bc.co.yu
Subject: errorlevel
Date: Wed, 22 Nov 95 11:29:45 GMT
-=> Quoting Nikola.Sivacki%f136.n103.z38@setnet to All <=-
Ni> Ima li neka dobra dusa da mi kaze kako je moguce reci programu sa
Ni> kojim errorlevelom da se zavrsi?
Pokusaj pri izlasku iz programa da stavis
DOSERROR := n; {n = broj errollevela}
Ako radi, nisam siguran :).
... Don't drink&drive, take a joint and fly.
--- FMail/386 1.02
* Origin: Vila co.BBS ■ Prijedor_RS ■ +381 79 11 301 ■ B.C.: (95:790/113)
pascal.311postmast,
From: SKOA@vila.bc.co.yu
Subject: pascal
Date: Wed, 22 Nov 95 11:29:46 GMT
-=> Quoting "Zeljko Jovanovic" <zeljkoj@sezam.U to All <=-
"J<> Kakve su ovo gluposti u vezi BASIC-a?
"J<> Da li ste vas dvojica uopste nekada videli neki dobar BASIC kompajler
"J<> tipa Microsoft Proffessional BASIC-a 7.1 (koji je te, 1990. godine
"J<> zauzimao preko 15 MB (sto ipak govori nesto o kompleksnosti i
"J<> mogucnostima), a mogao je (i jos moze ;) da pravi DOS i OS/2
"J<> programe... Turbo Pascal je bio vrrrlo skromnih mogucnosti u odnosu na
"J<> njega. Da ne pominjem Visual BASIC u izdanjima za DOS i Windows...
"J<> Na kraju, BASIC kao jezik (ne uzimajuci u obzir konkretnu
"J<> implementaciju), je daleko bolji od Pascala.
Mislis ??!?!?!? Koliko zauzima Mb nije vazno, nego je vazno koji
je program userfriendly, shvatas? U paskalu se moze uraditi mnogo,
mnogo, mnogo ... * beskonacnost vise od bejzika. I nije u pitanju
koliko zauzima ... TP6.0 zauzima oko 2 Mb na disku i sam njim se moze
uraditi puno vise nego sa tvojih 15Mb bejzika.
Visual Basic ........ pogledaj DELPHI !!!!
... There is no borders for frendship
--- FMail/386 1.02
* Origin: Vila co.BBS ■ Prijedor_RS ■ +381 79 11 301 ■ B.C.: (95:790/113)
pascal.312postmast,
From: broker@setnet.co.yu (Predrag Supurovic)
Subject: EMS XMS
Date: Mon, 20 Nov 1995 09:07:11
Asmir Badnjevic said:
PS> Pa upravo uz pomoc nekebiblioteke za XMS/EMS. One ti obicno daju
PS> zamene za GetMem i FreeMem, samo stoalociraju memoriju u gornjoj
AB> Kad smo vec kod toGa i to si moGao poslati u mail, ako nije
AB> veliko :). Znas li mozda brze prebacivanje nekoG dijela memoriju u
Ne znam, pogledacu koliko je pa ako je dovoljno mlo, eto ga...
AB> neki druGi dio memorije, recimo da sliku iz pomocne mem. prebacim
AB> na ekran? Koristio sam MOVE komandu iz paskala ali je spora
AB> (dobro, brza je ali ne za moje potrebe) i ne moGu stvoriti efekat
Mislim da ces morati da koristis DMA, a oko toga vec znam vrlo malo.
Bilo jepre nekog vremena reci bas u ovoj konferenciji... Naci ce se
vec neko dati pomogne.
* Origin: Oreska BBS, Uzice = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.313postmast,
From: OGNEN.DUZLEVSKI%f108.n108.z38@setnet.setnet.co.yu (OGNEN DUZLEVSKI)
Subject: Strimovi
Date: Sat, 18 Nov 1995 10:28:00
VS>uses Objects, Drivers;
VS>var s:PDosStream;
VS> ime:PString;
VS>begin
VS> ime^:='Vladimir';
ime := NewStr('Vladimir');
VS> s:=new(PDosStream, Init('text',stCreate));
VS> s^.WriteStr(ime);
VS> s^.Done
VS>end.
ime mozes da unistis sa DisposeStr, a da ga procitas iz stream-a sa
ReadStr.
Ognen
* OLX 2.1 TD * When Rolling Stones are high, are they Rolling Stoned ?
* Origin: SETNet: Struga BBS +389 96 74074 * Macedonia * (38:108/108)
pascal.314postmast,
From: OGNEN.DUZLEVSKI%f108.n108.z38@setnet.setnet.co.yu (OGNEN DUZLEVSKI)
Subject: Turbovizija
Date: Sat, 18 Nov 1995 10:43:00
VS>Naisao sam na jedan problem koristeci turboviziju. Naime, trebalo bi mi
VS>da mi se u jednom prozoru ispise sadrzaj jedne tekstualne datoteke. Pri
VS>tom ne mislim da to bude editor, tj. sadrzaj te datoteke ne sme da se
VS>menja, vec samo da se vidi. U turboviziji postoji objekat TWindow, ali
VS>ne znam kako da u njega upisem sadrzaj datoteke. Unapred hvala.
Napravi naslednika TWindow koji ce kao polje imati TTerminal. Za
TTetminal mozes da zakacis datoteku sa AssignDevice. Experiment a bit.
Ognen
* OLX 2.1 TD * What do you do when your sister glows in the dark ?
* Origin: SETNet: Struga BBS +389 96 74074 * Macedonia * (38:108/108)
pascal.315postmast,
From: OGNEN.DUZLEVSKI%f108.n108.z38@setnet.setnet.co.yu (OGNEN DUZLEVSKI)
Subject: Knjiga Za Objektni Tp
Date: Sat, 18 Nov 1995 10:31:00
MM> Ja sam genije. Shvatio sam pravo resenje za konflikt u
MM> Bosni!!! Svi mi treba da se pomirimo i zivimo lepo kao
MM> ranije. Treba mi neka knjiga iz politike da vidim prakticnu
MM> primenu i najbolje resenje za moj zakljucak.
Mesas babe i zabe a i pricas gluposti.
Ognen
* OLX 2.1 TD * ROBOCOMM - a ROBOCOP for modems.
* Origin: SETNet: Struga BBS +389 96 74074 * Macedonia * (38:108/108)
pascal.316postmast,
From: broker@setnet.co.yu (Predrag Supurovic)
Subject: Strimovi
Date: Mon, 20 Nov 1995 14:52:40
OGNEN DUZLEVSKI to VLADIMIR SVRKOTA about
OD> ime mozes da unistis sa DisposeStr, a da ga procitas iz stream-a sa
OD> ReadStr.
Moze li nesto malo vise o ovim strimovima?
U dokumentaciji od BP ne nadjoh im ni pomena.
Da li je to ugradjeno u sam Paskal ili je neka dodatna biblioteka?
* Origin: Oreska BBS, Uzice = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.317postmast,
From: broker@setnet.co.yu (Predrag Supurovic)
Subject: swap
Date: Mon, 20 Nov 1995 21:15:05
Ima li neko kakav fin unit za swap u DOS shell?
* Origin: Oreska BBS, Uzice = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.318postmast,
From: broker@setnet.co.yu (Predrag Supurovic)
Subject: Zastita programa
Date: Tue, 21 Nov 1995 13:12:16
Dragan Levic said:
PS> Ivan Stamenkovic je u nekim od prvih brojeva Cipa (CHIP), pisao bas
PS> o metodi zastite gotovih exe programa. Dao je cak i TP izvorni kod
PS> necega slicnom PKLite-u.
DL> Da li bi mogao da mi posaljes sta je on to tacno napisao?
Nazalost, poslao sam dezinformaciju. Razgovarao sam sa Ivanom i on
rece da je to sto jeon radio samo mala nadgradnja za PKLITE, i
da je bez PKLITE-a neupotrebljivo. Ne omogucava da se tvoj kod izvrsi
na pocetku nekog EXE-a.
* Origin: Oreska BBS, Uzice = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.319postmast,
From: broker@setnet.co.yu (Predrag Supurovic)
Subject: EMS XMS
Date: Tue, 21 Nov 1995 13:12:17
Asmir Badnjevic said:
PS> Mislim da ces morati da koristis DMA, a oko toga vec znam vrlo malo.
PS> Bilo jepre nekog vremena reci bas u ovoj konferenciji... Naci ce se
PS> vec neko dati pomogne.
AB> Sta ti je DMA? Ako sam i cuo onda sam zaboravio (jesam slozio
AB> recenicu :)))).
Direct Memory Access. Umesto da pises program ili koristis funkcije
za premestanje sadrzaja memorije, taj posao prepustic hardveru.
Samo mu kazes koji memorijski blok gde zelis da bude prebacen.
Posto to radi hardver, trebalo bi da bude mnogo brze od bilo kakvog
programa.
* Origin: Oreska BBS, Uzice = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.320postmast,
From: broker@setnet.co.yu (Predrag Supurovic)
Subject: pascal
Date: Tue, 21 Nov 1995 13:12:25
"Vladimir Maric" said:
"M> razmisljanja (zato sam i poceo recenicu sa "licno"). Uzmimo u
"M> razmatranje neki prost primer, npr. skidanje ANSI sekvenci iz
"M> teksta koji se nalazi u baferu:
"M> while(*text) {
"M> if(*text==ESC)
"M> if(*(text+1)=='[') {
"M> while(!isalpha(*text++));
"M> continue;
"M> }
"M> putch(*text++);
"M> }
"M> U Pascalu oko ovog trivijalnog problema ima mnogo vise da se
"M> mozga, i to ne zbog prirode problema nego zbog prirode jezika.
"M> Demantujte me, napisite krace/logicnije od ovoga u Pascalu. (i u
"M> Cu najverovatnije moze krace, ovo sam napisao iz glave).
Sve je potpuno isto kao i ovo sto si ti napisao samo sto je
druga sintaksa, ako se koristi ASCIZ tip. Ako se koristi
string tip onda je stvar za nijansu drugacija, ali ne mnogo.
* Origin: Oreska BBS, Uzice = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.321postmast,
From: broker@setnet.co.yu (Predrag Supurovic)
Subject: pascal
Date: Tue, 21 Nov 1995 13:12:25
"Zeljko Jovanovic" said:
"J> Na kraju, BASIC kao jezik (ne uzimajuci u obzir konkretnu
"J> implementaciju), je daleko bolji od Pascala.
Vidim da se neko bacio u polemiku s tobom, na osnovu ove i
slicnih izjava.
Ja cu te shvatiti da si samo bacio kosku da nas napalis.
Ako ti je to bio cilj, uspelo ti je :)))))
Sve sto si naveo kao prednosti bejzika su samo naizgled prednosti.
BEJZIK je odlican za one koji ne znaju mnogo o programiranju jer
pola posla zavrsi sam po principu, vazno je da radi a kako radi,
to i nije tako bitno.
Nigde nisi pomenuo optimizovanje koda, efikasnost tipova s kojima
je bejzik u "prednosti" nad visim programskim jezicima, efikasnost
fukcija koje operisu sa takvim tipovima, itd... Ili da pricamo o tome
da su ogranicenja visih programskih jezika u stvari ogranicenja
masine na kojoj su realizovani, a ne programskog jezika. Sve te
"prednosti" su u stvari prevazilazenja ogranicenja masine i nije ih
tesko implementirati u visim programskim jezicima, samo sto je to
uvek naustrb funkcionalnosti (citaj brzine), ili, cesce,
program se jednostavno pise za protected mod.
Bejzik je jezik za decu. On samo spolja dostize vise programske
jezike, ali je u samoj osnovi takav da ne moze da se meri sa
njima.
Razlika izmedju bejzika i visih programskih jezika (moracemo da
uvedemo neku skracenicu za ovo :> ) je u tome sto se u bejziku
nesto napise brzo i lako, a u ovim drugim jezicima je na prvom
mestu da program radi brzo i lako.
Eto, a kad sam pisao ono "bejzik, bljak", pomislio sam da ce
se mozda naci neko da prigovori... :)))))
* Origin: Oreska BBS, Uzice = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.322postmast,
From: Asmir.Badnjevic%p1.f135.n135.z38@setnet.setnet.co.yu (Asmir Badnjevic)
Subject: EMS XMS
Date: Tue, 21 Nov 1995 17:28:41
>> Petar Ristic nekad rece, a ja ga sad citiram <<
PR> Uzmi lepo assembler i uradi scroll. E da, umalo da zaboravim,
PR> obavezno cekaj da mlaz dodje dole, kad scroll-ujes. :)
Pomocu assemblera? U assembleru sam radio vrlo malo a i ono sto
znam nije dovoljno :(.
Da objasnim ...
ucitam mapu sa diska,
stavim je u pomocnu memoriju,
pomocu komande MOVE prebacujem slike, takoreci, trenutno na ekran,
ali ... kod skrolovanja nece da radi tako brzo :(((.
Da objasnim malo skrolovanje ...
kad ucitam mapu ona ide u pomocnu memoriju u promjenljive tipa
array[0..64000] of byte; (koristim 320x200.256 rezoluciju) i sa njima
manipuliram kako hocu ... a kada hocu da skrolujem radim to po slijed
ecem postupku (citaj program)...
uses Dos;
type Maper = Array[1..200, 1..320] of byte;
var P1, P2 : Pointer;
Screen : Maper ABSOLUTE $A000:$0000;
TmpScr : Maper ABSOLUTE $A000:$0001; {jedan bajt desno}
Map1, Map2 : ^Maper; {nisam siguran da li ide "^"}
r, i, j : Integer;
Regs : Registers;
procedure LoadFileMap(FileName : String; WhatPart : Maper);
var F : File;
begin
Assign(F, FileName);
ReSet(F);
BlockRead(F, WhatPart, 500);
Close(F);
end;
begin
Regs.AH := 00; Regs.AL := 19; Intr($10, Regs); {inicijalizuje grafiku
320x200.256}
New(P1); New(P2);
GetMem(P1, 64000); GetMem(P2, 64000);
Map1 := @P1^; Map2 := @P2^; {stavlja Map1 na slobodnu mem.}
LoadFileMap('PICTURE.1', Map1^);
LoadFileMap('PICTURE.2', Map2^);
Move(Map1, Screen, SizeOf(Map1)); {stavlja prvu sliku na ekran}
For i := 1 to 100 do
begin
For j := 1 to 200 do
begin
Move(TmpScr, Screen, SizeOf(TmpScr));
Screen[j, 320] := Map2^[j, 320];
end;
end;
end.
Eto, to je taj program. Nisam siguran da li ce da radi posto sam ga onako
pisao (na herkules karti) ali ja to radim tako, ako si shvatio :))).
Sliku snimi sa BlockWrite(F, $A000:$0000, 500); (ili tako nekako) i onda
probaj program. Ako ne bude radio ,ailuj pa cemo vidjeti, a, ako ti imas
rijesenje u masincu opet mailuj pa cemo vidjeti.
P.S. Unaprijed hvala.
pozdraw, ASKO
... Ko prvi djevojc sam u nju upada !
* Origin: Vila co.BBS # Prijedor_RS # +381 79 11 301 # SETNet: (38:135/135.1)
pascal.323postmast,
From: Asmir.Badnjevic%p1.f135.n135.z38@setnet.setnet.co.yu (Asmir Badnjevic)
Subject: EMS XMS
Date: Tue, 21 Nov 1995 17:28:42
PS> Asmir Badnjevic said:
Pedja said :))
PS> Ne znam, pogledacu koliko je pa ako je dovoljno mlo, eto ga...
Pogledaj :).
PS> Mislim da ces morati da koristis DMA, a oko toga vec znam vrlo malo.
PS> Bilo jepre nekog vremena reci bas u ovoj konferenciji... Naci ce se
PS> vec neko dati pomogne.
DMA, sta je to. Valjda ce se naci, bar se nadam :).
P.S. Ovo sam ti vec pisao ali izgleda da je poruka negdje isparila.
pozdraw, ASKO
... tata vidi .... TAG
* Origin: Vila co.BBS # Prijedor_RS # +381 79 11 301 # SETNet: (38:135/135.1)
pascal.324postmast,
From: vojam@setnet.co.yu (Vojislav Mihailovic)
Subject: Knjiga Za Objektni Tp
Date: Wed, 22 Nov 1995 22:45:06
* U poruci za MARKO MILIVOJEVIC, OGNEN DUZLEVSKI kaze:
OD> MM> Ja sam genije. Shvatio sam pravo resenje za konflikt u
OD> MM> Bosni!!! Svi mi treba da se pomirimo i zivimo lepo kao
OD> MM> ranije. Treba mi neka knjiga iz politike da vidim prakticnu
OD> MM> primenu i najbolje resenje za moj zakljucak.
OD> Mesas babe i zabe a i pricas gluposti.
A i ovo je NET.PASCAL
* Origin: SETNet * BBS Politika, Bgd * +381 11 3229148 * 0-24 (38:103/133)
pascal.325postmast,
From: Vladimir.Svrkota%f119.n111.z38@setnet.setnet.co.yu (Vladimir Svrkota)
Subject: Strimovi
Date: Wed, 22 Nov 1995 15:44:00
OD> ime mozes da unistis sa DisposeStr, a da ga procitas iz stream-a sa
OD> ReadStr.
Kako vidim, strimovi ti nisu strani :). Interesuje me da li je moguce
(mislim da jeste moguce, samo je pitanje kako) snimiti _objekte_ u
strim na disku, a posle te iste ucitati sa diska?
... éí 'aaníígóó 'áhoot'é
* Origin: ECSTASY BBS * Indjija * 022 53-884 * SETNet: (38:111/119)
pascal.326postmast,
From: Vladimir.Svrkota%f119.n111.z38@setnet.setnet.co.yu (Vladimir Svrkota)
Subject: Turbovizija
Date: Wed, 22 Nov 1995 01:11:00
VS>menja, vec samo da se vidi. U turboviziji postoji objekat TWindow, ali
VS>ne znam kako da u njega upisem sadrzaj datoteke. Unapred hvala.
OD> Napravi naslednika TWindow koji ce kao polje imati TTerminal. Za
OD> TTetminal mozes da zakacis datoteku sa AssignDevice. Experiment a bit.
Pa upravo tim putem sam krenuo i - zaglavio se. Ja jesam nasledio TWindow
i u njega ubacio TTerminal, ali problem mi je prenos sadrzaja datoteke u
terminal (uzgred, duzina datoteke u terminalu moze biti max. 64k, koliko
iznosi maksimalni bafer terminala). Dalje, sa AssignDevice sam preusmerio
standardni izlaz (output) na terminal, pa sam sa klasicnim readln citao
liniju iz datoteke i sa writeln je upisivao u terminal. To je, medjutim,
uzasno sporo. Postoji i drugi nacin, a to je pomocu metode StrWrite iz
klase TTerminal. Sintaksa ide ovako:
procedure StrWrite(var S: TextBuf; Count: Byte); virtual;
Ovo bi trebalo da iz bafera S prebaci Count linija teksta u bafer ter-
minala, tj. u sam prozor terminala. E, meni je glavni problem onaj bafer
S. Sta god da na njegovo mesto stavim (pointer, string,...) kompajler
me obraduje jednim Type Mismatch. Sta da radim ?
... éí 'aaníígóó 'áhoot'é
* Origin: ECSTASY BBS * Indjija * 022 53-884 * SETNet: (38:111/119)
pascal.327zeljkoj,
-> #295, postmast> A liste u Basicu si zaboravio... ? ;)
A šta će mi liste kad imam lepe dinamičke nizove? :))
pascal.328zeljkoj,
-> #307, postmast> Nelupaj ...
> U TP mozes da definisheh i STRING duzinine 60Kb :))
Da, ali samo u BP 7.0. :) I to je null-terminated string što znači
da u stringu ne sme da postoji chr(0) karakter.
> A to vezano za BASIC . je smesno ...
> Em sto uzima mnogo MEMORIJE ...
> VELIKO JE ...
> I SPOOOOOOOOOOOOOOOROOOOOOOOOOOOOO !!!!!!!!!
Šta je smešno? Šta zauzima mnogo memorije? Šta je sporo?
> ┌───────────────────────────────────────────────────────────────
> │/\■/\ .:NemesiS:. /\■/\ S.T.Y.X BBS
> /\■/\ ║ │ / > NEMESIS@STYX.BC.CO.YU >:[] / \ 011\444-95-22
> - 22-06 < \ ║
> ď═══════════════════════════════════════════════════════════════
>
> ... /\ S.T.Y.X BBS /\ 011\444-95-22 /\ 22-06 /\
> * ■ >:[] NemesiS ■
Sa ovim bi više mogao da prestaneš.
pascal.329zeljkoj,
-> #311, postmast> Mislis ??!?!?!? Koliko zauzima Mb nije vazno, nego je vazno
> koji je program userfriendly, shvatas? U paskalu se moze
> uraditi mnogo, mnogo, mnogo ... * beskonacnost vise od
> bejzika. I nije u pitanju koliko zauzima ... TP6.0 zauzima oko
> 2 Mb na disku i sam njim se moze uraditi puno vise nego sa
> tvojih 15Mb bejzika.
Naravno da nije bitno koliko zauzima MB.
Samo kažem, da je jedina uporediva verzija TP-a sa BASIC-om, BP 7.0
koji zauzima 30 MB. Već TP 6.0 nema ni delić od PDS-ovih mogućnosti.
pascal.330zeljkoj,
-> #321, postmast> Ja cu te shvatiti da si samo bacio kosku da nas napalis.
> Ako ti je to bio cilj, uspelo ti je :)))))
Ne, nije mi to bio cilj. Pogrešno si shvatio.
> je bejzik u "prednosti" nad visim programskim jezicima,
BASIC je viši programski jezik. :)
> Bejzik je jezik za decu. On samo spolja dostize vise programske
> jezike, ali je u samoj osnovi takav da ne moze da se meri sa
> njima.
Kakvi visokoumni zaključci. :))
BTW, (drugi put): BASIC je viši programski jezik.
> Razlika izmedju bejzika i visih programskih jezika (moracemo da
> uvedemo neku skracenicu za ovo :> ) je u tome sto se u bejziku
Treći put: BASIC je viši programski jezik.
pascal.331dpredovic,
-> #267, maksa> - Šabloni
> - Izuzeci
> - RTTI
Exceptions i RTTI postoje i u pascalu. Doduše ne zove se BP8 nego Delphi,
ali to ne bi trebalo da ima veze.
Opet, u Delphiju šabloni nisu niti potrebni. Sve klase imaju zajednički
koren, pa se sve svodi na običan type-cast.
> Da stvar bude grđa po Pascal, sve ove stvari (a i one koje ti
> pominješ) su u definiciji C++ jezika, dok' su objekti u Pascalu
> (ubr., stoje mu k'o piletu gas-maska ;) Borlandova izmišljotina,
A objekti u C-u izmišljotina nekog šveđanina. Svašta. >;) A kada smo već
kod definicije jezika, koliko je C++ trebalo godina da dobije sve te lepe
stvari sa početka poruke? Dok se usaglase svi ti ANSI/ISO/DIN/JUS komiteji
Borland 16 puta promeni jezik iz korena. :) A da C++ dobije ono što ima
Delphi, prvo ćete morati da ubijete Stroustrupa i pola AT&T-a. :)
Vidi šta se desilo strogo standardizovanim jezicima (fortran, cobol...),
a gde je dogurao basic.
> Zar vas ne zamara da jednim okom čitate uputstvo za Object Oriented
> Pascal, a drugim pratite stanje Borlandovih akcija na berzi?
> Phuuu brate, frka ... pogotovo u ova smutna vremena. ;)
Nemoj misliti da sam neki veliki zaljubljenik u pascal, a još manje u
Borland. C/C++ imaju mnogo časova radnog staža u mom editoru. C mi je još
uvek referenta tačka. Kada učim nov jezik, sve sintaksne strukture prvo
u glavi prevodim u C. Uz C++ sam naučio šta je OOP.
Sa druge strane TP, ne znam koja verzija, je jedan od prvih programa na mom
prvom PC-u. Također, jedan je od prvih programa na kojima sam upotrebio XRD.
Delphi je opet treća priča. Nestandardan jezik koji ima sve što i C++, a i
nešto više - slobodu dizajna koja je potrebna kompajliranom jeziku da postane
nalik interpreteru - Visual Basicu.
Od računara i programiranja leba jedem (a život je kod nas straašno skup),
i potrebno mi je nešto što će mi omogućiti da budem što je moguće
produktivniji. Pod DOS-om to nije bio niti TP niti BC niti MSC nego Clipper,
prilično nestabilan kompajler totalno nestandardnog dijalekta vrlo nesrećno
dizajniranog jezika. Al' što sam se sa njim namlatio para ne mogu da ti se
nahvalim. ;) I niti jednog trenutka se nisam zamislio nad tržišnom sudbinom
tamo nekog Nuntacketa koji ga je napravio. Oni su pukli, Clipper je otkupio CA,
i nikom ništa. A i da ga nije otkupio, pa šta onda? Nemaju valjda kompajleri
link sa Wall Streetom, pa da stupaju u štrajk kada kompanija pukne?
Radio bi on sasvim lepo možda pola godine-godinu dok se ja ne bi prešaltovao
na nešto drugo, a i još mnogo duže, dok god treba da održavam matore programe.
BTW, misliš da će standardizacija C++ da pomogne silnim OWL programerima
kada Borland pukne?
pascal.332postmast,
From: Asmir.Badnjevic%p1.f135.n135.z38@setnet.setnet.co.yu (Asmir Badnjevic)
Subject: EMS XMS
Date: Wed, 22 Nov 1995 16:29:49
PS> Direct Memory Access. Umesto da pises program ili koristis funkcije
PS> za premestanje sadrzaja memorije, taj posao prepustic hardveru.
PS> Samo mu kazes koji memorijski blok gde zelis da bude prebacen.
PS> Posto to radi hardver, trebalo bi da bude mnogo brze od bilo kakvog
PS> programa.
To sve tako divno zvuci :))). Kako to da uradim ??? Je li pomocu
asemblera ?
pozdraw, ASKO
... Sta vredi robijasima sto imaju brojeve kad ne ucestvuju u izvlacenju!!
* Origin: Vila co.BBS # Prijedor_RS # +381 79 11 301 # SETNet: (38:135/135.1)
pascal.333visnja,
-> #267, maksa> - Šabloni
> - Izuzeci
> - RTTI
Ne znam sta su sabloni i RTTI ali PASCAL IMA IZUZETKE, Pogledaj
verziju BP 8.0 poznatiju i kao DELPHI!
> Da stvar bude grđa po Pascal, sve ove stvari (a i one koje ti
> pominješ) su u definiciji C++ jezika, dok' su objekti u Pascalu
> (ubr., stoje mu k'o piletu gas-maska ;) Borlandova
> izmišljotina, i postojaće dok postoji ta firma. Dakle, ulažeš
> vreme i trud da savladaš nešto (paskal sa objektima) čiji
> opstanak i unapređivanje zavisi od razvojne politike jedne
> ugrožene firme, i njenog kotiranja na berzi, spram C++-a koji
> je priznati standard sa lepom sadašnjosti i istom takvom
> perspektivom.
> Zar vas ne zamara da jednim okom čitate uputstvo za Object
> Oriented Pascal, a drugim pratite stanje Borlandovih akcija na
> berzi?
Definiciju koju definisu Ameri za svoje proizvode. Nisu ludi da
definisu PASCAL koji nije Americkog porekla! (apsolutno odobravam)
Zato je Pascal i promenio ime u DELPHI, sada je Americki!
Sto je naravno odlicno. Gledajuci DELPHI nisam siguran da ce da
crkne. Moze samo vlasnika da promeni.
Na kraju krajeva, rekao sam da je C sjajan, i stvarno je u mnogim
primenama ELEGANTNIJI od Pascala. I ko je programer? Onaj koji zna
C ili PASCAL sigurno nije. Znas slova - nisi pismen, moras da
znas i da pises!
I zasto Pascalu ne stoje objekti? Pa C (C++) i Pascal SU ISTI JEZICI.
Razlika je u sintaksi, implementacija raznih algoritma je identicna,
DO..WHILE, FOR, blokovi (sada jesu li {...} ili BEGIN...END)...
Pozdrav, Visnja.
pascal.334visnja,
-> #269, mastermind> ali #27 je konstanta, a chr(27) je funkcija... potrebno je neko
> vreme da on pozove funkciju, i da se vrati posle toga (uz razne
> operacije sa stekom)
Ljudi, nisam gledao na optimizaciju nego cisto na estetiku samog
source-ta
u smislu da lici na C, da bih dokazao da su C i Pascal isti jezici i
da ako se nesto napise u jednom ovako, u drugom moze isto tako...
Implementacija konkretnog algoritma na C-u i Pascalu je slicna, dok
npr. u FORTH-u ne lici ni na jedan od ova dva jezika...
Pozdrav, Visnja.
pascal.335iznogud,
-> #331, dpredovic:: Opet, u Delphiju šabloni nisu niti potrebni. Sve klase imaju zajednički
:: koren, pa se sve svodi na običan type-cast.
A šta ako tvoj objekat treba da bude, recimo, generički kontejner za
sve ostale vrste objekata, pa i onih koji nisu izvorno Delfijevi? Hoće
li i onda da pali type-cast? Jesi li ti nekad koristio šablone?
Po ovoj logici, ni C++-u nisu trebali šabloni, pošto sve može da se
radi sa pointerima, pa onda i kod njega pali 'običan type cast'.
:: BTW, misliš da će standardizacija C++ da pomogne silnim OWL programerima
:: kada Borland pukne?
A kakve veze ima standardizacija jezika za programiranjem pod
Windows-ima? Ako nekom tu treba standard, onda neka uzme MFC - bar tri
kompajlera (BTW, sva tri prave bolji kod od Borlandovog) podržava MFC.
(BTW, da li se nekad budiš oznojen, jer si sanjao ovaj san: 2020-ta je
godina, svi radimo na PowerPC-u na 10 GugolHz, a ti pokušavaš da
prodaš program koji radi pod emulacijom Intela i emulacijom Win31.
Zašto? Pa Borland je puk'o 1997...)
Standardizacija će da pomogne kod prenošenja programa sa platforme na
platformu, i sa kompajlera na kompajler - džaba meni što (recimo)
MSVC 1.5 pravi bolji kod od Borland C++ 4.0, kada to čudo nema
izuzetke. Ili, zamisli situaciju prenošenja neke biblioteke zasnovane
na RTTI-u na unix, gde gcc ne podržava nove ekstenzije C++-a...
Ja znam da ovi argumenti ne vrede baš u temi koja se (uglavnom) bavi
nestandardnim i neprenosivim jezikom, ali znaš kako kaže stara kineska
poslovica: 'ne bacaj kamen na tuđu kuću ako je tvoja od stakla' ;)
pascal.336.sima,
-> #316, postmast║║ Moze li nesto malo vise o ovim strimovima?
║║ U dokumentaciji od BP ne nadjoh im ni pomena.
║║ Da li je to ugradjeno u sam Paskal ili je neka dodatna biblioteka?
Iz BP 7.0:
┌───────┐
│TObject│
└───┬───┘
┌───┴───┐
│TStream│
└───┬───┘
┌────────┼────────┐
┌────┴──────┐ │ ┌──────┴──────┐
│TEmsStream │ │ │TMemoryStream│
└───────────┘ │ └─────────────┘
┌─────┴────┐
│TDosStream│
└─────┬────┘
│
┌─────┴────┐
│TBufStream│
└──────────┘
Pogledaj za sve ove tipove. Korišćenje je više nego jednostavno.
pascal.338.sima,
-> #317, postmast║║ Ima li neko kakav fin unit za swap u DOS shell?
Ne znam da li je fini, ali meni je super radio. Podržana je XMS. Kod
je davno napisan i nije skoro korišćen. Swapuje ceo heap u XMS.
<----------------
{------------------------------------------------------------------------------
}
{ Copyright by Srdjan Simic
}
{ 1993
}
{ <.sima@sezam.co.yu>
}
{ <ss45791d@buefhp.etf.bg.ac.yu>
}
{------------------------------------------------------------------------------
}
{$A+,B-,D+,E-,F-,G+,I+,L+,N+,O-,P-,Q+,R+,S+,T-,V+,X+,Y+}
{$M 2048,0,655360}
uses dos, crt, xms;
procedure SetMemTop(MemTop: Pointer); assembler;
asm
mov BX,MemTop.Word[0]
add BX,15
mov CL,4
shr BX,CL
add BX,MemTop.Word[2]
mov AX,PrefixSeg
sub BX,AX
mov ES,AX
mov AH,4AH
int 21H
end;
procedure shellreal;
var
swaped: boolean;
Max, Total,
handle,
NumPage: word;
velicina: longint;
begin
velicina:=longint(Seg(HeapPtr^))*16+longint(Ofs(HeapPtr^))-longint(Seg(HeapOrg^
))*16;
NumPage:=velicina div 1024;
if NumPage <> velicina /1024
then inc(NumPage);
swaped:=false;
X_QuerryFree(Max,Total);
if X_Installed and(NumPage <= Max)
then
begin
swaped:=true;
X_AllocEMB(NumPage, handle);
with MovRec do
begin
duzina:=velicina;
ZeroS:=0; SPtr:=HeapOrg;
ZeroD:=handle; DPtr:=nil
end;
X_MoveEMB(@MovRec);
SetMemTop(HeapOrg)
end;
{ swapvectors; exec(GetEnv('COMSPEC'),''); swapvectors;}
if swaped
then
begin
SetMemTop(HeapEnd);
with MovRec do
begin
duzina:=velicina;
ZeroS:=handle; SPtr:=nil;
ZeroD:=0; DPtr:=HeapOrg
end;
X_MoveEMB(@MovRec);
X_FreeEMB(handle)
end
end;
var
i: integer;
begin
readkey;
shellreal;
writeln('Gotovo');
end.
Zahteva XMS.PAS. Mislim da je iz xms30.zip. Nije baš za poruku.
pascal.339oper,
-> #331, dpredovic>> Exceptions i RTTI postoje i u pascalu. Doduše ne zove se BP8
>> nego Delphi, ali to ne bi trebalo da ima veze.
Exceptions & RTTI ne postoje u pascalu, već u Delphi-ju. Ni
jedan drugi kompajler ih ne podržava. Kod c++ kompajlera,
stvar je sasvim drugačija. Mada, sve ovo i nema veze, ako u
Delphiju za jedno posle podne mogu da uradim ono za šta mi u
c++ u treba par dana :)
>> Opet, u Delphiju šabloni nisu niti potrebni. Sve klase imaju
>> zajednički koren, pa se sve svodi na običan type-cast.
Ne razumem se mnogo u objektni paskal, ali me interesuje kako
se u njemu postiže sledeća konstrukcija:
template <class T> class Erej
{
T* data;
int size;
public:
Erej(int);
~Erej();
T& operator[](int i) {return data[i]);}
};
void main(void)
{
Erej<int> niz_intova(5);
Erej<char*> niz_stringova(10);
}
žini mi se da ovo, ipak, nije moguće?
pascal.340postmast,
From: ivica@I_should_put_my_domain_in_etc_NNTP_INEWS_DOMAIN (Ivica Nikolic)
Subject: Re: PASCAL
Date: Mon, 27 Nov 1995 11:40:25 GMT
NEMESIS je napisao:
>> TRECA STVAR ....
>> UZMESH I IZBUSIS DISKETU BUSILICOM NA NEKOM MESTU !
>> NEMA LEBA DA NAPRAVI ISTU KOPIJU ...
>> I napravis program koji prilagodjava testiraneje disketi :)))
Eeee, najzad posle gomile suma da i ti napises nesto pametno
Ja sam jos davno razmisljao o takvoj zastiti, jos dok sam pisao neki
program za Amigu. Otprilike, iglom probusis formatiranu disketu na nekom mestu,
onda utvrdis koji su tacno sektori osteceni, i posle u svom programu
povremeno pokusavas da formatiras te sektore, da bi utvrdio da li je
stvarno prisutna originalna disketa. Naravno, treba nekako da budes siguran
da neces unistiti sektore na kojima je snimljeno nesto korisno. Radi
otezavanja posla hakerima, za pristup unistenom sektoru trebalo bi da se
zaobidje BIOS, i da se gadja sam kontroler, sto bi malo zakomplikovalo
zastitu.
Prednosti:
- Prakticno je nemoguce iskopirati takvu disketu, cik da vidim nekog da
probusi disketu tacno na mestu treceg sektora u 76-om cilindru.
- Jeftinije od hardlock-a, i moze se lako uraditi u domacoj radinosti -
od dodatnog hardvera potrebna je samo igla.
Nedostaci:
- Originalna disketa mora da bude u drajvu dok se program koristi.
- Za svaku kopiju programa treba probusiti disketu, videti koji sektori
su osteceni, i onda iskompajlirati svoj program da radi samo sa tom
disketom, i ni sa jednom drugom. Ovaj proces bi mogao da se automatizuje
(osim samog cina busenja diskete), ali bi i dalje to islo presporo za neku
masovniju proizvodnju.
--
Program too big to fit in memory
pascal.341postmast,
From: nemesis@styx.bc.co.yu (NEMESIS)
Subject: RE: SWAP
Date: Sat, 25 Nov 95 01:28:00 +0100
---> Ima li neko kakav fin unit za swap u DOS shell?
Ima ja jedan .. radi SWAP ili na DISK ili na EMS/XMS/..
ALi problem je sto nemam INC file za taj TP ..
A PAS sam slucajno obrisao ...
Ako oces poslacu ti ga ...
┌────────────────────────────────────────────────────────────────────Ě
│/\■/\ .:NemesiS:. /\■/\ S.T.Y.X BBS /\■/\ ║
│ / > NEMESIS@STYX.BC.CO.YU >:[] / \ 011\444-95-22 - 22-06 < \ ║
ď════════════════════════════════════════════════════════════════════╝
... /\ S.T.Y.X BBS /\ 011\444-95-22 /\ 22-06 /\
* ■ >:[] NemesiS ■
pascal.342maksa,
-> #331, dpredovic>> Exceptions i RTTI postoje i u pascalu.
>> Doduše ne zove se BP8 nego Delphi,
Koliko sam shvatio iz Borlandove reklamne kampanje, ("VB Killer",
tako beše?) Delphi je pandan Visual Basic-u, a po onome što čitam vidim
da su i po performansama (kompajliranje i izvršavanje) tu negde.
'Ajmo malo konzistentnije. Ovde se do sada vodila "teorijska rasprava"
(od toga, btw, 'leba nema, al' 'ajde kad se već razgovaramo) o
standardima, a ne o implementacijama.
A ako ćemo baš i o implementacijama... evo ti očigledna prednost
standarda vs. implementacije, odn. poenta onoga što sam 'teo reći:
Mogu da se napišu C++ klase sa izuzecima, šablonima i RTTI-jem
za bilo kakvu konkretnu (inžinjersku, naučnu, knjigovodstvenu ... )
primenu, koje će da rade pod DOS-om (uz malo zezanja i kompromisa i
pod nekim Unix-om) i da se po potrebi presade u Windows ili na Mac-a,
ali *ne može* da se napravi Paskal ekvivalent koji obezbeđuje sve te
lepe nove konstrukcije, a da trči pod oba (ili sva tri) okruženja. Na
pr., tvoja klasa Matrica, (kod koje se pucanje van granica matrice,
ili slučaj Det=0, i slični belaji ... hvataju izuzecima) će u Delphi-ju
raditi samo pod Windows-ima, a u C++-u možeš da je nosaš sa sobom duž
većine hardverskih platformi i operativnih sistema.
>> Opet, u Delphiju šabloni nisu niti potrebni. Sve klase imaju
>> zajednički koren, pa se sve svodi na običan type-cast.
Ovako od ove jedne rečenice se ne čini da je to mehanizam koji
potpuno zamenjuje šablone. Ako bi bio voljan da to malo razjasniš?
Šta ako hoću da mi kontejner sadrži, na pr., funkcije?
Kako bi se preko tog zajedničkog korena, recimo, izveo generički
asocijativni niz?
Šta u Delphi-ju zamenjuje template (ne klase, nego) funkcije?
>> kod definicije jezika, koliko je C++ trebalo godina da dobije
>> sve te lepe stvari sa početka poruke?
Mnogo manje (duplo) nego Wirth-ovom Paskalu. ;)
>> BTW, misliš da će standardizacija C++ da pomogne silnim OWL
>> programerima kada Borland pukne?
OWL programerima najbolje može da pomogne munjevito šaltanje na MFC,
što bi im garantovalo lep život na trenutno tri kompajlera. Ako neko
paranoično (ovo nije ništa loše, nemirna su vremena) ne veruje ni u
jedno od ta dva rešenja, može da odvoji koji mesec i napravi svoje
rudimentarne Windows klase, i tu je C++, što bi DVV rekao, "skoro uvek
sigurna kupovina", baš zahvaljujući standardizaciji i rasprostranjenosti.
Da prekinemo ovo, pošto je "od izvora 'iljadu putića", a i slabo ljubim
ovakve "svete ratove". Samo sam reagovao na neispravnu tvrdnju da "sve
što može C++ može i Paskal", i to još uvek tvrdim. Programiranje je već
duže vreme dovoljno širok pojam, sa dovoljno velikim dijapazonom primena,
i ako se to ne sagleda, dolazi do ovakvih i sličnih nesporazuma i
neslaganja.
pascal.343vitez.koja,
-> #320, postmast#=> From: broker@setnet.co.yu (Predrag Supurovic)
#=> Subject: pascal
#=> Date: Tue, 21 Nov 1995 13:12:25
#=> Sve je potpuno isto kao i ovo sto si ti napisao samo sto
#=> je druga sintaksa, ako se koristi ASCIZ tip.
Ako koristiš pointere i ASCIIZ tip (pchar ili neki tvoj,
svejedno), nema potrebe da pišeš u Pascalu, jer je C jezik za
tebe.
pascal.344icile,
-> #229, zeljkoj
Dobro, a cemu sluze ti stringovi od 32K. Da li je to navedeno samo kao 'pa,
eto ima i to pored svega' ili kao neka ozbiljna prednost koja se ispoljava u
programiranju.
Naravno da je bolja obavezna deklaracija promenljivih jer to daje nakakvu
preglednost programu. Ako toga nema, otkud znam sta sam u programu upotrebio
kao imena promenljivih? To je narocito znacajno ako neki program pises, pa
posle odredjenog vremena (kad sve zaboravis) hoces da ga dopunis. Kako ces
znati sta ti znaci svako od imena promenljivih?
Meni je bilo zanimljivo nesto sto je neki covek rekao o Bejziku i ostalim
(boljim programskim jezicima, u koje ubrajam i Pascal):
"Kada resavate neki problem u nekom programskom jeziku (normalnom) mozete
u potpunosti da se posvetite resavanju tog problema, dok u Bejziku morate da
razmisljate na koji nacin je to moguce implementirati."
pascal.345icile,
-> #230, zeljkoj-> Deklarisanje promenljivih mozda jeste korisno, ali je strasno zamorno.
-> Uostalom, postoji OPTION EXPLICIT, pa mozes da biras. :)
Postoji mnogo glupih komandi koje je potrebno zadati tom Bejzik kompajleru
da bi ozbiljan programer bio zadovoljan njegovim radom. Zar OVO nije zamorno?
pascal.346icile,
-> #251, jablan-> zato paskal sluzi i u edukativne svrhe. E sad, stvar je kompajlera
-> kako ce ovo prevesti i da li ce C biti brzi nego paskal. Optimizacija
-> u 90% slucajeva na sadasnjim masinama nije toliko bitna.
Hm, pre nekoliko godina sam gledao neki program koji sljaka sa vektorskom
grafikom i, covek je napravio verziju na Paskalu i ekvivalent na C-u. Posto je
program sporo radio, covek je merio koji je program brzi za istu radnju.
Ispostavilo se, na njegovo iznenadjenje, da je brze radio ovaj u Paskalu!
Verovatno se radilo o Borlandovim Turbo jezicima, pa je Turbo Pascal, omiljeno
Borlandovo cedo, mnogo bolje uradjen od njegovih ostalih kompajlera. Da ne
pricam o kodu, koji je bio znatno kraci, ali ... ko jos to sad gleda.
pascal.347icile,
-> #244, zeljkojA, ima li taj fantasticni Bejzik nesto tipa record na Paskalu ili strukture
na C-u??
pascal.348icile,
-> #219, dr.urbano-> Zna li neko kako mogu da procitam ime diskete ? (vrlo je hitno)
Pa, citas ga normalno kao ime fajla, samo ime diskete ima poseban atribut.
Probaj sa parom funkcija FindFirst, FindNext. Pogledaj primere u Help-u i sve
ce ti biti jasno.
pascal.349postmast,
From: ivica@galeb.etf.bg.ac.yu (Ivica Nikolic)
Subject: Re: pascal
Date: Wed, 29 Nov 1995 14:25:21 GMT
Zeljko Jovanovic je napisao:
>> > A liste u Basicu si zaboravio... ? ;)
>> A sta ce mi liste kad imam lepe dinamicke nizove? :))
Da sam na tvom mestu, posle ove izjave bih odmah prodao modem, kompjuter,
frljnuo indeks u kontejner, i otiso ispred Vuka da trazim posao.
--
D Break, CONT repeats
pascal.350postmast,
From: ivica@galeb.etf.bg.ac.yu (Ivica Nikolic)
Subject: Re: pascal
Date: Wed, 29 Nov 1995 14:54:25 GMT
Milos Visnjic je napisao:
>> Evo DIREKTNOG prevoda C programa na PASCAL, TEXT je terminisan nulom,
>> dakle
>> ide do 65535 (ili nesto manje) karaktera, cak i vise ako se program
>> prevede
>> u PROTECTED rezimu, upotrebio sam nezgrapne skupove (IN !), jer sam
>> pre par
>> poruka rekao da i PASCAL ima ISALPHA! E pa nije bas tacno, ima
>> ISCHARALPHA
>> funkciju koja je ekvivalent, ali ta funkcija je u WINPROCS unit-u,
>> dakle
......
>> Konkurencija kaze: (izvod iz BorlandPascal HELP-a)
>> FormatStr procedure (DRIVERS unit)
>>
>> Declaration:
>> procedure FormatStr(var Result: String; Format: String; var
>> Params);
>> Function: ovo gledaj \/ \/ \/ \/ \/
>> A generalized string formatting routine that works much like the C
.....
>> SEM PREOPTERECENJA OPERATORA i visestrukog nasledjivanja ( A da vidim
>> ko
>> koristi visestruko nasledjivanje sem u RTL-u), nema toga sto C++ moze
>> a
>> Pascal ne MOZE!
I sta si time dokazao? Da Pascal moze sve sto moze i C++? Onda nisi
morao toliko da pises, svaki programski jezik moze sve sto moze i C++, ali
nije u tome sustina problema. Ti si zapravo dokazao da je Pascal bio
neupotrebljiv za efektivno programiranje (za sta uostalom nije ni
izmisljen), dok na njega nisu nakalemljene brojne ekstenzije preuzete
direktno iz C(++)-a i Module.
Ne, nisam ja nikav Pascalomrzac, mnogo sam kilobajta sorsa napisao u
Turbo Pascalu, ali jednog trenutka sam video da se 95% mojih Pascal programa
sastoji od budzevina koje nisu deo standardnog Pascala. Samim tim, moji
Pascal programi su bili neportabilni, cak su postali zavisni i od verzije
Turbo Pascala u kojoj su pisani. S druge strane, C i C++ su strogo
standardizovani jezici, njihova sintaksa i semantika uopste ne zavise od
implementacije (sa izuzetkom Borlandovih DDVT u OWL 1.x, koja je ionako
zstarela), takodje i standardna biblioteka funkcija.
Posto su skoro sve "budzevine" u Pascal prenesene iz C(++)-a, logicno je
da je u C(++)-u njihovo koriscenje mnogo prirodnije uklopljeno u samu
filozofiju jezika. Cim pocnes da pises malo veci program, takve sitne
neprirodnosti pocinju da zuljaju, i pocinju da uticu na samu strukturu
programa.
Jos jedna stvarcica koju i danas ne mogu da oprostim Pascalu je
nemogucnost da funkcija vrati vrednost koja nije osnovnog tipa (Integer,
String, Boolean...).
1992. sam poceo da na Amigi pisem prilicno veliki program za titlovanje.
Poceo sam ga u HiSoft Pascalu, koji je neka vrsta TP klona za Amigu.
Taj Pascal je, naravno, podrzavao i Amigine sistemske pozive - formalno nije
bilo nikakvih prepreka da se ceo projekat izgura u njemu. E, onda su poceli
da se gomilaju problemi: prvo, nema staticke inicijalizacije, sve
promenljive moraju da se inicijalizuju pomocu := operatora.
Zero-terminted stringovi nisu podrzani u funkcijama za rad sa stringovima,
nema pointerske aritmetike...
Onda mi je do ruku dosao jedan udzbenik za C, i video sam da najvise
vremena trosim na zadovoljavanje Pascal-ovih sintaksnih hirova, koji su u
originalnoj Pascalovoj filozofiji bili sasvim opravdani.
I tako sam ja lepo naucio C, i ceo projekt uradio u Aztec C-u.
Da rezimiram, pre nego sto se potpuno rasplinem: sve frizirane verzije
Pascala omogucuju da se u Pascalu pisu C(++) programi. Verujte mi na rec,
C(++) programi se mnogo bolje pisu u C(++)-u.
--
Program too big to fit in memory
pascal.351postmast,
From: mladen.adamovic@blbbs.elf.bl.ac.yu (MLADEN ADAMOVIC)
Subject: Re: pascal
Date: Sun, 26 Nov 95 20:13:00 -1
-+=+- Dejan Jelovic rece : -+=+-
DJ> A da optimizacija nije bitna... Pa sad, ja drzim da je rucna
DJ> optimizacija cak stetna, ali ona koju radi kompajler? Razlika sa i bez
DJ> nje je drrrasticna.
Ja mislim da prepirka da li je bolje optimizovan BORLAND C i BORLAND
PASCAL manje-vise nebitna. Algoritamski program treba da bude optimizovan,
a ostalo moze da dovede do ubrzanja programa najvise desetak puta,
sto uglavnom nije toliko bitno...
... Newtonov slabo poznati sedmi zakon : Bolje vrabac u ruci nego iznad gl
___ Blue Wave/QWK v2.12
pascal.352postmast,
From: mladen.adamovic@blbbs.elf.bl.ac.yu (MLADEN ADAMOVIC)
Subject: RE: PASCAL
Date: Sun, 26 Nov 95 20:42:00 -1
-+=+- Nemesis rece : -+=+-
Ne> UZMESH I IZBUSIS DISKETU BUSILICOM NA NEKOM MESTU !
Istim su se zanimali Sezamovci pre par godina i shvatili su da busilica
nije potrebna - dovoljno je samo malo bocnuti iglom, ako ne zelite
MNOOOOOGO losih sektora :).
... XjhgwaduiwueoqimnBDDDDKJSBMN! <--Tag created on Pentium
___ Blue Wave/QWK v2.12
pascal.353postmast,
From: srdjan.dakic@panon.ns.ac.yu (Srdjan Dakic)
Subject: Re: pascal
Date: Wed, 22 Nov 1995 14:40:00 GMT
--> From: "Dejan Jelovic" <djelovic@sezam.UUCP>
DJ> > Licno mislim da su oba pomenuta jezika slabija od Ca (basic
DJ> > mi je suvise mrljav, pascal suvise krut)
DJ> Licno mi se cini da su C i Pascal (ili Modula-2, nije bitno) funkcional
DJ> identicni, s tim sto Pascal ipak ima daleko citljiviju sintaksu, plus nema
DJ> perverzne operatore koji danas uz optimizujuce kompajlere ionako vise nisu
DJ> bitni.
Ako cemo do citljivosti, onda je M2 najcitljivija bas zbog preterivanja
u doslednosti sa Virtovim zamislima vizuelno lepog sourcea. ;)
Meni se licno cini da Pascal ima vise apstrakcije od C-a (i M2 sa
nestandardnim -- citaj: uobicajenim -- bibliotekama) Pogledaj samo
rad sa fajlovima.
C mu vise dodje preprocesor za asembler, sto sa opmizujucim kompajlerima
koje pominjes, svakim danom postaje sve tacnije.
pascal.354zeljkoj,
-> #344, icile> Dobro, a cemu sluze ti stringovi od 32K. Da li je to navedeno
> samo kao 'pa, eto ima i to pored svega' ili kao neka ozbiljna
> prednost koja se ispoljava u programiranju.
Na primer, često mi treba da tekstualnu datoteku sa jaaaaaako velikim
redovima učitam u niz i onda obradjujem. U BASIC-u svaki taj red može
biti velik 32 kB a niz može zauzimati CELU raspoloživu memoriju.
> Naravno da je bolja obavezna deklaracija promenljivih jer to
> daje nakakvu preglednost programu. Ako toga nema, otkud znam
> sta sam u programu upotrebio kao imena promenljivih? To je
> narocito znacajno ako neki program pises, pa
Ako baš voliš možeš da staviš OPTION EXPLICIT pa će te BASIC terati da
deklarišeš svaku promenljivu. :)
> dopunis. Kako ces znati sta ti znaci svako od imena
> promenljivih?
Vidi se po imenu promenljive.
> Meni je bilo zanimljivo nesto sto je neki covek rekao o Bejziku
> i ostalim (boljim programskim jezicima, u koje ubrajam i
> Pascal): "Kada resavate neki problem u nekom programskom jeziku
> (normalnom) mozete u potpunosti da se posvetite resavanju tog
> problema, dok u Bejziku morate da razmisljate na koji nacin je
> to moguce implementirati."
Upravo je obrnuta stvar. Sve što zamisliš, u BASIC-u već postoji i samo
ga treba upotrebiti, dok ako radiš u Pascalu prvo treba smisliti kako
pomoću stvari koje ti stoje na raspolaganju to da uradiš. Plus što je
Pascal previše 'krut' i tera te da o čitavom problemu razmišljaš imajući
sam jezik u vidu. Suviše se i vremena i prostora troši na razne deklaracije,
begin/end-ove, uopšte stvari koje nisu od samog značaja za rešenje problema.
Navedi primer nekog problema koji ćeš ti u Pascalu brzo i lako rešiti, a
ja u BASIC-u prvo treba 'da razmislim o načinu na koji ću to implementirati'.
Tvrdim da ne postoji ni jedan jedini takav problem. Naravno, postoji mnooogo
stvari oko kojih ćeš se, pišući ih u Pascalu, dobro namučiti, a koje se u
BASIC-u brzo i elegantno rešavaju.
BASIC programeru daje veliku slobodu što se tiče samog stila pisanja programa.
Recimo da imam promenljivu MikaPeraLaza. Ako je ne deklarišem, ona je po
defaultu tipa SINGLE (single precision floating-point). Recimo da želim da
ona bude tipa INTEGER. Najjednostavnije je da umesto identifikatora
MikaPeraLaza pišem MikaPeraLaza%. Ono % na kraju znači da je promenljiva
tipa INTEGER. Recimo da želim da obavezno deklarišem svaku promenljivu i
napisao sam OPTION EXPLICIT na početku programa. U tom slučaju ću promenljivu
deklarisati sa DIM MikaPeraLaza%. Ali - šta ako želim da se promenljiva zove
samo MikaPeraLaza bez onog % na kraju, a da ipak bude tipa INTEGER? Napisaću
DIM MikaPeraLaza AS INTEGER. Šta ako želim da sve promenljive koje počinju
slovom M, kao i slovima A, B, C, D budu INTEGER? Jednostavno ću ih implicitno
deklarisati sa DEFINT A-D, M. Dalje, promenljivu je moguće proglasiti za
globalnu u modulu u kome je definisana korišćenjem DIM SHARED umesto samo
DIM. Ako želim da bude globalna za sve module, koristiću COMMON SHARED, itd.
Recimo da imam dinamički niz koji je (negde u programu, ne mora na početku)
deklarisan kao DIM Niz(10000) AS STRING (koji je BTW, mogao biti deklarisan
i sa DIM Niz$(10000) ili npr. sa DIM Niz$(0 TO 10000), i u toku izvršavanja
programa vidim da je ono 10000 suviše malo. Jednostavno ću sa
REDIM PRESERVE Niz(20000) AS STRING povećati njegovu veličinu na 20000
pri tom sačuvavši postojeće podatke. Liste su u BASIC-u sasvim nepotrebne.
Naravno - veličina niza ne mora biti poznata pri pisanju programa. Može
se (negde u programu) napisati INPUT A%: DIM Niz(A%), što je u Pascalu
nezamislivo.
Itd, itd... moglo bi tu još mnoogo da se priča. :)
pascal.355zeljkoj,
-> #345, icile> -> Deklarisanje promenljivih mozda jeste korisno, ali je
> strasno zamorno. -> Uostalom, postoji OPTION EXPLICIT, pa mozes
> da biras. :)
>
> Postoji mnogo glupih komandi koje je potrebno zadati tom Bejzik
> kompajleru da bi ozbiljan programer bio zadovoljan njegovim
> radom. Zar OVO nije zamorno?
Teško ti je da jedanput napišeš OPTION EXPLICIT? Ok, niko te ne tera. To je
samo
ukoliko čELIŠ da te kompajler TERA da deklarišeš promenljive. Možeš
ih deklarisati i bez toga, a ne moraš ih uopšte ni deklarisati.
Mnogo je više zamorno za svaku promenljivu pisati var xyz: tip;
pascal.356zeljkoj,
-> #347, icile> A, ima li taj fantasticni Bejzik nesto tipa record na Paskalu
> ili strukture na C-u??
Naravno da ima. BASIC sve ima. :)
Evo malog primera (da ne objašnjavam, shvatićeš o čemu se radi):
TYPE PodaciORadnicima
Ime AS STRING*20
Prezime AS STRING*30
GodinaRodjenja AS INTEGER
Plata AS DOUBLE
END TYPE
Onda lepo deklarišeš promenljivu sa npr. DIM xyz AS PodaciORadnicima
pascal.357zeljkoj,
-> #349, postmast> Da sam na tvom mestu, posle ove izjave bih odmah prodao modem,
> kompjuter, frljnuo indeks u kontejner, i otiso ispred Vuka da
> trazim posao.
Ali - nisi na mom mestu. :)
> --
> D Break, CONT repeats
--
C Nonsense in BASIC
pascal.358dvesic,
-> #354, zeljkoj> Upravo je obrnuta stvar. Sve što zamisliš, u BASIC-u već
> postoji i samo ga treba upotrebiti, dok ako radiš u Pascalu
> prvo treba smisliti kako pomoću stvari koje ti stoje na
> raspolaganju to da uradiš. Plus što je
Aman, dogovori se vec jednom pricamo li o IMPLEMENTACIJI ili o
samom jeziku ? Tesko da u standardnom Basic-u ima sve sto postoji.
> Naravno - veličina niza ne mora biti poznata pri pisanju
> programa. Može se (negde u programu) napisati INPUT A%: DIM
> Niz(A%), što je u Pascalu nezamislivo.
Nije bas nezamislivo, nego se moras petljati sa pokazivacima :)
> BASIC programeru daje veliku slobodu što se tiče samog stila
> pisanja programa.
U kom smislu ? Nista manju slobodu ne daje ni Pascal.
> ona bude tipa INTEGER. Najjednostavnije je da umesto
> identifikatora MikaPeraLaza pišem MikaPeraLaza%. Ono % na kraju
> znači da je promenljiva
A sto je to elegantnije od jednog Integer MikaPeraLaza ?
pascal.359dvesic,
-> #355, zeljkoj> Mnogo je više zamorno za svaku promenljivu pisati var xyz: tip;
Mislis :
Var MikaPeraLaza,
IovoJeCeoBroj,
AiOvo : Integer;
Nije tako strasno, zar ne ?
> CONF JOIN PC.PROG.6
> CONF REPLY 7.356
>
> Naravno da ima. BASIC sve ima. :)
> Evo malog primera (da ne objašnjavam, shvatićeš o čemu se
> radi):
Ne vredi. Ti i dalje pricas o implementaciji. Ovo NIJE
standardni BASIC.
pascal.360vasic,
-> #327, zeljkoj> A šta će mi liste kad imam lepe dinamičke nizove? :))
Dobro, Genije, objasni nam kako se uklanja element iz sredine lepog
dinamičkog niza?
pascal.361zeljkoj,
-> #358, dvesic> Aman, dogovori se vec jednom pricamo li o IMPLEMENTACIJI ili o
> samom jeziku ? Tesko da u standardnom Basic-u ima sve sto
Rekli smo: BP 7.0 vs MS QBX PDS 7.1.
> A sto je to elegantnije od jednog Integer MikaPeraLaza ?
Da. Uvek se vidi kog je tipa promenljiva, a ne moraš svaki čas da gledaš
po deklaracijama.
pascal.362zeljkoj,
-> #359, dvesic> Ne vredi. Ti i dalje pricas o implementaciji. Ovo NIJE
> standardni BASIC.
Nisu ni null-terminated stringovi (o kojima je bilo reči) standardni
Pascal. Dakle, pričamo o konkretnim implementacijama. Standarde smo
samo malo pominjali na početku diskusije. :)
pascal.363zeljkoj,
-> #360, vasic> Dobro, Genije, objasni nam kako se uklanja element iz sredine
> lepog dinamičkog niza?
Na primer, ako treba ukloniti n-ti element niz Niz (koji recimo ima x
elemenata):
DIM PomocniNiz(x - n)
b = 0
FOR a = n + 1 TO x
PomocniNiz(b) = Niz(a)
b = b + 1
NEXT a
REDIM PRESERVE Niz(x-1)
b = 0
FOR a = n TO x - 1
Niz(a) = PomocniNiz(b)
b = b + 1
NEXT a
ERASE PomocniNiz
I sve to može lepo da se upakuje u proceduru tako da se svako brisanje vrsi
prostim pozivom proc.
Ok, priznajem da je relativno komplikovano i sporo. :)
Bolje je definisati tip koji sadrzi podatak i pokazivac na sledeci podatak
u nizu, pa onda dimenzionisati niz tog tipa. Podaci se uklanjaju prostim
menjanjem pokazivaca. Ovo je kao neka simulacija liste. :) Jeste da nije
bas tako elegantno kao kod pravih (pascalovih) listi, ali bar nema
ogranicenja od 64 kB. ;)
pascal.364djelovic,
-> #362, zeljkoj> Nisu ni null-terminated stringovi (o kojima je bilo reči) standardni
> Pascal. Dakle, pričamo o konkretnim implementacijama. Standarde smo
> samo malo pominjali na početku diskusije. :)
Netačno. Stringovi terminisani nulom su realizovani sasvim standardnim
Pascal konstrukcijama. PString nije ništa drugo do ^char.
Što se tiče tvoje tvrdnje da se mnoge stvari rade brže u Bejziku, moram da
se složim s tobom. No, to je sve dok ostajemo u okviru manjih projekata i
prototpiova. Upravo zbog te snage "da se nešto napravi na brzinu", Bjezik se
pokazao kao malo lošiji od Pascala za veće projekte.
pascal.365djelovic,
-> #363, zeljkoj> bas tako elegantno kao kod pravih (pascalovih) listi, ali bar nema
> ogranicenja od 64 kB. ;)
Ni Pascal nema ograničenje za liste od 64K.
pascal.366vitez.koja,
-> #356, zeljkoj#=> Naravno da ima. BASIC sve ima. :)
Ama, baš sve? Da li ima i unije (union, iz C-a) ?
pascal.367maksa,
-> #363, zeljkoj>> menjanjem pokazivaca. Ovo je kao neka simulacija liste. :)
>> Jeste da nije bas tako elegantno kao kod pravih (pascalovih)
>> listi, ali bar nema ogranicenja od 64 kB. ;)
Nema, ako se cela stvar baci u HUGE model. A znaš kolika su u tom
slučaju usporenja? ;)
PS A ono tupavo ograničenje od 64 Kb (sorsa) po modulu?
pascal.368postmast,
From: markom@setnet.co.yu (Marko Milivojevic)
Subject: Re: Pascal
Date: Mon, 27 Nov 1995 21:05:00
***> Citiram '"milan Maksimovic"' za 'All' <***
"M> - Izuzeci
Delphi...
-=> MM <=-
* Origin: Exodus, Novi Beograd #22-09# (011) 137-477 SETNet: (38:103/130)
pascal.369postmast,
From: markom@setnet.co.yu (Marko Milivojevic)
Subject: Re: Pascal
Date: Mon, 27 Nov 1995 21:05:00
***> Citiram '"predrag Knezevic"' za 'All' <***
"K> Nema potrebe, jer ce rezultat kompajliranja biti isti - chr(27) ce
"K> biti zamenjeno vrednoscu koju vraca ova sistemska funkcija.
Ne bi trebalo, pogotovo pri kompajliranju iz Windowsa, zato
sto Chr(27) ne mora uvek da bude ESC ;-)
-=> MM <=-
* Origin: Exodus, Novi Beograd #22-09# (011) 137-477 SETNet: (38:103/130)
pascal.370zeljkoj,
-> #366, vitez.koja> Ama, baš sve? Da li ima i unije (union, iz C-a) ?
Nema ih, a i nisu potrebne u BASIC-u.
pascal.371vasic,
-> #363, zeljkoj> Na primer, ako treba ukloniti n-ti element niz Niz (koji recimo ima x
> elemenata):
> DIM PomocniNiz(x - n)
> Ok, priznajem da je relativno komplikovano i sporo. :)
Ne samo da je komplikovano i sporo, nego je tvoje rešenje još i duplo
komplikovanije i sporije nego što bi moralo da bude. Šta će ti uopšte
pomoćni niz? Ali nije poenta u tome nego u...
> Bolje je definisati tip koji sadrzi podatak i pokazivac na sledeci podatak
> u nizu, pa onda dimenzionisati niz tog tipa. Podaci se uklanjaju prostim
> menjanjem pokazivaca. Ovo je kao neka simulacija liste. :)
Simuliraćeš ti tu ne samo listu nego i kompletan heap mehanizam koji je
inače ugrađen u "normalne" jezike - one sa pointerima. I to za svaku
takvu listu iz početka. Shvataš li sad šta se htelo reći sledećom
rečenicom:
"Kada resavate neki problem u nekom programskom jeziku (normalnom) mozete
u potpunosti da se posvetite resavanju tog problema, dok u Bejziku morate da
razmisljate na koji nacin je to moguce implementirati."
(icile, 7.334)
Ok, ako je tebi lepo sa Basic-om i ne osećaš njegova ograničenja - nema
problema, radi u Basic-u. Samo nemoj da pokušavaš da nas ostale ubediš
kako je to najbolji jezik na svetu. I _ni_slučajno_ nemoj reći kako je
Visual Basic idealna alatka za Windows programiranje.
It... makes... me... MAAAAAAD!!!
- I see, you are no stranger to pain.
- I've been working with Visual Basic.
- Aww.
- Twice.
- Awwwwwww....
pascal.372vitez.koja,
-> #356, zeljkoj#=> Evo malog primera (da ne objašnjavam, shvatićeš o čemu se radi):
#=> Ime AS STRING*20
A meni nešto pričaš o upotrebi stringova fiksne dužine? :)
sk
pascal.373vitez.koja,
-> #359, dvesic#=> Ne vredi. Ti i dalje pricas o implementaciji. Ovo NIJE
#=> standardni BASIC.
Je li, kad si zadnji put video standardni Pascal?
sk
ps. A Basic? :)
pascal.374janko,
Kao mali prilog diskusiji koji je bolji jezik, i na temu tvrdnje da je
BASIC bolji jezik za stvari "na brzinu", tvrdim da je AWK najbolji. ;)
A idući put ću smisliti zadatak kojim ću vam dokazati da je najbolji
jezik asembler za 8086. ;) A posle i zadatak kojim ću dokazadti da je
najbolji jezik Word Basic. ;)
Evo vam zadatka, pa rešite u svom omiljenom jeziku, da vidim koliko će
vam trebati koda: ;>
--- Iseci odavde
U ovom tekstu prebrojati reči i ispisati svaku različitu reč i broj
njenih pojavljivanja, a zatim i broj različitih reči u tekstu. Takođe
ispisati sve delove teksta koji se ne mogu smatrati rečima i broj
njihovog pojavljivanja, kao i broj ne-reči u tekstu.
(Smatrati da je REž svaki deo teksta koji čine slova s/h i engleske
abecede, ako pre njega ne postoji nikakav znak koji nije belina ili
otvorena zagrada, i ako iza tog dela teksta ne stoji pre beline a posle
specijalnih znakova i cifara neki drugi znak koji pripada s/h abecedi.
Veliko i malo slovo naše abecede mora se smatrati za isti znak!)
--- Iseci dovde
Broji se broj linija koda rešenja, a nije dozvoljeno da postoje
dve naredbe u jednoj liniji! Takođe nije dozvoljeno koristiti
rutine koje se NE dobijaju u programskom paketu samog jezika. Moje
rešenje, na jeziku (GNU) AWK, ima 31 liniju. Ko, i na kom jeziku, može
manje?
=== Celo rešenje: ===
function toyulower( a ) {
a= tolower( a )
sp = "ŠĐžĆčšđčćž"
for ( k=1;k<6;k++ )
gsub( substr( sp, k, 1 ) , substr( sp, k+5, 1 ), a )
return a
}
{ for (i=1; i<=NF; i++) {
rs = match( $i, /[a-zA-Zšđč枊ОĆč]+/ )
rl = RLENGTH
if ( ( rs == 1 || ( rs == 2 && substr( $i, 1, 1 ) == "(" )) \
&& match( substr( $i, rl + rs ), /[a-zA-Zšđč枊ОĆč]/ ) == 0 )
a[ toyulower( substr( $i, rs, rl ) ) ]++
else
b[ $i ]++
}
}
END {
for ( i in a ) {
printf( "%-20s %4d\n", i, a[ i ] )
dw++
}
print "Total of different words " dw
print "*** Not a word ****"
for ( i in b ) {
printf( "%-20s %4d\n", i, b[ i ] )
nw++
}
print "Total not words " nw
}
==== Deo rezultata ("..." su umesto izostavljenih delova): ==
...
broj 4
...
reč 2
...
i 9
...
Total of different words 66
*** Not a word ****
s/h 2
ne-reči 1
Total not words 2
pascal.375postmast,
From: Vlado.Menkovski%f132.n108.z38@setnet.setnet.co.yu (Vlado Menkovski)
Subject: Ne mozzam da vlezam vo Informa
Date: Fri, 24 Nov 1995 20:10:00
Abe dimi ova Informava ne se trpi pa ja po navika si doaggam tuka !!!!
i ondak to .... ( Citat od K-15 )
Pozdravi doma...
... How come pizza gets to your house faster than the police?
* Origin: SETNet: ĆMemory Master BBS +389/91-164-877ž SKOPJE (38:108/132)
pascal.376postmast,
From: KLIMENT.ANDREEV%f108.n108.z38@setnet.setnet.co.yu (KLIMENT ANDREEV)
Subject: delphi knjiga
Date: Mon, 20 Nov 1995 09:08:00
U ovoj konferenciji proccitao sam poruku da je u
izdanju CIP-a izassla knjiga za Delphi. Molio bih
one koje znaju da mi kazzu koliko kossta ova knjiga
u DEM i gde mozze da se nabavi, kako bih se javio ortaku
koji zzivi u BGD-u da mi kupi istu i possalje u Skoplju.
Ako neko vecc ima ovu knjigu voleo bih da ccujem i komentar
u ovoj ili nekoj drugoj odgovarajuccoj konferenciji.
10x Chombe
* OLX 2.1 TD * Bel Spagette.
* Origin: SETNet: Struga BBS +389 96 74074 * Macedonia * (38:108/108)
pascal.377postmast,
From: OGNEN.DUZLEVSKI%f108.n108.z38@setnet.setnet.co.yu (OGNEN DUZLEVSKI)
Subject: Strimovi
Date: Fri, 24 Nov 1995 16:11:00
PS>Moze li nesto malo vise o ovim strimovima?
PS>U dokumentaciji od BP ne nadjoh im ni pomena.
PS>Da li je to ugradjeno u sam Paskal ili je neka dodatna biblioteka?
Zavisi kako gledas na stvari :). Turbo Vision je biblioteka objekata
koja dolazi uz BP - streamovi su objekti u TV-u. Stream-ovi se koriste
za pamcenje drugih objekata bilo u EMS memoriji (TEmsStream) bilo na
disku (TDosStream i TBufStream). Svi ovi objekti su naslednici jedne
klase - TStream. Ako imas originalnu instalaciju BP-a, pogledaj
\BP\EXAMPLES\DOCDEMOS\TV\STREAM1.PAS i STREAM2.PAS.
Svaki objekat koji zelis da zapises u Stream mora sadrzati sledece dve
metode - constructor Load(var S:TStream) i procedure Store(var
S:TStream). U ovim metodima se citaju/zapisuju u Stream podatci koje
objekat sadrzi. E, sad, objekat naslednik ili instanca stream-a koji
zapisuje gorenavedene objekte u stream, zapisuje ih metodom PUT a cita
ih sa GET. Normalno ovde je dozvoljen typecasting. Da bi objekat mogao
biti zapisan u stream on mora da bude registrovan tj. da mu bude
dodeljen jedinstven broj kojim je povezan. Registracija se obavlja preko
registration record-a u kojem se nalazi gorenavedeni jedinstveni broj
koji sam odabires, ofset VMT tabele objekta (dobija se kao
Ofs(TypeOf(Objekat)^), i adrese metoda Load i Store. Registracija se
obavlja procedurom RegisterType koja kao parametar prima promenljivu
tipa TStreamRec tj. nas registration record.
Streamovi su sjajan metod za cuvanje objekata. Borland Pascal omogucava
tri stream-a, u EMS memoriji, i dva tipa fajlova, sa i bez baferisanog
pristupa (TDosStream i TBufStream). Uz malo znanja moguce je naslediti
TStream i napisati TXmsStream - stream koji cuva objekte u XMS memoriji.
Nadam se da sam pomogao. :) Ako je nesto ostalo nejasno, reci slobodno.
Ognen
* OLX 2.1 TD * The easiest way to woman's heart is thru 'er chest.
* Origin: SETNet: Struga BBS +389 96 74074 * Macedonia * (38:108/108)
pascal.378postmast,
From: OGNEN.DUZLEVSKI%f108.n108.z38@setnet.setnet.co.yu (OGNEN DUZLEVSKI)
Subject: Strimovi
Date: Fri, 24 Nov 1995 13:07:00
VS>Kako vidim, strimovi ti nisu strani :). Interesuje me da li je moguce
VS>(mislim da jeste moguce, samo je pitanje kako) snimiti _objekte_ u
VS>strim na disku, a posle te iste ucitati sa diska?
uses Crt,Objects;
type
PMyObject = ^TMyObject;
TMyObject = object(TObject)
x,y:PString;
constructor Init(s1,s2:String);
destructor Done; virtual;
procedure ConCat;
constructor Load(var S:TStream);
procedure Store(var S:TStream); virtual;
end;
constructor TMyObject.Init(s1,s2:String);
begin
inherited Init;
x:=NewStr(s1);
y:=NewStr(s2);
end;
destructor TMyObject.Done;
begin
DisposeStr(x);
DisposeStr(y);
inherited Done;
end;
procedure TMyObject.ConCat;
begin
WriteLn('Strings before: ',x^,', ',y^);
WriteLn('Concat. : ',x^+' '+y^);
end;
constructor TMyObject.Load(var S:TStream);
begin
x:=S.ReadStr;
y:=S.ReadStr;
end;
procedure TMyObject.Store(var S:TStream);
begin
S.WriteStr(x);
S.WriteStr(y);
end;
const RMyObject:TStreamRec=
( Objtype : 110;
VmtLink : Ofs(TypeOf(TMyObject)^);
Load : @TMyObject.Load;
Store : @TMyObject.Store);
procedure RegisterMyObject;
begin
RegisterType(RMyObject);
end;
var
ObjFile:PBufStream;
PMO : PMyObject;
begin
ClrScr;
WriteLn('Sada zapisujemo objekte u stream');
RegisterMyObject;
ObjFile:=New(PBufStream,Init('stream.dat',stCreate,1024));
PMO:=New(PMyObject, Init('This', 'is'));
ObjFile^.Put(PMO);
Dispose(PMO,Done);
PMO:=New(PMyObject, Init('a', 'stream'));
ObjFile^.Put(PMO);
Dispose(PMO,Done);
PMO:=New(PMyObject,Init('example','.'));
ObjFile^.Put(PMO);
Dispose(PMO,Done);
Dispose(ObjFile,Done);
WriteLn('Rezultat: fajl stream.dat koji sadrzi objekte na disku.');
WriteLn;
{sada citamo zapisani stream }
WriteLn('Sada citamo objekte iz stream-a.');
WriteLn;
ObjFile:=New(PBufStream,Init('stream.dat',stOpenRead,1024));
repeat
PMO:=PMyObject(ObjFile^.Get);
if PMO<>NIL then PMO^.ConCat;
until PMO=NIL;
Dispose(ObjFile,Done);
end.
Nadam se da sam pomogao. :)
Ognen
* OLX 2.1 TD * Pain - a feeling that I have to eat all she cooks.
* Origin: SETNet: Struga BBS +389 96 74074 * Macedonia * (38:108/108)
pascal.379postmast,
From: OGNEN.DUZLEVSKI%f108.n108.z38@setnet.setnet.co.yu (OGNEN DUZLEVSKI)
Subject: swap
Date: Fri, 24 Nov 1995 13:08:00
PS>Ima li neko kakav fin unit za swap u DOS shell?
TApplication.DosShell radi isti onaj swap koji dobijes opcijom DOS SHELL
u Borland PAscal IDE-u. Valjda je dovoljno ? :)
Ognen
* OLX 2.1 TD * You have a terminal illness - check your terminal.
* Origin: SETNet: Struga BBS +389 96 74074 * Macedonia * (38:108/108)
pascal.380postmast,
From: OGNEN.DUZLEVSKI%f108.n108.z38@setnet.setnet.co.yu (OGNEN DUZLEVSKI)
Subject: EMS XMS 2/2
Date: Fri, 24 Nov 1995 13:11:00
>>> Continued from previous message
extended buss; this being the price paid for PC compatibility.
D.M.A. LEVELS
Although we have discussed the operation of a single device using the D.M.A.,
it is custom to cater to the needs of several devices by providing several
D.M.A. channels, each one dedicated to a peticualar device. The 8237 provides
four seperate D.M.A. channels, known as levels 0 through 3. Correspondingly,
there are 4 D.M.A. request lines, DACK 0-3. These lines are prioritized
according to two possible protocols set by a bit in the controller command
register, either fixed priority, either fixed priority where lower D.M.A.
levels have higher priority than higher levels, or rotating priority, where
each level takes turn at having the highest priority. The PC BIOS sets the
8237 to operate in fixed priority mode on power up, and it is inadvisable
to change this. The PC/AT adds to the number of D.M.A. channels by using
two 8237 D.M.A. controllers. Since one channel is used to cascade one
controller into the other, this is acually adds an additional 3 channels,
all of which appears on the 16-bit additional expanision connectors of the
PC/AT and dedicated to 16-bit transfers.
Apart from its uses for high speed data transfer, the D.M.A. controller
includes counter hardware that cycles through the memory addresses, so as a
byproduct of its design, it can also be used to refresh dynamic memory, saving
the cost of a separate memory refresh controller. This is what IBM chose to
do in the PC, and on all models Level 0 performs this function with the
DREQ being driven from counter 1 of the 8253 timer at a 15 microsecond
intervals. The complete assignmentes for the levels are as follows.
For all machines, these levels are capable of 8-bit transfers:
Level 0 - Memory Refresh
Level 1 - Not assigned and usally avalible, Certain local
area network interfaces may use this level
Level 2 - Used by the floppy disk controller and not free
for any other purpose
Level 3 - May be used by the hard disk controller on some
PC/XT models. On floppy disk only, PC/AT and some
PC/XT machines, this level is free for other uses.
For the PC/AT only, these levels are capable of 16-bit transfers:
Level 4 - used for cascading
Level 5-7 - Avalaible on AT special connections
___---------------------------------------------------------------------
Ognen
* OLX 2.1 TD * Software Factory
* Origin: SETNet: Struga BBS +389 96 74074 * Macedonia * (38:108/108)
pascal.381postmast,
From: OGNEN.DUZLEVSKI%f108.n108.z38@setnet.setnet.co.yu (OGNEN DUZLEVSKI)
Subject: Turbovizija 2/2
Date: Fri, 24 Nov 1995 16:15:00
>>> Continued from previous message
R.Assign(Bounds.B.X-1, Bounds.A.Y+1, Bounds.B.X, Bounds.B.Y-1);
VScrollBar := New(PScrollBar, Init(R));
VScrollBar^.Options := VScrollBar^.Options or ofPostProcess;
if Left then VScrollBar^.GrowMode := gfGrowHiY;
Insert(VScrollBar);
R.Assign(Bounds.A.X+2, Bounds.B.Y-1, Bounds.B.X-2, Bounds.B.Y);
HScrollBar := New(PScrollBar, Init(R));
HScrollBar^.Options := HScrollBar^.Options or ofPostProcess;
if Left then HScrollBar^.GrowMode := gfGrowHiY + gfGrowLoY;
Insert(HScrollBar);
Bounds.Grow(-1,-1);
MakeInterior := New(PInterior, Init(Bounds, HScrollBar, VScrollBar));
end;
procedure TDemoWindow.SizeLimits(var Min, Max: TPoint);
var R: TRect;
begin
TWindow.SizeLimits(Min, Max);
Min.X := LInterior^.Size.X + 9;
end;
{ TMyApp }
procedure TMyApp.HandleEvent(var Event: TEvent);
begin
TApplication.HandleEvent(Event);
if Event.What = evCommand then
begin
case Event.Command of
cmNewWin: NewWindow;
cmNewDialog: NewDialog;
else
Exit;
end;
ClearEvent(Event);
end;
end;
procedure TMyApp.InitMenuBar;
var R: TRect;
begin
GetExtent(R);
R.B.Y := R.A.Y + 1;
MenuBar := New(PMenuBar, Init(R, NewMenu(
NewSubMenu('~F~ile', hcNoContext, NewMenu(
NewItem('~O~pen', 'F3', kbF3, cmFileOpen, hcNoContext,
NewItem('~N~ew', 'F4', kbF4, cmNewWin, hcNoContext,
NewLine(
NewItem('E~x~it', 'Alt-X', kbAltX, cmQuit, hcNoContext,
nil))))),
NewSubMenu('~W~indow', hcNoContext, NewMenu(
NewItem('~N~ext', 'F6', kbF6, cmNext, hcNoContext,
NewItem('~Z~oom', 'F5', kbF5, cmZoom, hcNoContext,
NewItem('~D~ialog', 'F2', kbF2, cmNewDialog, hcNoContext,
nil)))),
nil))
)));
end;
procedure TMyApp.InitStatusLine;
var R: TRect;
begin
GetExtent(R);
R.A.Y := R.B.Y - 1;
StatusLine := New(PStatusLine, Init(R,
NewStatusDef(0, $FFFF,
NewStatusKey('', kbF10, cmMenu,
NewStatusKey('~Alt-X~ Exit', kbAltX, cmQuit,
NewStatusKey('~F4~ New', kbF4, cmNewWin,
NewStatusKey('~Alt-F3~ Close', kbAltF3, cmClose,
nil)))),
nil)
));
end;
procedure TMyApp.NewDialog;
var
Bruce: PView;
Dialog: PDemoDialog;
R: TRect;
C: Word;
begin
R.Assign(20, 6, 60, 19);
Dialog := New(PDemoDialog, Init(R, 'Demo Dialog'));
with Dialog^ do
begin
R.Assign(3, 3, 18, 6);
Bruce := New(PCheckBoxes, Init(R,
NewSItem('~H~varti',
NewSItem('~T~ilset',
NewSItem('~J~arlsberg',
nil)))
));
Insert(Bruce);
R.Assign(2, 2, 10, 3);
Insert(New(PLabel, Init(R, 'Cheeses', Bruce)));
R.Assign(22, 3, 34, 6);
Bruce := New(PRadioButtons, Init(R,
NewSItem('~S~olid',
NewSItem('~R~unny',
NewSItem('~M~elted',
nil)))
));
Insert(Bruce);
R.Assign(21, 2, 33, 3);
Insert(New(PLabel, Init(R, 'Consistency', Bruce)));
R.Assign(3, 8, 37, 9);
Bruce := New(PInputLine, Init(R, 134));
Insert(Bruce);
R.Assign(2, 7, 24, 8);
Insert(New(PLabel, Init(R, 'Delivery instructions', Bruce)));
R.Assign(15, 10, 25, 12);
Insert(New(PButton, Init(R, '~O~k', cmOK, bfDefault)));
R.Assign(28, 10, 38, 12);
Insert(New(PButton, Init(R, 'Cancel', cmCancel, bfNormal)));
end;
C := DeskTop^.ExecView(Dialog);
Dispose(Dialog, Done);
end;
procedure TMyApp.NewWindow;
var
Window: PDemoWindow;
R: TRect;
begin
Inc(WinCount);
R.Assign(0, 0, 45, 13);
R.Move(Random(34), Random(11));
Window := New(PDemoWindow, Init(R, 'Demo Window', WinCount));
DeskTop^.Insert(Window);
end;
var
MyApp: TMyApp;
begin
ReadFile;
MyApp.Init;
MyApp.Run;
MyApp.Done;
DoneFile;
end.
* OLX 2.1 TD * When Rolling Stones are high, are they Rolling Stoned ?
* Origin: SETNet: Struga BBS +389 96 74074 * Macedonia * (38:108/108)
pascal.382postmast,
From: OGNEN.DUZLEVSKI%f108.n108.z38@setnet.setnet.co.yu (OGNEN DUZLEVSKI)
Subject: Knjiga Za Objektni Tp
Date: Fri, 24 Nov 1995 16:19:00
VM>OD> MM> Ja sam genije. Shvatio sam pravo resenje za konflikt
VM>OD> MM> Bosni!!! Svi mi treba da se pomirimo i zivimo lepo ka
VM>OD> MM> ranije. Treba mi neka knjiga iz politike da vidim prakticn
VM>OD> MM> primenu i najbolje resenje za moj zakljucak.
VM>OD> Mesas babe i zabe a i pricas gluposti.
VM>A i ovo je NET.PASCAL
Znam da je NET.PASCAL, ali procitaj jos jednom chain i videces da nisam
ja taj koji je progresio. Bas zato sto je NET.PASCAL treba napisati
nesto konstruktivno samo ako imas da takvo sta kazes, a ne da
filozofiras unaokolo...Covek je lepo postavio pitanje o nekoj knjizi
koja ce mu objasniti kako da prakticno programira pod Windowsima a kao
odgovor je dobio nesto sto nema blage veze sa konf.
Ognen
* OLX 2.1 TD * "Singing in the rain" is the best way to catch pneumonia
* Origin: SETNet: Struga BBS +389 96 74074 * Macedonia * (38:108/108)
pascal.383postmast,
From: Asmir.Badnjevic%p1.f135.n135.z38@setnet.setnet.co.yu (Asmir Badnjevic)
Subject: EMS XMS
Date: Tue, 28 Nov 1995 18:41:35
AB> Sta ti je DMA? Ako sam i cuo onda sam zaboravio (jesam slozio
AB> recenicu :)))).
<OD> DMA = Direct Memory Access. Ovo je najbrzzi naccin da prenosiss blokove
<OD> memorije sa jednog mesta na drugi, da pristupass memoriji itd.
Sad mi je tek jasnije :-). Mozes li i ti da objasnis to prenosenje mem.
OviH dana sam pokusavao nesto pomocu ASM ali se nije pokazao tako
brz ko sto se prica :(((.
P.S. Uvozim OBJ fajlove u paskal.
T.J. Koristim mijesano ASM i paskal :(.
... Sta ja o tome da vam razbijam glavu.
* Origin: Vila co.BBS # Prijedor_RS # +381 79 11 301 # SETNet: (38:135/135.1)
pascal.384postmast,
From: Asmir.Badnjevic%p1.f135.n135.z38@setnet.setnet.co.yu (Asmir Badnjevic)
Subject: EMS XMS
Date: Tue, 28 Nov 1995 18:41:35
<PR> E ovako. NAjbolje je iz assemblera, ali cistog, jer nista nije toliko
<PR> brzo kao 100% assembler. ali ... ako ti je to sporo koristi razne
<PR> trikove: nemoj da scroll-ujes za 1 vec za 2,3 tacke i OBAVEZNO to radi
<PR> kad je mlaz u dnu ekrana.
Ja mislim da nisi malo shvatio ovo sto sam napisao (ne potcjennju
jem te) :))). Ne zamjeram ti, ja kad nesto napisem treba i sam da
Ga desifrujem :((. Bi li mogao objasniti malo kako bi ti to uradio.
Mozda i koji primjer :>>.
pozdraw, ASKO
... Kod homosexualca je uvijek - prvo pa musko :).
* Origin: Vila co.BBS # Prijedor_RS # +381 79 11 301 # SETNet: (38:135/135.1)
pascal.385postmast,
From: Asmir.Badnjevic%p1.f135.n135.z38@setnet.setnet.co.yu (Asmir Badnjevic)
Subject: EMS XMS
Date: Tue, 28 Nov 1995 18:41:38
Zdravo Pedja, da li si vidio da mi posaljes onaj sors za
memoriju (pleaseeeeeeeeeeeeee) ???
pozdraw, ASKO
... Novac kvari covjeka ... upotrebjavajte cekove.
* Origin: Vila co.BBS # Prijedor_RS # +381 79 11 301 # SETNet: (38:135/135.1)
pascal.386postmast,
From: markom@setnet.co.yu (Marko Milivojevic)
Subject: Re: Pascal
Date: Wed, 29 Nov 1995 08:10:00
***> Citiram 'Ivica Nikolic' za 'All' <***
IN> - Prakticno je nemoguce iskopirati takvu disketu, cik da vidim
IN> nekog da probusi disketu tacno na mestu treceg sektora u 76-om
IN> cilindru. - Jeftinije od hardlock-a, i moze se lako uraditi u
IN> domacoj radinosti - od dodatnog hardvera potrebna je samo igla.
Evo principa hakovanja...
NDD -> vidis koji su sektori bad
NDD -> na novoj disketi te sektore obelezis kao BAD
COPY
IMEPROGRAMA
;-)
-=> MM <=-
* Origin: Exodus, Novi Beograd #22-09# (011) 137-477 SETNet: (38:103/130)
pascal.387postmast,
From: markom@setnet.co.yu (Marko Milivojevic)
Subject: Re: Pascal
Date: Wed, 29 Nov 1995 08:10:00
***> Citiram '"zeljko Jovanovic"' za 'All' <***
"J> Da, ali samo u BP 7.0. :) I to je null-terminated string sto znaci
"J> da u stringu ne sme da postoji chr(0) karakter.
Nije tesko napraviti svoj sistem astringova koji ce raditi
isto kao Pascalovi (r), a biti ograniceni na 65533 bajta :-)
-=> MM <=-
* Origin: Exodus, Novi Beograd #22-09# (011) 137-477 SETNet: (38:103/130)
pascal.388zeljkoj,
-> #371, vasic> takvu listu iz početka. Shvataš li sad šta se htelo reći
> sledećom rečenicom:
>
> "Kada resavate neki problem u nekom programskom jeziku
> (normalnom) mozete u potpunosti da se posvetite resavanju tog
> problema, dok u Bejziku morate da razmisljate na koji nacin je
> to moguce implementirati."
Isto tako mogu da se pronadju stvari koje u BASIC-u postoje, a koje
bi u Pascalu bilo potrebno simulirati.
pascal.389postmast,
From: ivica@galeb.etf.bg.ac.yu (Ivica Nikolic)
Subject: Re: Pascal
Date: Fri, 1 Dec 1995 17:35:10 GMT
Marko Milivojevic je napisao:
>> Evo principa hakovanja...
>> NDD -> vidis koji su sektori bad
>> NDD -> na novoj disketi te sektore obelezis kao BAD
>> COPY
>> IMEPROGRAMA
Ne, nisi razumeo princip. Zasticeni program bi disketu proveravao tako
sto bi direktno od samog floppy kontrolera zahtevao da formatira namerno
unistene sektore, uz zaobilazenje DOS-a i BIOS-a, i direktno od kontrolera
bi dobijao informaciju da li je formatiranje uspelo. Ako je uspelo, znaci da
je sektor lazno oznacen kao los.
Naravno, tu bi se nasao neki pametnjakovic koji bi pokusao da osteti sve
sektore u okolini, u nadi da ce time unistiti i sektor koji zasticeni program
proverava. Zbog toga program treba da pokusa da formatira i okolne sektore,
i da zakljuci da je doslo do hakeraja, ako su i okolni sektori unisteni.
--
Allways look on the bright side of death
pascal.390kriss,
-> #340, postmast˙˙>> TRECA STVAR ....
˙˙>> UZMESH I IZBUSIS DISKETU BUSILICOM NA NEKOM MESTU !
˙˙ Nedostaci:
Neko te tuži zato što mu je otišla glava na drajvu / zato što su mu
prodao faličnu (opasnu) disketu / zato što ne može da pravi rezervnu
kopiju programa (što ima pravo) ... Bilo je govora o ovome na SEZAM-u,
pre jedno godinu ipo, dve.
pascal.391visnja,
-> #350, postmast> Da rezimiram, pre nego sto se potpuno rasplinem: sve frizirane
> verzije Pascala omogucuju da se u Pascalu pisu C(++) programi.
> Verujte mi na rec, C(++) programi se mnogo bolje pisu u
> C(++)-u.
Znas, u pravu si, ovaj odgovor mi se svidja.
Najvise me nervira sto TPU napravljen verzijom 6.0 ne radi u verziji 7.0.
U C-u me nervira vreme kompajliranja, ali to nema veze sa samim jezikom,
trenutno se ubijam da nadjem PXEngine za protected rezim za pascal,
- za C sam nasao "od prve".
Zatim, ako se pogleda lista trazenosti programerskih poslova na zapadu,
C i C++ su na zavidnom nivou, a pascal-a nema nigde.
Zatim sam pozvao ortaka koji poznaje c++ u praksi i rekao mu sta sve da mi
demonstrira, jer imam dosta aplikacija u pascalu. Nije lose. Teplate-ovi
su mi oduvek trebali, mocna je to stvar. Nastavicu ja da proucavam C++,
ali jos uvek ne smem u njemu necega ozbiljnijeg da se prihvatim, pascal
mi je domacinski teren.
Pozdrav, Visnja.
pascal.392.sima,
-> #379, postmast║║ TApplication.DosShell radi isti onaj swap koji dobijes opcijom DOS
║║ SHELL u Borland PAscal IDE-u. Valjda je dovoljno ? :)
Da ako se pravi TV aplikacija, ali ako ne, onda mora da se napravi
posebna procedura.
pascal.393.sima,
-> #274, postmast║║ Kad smo vec kod toGa i to si moGao poslati u mail, ako nije veliko
║║ :). Znas li mozda brze prebacivanje nekoG dijela memoriju u neki
║║ druGi dio memorije, recimo da sliku iz pomocne mem. prebacim na
║║ ekran? Koristio sam MOVE komandu iz paskala ali je spora (dobro,
║║ brza je ali ne za moje potrebe) i ne moGu stvoriti efekat
║║ skrolovanja ekrana a da
Za prebacivanje memorije koristim MoveEMB funkciju iz XMS
specifikacije. Pošto radi u zaštićenom modu vrlo je brza. 4MB prebaci za
tren. Evo da me ne bi davili. Ovo je prerađen ( malo :) unit za rad sa
XMS-om. Naravno DMA je brži, ali ja nisam nešto mnogo primetio razliku
kod svakodnevnog programiranja.
{$A+,B-,D-,E-,F+,G+,I+,L-,N-,O-,P-,Q-,R-,S-,T-,V+,X+,Y-}
unit XMS;
interface
const
X_Ok = $00;{ function succeeded. }
X_NotImplemented = $80;{ the function is not implemented. }
X_VDiskFound = $81;{ a VDISK device is detected. }
X_A20Err = $82;{ an A20 error occurs. }
X_GenErr = $8E;{ a general driver error occurs. }
X_UnrecovErr = $8F;{ an unrecoverable driver error occurs. }
X_HMAnotExist = $90;{ the HMA does not exist. }
X_HMAInUse = $91;{ the HMA is already in use. }
X_HMAminSize = $92;{ DX is less than the /HMAMIN= parameter. }
X_HMANotAlloced = $93;{ the HMA is not allocated. }
X_A20StillEnabled = $94;{ the A20 line is still enabled. }
X_OutOfMemory = $A0;{ all extended memory is allocated. }
X_OutOfHandles = $A1;{ all available extended memory handles are in use.}
X_InvalidHandle = $A2;{ the handle is invalid. }
X_SourceHanldeInv = $A3;{ the SourceHandle is invalid. }
X_SourceOffsetInv = $A4;{ the SourceOffset is invalid. }
X_DestHanleInv = $A5;{ the DestHandle is invalid. }
X_DestOffset = $A6;{ the DestOffset is invalid. }
X_LenInv = $A7;{ the Length is invalid. }
X_Overlap = $A8;{ the move has an invalid overlap. }
X_Parity = $A9;{ a parity error occurs. }
X_EMBUnlocked = $AA;{ the block is not locked. }
X_EMBLocked = $AB;{ the block is locked. }
X_LockOverflow = $AC;{ the block's lock count overflows. }
X_LockFail = $AD;{ the lock fails. }
type
X_MoveRec = record
case boolean of
False : (duz : Longint; { 32-bit number of bytes to transfer }
SHandle : Word; { Handle of source block }
SOffset : Longint; { 32-bit offset into source }
DHandle : Word; { Handle of destination block }
DOffset : Longint; { 32-bit offset into destination block }
);
True : (duzina : Longint; { note that the lenght must be even ! }
ZeroS : Word; { zero sourcehandle means a seg:ofs }
SPtr : Pointer; { pointer to "normal" memory }
ZeroD : Word; { zero dest handle means a seg:ofs }
DPtr : Pointer; { pointer to "normal" memory }
);
end;
PX_MoveRec = ^X_MoveRec;
var
X_Installed: boolean;
MovRec: X_MoveRec;
procedure X_Version(var ver, rev:word;var HMA:boolean);
function X_HMARequest(Space: word): byte;
function X_HMARelease: byte;
function X_GlobalEA20: byte;
function X_GlobalDA20: byte;
function X_LocalEA20: byte;
function X_LocalDA20: byte;
function X_QueryA20(var A20: boolean): byte;
function X_QuerryFree(var Max, Tot: word):byte;
function X_AllocEMB(size:word; var handle:word):byte;
function X_FreeEMB(handle: word): byte;
function X_MoveEMB(movrec:PX_MoveRec):byte;
function X_LockEMB(handle: word; var adresa:longint):byte;
function X_UnLockEMB(handle: word):byte;
function X_GetHanInfo(handle: word; var LCount, FreeHan:byte; var
EMBduz:word):byte;
function X_ReallocEMB(handle, NewSize: word):byte;
function X_RequestUMB(ReqSize:word; var UMBSeg, Size: word):byte;
function X_ReleaseUMB(UMBSeg: word):byte;
function X_ReallocUMB(ReqSize, UMBSeg:word):byte;
implementation
var
X_Control: longint;
procedure X_Start; assembler;
asm
mov ax,4300h
int 2Fh
cmp al,80h
jne @@NoDriver
mov ax, 4310h
int 2fh
mov word ptr X_Control, bx
mov word ptr X_Control+2, es
inc X_Installed
@@NoDriver:
end;
procedure X_Version(var ver, rev:word;var HMA:boolean);assembler;
asm
xor ah, ah
call X_Control
les di, [ver]
mov [word ptr es:di], ax
les di, [rev]
mov [word ptr es:di], bx
les di, [HMA]
mov [byte ptr es:di], dl
end;
function X_HMARequest(Space: word): byte; assembler;
asm
mov ah, 1
mov dx, Space
call X_Control
dec ax
jz @@Success
mov al, bl
@@Success:
end;
function X_HMARelease: byte; assembler;
asm
mov ah, 2
call X_Control
dec ax
jz @@Success
mov al, bl
@@Success:
end;
function X_GlobalEA20: byte; assembler;
asm
mov ah, 3
call X_Control
dec ax
jz @@Success
mov al, bl
@@Success:
end;
function X_GlobalDA20: byte; assembler;
asm
mov ah, 4
call X_Control
dec ax
jz @@Success
mov al, bl
@@Success:
end;
function X_LocalEA20: byte; assembler;
asm
mov ah, 5
call X_Control
dec ax
jz @@Success
mov al, bl
@@Success:
end;
function X_LocalDA20: byte; assembler;
asm
mov ah, 6
call X_Control
dec ax
jz @@Success
mov al, bl
@@Success:
end;
function X_QueryA20(var A20: boolean): byte; assembler;
asm
mov ah, 7
call X_Control
les di, [A20]
mov [byte ptr es:di], al
mov al, bl
end;
function X_QuerryFree(var Max, Tot: word):byte; assembler;
asm
mov ah, 8
call X_Control
les di, [Max]
mov [word ptr es:di], ax
les di, [Tot]
mov [word ptr es:di], dx
mov al, bl
end;
function X_AllocEMB(size:word; var handle:word):byte; assembler;
asm
mov ah, 9
mov dx, size
call X_Control
les di, [handle]
mov [word ptr es:di], dx
dec ax
jz @@Success
mov al, bl
@@Success:
end;
function X_FreeEMB(handle: word): byte; assembler;
asm
mov ah, 0Ah
mov dx, handle
call X_Control
dec ax
jz @@Success
mov al, bl
@@Success:
end;
function X_MoveEMB(movrec: PX_MoveRec):byte; assembler;
asm
push ds
mov ah, 0Bh
lds si, movrec
call X_Control
dec ax
jz @@Success
mov al, bl
@@Success:
pop ds
end;
function X_LockEMB(handle: word; var adresa:longint):byte; assembler;
asm
mov ah, 0Ch
mov dx, handle
call X_Control
les di, [adresa]
mov [word ptr es:di],bx
mov [word ptr es:di+2],dx
dec ax
jz @@Success
mov al, bl
@@Success:
end;
function X_UnLockEMB(handle: word):byte; assembler;
asm
mov ah, 0Dh
mov dx, handle
call X_Control
dec ax
jz @@Success
mov al, bl
@@Success:
end;
function X_GetHanInfo(handle: word; var LCount, FreeHan:byte; var
EMBduz:word):byte;assembler;
asm
mov ah, 0Eh
mov dx, handle
call X_Control
les di,[LCount]
mov [Byte ptr es:di],bh
les di,[FreeHan]
mov [Byte ptr es:di],bl
les di,[EMBduz]
mov [Word ptr es:di],dx
dec ax
jz @@Success
mov al, bl
@@Success:
end;
function X_ReallocEMB(handle, NewSize: word):byte;assembler;
asm
mov ah, 0Fh
mov dx, handle
mov bx, NewSize
call X_Control
dec ax
jz @@Success
mov al, bl
@@Success:
end;
function X_RequestUMB(ReqSize:word; var UMBSeg, Size: word):byte;assembler;
asm
mov ah, 10h
mov dx, ReqSize
call X_Control
les di, [UMBSeg]
mov [Word ptr es:di], bx
les di, Size
mov [Word ptr es:di], dx
dec ax
jz @@Success
mov al, bl
@@Success:
end;
function X_ReleaseUMB(UMBSeg: word):byte;assembler;
asm
mov ah, 11h
mov dx, UMBSeg
call X_Control
dec ax
jz @@Success
mov al, bl
@@Success:
end;
function X_ReallocUMB(ReqSize, UMBSeg:word):byte;assembler;
asm
mov ah, 12h
mov bx, ReqSize
mov dx, UMBSeg
call X_Control
dec ax
jz @@Success
mov al, bl
@@Success:
end;
begin
X_Installed:=false;
X_Start
end.
pascal.394atech,
-> #390, kriss> ˙˙>> TRECA STVAR ....
> ˙˙>> UZMESH I IZBUSIS DISKETU BUSILICOM NA NEKOM MESTU !
>
> ˙˙ Nedostaci:
>
> Neko te tuzi zato sto mu je otisla glava na drajvu / zato sto
> su mu prodao falicnu (opasnu) disketu / zato sto ne moze da
> pravi rezervnu kopiju programa (sto ima pravo) ... Bilo je
> govora o ovome na SEZAM-u, pre jedno godinu ipo, dve.
I ne samo to. Dodje majstor Mica i izmeni jedan jedini bajt
u programu koji radi sve ovo low level formatiranje i ode zastita
u nepovrat.
Btw, moja iskustva su takva da ne trebe insistirati na hardverskoj
zastiti disketa od kopiranja vec zastitu koncipirati na drugi nacin a
kupcu obezbediti neogranicen backup. Pored toga, testirajuci neke od
americkih zastita disketa (softverskih, nema busenja i sl ;)) mogu da
kazem sledece:
- Svaku od ovih je bilo moguce prevariti koriscenjem klasicnih alata
za rad sa disketama bez ikakvih izmena programa. O tome da se isti
posao moze odraditi menjenjem programa koji vrsi kontrolu da i ne
govorim...
- Korisnici koji su koristili ovakve diskete zalili su se da im cesto
posle nekog vremena dolazi do fizickog ostecenja diskete (obicno
se radi o slavnom sector no found) pa su primorani da ponovo jure
(cak i da ponovo placaju) novu disketu. E sad, kakvo je stanje kod
nas (mnosto pisaca 'jeba' procedura, 'fuck the user' sistem) mozda
nekome ovo i odgovara...:(
poz, Blagoje
pascal.395visnja,
-> #390, kriss> Neko te tuži zato što mu je otišla glava na drajvu / zato što
> su mu prodao faličnu (opasnu) disketu / zato što ne može da
> pravi rezervnu kopiju programa (što ima pravo) ... Bilo je
> govora o ovome na SEZAM-u, pre jedno godinu ipo, dve.
Axa, malo morgen kod nas. Ako neko za ovo moze da me tuzi, ne bih ni
stitio programe, nego bih i ja tuzio pirate, kada bi kod nas zakon
funkcionisao tako lepo...
pascal.396pedjak,
-> #369, postmast> Ne bi trebalo, pogotovo pri kompajliranju iz Windowsa, zato
> sto Chr(27) ne mora uvek da bude ESC ;-)
Bilo je reči o tome kako to radi Borland Pascal. Kako to radi
Delphi, ne znam.
pascal.397postmast,
From: DENIS@vila.bc.co.yu
Subject: ReadLn
Date: Sat, 02 Dec 95 09:56:22 GMT
Hi !
Jedna sitnica koja mew vec dugo muci: Zasto u Pascal-u kursor prelazi
na pocetak novog reda bez obzira da li napisao Read ili ReadLn.Npr
Var T : Real;
Begin
Write('***Vrijeme: ');
Read(T);
WriteLn('sec.');
End.
Kod mene ce to na ekranu izgledati ovako(ako unesem T=554):
***Vrijeme : 554
sec.
Isto kao i da sam napisao:
Var T : Real;
Begin
Write('***Vrijeme: ');
ReadLn(T);
WriteLn('sec.');
End.
Unaprijed hvala !
!)enis
... Backup not found: (A)bort (R)etry (P)anic
--- FMail/386 1.02
* Origin: Vila co.BBS ■ Prijedor_RS ■ +381 79 11 301 ■ B.C.: (95:790/113)
pascal.398postmast,
From: bady@setnet.co.yu (Attila Megyeri)
Subject: Rimski
Date: Thu, 30 Nov 1995 23:30:51
Ima li neko gotov algoritam za konverziju rimskih brojeva u decimalne
brojeve ? Ili bar za proveru (tj. da li je broj ispravan ) ?
Nije problem u kompleksnosti algoritma, vec sto me mrzi da ga pisem ako
ga neko od vas ima :)
Pozdrav:
---Bady
... "Scotty, beam me up another Blue Wave message."
* Origin: Prometheus BBS - The Northern Frontier - SETNET (38:111/107)
pascal.399postmast,
From: OGNEN.DUZLEVSKI%f108.n108.z38@setnet.setnet.co.yu (OGNEN DUZLEVSKI)
Subject: pascal
Date: Fri, 01 Dec 1995 08:37:00
"M>Logicki izrazi tipa "X in ['a'..'z']" su (mnogo?) sporiji nego
"M>pesacko ispitivanje "if X>='a' and X<='z'", ali nema ni to veze.
Bilo nekad. Od verzije 7.0 optimizovan je rad sa setovima.
"M>Ono sto ima veze je da tvoj pascal program radi sa baferom duzine
"M>do 256 bajtova, sto je smesno. Ako ne koristis Turbo Pascalov tip
"M>string, nego radis sa najobicnijim nizom, onda ne mozes da
"M>koristis funkciju Length, pa ti program manje ili vise raste, vec
"M>prema tome kako organizujes stringove.
A sta je sa null-terminisanim stringovima u BP-u ? Oni imaju poseban
unit sa svim potrebnim funkcijama/procedurama.
Ognen
* OLX 2.1 TD * ROBOCOMM - a ROBOCOP for modems.
* Origin: SETNet: Struga BBS +389 96 74074 * Macedonia * (38:108/108)
pascal.400postmast,
From: utvara@setnet.co.yu (Slobodan Utvic)
Subject: PASCAL
Date: Fri, 01 Dec 1995 13:46:00
I heard MLADEN ADAMOVICF@ MacADAMOVIC said PASCAL :
Ne> UZMESH I IZBUSIS DISKETU BUSILICOM NA NEKOM MESTU !
MA> Istim su se zanimali Sezamovci pre par godina i shvatili su da
MA> busilica nije potrebna - dovoljno je samo malo bocnuti iglom, ako ne
MA> zelite MNOOOOOGO losih sektora :).
Pa moze i sa magnetnom iglom :)))
* Slobodan Utvic(Utvara)-email:utvara@setnet.co.yu,utvara@epitaph.bc.co.yu
* sutvic@osmeh.fon.bg.ac.yu & sutvic@alef.yucca.co.yu ...
... Oxymoron: Only Choice.
* Origin: ECSTASY BBS * Indjija * 022 53-884 * SETNet: (38:111/119)
pascal.401postmast,
From: Dusan.Lacarac%f119.n111.z38@setnet.setnet.co.yu (Dusan Lacarac)
Subject: Zadatak
Date: Sat, 02 Dec 1995 15:49:01
Cujte ja sam malo glup sto se tice programiranja (malo vise).
Pa dali bi neko znao da uradi ovaj zadatak:
NAPISATI FUNKCIJU PROST KOJA VRACA LOGICKU UREDNOST TROU AKO JE BROJ PROST
ODNOSNO FOLS AKO JE BROJ SLOZEN!!!
Naravno radi se u PASCAL-u
Pozdrav!!!!!!!!!!!
RAPTOR
... I call things as I see them; If I didn't see them, I make them up!
* Origin: ECSTASY BBS * Indjija * 022 53-884 * SETNet: (38:111/119)
pascal.402dvesic,
-> #401, postmast>> NAPISATI FUNKCIJU PROST KOJA VRACA LOGICKU UREDNOST TROU AKO
>> JE BROJ PROST ODNOSNO FOLS AKO JE BROJ SLOZEN!!!
'Oćemo jedno malo takmičenje ? :)
Ovo je najbrže rešenje koje znam :)
=========================================================
Function JeProst(n: Integer): Boolean;
Var Vrni : Boolean;
korak ,
delisa ,
gorgran: Integer;
Begin
Vrni := true;
If n > 3 Then
Begin
korak := 2 ;
delisa := 5 ;
gorgran:= trunc(sqrt(n)) ;
Vrni := (n mod 2) <> 0 ;
Vrni := Vrni And ( (n mod 3) <> 0) ;
While Vrni And ( delisa <= gorgran ) Do
Begin
Vrni := (n mod delisa)<>0 ;
delisa := delisa+korak;
korak := 6-korak;
End
End;
JeProst := Vrni;
End;
=========================================================
pascal.403kile,
-> #391, visnja>> Zatim, ako se pogleda lista trazenosti programerskih poslova na zapadu,
>> C i C++ su na zavidnom nivou, a pascal-a nema nigde.
A najveći bedak je što je među najtraženijima Visual Basic :(
pascal.404iznogud,
-> #354, zeljkoj:: BASIC programeru daje veliku slobodu što se tiče samog stila pisanja
:: programa. Recimo da imam promenljivu MikaPeraLaza. Ako je ne deklarišem,
Jedno malo pitanjce: ti, recimo, ne voliš da pišeš 'option explicit'
na početku programa. I negde u programu umesto MikaPeraLaza napišeš
MkaPeraLaza (dakle, pogrešno ime promenljive). BASIC shvati da hoćeš da
koristiš novu promenljivu, i dodeli joj 0 (default). Rezultat: ti se
ubiješ tražeći grešku u programu (program ti ne računa dobro).
Možda ipak ima razloga za eksplicitnu deklaraciju? Na kraju krajeva, u
svoj novijoj literaturi za BASIC (tj. njegovog vizuelnog burazera) se
programeri usmeravaju da zaborave atavizam zvan 'nedeklarisanje
promenljivih'...
pascal.405iznogud,
-> #361, zeljkoj:: Da. Uvek se vidi kog je tipa promenljiva, a ne moraš svaki čas da gledaš
:: po deklaracijama.
I nije neki argument ;). Recimo, u 'Programming Windows' (C. Petsold)
se naširoko rabi tkz. 'Mađarska notacija', gde se imenu promenljive
dodaje prefiks u zavisnosti kojeg je tipa.
Npr. hHandle, iIntVariable...
pascal.406evlad,
-> #397, postmast
TO: DENIS@vila.bc.co.yu
<> Jedna sitnica koja mew vec dugo muci: Zasto u Pascal-u kursor prelazi
<> na pocetak novog reda bez obzira da li napisao Read ili ReadLn.Npr
zato što je to komanda sa ehom, a enter je <cr><lf> i otera ti kursor
dole.
rešenje je da podatke uzimaš preko konstrukcije
i:=0;
repeat
buff[i] := ReadKey;
inc(i);
until #13;
stim da moraš ispisati na ekran brojeve :)
ili
da upamtiš red i kolonu gde si bio (pomoću finkcija)
wherex
wehery
<> Var T : Real;
<> Begin
<> Write('***Vrijeme: ');
savx:=wherex;
savy:=wherey;
<> Read(T);
val(t,tmpstr);
gotoxy(savx,savy+length(tmpstr)+1);
<> WriteLn('sec.');
<> End.
ti odluči kako ćeš da uradiš :)
pascal.407vitez.koja,
-> #402, dvesic#=> Ovo je najbrže rešenje koje znam :)
I koliko vidim netačno za n=1 :)
sk
pascal.408supers,
-> #397, postmast>> Kod mene ce to na ekranu izgledati ovako(ako unesem T=554):
>>
>> *** Vrijeme : 554
>> sec.
Problem je u tome što ti moraš da pritisneš Enter da bi uneo broj :)
Napisao ti Read(T); ili ReadLn(T); koji funkcionišu sasvim istovetno
kada je unos sa tastature, a ne iz fajla u pitanju, isto ti se hvata.
Dakle, prelazak u novi red potiče od tvog stiskanja Entera. Ono što ti
želiš, da program ispiše dodatan tekst nakon tvog unosa u istom redu, ne
možeš da izvedeš sa standardnom ReadLn procedurom.