PCPROG.5

05 Jan 1995 - 02 Oct 1995

Topics

  1. algoritmi (106)
  2. comment (2)
  3. ms.dos (27)
  4. windows (332)
  5. asembler (203)
  6. basic (228)
  7. jezici (126)
  8. pascal (1085)
  9. cccc (546)
  10. cpp (117)
  11. clipper (1048)
  12. baze.podataka (194)
  13. fox (231)
  14. cavo (192)
  15. razno (593)

Messages - pascal

pascal.415 vgenije, -> #408, nlazic
> Nadam se da ce to ovo pomoci. :) hvala!!
pascal.416 ognjen, -> #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.417 jasicp,
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.418 zeljkoj, -> #416, ognjen
> Mogu ja. Procedura se zove ClrScr, iz Crt unita. Za čuvanje Gašenje i brisanje ekrana su dve različite stvari. :)
pascal.419 nemko, -> #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.420 pedjak, -> #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.421 nlazic, -> #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.422 mmitrovic, -> #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.423 postmast,
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.424 postmast,
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.425 nlazic, -> #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.426 postmast,
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.427 jasicp,
Dobro braco, radi li neko Paradox Engineom za Pascal ili C++ ?
pascal.428 djelovic, -> #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.429 postmast,
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.430 biki,
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.431 janko, -> #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.432 djelovic,
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.433 postmast,
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.434 postmast,
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.435 postmast,
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.436 nlazic, -> #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.437 nlazic, -> #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.438 mmitrovic, -> #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.439 nlazic, -> #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.440 mmitrovic, -> #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.441 nlazic, -> #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.zip
pascal.442 janko, -> #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.443 postmast,
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.444 djelovic, -> #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.445 bulaja,
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.446 nlazic, -> #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.447 pirke, -> #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.448 janko, -> #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.449 djelovic, -> #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.450 evlad, -> #445, bulaja
>> 4,412,710 bytes in 86 file(s) Stavi sve u dir i na novi sezam :)
pascal.451 drpr,
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.452 mmitrovic, -> #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.453 mmitrovic, -> #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.454 nemko,
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.zip
pascal.455 janko, -> #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.456 janko, -> #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.457 saricl,
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.458 evlad, -> #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.459 nemko, -> #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.460 zdule,
Da li neko ima konvertor poruka uucp <-> fido ili strukturu fido pkt i msg fajlova. ZDule...
pascal.461 mmitrovic, -> #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.462 mmitrovic, -> #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.463 kum.zoki, -> #427, jasicp
Radim. Reci.
pascal.464 postmast,
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.465 postmast,
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.466 postmast,
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.467 janko, -> #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.468 vitez.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.469 saricl, -> #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.470 saricl, -> #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.471 janko, -> #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.472 zeljkoj, -> #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.473 janko, -> #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.474 zeljkoj, -> #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.475 mmitrovic,
Dejane, ti si se za sada jedini upoznao sa Delphiem. Kakva je presuda o far VMTu?
pascal.476 postmast,
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.477 postmast,
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.478 postmast,
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.479 postmast,
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.480 postmast,
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.481 postmast,
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.483 jasicp,
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.484 nemko, -> #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.485 aleck, -> #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.486 mmitrovic, -> #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.487 mmitrovic, -> #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.488 postmast,
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.489 postmast,
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.490 postmast,
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.491 postmast,
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.492 smarkov, -> #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.493 ivan.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.494 duzle, -> #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.495 nemko, -> #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.496 majstor,
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.497 nemko, -> #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.498 postmast,
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.499 nlazic, -> #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.500 nlazic, -> #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.501 nlazic, -> #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.502 nlazic,
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.503 mmitrovic, -> #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.504 dejanr, -> #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.505 majstor, -> #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.506 kenza, -> #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.507 postmast,
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.508 nlazic, -> #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.509 nlazic, -> #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.510 nlazic, -> #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.511 mmitrovic, -> #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.512 majstor, -> #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.513 kenza,
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.514 supers,
Koja je najnovija verzija TP koja može da radi na XT-u?
pascal.515 zeljkoj, -> #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.