pascal.415vgenije,
-> #408, nlazic> Nadam se da ce to ovo pomoci. :)
hvala!!
pascal.416ognjen,
-> #397, vgenije)-> jel moze neko da mi pomogne - odnosno sastavi proceduru pomocu
)-> koje ce racunar softverski da pali i gasi monitior(zatamnjenje)
Mogu ja. Procedura se zove ClrScr, iz Crt unita. Za čuvanje
ekrana je malo složenije, uglavnom definišeš array[1..25] of
string i onda lepo trčiš po ekranu i ubacuješ znak po znak.
Otprilike ovako:
uses Crt, Dos;
var
r : Registers;
ch: char;
x1,y1,x2,y2 : Byte;
ekran: array[1..25] of string;
procedure SaveScreen;
begin
for i:=1 to 25 do
ekran[i]:='';
x2:=WhereX; y2:=WhereY;
for y1:=1 to 25 do
For x1:=1 to 80 do
begin
r.AH:=$08;
r.BH:=$0;
GotoXY(x1,y1);
Intr($10,r);
ekran[y1]:=concat(ekran[y1], chr(r.al));
end;
end;
... I sad tu lupiš CLRSCR, i onda ispišeš 'Ovaj screen saver
je napravio VelikiGenije' ili šta već, i na kraju kad hoćeš da
povratiš ekran, kažeš mu:
procedure ShowScreen;
begin
GotoXY (1,1);
For i:=1 to 24 do
Write (ekran[i]);
Write (copy(ekran[25], 1, 24));
GotoXY (x2,y2);
end;
--------
Zahvaljujem se mbobanu koji mi je sve ovo pre izvesnog vremena
objasnio na mail. :)
pascal.417jasicp,
Pitanja u vezi sa Paradox Engineom:
Da li TDatabase.Close radi automatski dispose svih TCursor i TRecord
objekata, kao i zatvaranje tabela ? Ovo poslednje mislim da sigurno radi,
ali kako stoje stvari sa prethodnim ?
Sledeca stvar :
znate funkciju iz TDatabase objekta :
createtable(tablename:string;desc:PTableDesc).
E, znate li koji je "zvanican" nacin da se nekoj tabeli koju tek treba
da napravimo, odredi ovaj tabledescriptor? Kako se pravi table desc ?
Konkretno, imam ideju koja polja treba da budu u tabeli, ali kako to da
posaljem ovoj funkciji. Ovoga u primerima za OOPXENG nema.
Zna li neko za datoteku (negde) u kojoj se nalaze primeri za rad sa
oopxeng i pxengineom uopste ?
pascal.418zeljkoj,
-> #416, ognjen> Mogu ja. Procedura se zove ClrScr, iz Crt unita. Za čuvanje
Gašenje i brisanje ekrana su dve različite stvari. :)
pascal.419nemko,
-> #416, ognjen)>- Zahvaljujem se mbobanu koji mi je sve ovo pre izvesnog
)>- vremena objasnio na mail. :)
Ognjene, nije se trazio screen saver, vec procedura kojom ce
graficka kartica da privremeno ugasi monitor (na kome to moze).
pascal.420pedjak,
-> #416, ognjen> Mogu ja. Procedura se zove ClrScr, iz Crt unita. Za čuvanje
> ekrana je malo složenije, uglavnom definišeš arrayŠ1..25Ć of
> string i onda lepo trčiš po ekranu i ubacuješ znak po znak.
Kahm ;) može to i elegantnije, evo 'vako:
uses crt;
type
Buffer=ArrayŠ1..64000Ć of byte;
PBuffer=žBuffer;
var
VideoMode:Byte absolute $0:$0449;
ScreenBuff:PBuffer;
Procedure GetScreen(var Buff);
var
Seg:word;
Begin
If VideoMode=7 then Seg:=$B000
Else Seg:=$A000;
Move(MemŠSeg:$0Ć,Buff,2000);
End;
Procedure PutScreen(var Buff);
var
Seg:word;
Begin
If VideoMode=7 then Seg:=$B000
Else Seg:=$A000;
Move(Buff,MemŠSeg:$0Ć,2000);
end;
Begin
ClrScr;
Writeln('Test screen.');
GetMem(ScreenBuff,2000);
GetScreen(ScreenBuffž);
Readln;
ClrScr;
Writeln('Screen Saver.');
Readln;
PutScreen(ScreenBuffž);
Readln;
End.
pascal.421nlazic,
-> #413, mmitrovicĆĆĆ Ne. Nisi u pravu. Kad naleti na New koji alocira objekat, BP
ĆĆĆ alokaciju prepušta konstruktoru. Konstruktor nalaže Heap
ĆĆĆ Manageru da na HEAPu alocira prostor za VMT pointer i podatke
ĆĆĆ iz objekta.
Nisam u pravu. Zainteresovala me je ova diskusija o konstruktorima
i ostalom, pa sam rešio da se malo pozabavim time. Naime, ja sam do sada
uzimao zdravo za gotovo da BP radi onako kako sam opisao. Napisao sam
par primerčića i uz pomoć Turbo Debugger-a ustanovio o čemu se radi. Ti
si, naime, bio u pravu :-). Ako se koristi proširena sintaksa New-a
proces inicijalizcije objekta na heap-u odvija se baš kako si ti opisao.
Ako se proširena sintaksa ne koristi, onda stvari stoje nešto drugačije.
ĆĆĆ Objekat ne sadrži kopiju VMTa, već NEAR pointer na VMT
ĆĆĆ lociran u Data segmentu. Taj VMToffset se prosleđuje
ĆĆĆ konstruktoru.
Pored SELF-a se, kao što kažeš, konstruktoru zprosleđuje i NEAR
pointer na VMT i on se na stek postavlja neposredno pre SELF-a. Ako se
konstruktor pozove za objekat koji je već inicijalizovan (bilo u Data
segmentu, bilo na heap-u) onda se u ovaj parametar prosleđuje 0. Na
osnovu ovoga konstruktor zna da ne treba da postavlja pokazivač na VMT
u okviru SELF-a jer je ovaj već postavljen pri inicijalizaciji. Što se
destruktora tiče, stvari stoje slično. Nula u VMToffset-u znači da je
destruktor pozvan "normalno", a bilo koja druga vrednost govori da je
destruktor pozvan proširenom sintaksom. U tom slučaju (VMToffset<>0)
destruktor zna da pre kraja svog rada treba da dealocira SELF.
ĆĆĆ To nema nikakve veze jedno sa drugim. Objekat neće biti
ĆĆĆ dealociran ako kod konstruktora (između begin i end) pokuša
ĆĆĆ alokaciju za svoje potrebe i dođe do greške. Ukoliko
ĆĆĆ HeapError funkcija vraća 1,
Nisam mislio na kod između BEGIN i END, već na kod u okviru
BEGIN-a. Ovaj deo konstruktora (ako se poziva putem proširene sintakse)
može (i treba) da inicijalizuje sva polja u okviru datog objekta,
uključujući i ona pokazivačka. Kada sam rekao da inicijalizacija ne
mora da uspe, mislio sam na ove promenljive.
ĆĆĆ Druga nezgodacija je što Fail deo dealocira samo
ĆĆĆ objekat, dok će memorija koja je alocirana unutar
ĆĆĆ konstruktora (pre Fail) ostati zarobljena.
Naravno. Kada bi Fail deo mogao da dealocira i ovo što si pomenuo,
to bi praktično značilo da BP ima neku vrstu algoritma za skupljanje
đubreta po heap-u, što bi bilo jaaaako lepo. To je, nažalost, za sada
naučna fantastika, bar što se Borladnovih paskala (a kol'ko znam i
ostali kompajlera) tiče.
Koliko sam uspeo da provalim na prvi pogled, konstruktor zapravo ne
vrši direktnu alokaciju objekta na heap-u, već poziva New, što je i
logično. Proces se, dakle, odvija unazad u odnosu na ono što je
napisano u programu (NEW (P,INIT)).
Pozdrav,
:) Nebojša :)
pascal.422mmitrovic,
-> #416, ognjen::::: Mogu ja. Procedura se zove ClrScr, iz Crt unita. Za čuvanje
Mislim da nije na to mislio. Jedno je brisanje ekrana, a drugo
njegovo softversko isključivanje.
pascal.423postmast,
From: ivica@galeb.etf.bg.ac.yu (Ivica Nikolic)
Subject: Re: pascal
Date: Sun, 14 May 1995 16:23:47 GMT
Nebojsa Dordevic je napisao:
>> Nov sam ovde pa da nebih lutao molim da mi neko javi gde da se dokopam nekih
>> unita za TP5.0 koji rade sa bazama podataka?
Postoji Borlandov Paradox Engine koji podrzava C i Pascal, ali nisam
siguran da li radi i sa 5.0. Sa 6.0 radi sigurno, a valjda i sa novijima.
Gde da ga nabavis? Call your local software dealer ;)
--
I only dream in infrared
pascal.424postmast,
From: Mladen.Adamovic@p5.f101.n101.z38.setnet.setnet.co.yu (Mladen Adamovic)
Subject: pascal
Date: Wed, 17 May 1995 10:58:03
"L> Nabavio sam neki CD sa gomilom (osamdesetak) programcica za
"L> paskal. Ima ih za sve verzije, od 5.0 do 7.0 i TPW. Neki od njih se
Reci kako se zove CD, sta sve ima na njemu ;), i gde si ga nabavio
i za koliko...
... Ukradi moj tag!
* Origin: Sveti Sava BBS Prijedor 079 11 629 SETNet: (38:101/101.5)
pascal.425nlazic,
-> #424, postmast:> Reci kako se zove CD, sta sve ima na njemu ;), i gde si ga
:> nabavio i za koliko...
Ja nemam CD ROM. Po CD-u o kome je reč sam preturao kod druga koji
ga je nabavio od nekog svog druga... Znaš kako to već ide kod nas :).
Zbog toga ti ne mogu reći kako se CD zove (ko zna gde je sada) i čega
tačno ima na njemu. Mene su interesovale stvari koje se odnose na
paskal i njih sam pokupio. Spisak toga nalazi se u dadoteci vezanoj za
poruku 7.399. Pored unit-a za paskal, sećam se da je na CD-u bio
popriličan broj biblioteka za C i veeeelika gomila crteža za Corel.
Pozdrav,
:) Nebojša :)
pascal.426postmast,
From: zsteva@magic.hobbiton.co.yu (Zeljko Stevanovic)
Subject: Re: pascal
Date: Mon, 15 May 1995 09:05:44 GMT
Vlada Biskupljanin (vgenije@sezam.UUCP) wrote:
: HI
: jel moze neko da mi pomogne -odnosno sastavi proceduru pomocu koje ce
: racunar softverski da pali i gasi monitior(zatamnjenje)
Mozes na vise nacina:
1. da (posto je rezolucija text-ualna) sacuvas ekran u ram-u pa kotom obrises
ekran. kod povracanja jednostavno ispises u video mem ono sto si cuvao u ram-u
i text je tu.. To je tipa "stap+kanap"..
2. Prvo je potrebno odrediti PortNum,PortOn,PortOff koji zavise od grafickog
adaptera (kartice..):
r : Registers;
PortNum,PortOff,PortOn : Word;
r.AH := $0F;
Intr($10,r); { Poziva interapt graficke kartice za odredjivanje tipa
tj. dali je mono ili CGA .. }
if r.AL = 7 then begin {ako je AL = 7 onda je mono adapter..}
PortNum := $3B8;
PortOff := $21;
PortOn := $29;
end; else begin { CGA }
PortNum := $3D8;
PortOff := $25;
PortOn := $2D;
end;
i zatim sa :
Port[PortNum]:=PortOff; { Ekran se zamraci.. }
Port[PortNum]:=PortOn; { Ekran se odmraci tj. vradi se sve kao sto je bilo.. }
Ovo sam izvukao iz O'Brien-ove knjige "Turbo Pascal 6 - kompletan vodic" inace
u knjigi na strani 276 je dat primer TSR programa koji zamracuje ekran kosle
odredjene neaktivnosti korisnika(ScreenServer)..
pascal.427jasicp,
Dobro braco, radi li neko Paradox Engineom za Pascal ili C++ ?
pascal.428djelovic,
-> #427, jasicp> Dobro braco, radi li neko Paradox Engineom za Pascal ili C++ ?
Ja koristim Borland Database Engine koji je praktično neka vrsta naslednika
Paradox Engina. Reci šta te zanima?
pascal.429postmast,
From: ivica@galeb.etf.bg.ac.yu (Ivica Nikolic)
Subject: Re: pascal
Date: Mon, 22 May 1995 06:58:54 GMT
Predrag Jasic je napisao:
>> Dobro braco, radi li neko Paradox Engineom za Pascal ili C++ ?
Ma batali Paradox Engine, stigao Borland Database Engine. Jes' da
radi samo pod Windows, al' nema sta nema. Podrzava standardno Paradox i
dBase formate, a preko ODBC drajvera podrzava sve sto ti padne na pamet
(npr. SQL).
--
Make children, not war
pascal.430biki,
AJDE NEKO DA POMOGNE MOM DRUGARU ZAMOLJAVAM VAS.
Evo sta ga muci...
(*
Ovo je program u Pascalu koji bi trebalo da manipulise sa fajlovima
kada je ukljucen Share u Windows-ima. Medjutim neradi procedura DeleteFile
sve dok je Share aktivan. U cemu je problem.
Unapred hvala.
*)
program IOFile;
{$S-,R-}
uses WinTypes, WinProcs, WinDos;
const
OneIO = 16383; { Number bytes handled per huge IO operation }
var
Buffer: array [0..OneIO] of Char;
function _LFileSize(F : integer) : longint;
{- an equivalent to TP's FileSize() function }
var
CurPos : longint;
begin
CurPos := _llseek(F,0,1);
_LFileSize := _llseek(F,0,2);
_llseek(F,CurPos,0);
end;
{ Copy file (full pathname) Returns 0 if error.}
function CopyFile(FileNameS, FileNameD: PChar): byte;
var
Fs: Integer; { File Handle for Windows file functions }
Fd: Integer; { File Handle for Windows file functions }
Size: Longint; { Size of bitmap, Size of color spec }
begin
CopyFile := 0;
Fs := _LOpen(FileNameS, of_Read);
if Fs = -1 then Exit;
_LCreat(FileNameD, 0);
Fd := _LOpen(FileNameD, of_Write);
repeat
size:= _LRead(Fs, Buffer, SizeOf(Buffer));
_lwrite(Fd, Buffer, Size);
until size = 0;
_LClose(Fs);
_LClose(Fd);
end;
{ Move file (full pathname) Returns 0 if error.}
function MoveFile(FileNameS, FileNameD: PChar): byte;
var
Fs: Integer; { File Handle for Windows file functions }
Fd: Integer; { File Handle for Windows file functions }
Size: Longint; { Size of bitmap, Size of color spec }
Obuff: TOfStruct;
begin
MoveFile := 0;
Fs := _LOpen(FileNameS, of_Read);
if Fs = -1 then Exit;
_LCreat(FileNameD, 0);
Fd := _LOpen(FileNameD, of_Write);
repeat
size:= _LRead(Fs, Buffer, SizeOf(Buffer));
_lwrite(Fd, Buffer, Size);
until size = 0;
_LClose(Fs);
_LClose(Fd);
OpenFile(FileNameS, Obuff, of_Delete);
end;
{ Delete file (full pathname) Returns 0 if error.}
function DeleteFile(FileNameS: PChar): byte;
var
Obuff: TOfStruct;
begin
DeleteFile := OpenFile(FileNameS, Obuff, of_Delete);
end;
begin
CopyFile('c:\1\file.pas', 'c:\1\file.bak');
MoveFile('c:\1\file.pas', 'c:\2\file.pas');
DeleteFile('c:\1\file.bak');
end.
pascal.431janko,
-> #413, mmitrovic> Ne. Nisi u pravu. Kad naleti na New koji alocira objekat,
> BP alokaciju prepušta konstruktoru. Konstruktor nalaže
> Heap Manageru da na HEAPu alocira prostor za VMT pointer i
> podatke iz objekta.
Jesi li ikada gledao kako izgleda mašinski kod?
Tamo gde piše
nešto = new NekiObj
bi morala da postoji sekvenca koja zove funkciju NEW. A da NEW dobija
info o veličini objekta i o adresi konstruktora, koga će ona pozvati.
Kada bi u konstruktoru bio ugrađen poziv NEW, nikada objekta ne bi mogao
da se napravi a da nije na hipu, što normalno nije tačno.
pascal.432djelovic,
Ima li neko zainteresovan da odrzi kurs o Turbo Pascalu for Windows? Uslovi
rada i honorar veoma dobri.
Ukoliko ste zainteresovani javite se na 533-8174 ili 533-6632 ili meni na
mail.
- Dejan
pascal.433postmast,
From: Vladimir.Bonc@f101.n101.z38.setnet.setnet.co.yu (Vladimir Bonc)
Subject: pascal
Date: Fri, 19 May 1995 01:15:48
NJ> From: "Nemanja Jovanovic" <nemko@sezam.UUCP>
NJ> Newsgroups: yu.prog.pascal
NJ> Organization: SEZAM Beograd, 011 648-422
)>- From: Vlado.Prelovac@f133.n103.z38.setnet.setnet.co.yu (Vlado
)>- Prelovac) Subject: pascal
)>- Date: Wed, 10 May 1995 01:18:00
)>- GDE ?
)>- * Origin: SETNet * BBS Politika, Bgd * +381 11 3229148 * 0-24 (38:103/133)
NJ> Ako se zbog ovakvih poruka vrsi razmena ponekih konferencija
NJ> sa SETNet-om onda .... .
NJ> Dajte bre ljudi i uozbiljite se malo. (I pisite vece odgovore od
NJ> citata i tag-line-ova zajedno).
NJ> Tako vam boga.
NJ> ---
NJ> * Origin: SETNet - BeoInternet most ->...<- (38:103/120.0)
Namerno sam citirao celu poruku da vidis da ni kod nas na SET ne
dolaze bolje poruke. Slazem se s tobom da je ona poruka bezvezna,
ali tu i veliku 'zaslugu' imaju protokoli za razmenu poste izmedju
SET i mosta, pored toga sto je neko lenj pa ga mrzi da obrise visak
(a mozda i ne zna kako :) ). Tu su i sysop-i donekle krivi jer
(skoro) svakom daju pristup mrezi, iako u lokalu nisu napisali ni
dve poruke (jedna je da ga obaveste da su stigli i da traze visi
nivo) :(
Meni je nezgodno sto sve poruke koje dolaze sa mosta imaju u
subjektu samo 'pascal' pa su onemogucene neke opcije readera, npr da
po subjektu biram koje cu da citam; 'to je sreca dala al'' nesreca'
da nema mnogo poruka, pa ne gubim mnogo vremena citajuci one koje me
ne interesuju :)
... _____________________________________(upisati po zelji)
* Origin: Oreska BBS, UZICE = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.434postmast,
From: broker@setnet.co.yu (Predrag Supurovic)
Subject: pascal
Date: Fri, 19 May 1995 12:42:47
"B> From: "Ognjen Blagojevic" <ognjen@sezam.UUCP>
)-> jel moze neko da mi pomogne - odnosno sastavi proceduru pomocu
)-> koje ce racunar softverski da pali i gasi monitior(zatamnjenje)
"B> Mogu ja. Procedura se zove ClrScr, iz Crt unita. Za cuvanje
"B> ekrana je malo slozenije, uglavnom definises array[1..25] of
"B> string i onda lepo trcis po ekranu i ubacujes znak po znak.
Mislim da je coek trazio procedure za ono sto se zove 'fade in'
i 'fade out' a ne za screeen saver.
Neko mu je vec poslao odgovor kako se to radi na VGA karticama.
A mene je uvek zanimalo da li je neko izveo nesto slicno na
Hercules-u?
... BR> Do what I say, not what I do.
* Origin: Oreska BBS, Uzice = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.435postmast,
From: al@setnet.co.yu (Aleksandar Jevic)
Subject: pascal
Date: Sun, 21 May 1995 10:43:11
─═(Predrag Supurovic - "ognjen Blagojevic" od 05-19-95 11:42)═─
PS> Mislim da je coek trazio procedure za ono sto se zove 'fade in'
PS> i 'fade out' a ne za screeen saver.
Pa ja imam neki UNIT za Fade Out/In... Samo ja blage veze nemam
kako se to koristi ni sta je unit, ali ako nekom treba nek zna da imam
:)
A voleo bi da znam kako mogu da koristim UNIT...
BTW Nemojte sdamo da se smejete, veze nemam za pascalom :)
___ Blue Wave/QWK v2.12
* Origin: AV Manta -=- Mail Server -=- Belgrade -=- SETNet (38:103/121)
pascal.436nlazic,
-> #435, postmast:> A voleo bi da znam kako mogu da koristim UNIT...
Na početku programa u USES sekciji pišeš:
uses unit_name_1, unit_name_2, ...
Sada savim normalno možeš da pozivaš procedure, funkcije, ili da
koristiš promenljive, konstante, objekte i sl. koji su definisani u
INTERFACE delu tog UNIT-a (po naški unit = modul). Ukoliko u dva modula
imaš definisane dve funkcije istog imena, razlikuješ ih tako što pišeš:
unit1.procedura <- poziva proceduru iz unit1
unit2.procedura <- poziva proceduru iz unit2
Predlažem ti da pogledaš neke primere i literaturu. :)
Pozdrav,
:) Nebojša :)
pascal.437nlazic,
-> #431, janko:> Kada bi u konstruktoru bio ugrađen poziv NEW, nikada objekta ne bi
:> mogao da se napravi a da nije na hipu, što normalno nije tačno.
U konstruktoru se zaista nalazi poziv NEW. Ako napišeš:
Control:=New (PInputLine, Init (R, 15));
na primer, proces se odvija ovako: poziva se konstruktor Init i
prosleđuju mu se parametri kako je već ranije opisano. U okviru koda
(mašinskog) koji kompajler generiše kada pročita "begin" iz
konstruktora, poziva se NEW koji alocira objekat na heap-u. Potom
konstruktor vrši doterivanje tog objekta (postavljanje osnovnih polja).
Sve ovo se odnosi samo na slučaj korišćenja proširene sintakse. Isti
posao se može obaviti i na "standardan" način:
var Control:PInputLine;
R:TRect;
begin
...
New (Control);
Control^.Init (R,15);
...
Krajnji reultat je potpuno isti, samo je put kojim se do njega
došlo drugačiji.
pascal.438mmitrovic,
-> #431, janko::::: Jesi li ikada gledao kako izgleda mašinski kod?
Da. Šta više, za većinu stvari znam kako će izgledati asm kod, takođe
mogu da prepoznama na osnovu asm koda da li je EXE pisan u pascalu, a
uz pomoć TDa mogu da regenerišem 90% PAS sorsa bez problema.
Freaky, isn't it? :) Pitajte mbobana ako ne verujete, on je zadnji
dobio sors svog EXE fajla. :) Ne pitajte kako znam, ni sam ne znam,
valjda mi ušlo u krv.
::::: Tamo gde piše
::::: nešto = new NekiObj
::::: bi morala da postoji sekvenca koja zove funkciju NEW. A da NEW dobija
::::: info o veličini objekta i o adresi konstruktora, koga će ona pozvati.
Pogađaj ponovo. :) Ne mora, i nije.
::::: Kada bi u konstruktoru bio ugrađen poziv NEW, nikada objekta ne bi mogao
::::: da se napravi a da nije na hipu, što normalno nije tačno.
Nisam baš shvatio na šta misliš, budi malo jasniji.
pascal.439nlazic,
-> #438, mmitrovic:> uz pomoć TDa mogu da regenerišem 90% PAS sorsa bez problema.
:> ............ :) Ne pitajte kako znam, ni sam ne znam,
:> valjda mi ušlo u krv.
Svaka čast, domaćine :) Računam na tebe ako mi ovako nešto zatreba. :-)
Pozdrav,
:) Nebojša :)
pascal.440mmitrovic,
-> #421, nlazic::::: konstruktor pozove za objekat koji je već inicijalizovan (bilo u Data
::::: segmentu, bilo na heap-u) onda se u ovaj parametar prosleđuje 0. Na
::::: osnovu ovoga konstruktor zna da ne treba da postavlja pokazivač na VMT
::::: u okviru SELF-a jer je ovaj već postavljen pri inicijalizaciji.
Tako izgleda na osnovu koda, međutim čak i za objekte koji su već
inicijalizovani ne prosleđuje se 0. Još nisam naleteo na slučaj da
VMTOffset bude 0, iako postoji provera za to. Možda je to stavljeno
zbog objektnih ekstenzija asemblera?
::::: destruktora tiče, stvari stoje slično. Nula u VMToffset-u znači da je
::::: destruktor pozvan "normalno", a bilo koja druga vrednost govori da je
::::: destruktor pozvan proširenom sintaksom. U tom slučaju (VMToffset<>0)
::::: destruktor zna da pre kraja svog rada treba da dealocira SELF.
U pitanju su 0 i 1, tako da to nije VMTOffset. Kad je na steku 0
ne radi se dealokacija već samo brisanje VMT pointera, kad je 1 radi se
i dealokacija.
::::: Nisam mislio na kod između BEGIN i END, već na kod u okviru
::::: BEGIN-a. Ovaj deo konstruktora (ako se poziva putem proširene sintakse)
::::: može (i treba) da inicijalizuje sva polja u okviru datog objekta,
::::: uključujući i ona pokazivačka. Kada sam rekao da inicijalizacija ne
::::: mora da uspe, mislio sam na ove promenljive.
Ne. BEGIN deo ne inicijalizuje polja. Uopštio si TObject i njegove
naslednike sa svim objektima. Inicijalizaciju polja u ovom objektu radi
kod između begin i end sekcije konstruktora TObject.Init (postavlja sva
polja na 0), pa se to provlači kroz sve fabričke objekte (pošto svi
potiču od njega). Ukoliko napišeš svoj objekat, polja neće biti
inicijalizovana ukoliko ih sam ne inicijalizuješ.
::::: Koliko sam uspeo da provalim na prvi pogled, konstruktor zapravo ne
::::: vrši direktnu alokaciju objekta na heap-u, već poziva New, što je i
::::: logično. Proces se, dakle, odvija unazad u odnosu na ono što je
::::: napisano u programu (NEW (P,INIT)).
To sam i ja mislio, al' nije. Konstruktor poziva rutinu koja je
totalno odvojena od New (bar ja nisam uspeo da ih povežem), ali obavlja
istu stvar. (redundancy?)
pascal.441nlazic,
-> #440, mmitrovic:> inicijalizovani ne prosleđuje se 0. Još nisam naleteo na slučaj da
:> VMTOffset bude 0, iako postoji provera za to. Možda je to stavljeno
:> zbog objektnih ekstenzija asemblera?
Ja sam naleteo. Pogledaj sledeći primer:
* Control := New(PInputLine,Init(R, 15));
Ovde se pre SELF-a stavlja na stek VMT parametar. To je OK. Konstruktor
TInputLine-a sada napravi objekat na heap-u i ostalo. Međutim, ovaj
konstruktor treba da u jednom trenutku pozove konstruktor TView-a. E
sada on (konstruktor TInputLine-a) stavlja 0 u VMT parametar i poziva
Init TView-a. To i jeste logično jer je objekat već postavljen na heap.
Kada napišem nešto poput ovoga:
* New (Control);
* Control^.Init (R,15);
bilo bi logično da se desi ista stvar (0 -> VMToffset). Međutim, BP ne
radi ovako već kao što si ti rekao (VMToffset<>0). Znaš li u čemu je
fora?
:> U pitanju su 0 i 1, tako da to nije VMTOffset. Kad je na steku 0
:> ne radi se dealokacija već samo brisanje VMT pointera, kad je 1 radi
:> se i dealokacija.
Da, "nedefinisano" je bar što se Borlanda tiče nedefinisan pojam. :)
Ovaj parametar može biti 0 ili 1 i koristi BP-u da zna šta da radi sa
VMT-om. U pitanju je bio lapsus. Ja sam taj parametar nazvao VMToffset
i kada sam govorio o destruktorima. Pravi njegov naziv je "VMT
parameter" i u slučaju konstruktora predstavlja VMToffset, a u slučaju
destruktora samo određuje budućnost VMT-a (dealokacija ili ne) i ne
ukazuje na njega.
:> To sam i ja mislio, al' nije. Konstruktor poziva rutinu koja je
:> totalno odvojena od New (bar ja nisam uspeo da ih povežem), ali
:> obavlja istu stvar. (redundancy?)
Ja sam došao do sledećeg zaključka. (sve što pričam odnosi se na
program u kome se nalaze gornji programski redovi (oni sa *)).
Ako se New poziva direktno se New (Control); prokram se kreće
ovako: skače na ofset 028A. Odatle poziva 0353 gde se nalazi kod NEW-a
(pretpostavljam). U drugom slučaju, gde stoji Control:=New(..., Init...)
to ide ovako: skače na ofset 04ED, odakle poziva 0353 (dakle NEW). Kada
završi sa ovim (objekat je sada na heap-u) i uradi inicijalizacija
objekta, poziva se 028A koja opet poziva 0353 (znači NEW sa poziva dva
puta!) ali u ovom slučaju ne radi ništa. Ovi brojevi, naravno, ne znače
mnogo, ali najlakše mi je da tako napišem. Da li znaš nešto o ovome?
Pozdrav,
:) Nebojša :)
P.S. Uz poruku je vezan primer o kome sam govorio, tek da ne bi pričali o
različitim stvarima.
test.zippascal.442janko,
-> #438, mmitrovic> ::::: Kada bi u konstruktoru bio ugrađen poziv NEW, nikada
> objekta ne bi mogao ::::: da se napravi a da nije na hipu,
> što normalno nije tačno.
>
> Nisam baš shvatio na šta misliš, budi malo jasniji.
Ah, sad sam shvatio, vi Paskalovci i ne znate šta je konstruktor u smislu
u kome za njega zna C++ :)
Vi pozivate eksplicitno i Init i Done za svaki objekat, još uvek?
Znao sam da to radi TP 6.0.
Na šta uopšte mislite kada pominjete konstruktor, ako Init i Done
ručno pozivate???
pascal.443postmast,
From: zoran.rilak@rstones.durlan.co.yu (Zoran Rilak)
Subject: Pascal
Date: Thu, 25 May 1995 00:24:00 CET
QWK To: Miljan Mitrovic
(Tekst poruke: Miljan Mitrovic, na temu PASCAL)
MM> Nije INT 13h nego INT 1Ch. INT 13h su low-level disk funkcije.
Lapsus tastaturae ;) Izvinjavam se.
MM> I da, ukoliko pises rezidentni program koji koristi ovu metodu,
MM> moras da preuzmes INT 21h i sprecis drugi program da preuzme na
MM> sebe int 08. E sad ako i drugi program bude menjao tajmer, ne
MM> gine ti kurslus. Opsta preporuka: uklopi se u 18.2 puta/sec i ne
MM> diraj ako ne moras. :)
Eh, ali INT 8 moze se preuzeti i bez DOS funkcija (adresa 0:(8 * 4)),
sto doprinosi prljanju metode. Slazem se, ovo i nije bas zgodan nacin za
kontrolu brzine izvrsavanja programa. Zato se na AT-u moze zgodno upotrebiti
prekid 15H i podfunkcija 83H ("Event wait"). Ona zadati broj milisekundi nakon
izvrsenja postavi sedmi bit bajta na zadatoj adresi u memoriji, dok se za to
vreme program koji ju je pozvao nesmetano izvrsava. Pre poziva interapta 15H,
u
AH se upisuje 83H, u AL 0 za postavljanje ili 1 za otkazivanje vec
postavljenog
intervala, u CX i DX broj milisekundi (CX je visa rec), a ES:BX
sadrze adresu
bajta u memoriji kome ce se nakon CXDX milisekundi postaviti sedmi bit. Sve
sto
program treba da ucini jeste da s vremena na vreme proveri da li je sedmi
bit
na ES:BX "skocio". Slicna ovoj je i funkcija 86H istog prekida, koja
koristi
samo registre CX i DX i to na isti nacin kao i prethodna, ali ne vraca
kontrolu
programu koji ju je pozvao vec ceka u mrtvoj petlji dok vreme ne
istekne.
3OPAH
... cosřÓ = 1:(tgřÓ + 1)
--- Blue Wave/RA v2.12 [NR]
* Origin: BBLink <tm> * Rolling Stones * 018.325.314 * Nis (0:0/0) #! rnews 995
pascal.444djelovic,
-> #442, janko> Na šta uopšte mislite kada pominjete konstruktor, ako Init i Done
> ručno pozivate???
Baš si zao :).
Misle na funkcije koje će stvoriti i uništiti virtuelnu tabelu, baš kao i
C++ programeri.
pascal.445bulaja,
NLazic mi je dostavio impozantnu zbirku raznih TP biblioteka, trudiću
se da selektujem šta od toga vredi za dir, a ovde prilažem spisak pa
ako vidite nešto interesantno što mi je promaklo, vičite :).
Naziv ! Veličina ! Opis
=========================================================================
6datgen0.zip 50214 Single Screen Data Base App. Generator
ansiview.zip 10928 Otvara ANSI prozor u TV-u.Jako lepo+sors
as22.zip 92885 Prikazuje .BMP (za Windows-e)
autodox2.zip 60891 Pisanje dokumentacije za sorsove
bankma.zip 50832 Evidencija čekova i sl.(sors za Windows)
binhelp.zip 8607 Škola za rad sa binarnim stablima
boi120.zip 51051 BBS Onliner interface
btrtpw.zip 1570 Poziv BTrieve funkcija iz Windows-a
btrvpas.zip 58221 Rad sa BTrieve-om pod DOS-om+BTRIEVE.EXE
cpucheck.zip 10610 Ime sve govori
delay6.zip 946 Ispravlja bug DELAY-a kod TP6.0
dvunit.zip 1950 Podrška za DeskView multitasking
dxfpas.zip 17553 Lib. za importovanje podataka iz .DXF
eev100r1.zip 41524 SVE za izračunavanje izraza (infix+prefix forma)
exitpas.zip 1450 Registrovanje EXIT procedura
fcomm240.zip 52396 Komunikaciona biblioteka
frac2.zip 17208 Malo fraktala
gphtxt.zip 8449 WriteLn i ReadLn u grafičkom režimu
grcrypt.zip 9918 Šifrovanje/dešifrovanje tekstova
gsdb21.zip 99018 Pristup .DBT, .DBF, .NDX fajlovima
hdebug.zip 7370 Heap Debugger (TP6.0 sors)
icad11.zip 68292 Editor ikona za DOS (TP i TC)
intrfc61.zip 53910 Dump TP6.0 TPU Files
intro20.zip 160033 Dobar Intro Designer
kabloo.zip 44218 Fireworks. Dobar primer korišćenja SVGA (1024x768)
keep.zip 25109 Briše sve OSIM navedenih fajlova
linktext.zip 5715 Ubacivanje stringa u sred teksta
mcedit10.zip 95081 Mouse Cursor Editor
microt.zip 2100 Precizan timer
morepscl.zip 3232 MoreMath + MoreStrings
nonstop.zip 5416 Sprečava CTRL-ALT-DEL, CTRL-Break itt.
note20.zip 30221 Jednostavan editor (sors)
nrpas13.zip 303505 412 programčića za numeričku matematiku
objstr.zip 2549 Objekti za rad sa stringovima (simple)
om36.zip 89531 Zamena za Program Manager (sors)
oscil.zip 19563 Osciloskop za Sound Blaster (sors)
pcl4p33.zip 58913 Komunikaciona biblioteka
pkeytree.zip 195296 KeyTree Tutor (random file access)
pnl010.zip 123448 Rad sa velikim nizovima i slično
pntr_v1.zip 47955 Dizajner tekstualnih ekrana
prpas.zip 31348 Ulepšavanje sorsova u paskalu (nazubljivanja i sl.)
prvw13.zip 42962 Preview fontova za windows (sors)
qwrit11.zip 5414 Quick screen writing unit
rbootp55.zip 595 Reboot iz paskala
rmtp03.zip 63584 Raster Master - crtanje
scrsav.zip 1670 Screen Saver za TVision
shazam.zip 158959 TV Code Generator. Zgodno za učenje TVision-a
shdk-1.zip 308580 Lib za CRC-ove, komplexne brojeve i sl.
sortdemo.zip 50710 Fantastičan demo raznih sortova (vga256 sortira boje)
splotch.zip 19626 Example of cellular automata (vga256)
stackary.zip 2926 Rad sa stekom (stack array)
stackptr.zip 1096 Rad sa stekom
stream13.zip 60354 Jednostavan rad sa TV/OWL stream-ovim
strlib12.zip 6757 String Library
swaptp.zip 19025 Jako dobra EXEC proc. Radi iz EMS/XMS
tclocks.zip 4645 Sat za Turbo Vision (stoji u meniju)
tick.zip 17297 TSR koji čita tekst sa diska i prikazuje ga na ekranu
tp6sb110.zip 12038 Rad za Sound Blaster-om
tp6xms.zip 9799 Upravljanje XMS memorijom
tpaint15.zip 110337 Program za crtanje (GIF, PCX, TIF)
tpcpuid.zip 5982 Sors za detekciju CPU-a (Intel)
tpdate.zip 34907 Rad sa datumima (sors)
tpdb314.zip 68803 TP6.0 dBase tools (rad sa .dbf)
tpfast40.zip 80653 Brzi uniti za rad sa ekranom, tast. itd.
tphrt3.zip 60707 TP High Resolution Timer Toolbox (sors)
tpmagic.zip 136594 Rad sa diskom, ekranom itd. - jako lepo
tppcx.zip 44915 Rad sa slikama u PCX formatu
tpscrnsv.zip 4930 Rezidentan screen saver (sors)
tpu60.zip 123411 Inside TP6.0 units
tpwspy.zip 20465 TPW Spy On Windows (sors)
tsrsrc.zip 75334 TSR utils EMS, XMS, IPX...(sors PAS+ASM)
tvg102_s.zip 38416 TVision u grafičkom režimu
tw200d.zip 45405 Prozori, meniji ... (demo v.)
twi11.zip 103569 Text Windows Interface
util161.zip 67728 Sitni utility (beep i sl.)
vgaintro.zip 53700 Sjajni intro-i (scroll-ovi) i to u TP!!!
vga_font.zip 41370 Grafika u tekst režimu (lepo al' treperi)
vis082s.zip 345837 Gomila (oko 90) unita za sve i svašta
vscode23.zip 16902 Šifrovanje datoteka svih formata
vscreen.zip 6483 Handle VirtualScreens on the Heap
winpascl.zip 72220 Paskal interpreter za Windows-e
zdisk.zip 8710 Overwrite unused sectors with zeros
zip2obj.zip 40269
4,412,710 bytes in 86 file(s)
pascal.446nlazic,
-> #442, janko:> Na šta uopšte mislite kada pominjete konstruktor, ako Init i Done
:> ručno pozivate???
Ne znam kako stvari stoje u C++, ali u BP je ovako: Init (ovo je
uobičajeni naziv) je konstruktor i služi za postavljanje VMT-a (između
ostalog). Ovo se vrši automatski, čim napišeš BEGIN, a pored toga u
konstruktoru može biti izvršen posao koji nema blage veze sa
inicijalizacijom objekta i VMT-a (ovaj kod sam pišeš). Najjednostavniji
konstructor izgleda ovako: constructor TNekiObj.Init; begin end; i on će
savršeno obaviti svoj posao (VMT itd.).
Isto važi i za destruktore.
pascal.447pirke,
-> #386, dejanr>>> Ja sam pre par dana dobio Delphi na test od CET-a, dakle najbolje
>>> se njima obrati.
Na sajmu sam bio do CET-a i sve je kao O.K. osim sto za pravu cenu nude
DELPHI koji i nije bas "pravi" zbog toga sto ne dobijes reg.broj s kojim
mozes da zoves Tehnical Support ili nesto slicno niti sa necim sto si
radio u tome mozes da izadjes na strano trziste. Ili gresim?
DP...
pascal.448janko,
-> #444, djelovic> Misle na funkcije koje će stvoriti i uništiti virtuelnu
> tabelu, baš kao i C++ programeri.
A otkud ti to da se tabela virtuelnih funkcija STVARA u toku izvršavanja
programa (bar u C++-u)? Nju (da naglasim, u C++-u) pravi kompajler
isključivo *u toku prevođenja*. U toku konstrukcije u objekat se samo
ugradi adresa njegovog ulaza u tabelu.
Ubeđen sam da tako radi i TP. Ako ne radi, ti dizajneri pojma nemaju (a
u to ne verujem).
pascal.449djelovic,
-> #448, janko> A otkud ti to da se tabela virtuelnih funkcija STVARA u toku izvršavanja
> programa (bar u C++-u)?
Dobro de :), tako se kaže.
pascal.450evlad,
-> #445, bulaja>> 4,412,710 bytes in 86 file(s)
Stavi sve u dir i na novi sezam :)
pascal.451drpr,
Evo od onog spiska sto je meni zapalo za a najbolje bi bilo da
baciš svepa mi gledamo polako :)
-> frac2.zip 17208 Malo fraktala
-> note20.zip 30221 Jednostavan editor (sors)
-> nrpas13.zip 303505 412 programčića za numeričku matematiku
-> oscil.zip 19563 Osciloskop za Sound Blaster (sors)
-> qwrit11.zip 5414 Quick screen writing unit
-> tick.zip 17297 TSR koji čita tekst sa diska i prikazuje ga na ekranu
-> tp6sb110.zip 12038 Rad za Sound Blaster-om
-> tpdb314.zip 68803 TP6.0 dBase tools (rad sa .dbf)
-> tphrt3.zip 60707 TP High Resolution Timer Toolbox (sors)
-> tpscrnsv.zip 4930 Rezidentan screen saver (sors)
-> tw200d.zip 45405 Prozori, meniji ... (demo v.)
cope
pascal.452mmitrovic,
-> #441, nlazic::::: sada on (konstruktor TInputLine-a) stavlja 0 u VMT parametar i poziva
::::: Init TView-a. To i jeste logično jer je objekat već postavljen na heap.
Sad je kasno da kažem znao sam? :)
Tako je, tu si u pravu, samo što ne prosleđuje 0 zato što je objekat
već na heap-u već da bi sprečio konstruktor TView-a (u ovom primeru) da
prebriše VMT polje objekta. To bi anuliralo prednosti late binding-a.
::::: * New (Control);
::::: * Control^.Init (R,15);
::::: bilo bi logično da se desi ista stvar (0 -> VMToffset). Međutim, BP ne
::::: radi ovako već kao što si ti rekao (VMToffset<>0). Znaš li u čemu je
::::: fora?
Ne bi bilo logično. Pazi, kad kreiraš objekat sa "standarnim" New, on
ne upisuje ništa u VMT polje objekta. Potrebno je da pozoveš konstruktor
manuleno (htedoh reći ručno), a tada mu je potreban VMToffset koji će
konstruktor upisati u polje.
0 ide u VMToffset samo ukoliko se poziva nasleđeni konstruktor iz
konstruktora. Iz njega sigurno, pitanje je za ostale metode objekta,
pogledaću kasnije. Izvan objekta ne možeš nikako kreirati pascal kod
koji će pri pozivu nekog konstruktora smestiti 0 u VMToffset. Zato
se i nisam setio toga.
pascal.453mmitrovic,
-> #442, janko::::: Vi pozivate eksplicitno i Init i Done za svaki objekat, još uvek?
::::: Znao sam da to radi TP 6.0.
Nisam neki mag za C++, makar zato što mi mašina ne dozvoljava takav
luksuz, međutim po onome što sam video i u C++ mora da se pozove
konstruktor da bi se objekat kreirao. Ukoliko ga korisnik ne
pozove, ko ga poziva?
pascal.454nemko,
U prilogu je jedan 'brz' skrol u 320x200x256.
Nece da radi na pojedinim grafickim karticama
kao naprimer CL. Pogledajte u cemu je problem.
Javite mi ako vam je uspelo neko poboljsanje
istog.
chain4.zippascal.455janko,
-> #453, mmitrovic> Nisam neki mag za C++, makar zato što mi mašina ne
> dozvoljava takav luksuz, međutim po onome što sam video i
> u C++ mora da se pozove konstruktor da bi se objekat
> kreirao. Ukoliko ga korisnik ne pozove, ko ga poziva?
Poziva se automatski, čim se naiđe na deklaraciju.
Što je još lepše, i destruktor se poziva automatski, kada se završi
scope:
Npr.
int a()
{
Lopta l( 10 ); // automatski pozvan ctor kada se naiđe na
// deklaraciju
l.pomeri( 2, 2 );
// dror će automatski biti pozvan pre povratka iz
// procedure -- nema greške ni slučajno
}
a na TP
function a
var l : Lopta;
begin
l.init(10); (* mora peške *)
l.pomeri( 2, 2 );
l.done; (* i još, ovo zaboravi i eto frke, pogotovu ako ti i ctor
generiše nove objekte -- ostaju u vazduhu *)
end;
BTW: Ako imaš 1 MB na mašini, možeš da voziš i C++ kompajler, makar to
bila i 286 (BC 2.0 radi OK na 2 MB u IDE, a linijski kompajler će ti
raditi i na 1 MB sasvim OK). Probaj, nećeš se pokajati.
pascal.456janko,
-> #452, mmitrovic> Ne bi bilo logično. Pazi, kad kreiraš objekat sa
> "standarnim" New, on ne upisuje ništa u VMT polje objekta.
> Potrebno je da pozoveš konstruktor
Fala Bogu, konačno smo raščistili -- kao što sam i tvrdio -- samo jedno
POLJE se puni a ne pravi se TABELA pri pozivu ctora.
pascal.457saricl,
Na koji način da "nateram" program pisan u TP V7.0 da na
VGA grafici radi u 800x600?
Takođe me zanima na koji način da obavim pretraživanje diska
u potrazi za zadatim fajlom. Kao izlaz ova procedura treba da
vrati putanju do fajla. FExpand mi stalno vraća tekući direktorijum.
pascal.458evlad,
-> #457, saricl>> Na koji način da "nateram" program pisan u TP V7.0 da na
>> VGA grafici radi u 800x600?
Imaš u dir-a arhivu sa drajverima za svga ...
>> Takođe me zanima na koji način da obavim pretraživanje diska
>> u potrazi za zadatim fajlom. Kao izlaz ova procedura treba da
>> vrati putanju do fajla. FExpand mi stalno vraća tekući direktorijum.
probaj u kombinaciji findfirst,findnext imaš lep primer dirdemo.pas koji
stiže uz tp v7.0 ...
pascal.459nemko,
-> #457, saricl)>- Na koji način da "nateram" program pisan u TP V7.0 da na
)>- VGA grafici radi u 800x600?
800x600 spada u domen SVGA kartica :). Imas dva resenja (ili cak i tri).
1). Nabavis SVGA.BGI drajver, mislim da se o tome pricalo na sezamu,
ali nemogu ti reci gde da pronadjes isti.
2). Zahtevas da korisnik ima instaliran VESA drajver i napravis sam
rutine za inicijalizaciju modova i crtanje potrebnih objekata.... .
U tome ti mogu pomoci vec gotove rutine koje mozes naci u Sezamovim
direktorijuma.
3). Ovo nije resenje vec patnja. Moras napisati program tako da
prepoznaje korisnikovu karticu i na osnovu date informacije
inicijalizujes potrebne modove i ostatak je kao pod 2).
Ako ti trebaju podaci o grafickim karticama jevi mi se u mail,
pa ce mo da ti prosledimo iste!
pascal.460zdule,
Da li neko ima konvertor poruka uucp <-> fido ili
strukturu fido pkt i msg fajlova.
ZDule...
pascal.461mmitrovic,
-> #456, janko::::: Fala Bogu, konačno smo raščistili -- kao što sam i tvrdio -- samo jedno
::::: POLJE se puni a ne pravi se TABELA pri pozivu ctora.
A kad je to uopšte bilo sporno?
Odakle uopšte ideja da se za svaku instancu kreira posebna tabela,
ja to nisam spomenuo.
pascal.462mmitrovic,
-> #455, janko::::: Poziva se automatski, čim se naiđe na deklaraciju.
::::: Što je još lepše, i destruktor se poziva automatski, kada se završi
Ok. A šta je sa instancama alociranim u HEAPu. Kako se alociraju?
Kako je tu regulisano pozivanje konstruktora? Drugo, kako da odložiš
pozivanje konstruktora, na primer dok ti druga funkcija ne vrati
parametar koji hoćeš da proslediš konstruktoru? Koliko vidim, ovde nemaš
izbora, konstruktor će biti pozvan bezuslovno.
::::: BTW: Ako imaš 1 MB na mašini, možeš da voziš i C++ kompajler, makar to
::::: bila i 286 (BC 2.0 radi OK na 2 MB u IDE, a linijski kompajler će ti
::::: raditi i na 1 MB sasvim OK). Probaj, nećeš se pokajati.
Mogu, ali je vrlo sporo, a navikao sam da mi kompajliranje kratko
traje :), osim toga smeta mi organizacija u OBJ i LIB fajlove, sa tim
i potreba za project i .h fajlovima. Dalje, C++ u EXE linkuje mnogo više
stvari nego što mu treba, tako da anulira prednosti koje ima na polju
optimizacije koda. Moglo je sve to lepše da se izvede.
Ja inače imam 386sx/20 sa 4mb rama, ali mi je HD 40Mb, taman za DOS,
BP i malu strategijicu. :) Treba sad da mi legne neka lova pa ću nabaviti
DX/40 i veći HD, pa će biti mesta i za C++. Samo da mi prođu ispiti. :)
pascal.463kum.zoki,
-> #427, jasicp Radim. Reci.
pascal.464postmast,
From: djdule@mikros.durlan.co.yu (Dusan Djordjevic)
Subject: Re: pascal
Date: Wed, 31 May 95 16:15:45 CET
Mladen.Adamovic@p5.f101.n101.z38.setnet.setnet.co.yu (Mladen Adamovic writes:
> Nije valjda to tebi potrebno ;) ?
> Mislim pises programerske tekstove u PC/RA^. pa...
Kako mos da pitas nesto tako glupo coveka. Pa cim je pisao te tekstove,
a i sam si video kakvi su znaci da nesto zna programiranje...
Dusan Djordjevic... Mikros Elektronik, Nis
pascal.465postmast,
From: ivica@galeb.etf.bg.ac.yu (Ivica Nikolic)
Subject: Re: pascal
Date: Wed, 31 May 1995 21:22:52 GMT
Miljan Mitrovic je napisao:
>> Nisam neki mag za C++, makar zato sto mi masina ne dozvoljava takav
>> luksuz, medutim po onome sto sam video i u C++ mora da se pozove
>> konstruktor da bi se objekat kreirao. Ukoliko ga korisnik ne
>> pozove, ko ga poziva?
Nisi dobro video. Konstruktor se poziva automatski pri kreiranju
objekta, a destruktor (opet automatski) pri unistavanju istog.
Ono sto te je mozda zbunilo su konstruktori sa argumentima. Tada se uz
ime objekta koji se kreira navodi u zagradama lista argumenata za
konstruktor, sto lici po sintaksi na poziv funkcije. Ta lista je potrebna
jer argumenti za konstruktor jednostavno moraju nekako da se doture.
Ako postoji podrazumevani (bez argumenata) konstruktor, onda se on
potpuno transparentno za korisnika poziva ako se objekat kreira bez liste
argumenata.
Na primer:
class TBezVeze {
....
public:
TBezVeze()
{ cout << "Pozvan TBezVeze::TBezVeze()\n"; }
// podrazumevani konstruktor
....
};
....
class TGlupost {
private:
TBezVeze A;
public:
TGlupost( neki parametri )
{ radi nesto sa tim parametrima; }
};
void main()
{
TGlupost
Nesto( parametri ); // Automatski je pozvan podrazumevani
// konstruktor za clana A klase TGlupost, u sta se moze
// lako uveriti citanjem poruke
....
}
}
pascal.466postmast,
From: Mladen.Adamovic@p5.f101.n101.z38.setnet.setnet.co.yu (Mladen Adamovic)
Subject: pascal
Date: Mon, 29 May 1995 20:43:02
"J> Ima li neko zainteresovan da odrzi kurs o Turbo Pascalu for
"J> Windows? Uslovi rada i honorar veoma dobri.
Nije valjda to tebi potrebno ;) ?
Mislim pises programerske tekstove u PC/RA^. pa...
... Jesi li ukrao moj tag?
* Origin: Sveti Sava BBS Prijedor 079 11 629 SETNet: (38:101/101.5)
pascal.467janko,
-> #462, mmitrovic> Ok. A šta je sa instancama alociranim u HEAPu. Kako se
> alociraju?
Sa new i delete. Ali opet, nigde zoveš tu proceduru Init -- onog
trenutka kada se zauzima memorija na heapu događa se i konstrukcija
objekta.
> Kako je tu regulisano pozivanje konstruktora?
> Drugo, kako da odložiš pozivanje konstruktora, na primer
> dok ti druga funkcija ne vrati parametar koji hoćeš da
> proslediš konstruktoru?
Nema takvih problema. U opštem slučaju, dok nemaš podatke koji su
dovoljni za konstrukciju, ne moraš ni da praviš objekat. Glavni problem
sa Paskalom je što sve promenljive moraš da deklarišeš pre čitave
funkcije. U C++-u se dekalaracija može nalaziti bilo gde među naredbama,
pa lepo ne brineš... pripremiš, napraviš, a pre toga ga nema. Videćeš,
elegantno je. Vrlo.
> Ja inače imam 386sx/20 sa 4mb rama, ali mi je HD 40Mb,
> taman za DOS, BP i malu strategijicu. :) Treba sad da mi
Ja sam vozio BC 2.0 (IDE okolinu) na 386sx/16 sa 2 MB RAM-a i 40 MB HDD.
Radi, pristojno. žak nije ni sporo, s obzirom na sve što dobijaš. To što
pravi OBJ u stvari ti daje slobodu da za svaku rutinu kompajler može da
generiše i pravi ASM sors pa da vidiš tačno šta je uradio. Inače, u Pro
verziji sve sorsove SVIH biblioteka dobijaš kompletne (videh da si se
žalio da za TP fali ponešto).
pascal.468vitez.koja,
-> #467, janko#=> Ja sam vozio BC 2.0 (IDE okolinu) na 386sx/16 sa 2 MB
#=> RAM-a i 40 MB HDD. Radi, pristojno. žak nije ni sporo, s
Sa čim upoređuješ brzinu C kompajlera, kada kažeš da nije spor?
Ako je sa Turbo Paskalom, onda ne da je spor, nego izluđujuće
spor ;) Posebno Borland C, dok je npr. Turbo C 2.0 samo jako spor :)
Što reče neko jednom, u paskalu je lakše, a i brže, pustiti kompajler
da bi te postavio na grešku, nego da sam voziš kursor, dok kod Ca
dvaput razmisliš pre nego što pustiš kompajliranje.
pascal.469saricl,
-> #459, nemko!!! 1). Nabavis SVGA.BGI drajver, mislim da se o tome pricalo na sezamu,
!!! 2). Zahtevas da korisnik ima instaliran VESA drajver i napravis sam
Ova kombinacija će mi sasvim odgovarati. Radi se o programu koji
pišem namenski za obradu nekih podataka na mom računaru i verovatno
će njegov životni vek biti ograničen samo na ovu moju mašinu.
ANW, u nekoj od prethodnih poruka sam dobio informaciju o
mestu gde mogu naći BGI drajvere. Hvala na odgovoru.
pascal.470saricl,
-> #458, evlad!!! Imaš u dir-a arhivu sa drajverima za svga ...
!!! probaj u kombinaciji findfirst,findnext imaš lep primer dirdemo.pas koji
!!! stiže uz tp v7.0 ...
Thanks!
pascal.471janko,
-> #468, vitez.koja> #=> RAM-a i 40 MB HDD. Radi, pristojno. žak nije ni sporo,
> s
>
> Sa čim upoređuješ brzinu C kompajlera, kada kažeš da nije
> spor? Ako je sa Turbo Paskalom, onda ne da je spor, nego
> izluđujuće spor ;) Posebno Borland C, dok je npr. Turbo C
Mali program se lako piše na svakom jeziku. Za velike programe, treba i
dobro zaposliti mašinu, ako hoćeš puno. Ono što nudi C, a pogotovu C++,
teško može da nadoknadi TP. Za rekreativno programiranje i _male_
programe nekad stvarno nema smisla komplikovati. Zašto paliti auto ako
možeš da odeš negde biciklom? Itd... Sve ima svoje prednosti, pa kome
šta treba... U doba kada na računarima na kojima sam radio (CP/M, XT) C
kompajleri nisu ni radili, sa zadovoljstvom sam programirao u TP-u...
pascal.472zeljkoj,
-> #471, janko> šta treba... U doba kada na računarima na kojima sam radio
> (CP/M, XT) C kompajleri nisu ni radili, sa zadovoljstvom sam
> programirao u TP-u...
Postoje C kompajleri za CP/M. Postoji C kompajler i za Spectrum.
pascal.473janko,
-> #472, zeljkoj>> šta treba... U doba kada na računarima na kojima sam
>> radio (CP/M, XT) C kompajleri nisu ni radili, sa
>> zadovoljstvom sam
> Postoje C kompajleri za CP/M. Postoji C kompajler i za
> Spectrum.
Samo, jesu li bili upotrebljivi, u odnosu na TP? Taj za Spektrum sam u
to doba i probao... to samo vrlo dobronameran može da se nazove C
kompajler. C kompajler za CP/M nisam imao. BTW: Ko je to pravio? Je li
imao integrisanu okolinu?
pascal.474zeljkoj,
-> #473, janko> kompajler. C kompajler za CP/M nisam imao. BTW: Ko je to
> pravio? Je li imao integrisanu okolinu?
Ovaj što ja videh je public domain, i nema integrisanu okolinu. :)
pascal.475mmitrovic,
Dejane, ti si se za sada jedini upoznao sa Delphiem. Kakva je
presuda o far VMTu?
pascal.476postmast,
From: ivica@galeb.etf.bg.ac.yu (Ivica Nikolic)
Subject: Re: pascal
Date: Tue, 6 Jun 1995 20:47:16 GMT
Miljan Mitrovic je napisao:
>> Ok. A sta je sa instancama alociranim u HEAPu. Kako se alociraju?
Operatorom new kreira se nov objekat na heapu, i automatski se poziva
odgovarajuci konstruktor (zavisno od liste argumenata koja se navede).
Destruktor se automatski poziva kada se operatorom delete unistava objekat
na heapu.
>> Kako je tu regulisano pozivanje konstruktora? Drugo, kako da odlozis
>> pozivanje konstruktora, na primer dok ti druga funkcija ne vrati
>> parametar koji hoces da prosledis konstruktoru? Koliko vidim, ovde nemas
>> izbora, konstruktor ce biti pozvan bezuslovno.
Potreba za odlozenim pozivanjem konstruktora ukazuje na gresku u OO
dizajnu programa.
Btw., da li ovo uopste stize do Sezama?
--
I only dream in infrared
pascal.477postmast,
From: dragisha@hobbiton.CO.YU (Dragisa N. Duric)
Subject: Re: pascal
Date: Tue, 6 Jun 1995 21:12:56 GMT
Miljan Mitrovic (mmitrovic@sezam.UUCP) wrote:
-> ::::: Poziva se automatski, cim se naide na deklaraciju.
-> ::::: Sto je jos lepse, i destruktor se poziva automatski, kada se zavrsi
-> Ok. A sta je sa instancama alociranim u HEAPu. Kako se alociraju?
-> Kako je tu regulisano pozivanje konstruktora? Drugo, kako da odlozis
-> pozivanje konstruktora, na primer dok ti druga funkcija ne vrati
-> parametar koji hoces da prosledis konstruktoru? Koliko vidim, ovde nemas
-> izbora, konstruktor ce biti pozvan bezuslovno.
Dobro pitanje, cini mi se :). Je li C++ima garbage collecting ili
pici alloc/free me'anika?
Modula-3 ima sjajan mehanizam za konstruktor, koji rjesava i ovaj problem
koji navodis.
pascal.478postmast,
From: SETN@f101.n101.z38.setnet.setnet.co.yu (SETN)
Subject: Statistics
Date: Thu, 08 Jun 1995 04:58:00
Maintaned by CONFERENCE STATISTICS SHELL - (c)1995 by Predrag Supurovic
=======================================================================
Conference NET.PASCAL maintained on 11.05.95. for 28 days backward.
QRATIO Mail Statistics V1.9 by Act Of Impulse.
----------------------------------------------
Total messages found in this area : 330
Number of messages covered in report: 74
Processed period from: 11-5-1995 to 5-6-1995
------------------------------------------------------------------------------
Blacklist-Top 5 of the Quoters.
Nr Total Quoted Quote
Name Address Msg Lines Lines: Ratio:
---- ------- --- ----- ------ ------
1. "Predrag Drljaca"........ 38:103/120 1 17 11 64.71%
2. "Ognen Duzlevski"........ 38:103/120 1 18 10 55.56%
3. Vladimir Bonc............ 38:101/101 1 29 15 51.72%
4. Predrag Supurovic........ 38:101/101 1 12 6 50.00%
5. "Vladislav Erdelji"...... 38:103/120 2 16 6 37.50%
------------------------------------------------------------------------------
Top 5 of the writers.
Total Average Quote
Name Msgs: Pct. Byte/Msg Ratio:
---- ----- ----- -------- ------
1. "Nebojsa Lazic" 10 13.5% 1274 9.09%
2. "Miljan Mitrovic" 7 9.5% 1474 0.00%
3. "Nemanja Jovanovic" 5 6.8% 471 24.53%
4. "Janko Stamenovic" 4 5.4% 724 22.06%
5. "Dejan Jelovic" 4 5.4% 298 17.86%
------------------------------------------------------------------------------
Top 5 of the receivers.
Total
Name Msgs: Pct.
---- ----- -----
1. All 68 91.9%
2. "Dejan Jelovic" 1 1.4%
3. Predrag Supurovic 1 1.4%
4. "Ognjen Blagojevic" 1 1.4%
5. Nemanja Jovanovic 1 1.4%
------------------------------------------------------------------------------
Top 3 of the subjects.
Subject Nr.
------- ---
1. pascal...................................................... 72
2. Statistics.................................................. 1
3. Window...................................................... 1
------------------------------------------------------------------------------
Average posting frequency per week:
Day Msgs Pct. Graph
Sunday 16 21.6% *************************************************
Monday 10 13.5% ******************************
Tuesday 4 5.4% ************
Wednesday 11 14.9% *********************************
Thursday 8 10.8% ************************
Friday 8 10.8% ************************
Saturday 17 23.0% ****************************************************
------------------------------------------------------------------------------
Average posting frequency per day:
Interval Msgs Pct. Graph
-------- ---- ----- -----
0:00- 1:59 12 16.2% **************************************************
2:00- 3:59 11 14.9% **********************************************
4:00- 5:59 3 4.1% ************
6:00- 7:59 3 4.1% ************
8:00- 9:59 4 5.4% ****************
10:00-11:59 7 9.5% *****************************
12:00-13:59 6 8.1% *************************
14:00-15:59 7 9.5% *****************************
16:00-17:59 5 6.8% *********************
18:00-19:59 6 8.1% *************************
20:00-21:59 4 5.4% ****************
22:00-23:59 6 8.1% *************************
------------------------------------------------------------------------------
* Origin: Oreska BBS, Uzice = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.479postmast,
From: Srdjan.Stanisic@f104.n103.z38.setnet.setnet.co.yu (Srdjan Stanisic)
Subject: Re: tv
Date: Tue, 06 Jun 1995 16:30:08
SP> Ima li neko neku dokumentaciju ja TVision ?
Imas na SEZAM-u Turbo Pascal Reference (napisao Ed Mitchell), gde je
pola knjige o Turbo Viziji. Nesto malo ( citaj bedno B))) ) ima u TP 6-
kompletan vodic, koji je izdala Mikroknjiga. Moj savet je da uzmes ovu
knjigu od Mitchell-a. Ja je imam, i to je arhiva od oko 400kb. Unutra
dobijas nekih 400 strana teksta, primere i ostalo. Sve ostalo mozes da
zaboravis.
Strider
... Black hole is place where God divide by zero.
* Origin: *SETNet: Taurunum BBS +381 11 2354-253, Zemun* (38:103/104)
pascal.480postmast,
From: Adzic.Gojko@f115.n103.z38.setnet.setnet.co.yu (Adzic Gojko)
Subject: TV
Date: Wed, 07 Jun 1995 23:06:00
trazio si dokumentaciju za TV,
evo ti je na Atlantisu,
datoteka je tv.zip
norton guides baza.
MasterMind
* Origin: Atlantis BBS 22-05 tel. 3225-548 ■Belgrade■ (38:103/115)
pascal.481postmast,
From: Srdjan.Stanisic@f104.n103.z38.setnet.setnet.co.yu (Srdjan Stanisic)
Subject: Re: pascal
Date: Thu, 08 Jun 1995 17:42:01
"J> Ako ti trebaju podaci o grafickim karticama jevi mi se u mail,
"J> pa ce mo da ti prosledimo iste!
BD>
BD> HI! Izvini sto upadam ali i meni bi trebalo tako nesto pa ako mozes
BD> da posaljes bio bih ti stvarno zahvalan :)) moja adresa na galebu je
BD> lynx@galeb.etf.bg.ac.yu
BD>
Sta ti treba u vezi sa grafickim karticama? Znas, imam neka uputstva
za koriscenje specijalnih prekida pojedinih kartica (ET-4000 i jos
neke, al ne znam koje). Da ti sibnem i taj fajl?
Strider
... Black hole is place where God divide by zero.
* Origin: *SETNet: Taurunum BBS +381 11 2354-253, Zemun* (38:103/104)
pascal.483jasicp,
Ima li First impressions o tome kako se Delphi i Borland C++ 4.5 slazu
sa OS/2 ? I koje alatke se mogu upotrebiti umesto NDD ili DiskFix u OS/2 ?
pascal.484nemko,
-> #479, postmast)>- knjigu od Mitchell-a. Ja je imam, i to je arhiva od oko
)>- 400kb. Unutra dobijas nekih 400 strana teksta, primere i
)>- ostalo. Sve ostalo mozes da zaboravis.
Imam celu knjigu posvecenu turbo viziju, na ruskom!
Ko voli, nek kopira!
pascal.485aleck,
-> #483, jasicp>> sa OS/2 ? I koje alatke se mogu upotrebiti umesto NDD ili DiskFix u OS/2 ?
Imaš WARP-ov chkdsk.On ti je dovoljan(barem je bio svima koje znam),
jer problema jedva i da ima.
pascal.486mmitrovic,
-> #476, postmast::::: Potreba za odlozenim pozivanjem konstruktora ukazuje na gresku u OO
::::: dizajnu programa.
Nisam baš pokačio ovo. U čemu je greška?
Drugo, nije u pitanju potreba, već mogućnost. Evo i zašto:
Pretpostavi dva objekta l1 i l2 sa svojim pridruženim konstruktorima
l1 i l2. Konstruktor l1 kao parametar prima pointer na objekat l2, a l2
konstruktor, pogađate, traži pointer na objekat l1. Sad imam dva pointera
na objekte l1 i l2, i to a i b respektivno. Kako u C++ izvesti alokaciju
i konstrukciju ove cross-construction veze dva objekta? Naravno,
pretpostavlja se da jedan objekat neće pozivati metode drugog unutar svog
konstruktora. U pascalu je ovo moguće:
New(a); { odloženo pozivanje konstruktora }
New(b,l2(a));
a^.l1(b);
Ovo pitanje nisam postavio da bi tvrdio da je pascal superiorniji od
C++, ozbiljno me interesuje kako se ovo može izvesti, naravno "legalnim"
metodama, bez hakeraja. IMHO, automatsko pozivanje konstruktora i nije
neki poen za C++, ako nema načina da se zaobiđe. Naravno, ovo se može
izvesti dodavanjem metoda koji će se ručno pozvati posle konstrukcije oba
objekta i koji će kao parametar imati drugi objekat, ili da se promeni
jedan konstruktor, pa da on alocira drugi objekat. Ipak bih voleo da
vidim konstruktorsko rešenje iz glavnog programa, pošto recimo
pretpostavimo da su objekti fabrički i da me mrzi da ih nasleđujem i
dodajem metode, tj. ne sme biti modifikacije nad samim objektima.
::::: Btw., da li ovo uopste stize do Sezama?
Očigledno stiže. Drugo, ako vi momci (a bogami i devojke) sa SETNETa
razmenjujete poruke sa temom cpp, bilo bi bolje da pređemo tamo, počeli
smo da se udaljavamo od pascala. Ovu poruku sam ostavio ovde u slučaju
da ne razmenjujete.
pascal.487mmitrovic,
-> #477, postmast::::: Modula-3 ima sjajan mehanizam za konstruktor, koji rjesava i ovaj
::::: problem koji navodis.
Daj malo više podataka. Verovatno ima još ljudi koje to interesuje.
pascal.488postmast,
From: Srdjan.Stanisic@f104.n103.z38.setnet.setnet.co.yu (Srdjan Stanisic)
Subject: TSR
Date: Mon, 12 Jun 1995 17:41:11
Za one koje zanimaju TSR programi, evo neceg lepog :) U NET.PC General
se nalazi source kod za graber za tekst mod. Ono sto je daleko
interesantnije, to je da ovaj kod mozete da iskoristite za neki svoj
TSR.
Iskreno receno, nisam bio puno originalan. Moj stav je da ne treba
izmisljati rupu na saksiji ili toplu vodu :))) Nasao sam zaista
interesantan demo u Mom Mikru iz septembra '91. Elem, te procedure su
zaista dobre i vredi ih imati u svojoj kolekciji.
Poenta mog programa je procedura LOG koja dampuje tekstulani ekran u
fajl. Ko zeli da napise neki svoj program treba da promeni procedure
LOG, AKCIJA i Keyboard. LOG je ono sto program radi, Akcija su sve
kombinacije tastera, a Keyboard cita sta je pritisnuto.
Ne bih da duzim. Ako nekog zanima nesto konkretno neka mi ostavi mail.
Adresa je: strider@setnet.co.yu (Taurunm BBS 38:101/103)
Strider
... Black hole is place where God divide by zero.
* Origin: *SETNet: Taurunum BBS +381 11 2354-253, Zemun* (38:103/104)
pascal.489postmast,
From: Srdjan.Stanisic@f104.n103.z38.setnet.setnet.co.yu (Srdjan Stanisic)
Subject: Knjige
Date: Mon, 12 Jun 1995 18:02:12
Evo jednog malog ogleda o TP literaturi. Dodajte ako imate neku drugu
knjigu ili bar dajte svoje misljenje o ovim :)
S. O'Brien - TP6 Kompletan Vodic (Mikroknjiga)
Prepotentnog li naslova. Knjiga pokriva 30-tak % mogucnosti Paskala i
puna je delova tipa "ja sam veliki programer". :))) Za strukturno
programiranje je dobra i moze da da dobru osnovu. Deo oko koriscenja
prekida je truo. Tip je demonstrirao upotrebu SVIH prekida koje TP
ima vec ugradjene u sebe (sat, atributi fajlova i slicno) :)). Onaj deo
o TV je kriminalan. Pola source-ova ne radi kako treba. :)) Knjiga i
nije jeftina, ali kome treba...
M. Cabarkapa - MS-DOS uz podrsku TP-a (Tehnicka knjiga)
Knjiga koju neizostavno treba nabaviti. Jeftina je, a dosta
kvalitetna. Nemam vecih zamerki na nju, osim sto su programi za
demonstraciju prekida uzeti iz gornje knjige (samo za verziju 5.5
:))) )
Bratko/Rajkovic - Racunartvo sa programskim jezikom PASCAL
Antikvarna knjiga, ali dobra u nekim delovima. Obradjuje neku
pretpotopsku verziju TP-a, ali ima dosta dobru teoriju o dinamickim
listama i slicno. Dobra je i za pocetnike, jer startuje od 0 i
opisuje i hardver na dosta pristojan i pristupacan nacin. S obzirom
da se moze kupiti za neke smesne pare (10-15 dinara) nabavite je.
I. Papes - Turbo Pasacl 5.5 ...(jos oko 0.5 km naslova :)) )
Knjiga je prevedeni HELP :)) ali ima nekoliko finih primera na kraju.
Nisu TOP primeri, ali mogu posluziti. Ako vas mrzi da kopate po
helpu, ova knjiga moze dobro doci. Ovo se posebno odnosi na razne
konstante za boje, srafure i slicno. Ima jos jedna knjiga istog
naziva. Ne znam ko ju je napisao, ali je INDENTICNA sa ovom po
sadrzaju :))))) Jedna mala, bela. Medjutim, ta knjiga ima nekih
stamparskih (ili nekih drugih :)) ) gresaka.
A. Jorno - Turbo Pascal sa grafickim aplikacijama
Knjiga se bavi verzijom 3.0, a to je malo zastarelo, zar ne :)). U
globalu, ova knjiga nije Bog zna sta. Ima tu i tamo nekih delova koji
vrede, ali u sustini ne vredi puno. Ako neko bas hoce da je kupi, u
Tehnickoj knjizi je neka rasprodaja :)) pa nek svrati.
Ovo je moje misljenje o literaturi koju imam. Zaboravio sam da na
knjigu Eda Mitchella, koja je u obliku fajla. Nije losa, i vredi je
skinuti sa nekog BBS-a. Ukoliko neko moze da dopuni ovu listu ili
iznese svoje misljenje o knjigama, neka me dopuni.
Strider
... Black hole is place where God divide by zero.
* Origin: *SETNet: Taurunum BBS +381 11 2354-253, Zemun* (38:103/104)
pascal.490postmast,
From: Ognen.Ivanovski@f132.n108.z38.setnet.setnet.co.yu (Ognen Ivanovski)
Subject: Objekti
Date: Tue, 16 May 1995 02:43:03
PS>>>Hi,
PS>>>Moze li neko da objasni kako se kriju delovi objekata? Mislim da budu
>>>neveidljivi korisniku objekta.
PS>>>Cesto imam potrebu da u objektu definisen neka polja koja mi trebaju
2 >>>interno i ne bi bas bilo zgodno da programer koji koristi objekat moze
>>>da im direktno menja sadrzaj.
Od TP6 pa nadalje postoje kljuchne rechi 'private' i
'public'. Private stoji ispred chlanova objekta koje treba
da budu sakriveni, dok za pubilc vazhi obrnuto. E sad
shtos: chlanovi ispod 'private' nisu vidljivi izvan fajla
(.tpu-a) u kome je definisan objekat (ovako pishe u
literaturi)! Ovo mene prilichno zbunjuje ali.... Inache u
C++ fino-lepo private chlanovi nisu vidljivi izvan te klase
(objaekat).
Evo primer:
unit milkman;
type
TMilkman = object
private
a : integer;
b : intger;
procedure UchiniNeshto;
public
constructor Init;
destructor Done;
{ ... }
end;
{ ... }
implementation
procedure TMilkman.UchiniNeshto;
begin
{ ... }
end;
{ ... }
end.
Peace,
Milkman
* Origin: SETNet: ĆMemory Master BBS +389/91-412-767ž SKOPJE (38:108/132)
pascal.491postmast,
From: ivica@galeb.etf.bg.ac.yu (Ivica Nikolic)
Subject: Re: pascal
Date: Thu, 15 Jun 1995 12:47:27 GMT
Miljan Mitrovic je napisao:
>> ::::: Potreba za odlozenim pozivanjem konstruktora ukazuje na gresku u OO
>> ::::: dizajnu programa.
...
>> pretpostavlja se da jedan objekat nece pozivati metode drugog unutar svog
>> konstruktora. U pascalu je ovo moguce:
>> New(a); { odlozeno pozivanje konstruktora }
>> New(b,l2(a));
>> a^.l1(b);
Eto skolskog primera greske u objektnom dizajnu. Uobicajeno je da se
komunikacija izmedju objekata odvija po client-server principu: objekat je
drugom podredjen, tj. objekat A poziva fje ubjekta B, ali objekat B ne
poziva fje objekta A. Za konstrukciju objekta B tada nije potreban objekat
A, pa se on prvi kreira, a zatim se kreira objekat A, kome se kao jedan od
parametara prosledjuje objekat B.
Ako ti u algoritmu bas zatreba da dva objekta dvosmerno komuniciraju,
probaj da redizajniras algoritam da se ta dvosmerna komunikacija izbegne.
Ako dvosmernu komunikaciju bas nikako nije moguce izbeci (desava se),
to je vec poprilicno karakteristican slucaj, koji je najbolje razresiti
uvodjenjem treceg objekta C (ja ga zovem dispecer), preko koga prva dva
objekta razmenjuju poruke. Dakle, prvo se kreira objekat C, a zatim objekti
A i B kojima se objekat C pri konstrukciji prosledjuje kao parametar. Ovakvo
resenje je malo glomaznije, ali je cisto, pregledno i "normalizovano".
>> Ovo pitanje nisam postavio da bi tvrdio da je pascal superiorniji od
......
>> dodajem metode, tj. ne sme biti modifikacije nad samim objektima.
Pa sustina 'fabrickih' objekata je da ih nasledjujes kad god mozes.
>> ::::: Btw., da li ovo uopste stize do Sezama?
>> Ocigledno stize. Drugo, ako vi momci (a bogami i devojke) sa SETNETa
>> razmenjujete poruke sa temom cpp, bilo bi bolje da predemo tamo, poceli
>> smo da se udaljavamo od pascala. Ovu poruku sam ostavio ovde u slucaju
>> da ne razmenjujete.
Ma OK, samo diskusija je zapocela u temi pascal, pa k'o rek'o da tu i
repliciram, a i diskusija o objektnom dizajnu se ne tice iskljucivo C++-a.
Btw., nisam sa SETNET-a nego sa ETF-a.
--
Nisam zgodan al sam plodan
pascal.492smarkov,
-> #453, mmitrovic> konstruktor da bi se objekat kreirao. Ukoliko ga korisnik ne
> pozove, ko ga poziva?
* Za top-level scope kompajler ugradi kod koji se izvrši
pre main-a.
* Za objekte na stack-u ugradi prolog na ulasku u funkciju.
* Za dinamički obrazovane objekte - kao bočni efekat new operatora.
pascal.493ivan.mile,
HELP !!!!
hitno potreban program na temu animacije. Treba da se animira "let" rakete na
sledeći način : na dnu ekrana se vidi tlo (može obična linija, malo deblja). Na
sredini tla je raketa najjednostavnijeg oblika (vrh, "telo" i "motori" sa
strane), po mogućstvu obojena. Pozadina je nebo osuto zvezdama (crn ekran sa
raznobojnim tačkicama). Raketa u jednom trenutku poleće i pri vrhu ekrana
"eksplodira" poput vatrometa (ovo poslednje nije neophodnoa, ali je poželjno).
Ovo je problem za drugi razred srednje škole (druga godina učenja paskala),
tako da nije potrebno da se koriste npr. specijalni objekti iz verzije 7.0 ;
aplikacija može biti pisana u Turbo Pascalu b(bilo koja verzija).
Ponude na mail a može i u conf ako još nekom treba nešto slično.
Thanx,
-+- I V A N -+-
pascal.494duzle,
-> #489, postmast>**> Evo jednog malog ogleda o TP literaturi. Dodajte ako imate
>**> neku drugu knjigu ili bar dajte svoje misljenje o ovim :)
Niel J. Rubenking - Turbo Pascal Techniques & Utilities
Po meni najbolja knjiga. Bavi se verzijom 6.0, ima puno Turbo Vizije i
mnogo ostalih stvari. 800 strana + disketa.
>**> S. O'Brien - TP6 Kompletan Vodic (Mikroknjiga)
>**>
>**> u sebe (sat, atributi fajlova i slicno) :)). Onaj deo o TV
>**> je kriminalan. Pola source-ova ne radi kako treba. :))
Ne samo što ne radi pola sorsova već i ortak demonstrira potpuno pogrešan
pristup OO programiranju. Deluje kao da je TV prvi put video 2-3 dana pre
pisanja knjige.
Ogi
pascal.495nemko,
-> #493, ivan.mile)>- Ponude na mail a može i u conf ako još nekom treba nešto
)>- slično.
Daj mi jedan dobar razlog pa ce mo da popricamo.
(Da li si skinuo PCGPE (pc game programmmers enciclopedia), tu imas
objasnjeno dosta toga u vezi kretanja objekata i sl. poslao sam to
u pc.prog (valjda)!
pascal.496majstor,
Molio bih objasnjenje ako neko zna o cemu se radi :
Pisah objekat za kreiranje lista ( stabla direktorijuma ) i program
je "radio", ali je nakon nekog vremena pobrljavio ;(.
Elem, problem sam resio ( nakon X sati mozganja ) jednostavnom zamenom
new umesto getMem. Ostatak programa nije menjan. Radi se o TP v7.0.
E, sad, da vas cujem.
pascal.497nemko,
-> #494, duzle)>- Ne samo što ne radi pola sorsova već i ortak demonstrira
)>- potpuno pogrešan pristup OO programiranju. Deluje kao da je
)>- TV prvi put video 2-3 dana pre pisanja knjige.
Sta fali objasnenju objekata. Enkapsulacija, virt. metode i poli-
morfizam su po meni dovoljno objasnjene (a ostalo cve korisnik 'lako'
da provali!
pascal.498postmast,
From: broker@setnet.co.yu (Predrag Supurovic)
Subject: Objekti
Date: Tue, 13 Jun 1995 10:34:31
OI> Od TP6 pa nadalje postoje kljuchne rechi 'private' i
OI> 'public'. Private stoji ispred chlanova objekta koje treba
OI> da budu sakriveni, dok za pubilc vazhi obrnuto. E sad
A da li se ovo moze koristiti naizmenicno. Mislim malo private,
pa malo public, pa opet malo private, ili moram sve sto hocu da
bude privatne da stavim u istu sekciju, da je tako nazovem?
Da, znam, najbolji odgovor na ovo je 'uzmi i probaj', samo sto
sad nisam u situaciji, pa mi je jednostavnije da pitam.
... BR> Ja sam stvarno uvek u pravu. Dokazano.
* Origin: Oreska BBS, Uzice = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.499nlazic,
-> #496, majstor*> Elem, problem sam resio ( nakon X sati mozganja ) jednostavnom zamenom
*> new umesto getMem. Ostatak programa nije menjan. Radi se o TP v7.0.
A šta si uradio sa dealokacijom memorije? 'Ajde ostavi malo više
detalja, pa da vidimo u čemu je štos.
Pozdrav,
:) Nebojša :)
pascal.500nlazic,
-> #494, duzle*> Ne samo što ne radi pola sorsova već i ortak demonstrira potpuno
Veliki deo tih sorsova ne radi jer su u pitanju najbanalnije štamparske
greške. Ovo, neravno, nije opravdanje, ali ne treba grešiti dušu i sve
svaljivati na autora knjige. Što se ostalog tiče, 100% se slažem sa tobom.
Pozdrav,
:) Nebojša :)
pascal.501nlazic,
-> #489, postmast*> Evo jednog malog ogleda o TP literaturi. Dodajte ako imate neku drugu
*> knjigu ili bar dajte svoje misljenje o ovim :)
Ja imam još par knjiga na ovu temu:
1. Duško Savić - Turbo Pascal, naredbe i objekti, 1990. god.
Knjiga se odnosi na verziju 5.5 TP-a. Moj utisak je da je za
početnike neilustartivna, a za one malo iskusnije previše "obična". Autor
je pokušao da da uvod u objektne ekstenzije paskala i objektno
programiranje uopšte, ali je samo delimično uspeo. Knjiga definitivno pada
na virtuelnim metodama - primer koji ide uz njihovo objašnjenje uopšte ne
govori o virtualizaciji. Dobra strana je što ima gomilu primera (možda i
previše) o svim bitnim aspektima koje donosi TP (liste, overlay-i, kontrola
tatature, diska i sl., exit procedure, optimizacija koda...). Pomenuti su
SVI unit-i koji se isporučuju uz TP 5.5 i dati primeri uz sve iole važnije
procedure i f-je. Sve u svemu - detaljno prokomentarisan help.
2. Duško Saviš - Turbovizija i grafika, 1992. god.
U knjizi je reč o dva potpuno odvojena problema. Prvi razmatra TV i
nije ništa drugo do prevedenog help sistema iz koga su izbačeni primeri
(čast izuzetcima). Drugi deo je mnogo interesantniji i predstavlja lepo
rešenu kolekciju klasa za rad sa osnovnim grafičkim elementima u ravni i
prostoru. Ovaj deo izvlači celu knjigu.
3.
Kada je reč o literaturi za TP i programiranje uopšte, ubeđen sam da je
skup tekstova koji su objaveljeni u ranim brojevima "Računara" ubedljivo
najbolje štivo koje se može naći na našem jeziku. Bilo je tekstova o jako
velikom broju problema: izračunavanje matematičkih izraza, metode
sortiranja i pretraživanja, radionica logičkih igara, algoritmi za brzo
iscrtavanje duži i krugova, a "Put u središte ROM-a" je definitivno jedan
od najboljih serijala tekstova koji su izašli u svim našim časopisima do
sada.
Pozdrav,
:) Nebojša :)
pascal.502nlazic,
Možda će nekoga interesovati: u Delphi-evom readme fajlu koji se
ljubaznošću DDABIC-a našao na Sezam-u, piše da je minimalna konfiguracija
za startovanje 386 sa 6 Mb RAM-a. Delphi, međutim, radi i sa 4 Mb memorije,
a za manje ne znam. Ovo, ipak, ne znači da je iole ozbiljniji rad na
ovakvoj konfiguraciji moguć.
Pozdrav,
:) Nebojša :)
pascal.503mmitrovic,
-> #491, postmast::::: Eto skolskog primera greske u objektnom dizajnu. Uobicajeno je da se
E, stvarno. Ja u klin ti u ploču.
Nisam tražio alternativne metode, niti da mi neko objasni OO
arhitekturu. Jednostavno sam tražio Da/Ne odgovor na pitanje da
li C++ može da izvede cross-construction onako kako sam tražio ili
ne može? Može li neko da mi da TAKAV odgovor?
Što se tiče pravila i ostalih dogmi, ako primetim da će moj kod imati
samo jednu liniju više zbog držanja za dogme, ima da ih nema. Pravila su
tu zbog lakšeg programiranja, ne kao svrha samoj sebi. Ako će cross
construction izveden kršenjem normi da me poštedi nasleđivanja, pravljenja
raznih dispečera i ostalih kerefeka, onda je to TO, i jedino rešenje koje
ću koristiti.
Ako misliš da se sam Borland pridržava tih pravila, upućujem te na
TLabel objekat, koji mora da se veže za peer-view, kako bi znao koji
objekat da aktivira. Ovakvih primera ima još, npr. TScrollBar u
nekim okolnostima, ima ih još ali ne znam napamet.
pascal.504dejanr,
-> #501, nlazic>> Kada je reč o literaturi za TP i programiranje uopšte, ubeđen sam da je
>> skup tekstova koji su objaveljeni u ranim brojevima "Računara" ubedljivo
>> najbolje štivo koje se može naći na našem jeziku. Bilo je tekstova o jako
>> velikom broju problema: izračunavanje matematičkih izraza, metode
>> sortiranja i pretraživanja, radionica logičkih igara, algoritmi za brzo
>> iscrtavanje duži i krugova, a "Put u središte ROM-a" je definitivno jedan
>> od najboljih serijala tekstova koji su izašli u svim našim časopisima do
>> sada.
Hvala :)
Šteta što ne napravih knjigu od toga (kad je bilo vreme), sigurno bi se
dosta dugo prodavala.
pascal.505majstor,
-> #499, nlazic
RE: TP 7.0 getMem -> New
Elem, kada rekoh da sam zamenio getMem sa New, podazumeva sa da su zamenjeni
parovi GetMem/FreeMem sa New/Dispose ( a isto tako i rutina za dealokaciju
memorije u destruktoru ). Apsurd je u tome da nekad program prodje compile,
i prilikom startovanja stane ( sto se resava sa Ctrl+Break ), a nekad je
radio OK jedno vreme - mislim na rutine sa tim listama i onda poceo da brljavi
ispis ? i ponekad preskakanje nekih nodova. Sve se alocira prilikom startova-
nja programa, ovo je bio probni primerak - znaci sa listama je bilo moguce
samo view - bez mogucnosti promene. Posto se radi o seminarskom, a rok predaje
je bio kriticno blizu, nije bilo vremena za detaljnije provere, ali glupo je
da je sa ovakvom cakom proradilo ( nigde nije bilo ni Mark/Release ). Memorija
je bila bez TSR-ova ( i bez virusa ).
Nadam se da je ovo bilo malo detaljnije,
Pozdrav, Miodrag
pascal.506kenza,
-> #504, dejanr(;> Steta sto ne napravih knjigu od toga (kad je bilo vreme), sigurno bi se
(;> dosta dugo prodavala.
A zar je to nemoguce sada uraditi ? Ili se nema vremena ? :)
pascal.507postmast,
From: Jovan.Maric@f102.n103.z38.setnet.setnet.co.yu (Jovan Maric)
Subject: xms
Date: Mon, 19 Jun 1995 01:03:01
Da li neko zna kako da napravim funkciju koja bi mi vratila podatak o ukupnoj
XMS memoriji na sistemu?Probao sam preko jednog interapta medjutim on mi kao
podatak uvek vraca 34400 i űÍÝSéGnsa 4mb i sa 8mb na ploci,isti je slucaj i
na drugim pc racunarima.
Jovan
* Origin: ■ Huter BBS, Belgrade, SETNet, 788-189 ■ (38:103/102)
pascal.508nlazic,
-> #507, postmast*> Da li neko zna kako da napravim funkciju koja bi mi vratila podatak o
*> ukupnoj XMS memoriji na sistemu?Probao sam preko jednog interapta
Najjednostavnije (i najbezbednije) je da koristiš neki već napisan
unit za kontrolu XMS memorije. Ima ga na Sezamu u R:\PASCAL, a ako ti se
ovaj čini preglomaznim (oko 130K) javi da ti pošaljem jedan unit od svega
10K koji sasvim lepo završi posao.
Pozdrav,
:) Nebojša :)
pascal.509nlazic,
-> #504, dejanr*> Šteta što ne napravih knjigu od toga (kad je bilo vreme), sigurno bi
*> se dosta dugo prodavala.
Nikad nije kasno :). To bi bila jako lepa stvar, ako ne kao knjiga,
ono makar u vidu nekog umetka.
Pozdrav,
:) Nebojša :)
pascal.510nlazic,
-> #505, majstor*> Elem, kada rekoh da sam zamenio getMem sa New, podazumeva sa da su
*> zamenjeni parovi GetMem/FreeMem sa New/Dispose ( a isto tako i
*> rutina za dealokaciju memorije u destruktoru ). Apsurd je u tome da
*> nekad program prodje compile,
*> je bio kriticno blizu, nije bilo vremena za detaljnije provere, ali
*> glupo je da je sa ovakvom cakom proradilo ( nigde nije bilo ni
*> Mark/Release ).
Zaista apsurdno. Jedino što mi pada na pamet je da pri pozivanju
GetMem-a nisi rezervisao dovoljno veliki prostor za ono šta smeštaš u
liste, ili neki sličan potpuno banalan previd. Ako te baš "svrbi" šta ne
radi, pošalji dotično parče sorsa pa da svi zajedno pogledamo. :)
Pozdrav,
:) Nebojša :)
pascal.511mmitrovic,
-> #505, majstor::::: Elem, kada rekoh da sam zamenio getMem sa New, podazumeva sa da su
::::: zamenjeni parovi GetMem/FreeMem sa New/Dispose ( a isto tako i rutina
::::: za dealokaciju
Pošto GetMem/FreeMem i New/Dispose parovi rezultuju pozivom istog
koda za alokaciju, problem može biti samo do tebe. Jedino što do tebe
može biti je da si ili postavio premali Size u Get/FreeMem ili si
u FreeMem stavio više nego u GetMem, pa je sledeća alokacija uletela
u tuđu "parcelu". Pregledaj kod malo bolje.
pascal.512majstor,
-> #511, mmitrovic
> moze biti je da si ili postavio premali Size u Get/FreeMem ili si
Ne verujem, ako jesam, onda gresim od pocetka :
ako je
pNodeRecord = ^tNodeRecord;
tNodeRecord = record
i GetMem( pNodeRecord, SizeOf( tNodeRecord ) );
FreeMem( pNodeRecord, SizeOf( tNodeRecord ) );
Stavio sam tipove u citat da ne komplikujem da dodavanjem varijabli. Medjutim
pade mi na pamet da vezem objekte u listu. Kako bi onda reagovala naredba
GetMem( pNode_Ptr, SizeOf( tNode_Obj )); ?? Nisam to jos radio.
pascal.513kenza,
Hi!
Da li Delphi dolazi na jednom CD-u ili na vise komada, i da li postoji
i disketna verzija ? I moze li se sa CD-a kompletan instalirati na HD ?
Ako moze , koliko mesta mu treba ?
Hvala,
Kenza
pascal.514supers,
Koja je najnovija verzija TP koja može da radi na XT-u?
pascal.515zeljkoj,
-> #514, supers> Koja je najnovija verzija TP koja može da radi na XT-u?
Može i 7.0. TP, naravno. Za BP je potrebno imati 286.