pascal.204vojkan,
-> #202, bearboy-> Ako je mislio na to, ja sam napravio jedan... Jes' da je
-> spor k'o bog, al' ima source i radi...
Pa ok to je ono što sam i ja hteo da radim. Pošalji ga ako
nije frka zbog kopitajta ;)
pascal.205nesavic,
Hi,
imam problema sa programom datim u racunarima ne zna se kojim ali nije ni
vazno, vazno je da ne radi...
Program je dat listingom i trebalo bi da presrece $5 interapt i skida sliku
odakle hoces i posle je ucitava, e sad to mozda i radi za CGA tj adresa
$B800:$0000 ali za Hercules ne da ne radi nego se nista ne pojavljuje, radio
sam sa adresom $B000:$0000 ali nista, tj. kada stavim da mi snimi 16192 bytesa
onda imam oko 1/4 - 1/2 slike, sve iznad ove cifre ne radi...
Ajd sad vi meni recite sta je po sredi...
zahvalan, NeSa!
pascal.206bearboy,
-> #203, ognjan-+={ Jel' moze da skine sa VGA karte sliku u GEM (IMG)
-+={ formatu ??? Ako moze, salji odma' !
PA ZAR TI CITAS STA REPLICIRAS ?!?!?! Pise lepo - GEM, PCX, a ja sam dodao jos
i LBM (nekompresovan). Inace koliko ja znam (a bas ne znam :) GEM je VEKTORSKA
grafika... A bogami skidanje grafike sa ekrana u vektorima... Xex, pa nisam
ja DR. Prof. Mr. Dipl. Ing. Gr., Ziv., i S. O. Bear !
pascal.207ppekovic,
-> #206, bearboy>> PA ZAR TI CITAS STA REPLICIRAS ?!?!?! Pise lepo - GEM, PCX, a ja sam dodao
jos
>>i LBM (nekompresovan). Inace koliko ja znam (a bas ne znam :) GEM je
VEKTORSKA
>>grafika... A bogami skidanje grafike sa ekrana u vektorima... Xex, pa nisam
>>ja DR. Prof. Mr. Dipl. Ing. Gr., Ziv., i S. O. Bear !
Uh bearboy, kad čovek ovo pročita, pomisli da si mnogo neki gadan tip, a
ono ti duša od čoveka. Niko nije bezgrešan.
Paya
pascal.208macak,
-> #207, ppekovic█ Niko nije bezgresan...
...sem mene! ;)))
pascal.209bearboy,
-> #205, nesavic-+={ sam sa adresom $B000:$0000 ali nista, tj. kada stavim
-+={ da mi snimi 16192 bytesa onda imam oko 1/4 - 1/2 slike,
-+={ sve iznad ove cifre ne radi...
Da ne treba 32K ? Adresa je sigurno dobra ? (Xe, blago nama, VGA-sima :)
pascal.210bearboy,
-> #207, ppekovic-+={ Uh bearboy, kad covek ovo procita, pomisli da si mnogo
-+={ neki gadan tip, a ono ti dusa od coveka. Niko nije
-+={ bezgresan.
Xe, samo sam se mao nervirao... :)
pascal.211bearboy,
-> #208, macak-+={ █ Niko nije bezgresan...
-+={ ...sem mene! ;)))
Siguran ? ;)))))))))
pascal.212macak,
-> #211, bearboy█ Siguran ? ;))
Apsolutno!
pascal.213ilazarevic,
Evo pitanja od mog profana informatike: jel ima neko ovde drajvere
za VGA i SVGA, za Turbo Pascal, koji će raditi? On kaže da njemu kod kuće
drajveri koje je dobio uz TP 6.0 ne rade na višoj rezoluciji (ne znam da
li je u pitanju 800x600 ili 1024x768, ne sećam se).
pascal.214dejanr,
-> #213, ilazarevic>> Evo pitanja od mog profana informatike: jel ima neko ovde drajvere
>> za VGA i SVGA, za Turbo Pascal, koji će raditi?
Ima toga puno na Sezamu, najnovije uz poruku PC.HARD/video.kartice 4.486.
Srećno!
pascal.215dzakic,
-> #205, nesavic>> $B800:$0000 ali za Hercules ne da ne radi nego se nista ne
>> pojavljuje, radio sam sa adresom $B000:$0000 ali nista
Video memorija herkulesa je duga 32K i nalazi se na segmentu
B000 ili B800 u zavisnosti od toga koja je stranica aktivna.
pascal.216ilazarevic,
-> #214, dejanr█ Ima toga puno na Sezamu, najnovije uz poruku PC.HARD/video.kartice
█ 4.486. Srećno!
Hvala, čovek će da bude presrećan (xe, kako se šlihtam ;)))
pascal.218macak,
Momci,imam jedan (mozda trivijalan) problem.
Kad startujem neki program koji koristi GRAPH unit,on nece
da radi nego izbaci poruku:
BGI eError: Graphics not initialized (uses InitGraph)
Posto je ovo prvi put da se bakcem sa nekom grafikom,u cemu
je problem? Gledao sam u neku knjigu i sve bi trebalo da bude OK.
(na pocetku se nalazi : GD:=Detect ; InitGraph (Gd,Gm,'') )
Mozda ne odgovara unit ili... u cemu bi mogla da bude sema?
pascal.219nandi,
-> #218, macak> Momci,imam jedan (mozda trivijalan) problem.
> Kad startujem neki program koji koristi GRAPH unit,on nece
> da radi nego izbaci poruku:
> BGI eError: Graphics not initialized (uses InitGraph)
mora biti prisutan onaj *.bgi file u dir-u gde pokrećeš program.
(herc.bgi, cga.bgi ... zavisi od video adaptera koji koristiš).
nandi
ps: pričam napamet, ali mislim da sam potrefio
pascal.220nesavic,
-> #218, macakPozdrav,
problem je bas u tome... tj. treba graph.tpu da ti stoji u direktorijumu iz kog
ga startujes ili da u InitGraph(Gd, Gm, 'c:ĐpascalĐbgi'); navedes svoj ROOT
dira u kome se nalazi graph.tpu....
Ako i ti ne radi onda... reci da ti saljnem ovaj moj, mozda proradi?
NeSa!
pascal.221dgrbic,
-> #218, macak:: (na pocetku se nalazi : GD:=Detect ; InitGraph (Gd,Gm,'') )
^ ovde
treba da bude path do *.bgi drivera, a možeš i da iskopiraš onaj driver
koji ti treba za karticu u tekući dir.
pascal.222djnsnd,
-> #213, ilazarevic> Evo pitanja od mog profana informatike: jel ima neko ovde
> drajvere za VGA i SVGA, za Turbo Pascal, koji će raditi?
> On kaže da njemu kod kuće drajveri koje je dobio uz TP 6.0
> ne rade na višoj rezoluciji (ne znam da li je u pitanju
> 800x600 ili 1024x768, ne sećam se).
Imam ja. Javi se na mail.
DjnSnd
pascal.223ilazarevic,
-> #218, macak█ Mozda ne odgovara unit ili... u cemu bi mogla da bude sema?
Trebalo bi da definišeš u Options/Directory sve one direktorijume, pa
između ostalih i Unit Directory. Mislim da će ti tako naći graph.tpu.
Ako si ovo već definisao, onda lepo vidi da li si podesio BGI dir na
onaj u kome ti se nalaze BGI fajlovi.
pascal.224ztuke,
Zdravo!
Imam problema, ko ih nije imao ;(((, sa visokom rezolucijom! Naime radi se o
već poznatom drajveru Jordana Henxd.... kako mu je već prezime za SuperVGA
modove sve do 32k boja. Ono što me nervira jeste da uopšte ne mogu da
inicijalizujem grafiku na mojoj SVGA kartici sa tim drajverom. Reč je o
rezoluciji od 1024x768x256! To verovatno ima neke fore u tome da zeznem stvar
sa InstallUserDriver ili tako nečim. Sve bi bilo jasnije kada bi neko od vas
naterao ovaj programčić da radi u rezoluciji od 1024x768x256:
š Ovo je program za crtanje kruga u samodetektovanoj sredini! ć
uses
Graph;
var
Gd, Gm: integer;
Radius: Integer;
begin
Gd := Detect; InitGraph(Gd, Gm, '');
if GraphResult <> grOk then Halt(1);
for Radius := 1 to 5 do
Circle(320, 240, Radius*10);
ReadLn;
CloseGraph;
end.
Ovo radi u rezoluciji 640x480 sa EGAVGA.BGI. Kako da ga nateram da radi sa
drajverom SVGA256.BGI !? Inače broj moda za rezoluciju 1024x768x256 jeste 4!
Unapred hvala! Pozdrav, Zoran!
pascal.225piter,
kako da napravim unit koji bi mi zastitio programe od izmena ?
(virusi,drugovi) Pokusao sam sa crc-om kojeg posebni program upise na
kraj fajla ali ne radi. Help.
pitanje je od Powderman-a
(skuplja pare za sezam)
vir.arjpascal.226janko,
-> #225, piter> kako da napravim unit koji bi mi zastitio programe od
> izmena ? (virusi,drugovi) Pokusao sam sa crc-om kojeg
> posebni program upise na kraj fajla ali ne radi. Help.
Slučajno ja imam nešto što RADI uvek za zaštitu od "drugova"
(Od virusa treba da te štiti Mek Afi). Ugrađuje se u toku
prevođenja i samo mojih je ruku delo. Naravno, nisam raspoložen
da delim džabe. Pa ako je neko zainteresovan za 'ključ u ruke'
rešenje tog problema, nek' me MAIL-ne.
Janko J. Stamenović
pascal.227nesavic,
-> #225, piterPozdrav,
pitas se kako da zastitis svoj program od... itd.
Imam i ja unit koji ti moze pomoci, a radi na specifican nacin...
Nemoj da dajes pare bezveze poslacu ti ga ja, uskoro...
NeSa!
vsafe.arjpascal.228nesavic,
-> #227, nesavicPozdrav,
nisam mogao da pronadjem fajl koji je PRIMER za koriscenje UNITa...
Kad budem nasao spusticu ga...
Ovaj UNIT je predvidjen za TP 6...
pascal.229piter,
-> #228, nesavicKako to radi ? Molim uputstvo i jedan sample program.
jer imam nesto slicno ali neradi ....
pascal.230predragd,
-> #225, piter> kako da napravim unit koji bi mi zastitio programe od
> izmena ? (virusi,drugovi) Pokusao sam sa crc-om kojeg
> posebni program upise na kraj fajla ali ne radi. Help.
Zdravo
Pa recimo mogao bi da proverava duzinu svaki put po startovanju
program proveri duzinu programa (.EXE fajl). Na taj nacin bi,
eventualno mogao utvrditi da ti se nije mozda nesto prilepilo za
program. Mogao bi jos da proveris da li je promenjeno vreme i datum
kreiranja fajla, mada cisto sumnjam da bi neki "virus" programer koji
drzi do sebe probustio takvu banalnu stvar, da vrati nazad vreme i
datum, no nikad se nezna.
Ako taj CRC snimis na kraj fajla, da li ti rutina za CRC proveru
uzima u obzir i sam kraj fajla (CRC deo), mozda je njega njega
zaboravio da proveri.
Pezdrav, Pedja.
pascal.231piter,
-> #230, predragdpored one poruke je i arhiva sa suorce-om. Trebalo bi da proverava
sve bajtove osim poslednja četiri.
CRC za sada upisujem pomocu NU tako da prvo startujem program
zapisem vrednosti,povecam duzinu za 4,upisem CRC u poslenja 4
bajta i onda ponovo start.
Piter
pascal.232marvin,
Jel' ima neko mozda neku (dobru) literaturu za TP6
u kojoj je objasnjen (lepo i kompletno) TV ?
pascal.233djelovic,
-> #224, ztuke> Ovo radi u rezoluciji 640x480 sa EGAVGA.BGI. Kako da ga nateram
> drajverom SVGA256.BGI !? Inače broj moda za rezoluciju 1024x768
Pre reda u kome pozivaš InitGraph pozovi InstallUserDriver. Više
o tome imaš valjda u helpu.
pascal.234vilic,
-> #232, marvin#> Jel' ima neko mozda neku (dobru) literaturu za TP6
#> u kojoj je objasnjen (lepo i kompletno) TV ?
Imaš li originalni TP 6.0 Sa njim ide i uputstvo za TV
bye
pascal.235marvin,
-> #234, vilic Eeee, kamo lepe srece...
pascal.236jbili,
-> #43, predragdpredrag, nisam odavno na SEZAM-u, tako da ne znam za početak diskusije o radu
sa mišem iz TP. Meni upravo tako nešto treba, pa sam skinuo TPMOUSE.zip i
probao ga i naravno on radi samo sa color kartama, a meni treba za hercules.
Mozes li mi pomoći?
Tačnije meni treba program pisan u TP 5.5 ili 6.0 kojim je moguće da u grafici
visoke rezolucije crtam kruznice, linije, kvadrate, itd. (ACAD u vrlo malom
izdanju). POMAGAJ!
pascal.238adezelin,
Help me if you can...
Imam 1 mali(??) problem.Nikako mi ne polazi za rukom da povezem
program u pascalu sa procedurom(funkcijom) pisanom u asembleru.
Moze i neki listing uz objasnjenje!
Please!!!!!!!
pascal.239stomic,
-> #238, adezelin$ Imam 1 mali(??) problem.Nikako mi ne polazi za rukom da
$ povezem program u pascalu sa procedurom(funkcijom) pisanom
$ u asembleru. Moze i neki listing uz objasnjenje!
1. Program (procedura) u asembleru mora da izgleda ovako:
------------------------------------------------------------
; Primer procedure pisane u asembleru. Ispisuje tekst na ekranu
public asmpas ; Navodiš ime procedure
code segment
assume cs: code, ds: code
begin: jmp asmpas
message db ' (C) 1992 by Slobodan Tomic ',13,10,'$'
asmpas proc near
push bp ; Moraš da sačuvaš
mov bp, sp ; TPov BP i ...
push ds ; ... DS
push cs ; data segment = code segment
pop ds
lea dx, message ; procedura za ispis
mov ah, 9h
int 21h
pop ds ; povratiš sačuvan DS i ...
pop bp ; ... BP
ret 0 ; vratiš rezultat 0 jer je
; ovo procedura a ne funkcija
; i nevraća nikakvu vrednost
asmpas endp
code ends
end begin
-----------------------------------------------------------
2. Prevedeš ovu proceduru u OBJ file sa nekim linkerom (najbolje TLINK)
3. Program u pascalu bi izgledao ovako:
-----------------------------------------------------------
Program AsmPas_Demo(Input, Output);
{
Primer vezivanja procedure pisane u asembleru i
pascal programa
}
{$L C:\TASM\ASMPAS.OBJ}
Procedure AsmPas; External;
Begin
AsmPas; { ispiši poruku }
End.
-----------------------------------------------------------
4. Prevedi program i startuj!
Pozdrav stomic
▀▀▀▀▀▀▀▀▀▀▀▀▀▀
P.S: Pređi na TP 6.0, ima mogućnost direktnog kucanja asemblerskog
programa u pascal programu (direktiva ASM).
pascal.240smiloradovic,
-> #239, stomic Sorry, ali moram malo da te ispravim.
Umesto
|> code segment
|>
|> assume cs: code, ds: code
|> begin: jmp asmpas
prirodnije je da staviš
CODE segment public
assume cs:code, ds:data
public imena_procedura ; ovde deklarišeš tvoje procedure, tako
... ; da se zna kom segmentu pripadaju
...
...
CODE ends
i time iskoristiš već postojeće segmente u programu. Pri tome ćeš ubaciti
DATA segment public
extrn lista_promenljivih ; ovde eventualno možeš da ubaciš nazive
... ; globalnih promenljivih koje koristiš
message ...
DATA ends
tako da ti nisu potrebne nikakve dalje manipulacije sa segmentima,
uključujući i ono push cs - pop ds. Dalje:
|> ret 0 ; vratiš rezultat 0 jer je
|> ; ovo procedura a ne funkcija
|> ; i nevraća nikakvu vrednost
Ovde imaš dve greške. Prvo, deklarisao si proceduru kao near, čime
praviš zbrku sa stekom - tvoju proceduru paskal sigurno poziva sa CALL
FAR, tako da ti ostaje reč viška na steku - znači, umesto ret treba da
stoji retf (return far); mogao si i da deklarišeš proceduru kao far, i
da koristiš samo ret - to bi sam asembler preveo kao retf. Zatim, broj
iza ret instrukcije kaže koliko bajtova treba skinuti sa steka prilikom
povratka - to ćeš koristiti ako tvoj potprogram ima *ulazne* argumente
koje treba pri povratku poništiti. Recimo, ako tvoja procedura ima dva
ulazna parametra tipa word, i ne vraća ništa, stavićeš retf 4.
|> end begin
Ovo ti ne treba, jer procedura ne stoji sama za sebe. Naziv labele iza
end označava ulaznu tačku u programu, a to treba staviti ako nameravaš
da praviš samostalan program (.com ili .exe).
|> 2. Prevedeš ovu proceduru u OBJ file sa nekim linkerom (najbolje TLINK)
Mali lapsus, treba ti asembler (recimo TASM).
BTW, uz sam Turbo paskal se, koliko se sećam, dobija primer povezivanja
paskal<->asembler - u pitanju su funkcije za rad sa prozorima.
Pozdrav, Stojan
pascal.241dzakic,
-> #240, smiloradovic>> praviš zbrku sa stekom - tvoju proceduru paskal sigurno poziva sa
>> CALL FAR, tako da ti ostaje reč viška na steku - znači, umesto
Delimično tačno. Paskal sve procedure poziva sa CALL NEAR dok se
procedure *u unitu* pozivaju sa CALL FAR.
Ne vidim, momci, zašto se patite sa {$l program.obj} kad novi
paskal 6.0 ima lepu mogućnost da se procedura/funckija deklariše
kao assembler i prenošenje parametara obavlja se automatski.
Meni je ovo bio dovoljan razlog da pređem na šesticu.
Recimo:
Function ipluspet(i:integer); assembler;
asm
mov ax,i
add ax,5
end;
Ništa lakše. Vrednost koju vraća funkcija treba da ostane u ax.
Dalje, ako se prenosi parametar sa var:
Procedure LowCase(var cc:char); assembler;
asm
les di,cc
mov al,es:[di]
cmp al,'A'
jb @low_over
cmp al,'Z'
ja @low_over
or al,$20
mov es:[di],al
@low_over:
end;
Dakle, cc je far pointer na promenljivu. U dokumentaciji kaže da
je obavezno čuvanje DS i SS segmenta dok se ES sme menjati pa
nije obavezan push/pop es.
Eto, mislim da je dovoljo, treba li još?
pascal.242stomic,
-> #240, smiloradovic$ Sorry, ali moram malo da te ispravim.
Nema problema, i onako niko nije savršen a pogotovo ja
i asembler. Ovo sam inače prepisao neki moj stari primer kada
sam pokušavao da vežem TP i OBJ file, od tada nisam to više
radio, do sinoć. Inače retko programiram u asembleru i znam
osnovne stvari.
$ tako da ti nisu potrebne nikakve dalje manipulacije sa
$ segmentima, uključujući i ono push cs - pop ds. Dalje:
Thanx za ovo, kada sam radio (pre) ovaj primer,
sam se mučio zašto mi neće da ispiše string na ekran,
na kraju sam porao da uradim ovaj PUSH CS i POP DS.
$ Zatim, broj iza ret instrukcije kaže koliko bajtova treba
$ skinuti sa steka prilikom povratka - to ćeš koristiti ako
$ tvoj potprogram ima *ulazne* argumente koje treba pri
$ povratku poništiti. Recimo, ako tvoja procedura ima dva
$ ulazna parametra tipa word, i ne vraća ništa, stavićeš
$ retf 4.
Zeznuo sam se, PASCAL vraća vrednosti u AX, a ne,
hvala bogu, preko RETa.
$ |> 2. Prevedeš ovu proceduru u OBJ file sa nekim linkerom
$ (najbolje TLINK)
$
$ Mali lapsus, treba ti asembler (recimo TASM).
To sam i mislio!
$ BTW, uz sam Turbo paskal se, koliko se sećam, dobija
$ primer povezivanja paskal<->asembler - u pitanju su
$ funkcije za rad sa prozorima.
Da. To je WIN.ASM (za verziju 6.0).
Pozdrav stomic
▀▀▀▀▀▀▀▀▀▀▀▀▀▀
P.S: Thanx, pomogao si mi da mi neke stvari budu jasnije.
pascal.243stomic,
-> #241, dzakic$ Delimično tačno. Paskal sve procedure poziva sa CALL NEAR
$ dok se procedure *u unitu* pozivaju sa CALL FAR.
Zašto ovo nisi objasnio dan ranije. Sinoć sam od 11h-03h
(po novom vremenu), pokušavao da povežem moj program u pascalu
sa onom bibliotekom funkcija, zzivotic-a, i RAžUNARA 54, za
komunikaciju sa COM1-COM2. Hteo sam da napravim UNIT, sa još nekim
dodatnim funkcijama koje se baziraju na ovima, i nije htelo da
proradi dok nisam prebacio sve u glavni program!
Interesantno još, da se stack pravilno ažurira pri izlasku
iz procedure pisane u asembleru, ako je definisana kao funkcija u
pascalu, odnosno nema problema sa viškom reči na stacku.
Npr.: _Comm_Install mi je radio jer sam ga definisao kao
funkciju, dok npr. _Comm_SetParam nije jer je bila procedura!
Da li bi onda trebalo da sve definišemo kao funkcije i da
uključimo oni {$X+} (ja mislim da se tako zove, pojavljuje se u
verziju TP 6.0) direktivu koja može da tretira funkcije kao
procedure (kao u C-u), i da sve eksterne procedure/funkcije
definišemo kao funkcije.
Pozdrav stomic
▀▀▀▀▀▀▀▀▀▀▀▀▀▀
pascal.244sale,
Da li neko zna kako da napravim .com program sa TP 6.0?
Sale
P.S. EXE2BIN neće nekako, i vrlo je škrt na objašnjenjima zašto i kako...
pascal.245stomic,
-> #244, sale$ Da li neko zna kako da napravim .com program sa TP 6.0?
Mislim da nema šanse. Neke starije verzije (ja mislim
3.0 pa nazad) su jedino i pravile .com fileove.
Pozdrav stomic
▀▀▀▀▀▀▀▀▀▀▀▀▀▀
P.S: Na Durlanu su se jedno vreme mučili, čak su mi i poslali
par fileova prevedenih sa TP i njihov source kao dokaz,
da može da se prave COM fileove, kada sam pogledao sa
sadržaj tih COM fileova, na početku je pisalo nešto kao
Copyright (C) 1985 (!?!) Borland Inc. Što otprilike znači
da su prevedeni verzijom 3.0, ili nekom pre.
pascal.246dgrbic,
-> #244, sale:: Da li neko zna kako da napravim .com program sa TP 6.0?
Teško, rekao bih čak nikako.
TP 6.0 pravi medium memorijski model, prema tome ima više segmenata, a takođe
i kod ne počinje na $100, što je potrebno da bi se program pretvorio u .com
jer se na to mesto .com programi učitavaju.
pascal.247stomic,
Da li neko možda ima neku biblioteku funkcija za TP koja
ima mogućnost ubacivanja slika (u nekom od poznatijih formata),
u PASCAL program?
Pozdrav stomic
▀▀▀▀▀▀▀▀▀▀▀▀▀▀
pascal.248adezelin,
>|#*}- 1. Program (procedura) u asembleru mora da izgleda
>|#*}- ovako:
>|#*}- ------------------------------------------------------
>|#*}- ; Primer procedure pisane u asembleru. Ispisuje tekst
>|#*}- na ekranu public asmpas ; Navodis
>|#*}- ime procedure
>|#*}-
>|#*}- code segment
>|#*}-
>|#*}- assume cs: code, ds: code
>|#*}- begin: jmp asmpas
>|#*}-
>|#*}- message db ' (C) 1992 by Slobodan Tomic
>|#*}- ',13,10,'$'
>|#*}-
>|#*}- asmpas proc near
>|#*}-
>|#*}- push bp ; Moras da sacuvas
>|#*}- mov bp, sp ; TPov BP i ...
>|#*}- push ds ; ... DS
>|#*}- push cs ; data segment = code segment
>|#*}-
>|#*}- pop ds
>|#*}- lea dx, message ; procedura za ispis
>|#*}- mov ah, 9h
>|#*}- int 21h
>|#*}-
>|#*}- pop ds ; povratis sacuvan DS i ...
>|#*}- pop bp ; ... BP
>|#*}- ret 0 ; vratis rezultat 0 jer je
>|#*}- ; ovo procedura a ne funkcija
>|#*}- ; i nevraca nikakvu vrednost
>|#*}- asmpas endp
>|#*}-
>|#*}- code ends
>|#*}-
>|#*}- end begin
Thanx a lot!
Ali kako sad sa funkciom??
??????????????????????????
pascal.249.bale.,
-> #248, adezelinŮŢ >|#*}- ret 0 ; vratis rezultat 0 jer je
ŮŢ >|#*}- ; ovo procedura a ne funkcija
ŮŢ >|#*}- ; i nevraca nikakvu vrednost
Kah-kah... Jel ovo citat A.K.-a? Nemam mnogo vremena, al je red da razjasnim
neke stvari ;)
RET ne vraca nikakvu vrednost, vec je to masinska instrukcija koja sa steka
skida rec i smesta je u IP (programski brojac) i, eventualno, ako je poziv
procedure bio "izdaleka" (tzv. FAR PTR), jos jednu rec u CS (kodni segment), i
nista vise! Procesor zatim ucitava instrukciju sa adrese koja se nalazi u CS:IP
(ovo se prevodi kao 16*[CS]+IP), sto ce reci da se program nastavlja iza poziva
potprograma (procedure), jer su prilikom tog poziva na stek stavljene vrednosti
ova dva registra. Ono nula kao parametar RET nema nikakvog smisla, verovatno je
neko hteo u stilu A.K.-a da objasni (?). Taj parametar znaci da se, posle ovoga
sto sam napisao, vrednost SP (stek pointera) poveca za zadat broj, sto
prakticno znaci da se preskoce neki parametri koji su prosledjeni proceduri
stavljanjem na stek pre njenog poziva (CALL), a koje procedura ne vraca, pa da
se ne bi trosio stek dzabe... Dakle, ponavljam da nemam vremena, a robert me
zeza page-ovanjem u ovom trenutku ;), parametri se standardno prosledjuju
stavljanjem na stek ispred CALL, a zatim se, u proceduri, na primer, stavi na
stek BP, pa se iz SP prespe u BP i doda malo, da se preskoci BP stavljen na
stek i adresa iza CALL (tu treba program da se nastavi), pa ce onda BP biti
pointer na parametre... Jednostavno, zar ne? E, ovaj robert stvarno...
Bale
pascal.250.bale.,
-> #249, .bale.Jos nesto:
ŮŢ >|#*}- end begin
ako stavis ovo, program ce uvek da ti startuje od tacke BEGIN, jer je ovo
direktiva za startnu tacku. To znaci da, ako hoces tu proceduru da povezes sa
nekim glavnim programom, on se nikada nece izvrsiti, vec ce biti haos... Ovo
samo za glavni program...
Bale
pascal.251stomic,
-> #249, .bale.$ Kah-kah... Jel ovo citat A.K.-a? Nemam mnogo vremena, al
$ je red da razjasnim neke stvari ;)
Sorry! Ovo sam ja poslao. Napravio sam grešku slučajno!?!
Inače TP vraća vrednosti u AX.
Pozdrav stomic
▀▀▀▀▀▀▀▀▀▀▀▀▀▀
pascal.252stomic,
-> #248, adezelin$ Thanx a lot!
$ Ali kako sad sa funkciom??
$ ??????????????????????????
Ako procedure vraća bajt, onda (nisam siguran, posle
onog lapsusa sa RET 0 :-))) stavi izlaznu vrednost u AL, ako
je izlaz word ili integer onda u AX. Za ostale tipove neznam.
Nepravi neku funkciju u TP prevedi program, i pregledaj ga
sa nekim debugom (najbolje TD, ukluči i source kod). Pokušaj
da pređeš na TP 6.0, i asemblerske programe možeš glatko da
pišeš u TPu.
Pozdrav stomic
▀▀▀▀▀▀▀▀▀▀▀▀▀▀
pascal.253dzakic,
-> #252, stomic>> je izlaz word ili integer onda u AX. Za ostale tipove neznam.
Longint je kombinacija DX:AX; boolean je al=0 za false, bilo šta
drugo za true.
pascal.254vvelisavljev,
-> #247, stomic Mislim da je bilo to u nekoj staroj konferenciji i to za GIF format.
Ukoliko ne možeš da nađeš javi pa da šaljem.
pozdrav, VV
pascal.255stomic,
-> #254, vvelisavljev$ Mislim da je bilo to u nekoj staroj konferenciji i to za
$ GIF format. Ukoliko ne možeš da nađeš javi pa da šaljem.
Molio bih te ako možeš da mi pošalješ. Po mogućstvu
za PCX, ako ne, onda za bilo koji drugi format.
Pozdrav stomic
▀▀▀▀▀▀▀▀▀▀▀▀▀▀
pascal.256vvelisavljev,
-> #255, stomic Nema za PCX, ali zato imam za GIF.
pozdrav, VV
gif-pas.zippascal.257hercog,
Kako da spojim moj program u pascalu za drajverom herc.bgi?
Hercog
pascal.258stomic,
-> #257, hercog$ Kako da spojim moj program u pascalu za drajverom
$ herc.bgi?
Jel' misliš da driver direktno povežeš sa EXE
fileom, da ne bude van programa, nego u njemu? Ako je
tako pogledaj demo programe (koji se dobijaju uz TP),
mislim da se zovu BGILINK.PAS, BGIFONT.PAS i BGIDRIV.PAS.
Pored njih treba ti i MAKE.EXE i BINOBJ.EXE da prevediš
*.BGI i *.CHR u *.OBJ fileove. Ovako možeš i slova, odnosno
*.CHR fileove da uključiš u svoj program.
Kod mene je ovako radi OK. Ako nemaš ove programe
javi pa ih šaljem.
Pozdrav stomic
▀▀▀▀▀▀▀▀▀▀▀▀▀▀
pascal.259ssokorac,
Hteo sam da napravim program koji će da uporedjuje datume dva fajla
i ispiše 'isti' ili 'različiti' na koordinate koje navedem u
komandnoj liniji. Konkretno, ako ga pozovem sa:
C:Đ> uporedi mika.doc mika2.doc 13 7
da ispiše 'isti' ili 'rzličiti' u 7. redu, 13. koloni. Nažalost,
program mi ne ardi. Šta ne valja? Napominjem da sam početnik u vezi
TP <-> komandna linija i fajlovi, pa nemojte da se smejete ako ima
neka glupa greška...;) Ili je sve greška...;))
program poredi_datume;
uses dos,crt;
var
flh,fld:file;
tm1,tm2:longint;
tmr1,tmr2:datetime;
x,y:integer;
function poredjenje(file1,file2:datetime):boolean;
begin
poredjenje:=(file1.year=file2.year) and (file1.month=file2.month) and
(file1.day=file2.day) and (file1.hour=file2.hour) and
(file1.min=file2.min)
and (file1.sec=file2.sec)
end;
procedure parametri(koorx,koory:string; var x,y:integer);
var code:integer;
begin
val (koorx, x, code);
val (koory, y, code)
end;
procedure jednaki(x,y:integer);
begin
gotoxy (y,x);
writeln ('isti')
end;
procedure razliciti(x,y:integer);
begin
gotoxy (y,x);
writeln ('različiti')
end;
begin
if paramcount<>4 then halt;
parametri(paramstr(3),paramstr(4),x,y);
assign (flh, paramstr(1));
reset (flh);
if ioresult<>0 then halt;
getftime (flh,tm1);
close (flh);
unpacktime (tm1,tmr1);
assign (fld, paramstr(2));
reset (fld);
if ioresult<>0 then halt;
getftime (fld,tm2);
close (fld);
unpacktime (tm2,tmr2);
if poredjenje(tmr1,tmr2) then jednaki(x,y)
else razliciti (x,y)
end.
pascal.260andrejl,
-> #259, ssokorac
Ako te interesuju samo file-ovi različitog datuma što onda proveravaš
vrednosti za sat, minut i sekundu kreiranja file-a ?
Program radi !
Samo što su retke datoteke koje su nastale istog dana, iste godine, meseca,
sata, minuta i sekunde.
Ako ti je potrebno provera vremena izbaci proveru sekundi i program će imati
nekog smisla
Ako sam omašio temu (missunderstandig etc.) :) kaži
bye, andrejl
pascal.261ssokorac,
-> #260, andrejl -=)> Ako te interesuju samo file-ovi različitog datuma što
-=)> onda proveravaš vrednosti za sat, minut i sekundu
-=)> kreiranja file-a ?
Pa, to je u stvari trebalo da proverava da li su na disketi i na
HD-u iste verzije tog fajla. Ako jesu - vreme će biti isto.
-=)> Samo što su retke datoteke koje su nastale istog dana,
-=)> iste godine, meseca, sata, minuta i sekunde.
-=)> Ako ti je potrebno provera vremena izbaci proveru
-=)> sekundi i program će imati nekog smisla
Ovo sam već objasnio gore :)
-=)> Program radi !
Pa, to sam i ja mislio, ali - neće. Javlja run-time error...:(
Probaću ponovo.
Hvala, Stasha.
P.S. Evo, sad sam probao - radi :). Samo je izgleda greška u
pozivanju iz batch fajla...O;)
P.P.S. Sad sam otkrio šta ne radi! Ako pozovem uporedi.exe za celim
path-om ta dva fajla javlja runtime error!!! Zašto??? :(((
pascal.262ilazarevic,
-> #259, ssokorac█ da ispiše 'isti' ili 'rzličiti' u 7. redu, 13. koloni. Nažalost,
█ program mi ne ardi. Šta ne valja? Napominjem da sam početnik u vezi
Meni sve izgleda OK (i ja sam početnik ;)
Probaj internim dibagerom u Turbo Pascalu da otkriješ gde ti brljavi, pa
kad nađeš reci...
pascal.263vbole,
-> #261, ssokorac> P.P.S. Sad sam otkrio šta ne radi! Ako pozovem uporedi.exe za celim
> path-om ta dva fajla javlja runtime error!!! Zašto??? :(((
Program je sintaksno ispravan, ako ti javlja runtime-error, onda si
pogrešio u navodjenju path-a, imena programa i sl.
Pošto nisi isključio prijavljivanje grešaka, funkcija ioresult ** ne
može ** da ti vrati kod greške.
Ubaci š$I-ć direktivu u program, pa probaj ponovo.
bye... vbole
P.S. Umesto šć stavi vitičaste zagrade, ofkors.
pascal.264ssokorac,
-> #262, ilazarevic -=)> Probaj internim dibagerom u Turbo Pascalu da otkriješ
-=)> gde ti brljavi, pa kad nađeš reci...
Kao što već rekoh, program radi samo neće ako ga pozovem sa punim
path-om fajlova. Ako navedem samo drajv:ime.ext onda radi...:)
Hm, zadovoljan sam sobom za početak...;))
Stasha
pascal.265ssokorac,
-> #263, vbole -=)> Ubaci š$I-ć direktivu u program, pa probaj ponovo.
žemu to služi? Možda je glupo - ali nemam pojam šta je to...:)
pascal.266ssokorac,
Kako da dobijem highlited tekst? Tj. kako da sa writeln ('Stasha');
;) dobijem highlited ispisano Stasha?
Pokušavao sam sa textcolor(lightgray), textcolor(white), highvideo,
ali očigledno ni jedan nije 'onaj' koji treba... Inače, imam herkules
ako to nešto znači.
Hvala, Stasha.
pascal.267dejanr,
-> #265, ssokorac>> > Ubaci {$I-} direktivu u program, pa probaj ponovo.
>>
>> žemu to služi? Možda je glupo - ali nemam pojam šta je to...:)
Pristup fajlu se radi ovako:
{$I-}
assign (ft, 'ime');
reset (ft);
if ioresult<>0 then
begin
writeln ('Greška itd');
halt; { ili nešto drugo }
end;
read (ft, fv);
if ioresult<>0 then
begin
writeln ('Greška itd');
halt; { ili nešto drugo }
end;
...
{$I+}
pascal.268predragd,
-> #255, stomic> Molio bih te ako mozes da mi posaljes. Po mogucstvu
> za PCX, ako ne, onda za bilo koji drugi format.
U prilogu ti saljem biblioteku za rad sa PCX fajlovima. Radi samo
na TP 6.0.
Pedja.
tppcx.arjpascal.269ssokorac,
-> #267, dejanrž¸Ć writeln ('Greška itd');
Hvala!
pascal.270ssokorac,
Hm, otkrio sam kako da dobijem highlighted text...:) Moram da stavim
textmode(mono); ;))
E, sad imam jedno pitanje u vezi toga:
Sada taj highlighted tekst neće biti hig...itd. :) na VGA? Ili EGA,
CGA...svejedno...? Kako da izvedem da, ako može, program sam neadje
koji textmode treba da se eključi, pa da njega i uključi...?
Hvala, Stasha.
pascal.271djnsnd,
Osniva se grupa koja ce se baviti
Turbo Vision-om Turbo Pascala 6.0
Pozivam sve zainteresovana da mi se jave.
DjnSnd
pascal.272ssokorac,
Recimo imam neki text fajl, recimo 'ss.txt' i u njemu tekst:'Bio jednom car' i
hoću da ubacim izmedju 'jednom' i 'car' - 'jedan'. Kako to da izvedem u pascal
programu. Takodje, recimo da upisujem u neki ss fajl: write(ss,'d'), zatim hoću
da obrišem taj karakter 'd'. Kako?
Ovo je verovatno (u stvari sigurno;) elementarna stvar, ali kako već rekoh -
početnik sam, pa se nadam da ćete imati strpljenja...;))
Stasha
pascal.273dejanr,
-> #272, ssokoracDa ubaciš u sred tekst fajla... teško. Praktično, morao bi prepisati
čitav fajl u drugi, dakle (napamet kucano):
assign (ulaz, 'a.txt');
assign (izlaz, 'b.txt');
reset (ulaz);
rewrite (izlaz);
while not eof (ulaz) do
begin
readln (ulaz, red);
{ ovde izmeniš šta treba u redu }
writeln (izlaz, red);
end;
close (ulaz);
close (izlaz);
pascal.274stomic,
-> #268, predragd$ U prilogu ti saljem biblioteku za rad sa PCX fajlovima.
$ Radi samo na TP 6.0.
$
$ Pedja.
Thanx! Nadam se da će biti OK.
stomic.
pascal.275stomic,
-> #272, ssokorac$ Recimo imam neki text fajl, recimo 'ss.txt' i u njemu
$ tekst:'Bio jednom car' i hoću da ubacim izmedju 'jednom' i
$ 'car' - 'jedan'. Kako to da izvedem u pascal programu.
Jedino da kreiraš još jedan file u koji ćeš prepisati
'Bio jednom', pa zatim ubactiti 'jedan' pa 'car', izbrisati
stari file i novi preimenovati u stari file.
$ Takodje, recimo da upisujem u neki ss fajl: write(ss,'d'),
$ zatim hoću da obrišem taj karakter 'd'. Kako?
Isto prepisivanjem iz starog u novi file. Deluju
idiotski primeri, ali ne verujem (bar ja neznam) da oveke
operacije (umetanja/brisanja) mogu da se obavljaju nad
datotekama.
stomic
pascal.276ilazarevic,
-> #270, ssokorac█ Sada taj highlighted tekst neće biti hig...itd. :) na VGA? Ili EGA,
█ CGA...svejedno...? Kako da izvedem da, ako može, program sam neadje
█ koji textmode treba da se eključi, pa da njega i uključi...?
Pa ja mislim da hajlajtid text može da se dobije pomoću HighVideo
procedure.
pascal.277radunovic,
-> #266, ssokorac
Probaj sa textbackground(white) ali posto obrises ekran. Tada ce samo slova
koja pises biti inverzna.
pascal.278ssokorac,
-> #276, ilazarevic¸¸ Pa ja mislim da hajlajtid text može da se dobije pomoću
¸¸ HighVideo procedure.
Ja, ja, ali mora prvo textmode(mono);
I još mi niko nije rekao kako program sam da nadje koji textmode
radi na kompjuteru!!!
pascal.279ssokorac,
-> #277, radunovic4¸¸ Iz readline ocita funkcijski taster i pozove neku
¸¸ proceduru , npr HELP ?????????
Hm, može sa readkey, ali sa readline - ne verujem (?).
Evo za readkey:
program ss;
uses crt;
var ch:char;
begin
ch:=readkey;
if ch=#0
then
begin
ch:=readkey;
if ord(ch)=59 then helpproc š* konkretno za F1 *ć
end
end.
Za F2, F3...menjaš 59 u 60,61...itd.
Stasha
pascal.280skoprivica,
-> #264, ssokorac>-> Hm, zadovoljan sam sobom za pocetak...;))
A sad pogledaj i kuhinju i predsoblje...
pascal.281skoprivica,
-> #271, djnsnd>-> Osniva se grupa koja ce se baviti
>-> Turbo Vision-om Turbo Pascala 6.0
Molim vas sve da ne idete u grupu, pricajte ovde, ja tek pocinjem
sa Turbo Visionom, a mislim kad postoji tema, ne treba i grupa.
Molim vas sve jos jednom, steta bi bilo...
Aje... CTEBO.
pascal.282stomic,
-> #281, skoprivica$ Molim vas sve da ne idete u grupu, pricajte ovde, ja tek
$ pocinjem sa Turbo Visionom, a mislim kad postoji tema, ne
$ treba i grupa. Molim vas sve jos jednom, steta bi bilo...
Slažem se, mada sam prvo bio za grupu, a i onako TV
potpuno spada u pascal, pa barem da osvežimo ovu konferenciju
(nadam se :-))).
Evo za početak hijerarhija objekata iz TV, kompletno
je skinuta iz HELPa TPa 6.0 (verovatno će retko kome poslužiti,
ali barem da imamo osnovu).
TObject─┬─TCollection───TSortedCollection──TStringCollection
├─TResourceFile └─TResourceCollection
├─TStream─────┬─TDosStream─────────TBufStream
├─TStringList └─TEmsStream
├─TStrListMaker
└─TView───────┬─TCluster─────────┬─TCheckBoxes
├─TFrame └─TRadioButtons
├─TGroup───────────┬─TDeskTop
├─TBackGround ├─TProgram─────TApplication
├─TButton └─TWindow────┬─TDialog
├─TStaticText──────┬─TLabel └─THistoryWindow
├─THistory └─TParamText
├─TListViewer──────┬─THistoryViewer
├─TInputLine └─TLi
├─TMenuView────────┬─TMenuBar
├─TScrollBar └─TMenuBox
├─TScroller──────────TTextDevice──TTerminal
└─TStatusLine
stomic
pascal.283skoprivica,
-> #272, ssokorac>-> Recimo imam neki text fajl, recimo 'ss.txt' i u njemu tekst:'Bio
>-> jednom car' i hocu da ubacim izmedju 'jednom' i 'car' - 'jedan'.
>-> Kako to da izvedem u pascal programu. Takodje, recimo da upisujem
>-> u neki ss fajl: write(ss,'d'), zatim hocu da obrisem taj karakter
>-> 'd'. Kako?
Mani se sekvencijalnih datoteka i radi sa record i vecina problema
resena...
pascal.284ppekovic,
-> #270, ssokorac>> Sada taj highlighted tekst neće biti hig...itd. :) na VGA? Ili EGA,
>> CGA...svejedno...? Kako da izvedem da, ako može, program sam neadje
>> koji textmode treba da se eključi, pa da njega i uključi...?
Ne tvrdim da je rešenje idealno, ali probaj sa korišćenjem ANSI
sekvenci!
Paya
pascal.285ssokorac,
-> #277, radunovic¸¸ Probaj sa textbackground(white) ali posto obrises ekran.
¸¸ Tada ce samo slova koja pises biti inverzna.
? Ali tako slova neće biti highlited već inverse...
U svakom slučaju, uspeo sam, radi highvideo, samo sa textmode(mono)
pre toga...
Eh, da: kako se briše ekran u tekst modu??
Ja sam napravio neku svoju proceduru cls koja izbaci ceo ekran
nagore pa ostane prazan, ali sigurno ima nesto normalnije?
Stasha
pascal.286stomic,
-> #285, ssokorac$ Eh, da: kako se briše ekran u tekst modu??
Briše se pomoću CLRSCR, mora da bude uključena CRT biblioteka
u glavni program (Uses Crt).
stomic
pascal.287vbole,
-> #278, ssokorac> Ja, ja, ali mora prvo textmode(mono);
Ma, ne mora ništa za herkules.
> I još mi niko nije rekao kako program sam da nadje koji textmode
> radi na kompjuteru!!!
program KojiMod;
uses dos;
var
Regs : Registers;
Mode : Byte;
Display : String;
begin
Regs.AX:=$0F00;
Intr($10, Regs);
Mode:=Lo(Regs.AX);
Case Mode of
0 : Display:='40x25 B / W';
1 : Display:='40x25 Color';
2 : Display:='80x25 B / W';
3 : Display:='80x25 Color';
š pa idu modovi 4-6 ć
7 : Display:='80x25 Mono';
end;
writeln(Display);
end.
Ako hoćeš da saznaš inicijalni video-mod, onda pozovi int 11h, koji u
registru AX vraća podatke koji te interesuju.
bye... vbole
pascal.288ivans,
-> #285, ssokorac* Eh, da: kako se brise ekran u tekst modu??
ClrScr, iz unita Crt.
Pozdrav,
Ivans.
pascal.289ilazarevic,
-> #270, ssokorac█ Sada taj highlighted tekst neće biti hig...itd. :) na VGA? Ili EGA,
█ CGA...svejedno...? Kako da izvedem da, ako može, program sam neadje
█ koji textmode treba da se eključi, pa da njega i uključi...?
Pa ja mislim da hajlajtid text može da se dobije pomoću HighVideo
procedure.
pascal.290djnsnd,
-> #281, skoprivica> Molim vas sve da ne idete u grupu, pricajte ovde, ja tek
> pocinjem sa Turbo Visionom, a mislim kad postoji tema, ne
> treba i grupa.
BTW, tema je PASCAL.
pascal.291hercog,
-> #258, stomic
Sve sam lepo uradio i povezao moj prg sa bgi-om, al sad kad startujem
prg dobijem neke zbrljotine na ekranu umesto grafike. Ako startujem
program u direktorijumu gde se nalazi herc.bgi onda sve radi bez pro-
blema.
Hercog
pascal.292skoprivica,
-> #282, stomic>-> Evo za pocetak hijerarhija objekata iz TV, kompletno
>-> je skinuta iz HELPa TPa 6.0 (verovatno ce retko kome posluziti,
>-> ali barem da imamo osnovu).
Moze malo teorije: Sta su objekti, metode, u cemu se razlikuju od
'obicnog' programiranja, i tako... Ukratko, posto otprilike znam...
Aje... CTEBO.
pascal.293stomic,
-> #291, hercog$ Sve sam lepo uradio i povezao moj prg sa bgi-om, al sad
$ kad startujem prg dobijem neke zbrljotine na ekranu umesto
$ grafike. Ako startujem program u direktorijumu gde se
$ nalazi herc.bgi onda sve radi bez problema.
Onda verovatno nisi nešto dobro povezao. Jer ako sve
uljučiš u izvršni kod (.EXE) program više nema nikakve veze sa
externim driverima. Kod mene je sve radilo OK! Uključio sam i
slova i sve drievere za kartice. Radio je i na Herculesu i na
CGA,EGA i VGA. Ako ne uspeš javi da ti pošaljem primer.
stomic
pascal.294skoprivica,
-> #290, djnsnd>->> pocinjem sa Turbo Visionom, a mislim kad postoji tema, ne
>-> BTW, tema je PASCAL.
Turbo Vision = objektni paskal (kao c++ i c, ne ?)
pascal.295prvul,
-> #294, skoprivicaŮ Turbo Vision = objektni paskal (kao c++ i c, ne ?)
Ů▄▄▄
Ne! TVision je biblioteka objekata za Turbo Pascal,
a C++ je programski jezik. In fact, postoji i
jezik koji se zove Object Pascal (bilo ih blam da jezik nazovu
Pascal:=Pascal+1 ;) ali je, naravno, TP nekompatibilan sa njim.
Prvul.
pascal.296ssokorac,
-> #284, ppekovic¸¸ Ne tvrdim da je rešenje idealno, ali probaj sa
¸¸ korišćenjem ANSI sekvenci!
Veliko hvala! Ali...kahm...kako? ;)
pascal.298ssokorac,
-> #280, skoprivica¸¸> -> Hm, zadovoljan sam sobom za pocetak...;))
¸¸ A sad pogledaj i kuhinju i predsoblje...
žekaj, još nisam toliko napredovao...
pascal.299stomic,
-> #292, skoprivica$ Moze malo teorije: Sta su objekti, metode, u cemu se
$ razlikuju od 'obicnog' programiranja, i tako... Ukratko,
$ posto otprilike znam...
Evo ovako (mada nisam ni ja nešto naročito iskusan):
Objekat je grupa procedura, funkcija (koje se nazivaju metode)
i promenljiva koje rešavaju neki zadatak. Objekte naravno možeš
i ti kreirati, a možeš i koristiti već gotove. Tvoj objekat
može da nasledi, neki predhodni, već definisani objekat. Pod
nasleđivanjem podrazumevam da primi sve njegove procedure,funkcije
i varijable. Taj novi objekat će biti isti kao stari, ali ti možeš
dodavati nove procedure, funkcije i varijable. U novom objektu
možeš i menjati metode (dodavati novi kod) koje si nasledio a možeš
i kreirati potpuno novu metodu.
Prednost je što problemu pristupaš "prirodnije" (što mrzim
ovu definiciju). Npr: Praviš grafički program, osnovni objekat će
ti biti TAžKA, koja će imati proceduru za crtanje i dve promenljive
X i Y, koje će označavati kordinate tačke. Sledeći objekat LINIJA,
će naslediti objekat TAžKA jer se sastoji iz tačaka (prirodno!), a
dodaćeš nave promenjljive X1,Y1,X2 i Y2 koje će označavati početak/
kraj linije i novu proceduru, koja će iscrtavati liniju, pozivajući
za svaku tačku proceduru iz objekta TAžKA koja crta tačku. Sledeći
objekat KRUG će naslediti objekat TAžKA dodati novu promenljive X,Y
i R za određivanje centra i radijusa kruga i proceduru za iscrtavanje
kruga. E sada, objekat PRAVOUGAONIK će naslediti objekat LINIJA
(a ne TAžKA), jer se sastoji iz četiri linije. I tako se postupno
pravi program počinjući od najprostijeg oblika (u našem primeru TAžKA),
i nasleđivanjem i dodavajuć nove procedure grade se novi složeniji
oblici.
Inače metodama iz nekog objekta pristupaš pomoću:
IME_OBJEKTA.IME_METODE, npr. (za crtanje tačke). TACKA.NACRTAJ(20,30),
ili TACKA.X:=20; TACKA.Y:=30, itd...
Ovo lepo, zvuči ali kakva je razlika između UNITa i objekata?
I u UNITima ima neka vrsta nasleđivanja (Uses), imaš i procedure i
promenljive u svakom UNITu, možeš da dodaješ nove, ...
Evo je bio maloooooooooo duži odgovor. Ako ima grešaka, voleo
bih da me neko ispravi, jer ni sam nisam siguran sa OOPom.
stomic
pascal.300macak,
-> #293, stomic█ Ako ne uspes javi da ti posaljem primer.
Mogao bi ovde da ga ubacis...imam i ja nekih problemcica sa tim.
pascal.301nbatocanin,
-> #299, stomic> Prednost je ëto problemu pristupaë "prirodnije"
Osim ovoga, OOP znaüajno pojednostavljuje program, poveäava
üitljivost programa, omoguäuje jednostavnije odrćavanje i nadgradnju,
smanjuje zavisnost izmedju delova programa, itd. U svakoj knjizi o
OOP-u bar 30% je ispunjeno prednostima nad klasiünim metodama.
> Ovo lepo, zvuüi ali kakva je razlika izmeöu UNITa i
> objekata? I u UNITima ima neka vrsta nasleöivanja (Uses),
> imaë i procedure i promenljive u svakom UNITu, moćeë da
> dodajeë nove, ...
UNIT-i su napravljeni po analogiji sa modulima u Moduli i sluće da
"izdele" tekst programa na razumljive i lake za odrćavanje celine.
Pri tome UNIT koristi za komunikaciju sliüan sistem kao i objekti,
zato ëto se radi o izuzetno efikasnoj i jednostavnoj komunikaciji.
Skraäeno reüeno, UNIT se za vreme izvrëavanja zaista ponaëa kao
statiüki objekat, ali nema sve osobine koje imaju objekti. Na primer,
ne moće se dinamiüki kreirati i sl. Objekat se definiëe kao novi tip
podataka (recimo, uopëteni slog), pa se kasnije mogu definisati
promenljive (znaüi, viëe njih) tog tipa. Naravno, moće se naäi joë
razlika.
Mislim da je najvaćnije kod OOP-a da ljudi saznaju ëta je to. Jer,
svi mi manje ili viëe zaziremo od raznih komplikacija, pa ma kakvu
korist donosile. Treba reäi da OOP *nije* neka nadgradnja nad
standardnim programima koja äe vam program u startu poveäati za X kb,
a "dobiäete to i to". Radi se prvenstveno o novoj ORGANIZACIJI
programa.
Moram da priznam da sam i ja pripadao skepticima kad sam prvi put üuo
za OOP. Sad kada sam provalio ëtos, mogu samo da vam kaćem: uüinite
neëto za sebe - probajte OOP! Na teorijska razmatranja ne morate da
obraäate paćnju: OOP je neëto izuzetno praktiüno i korisno. Mislim da
je to najveäa revolucija u programiranju posle uvoöenja procedura.
Pozdrav, Nenad
pascal.302sslavko,
Zdravo,
evo uz poruku jedan unit sa funkcijama za kontrolu miša u
tekstualnom režimu. Za jednostavnije programe je izuzetno upotrebljiv.
Na raspolaganju su vam sledeće procedure i funkcije:
function mis_install:boolean;
vraća TRUE ili FALSE u zavisnosti od toga da li je drajver za
miša instaliran ili nije.
procedure mis_granica(minx,miny,maxx,maxy:integer);
ograničava kretanje kursora miša na prozor određen sa minx,miny
(gornji levi ugao), maxx i maxy (donji desni ugao).
function mis_taston(tast:byte):boolean;
vraća TRUE ili FALSE u zavisnosti da li je pritisnut određeni
taster na mišu. Tasteri su:
1:levi; 2:desni 3:levi i desni zajedno 4:srednji
Dakle, if mis_taston(1) then... znači ako je pritisnut levi
taster....
function mis_tastoff:boolean;
vraća TRUE ili FALSE u zavisnosti da li su SVI tasteri otpušteni.
procedure mis_kurson;
aktivira text kursor miša.
procedure mis_kursoff;
gasi text kursor miša.
procedure mis_xy(var x,y:integer);
vraća trenutnu poziciju kursora miša u promenljivim x i y.
procedure mis_set(x,y:integer);
podešava poziciju kursora miša na koordinate x i y.
procedure dos_kurson;
uključuje standardni DOS text kursor.
procedure dos_kursoff;
isključuje standardni DOS text kursor.
Nadam se da će vam ovaj UNIT biti dovoljna pomoć da ukrotite vašeg
pacova.
pozdrav
Slavko.
mouse.tpupascal.303ssokorac,
-> #287, vbole:> Ma, ne mora ništa za herkules.
Kako? Meni neće da radi ako ne stavim textmode(mono)?!
:> program KojiMod;
Hvala ti veliko!
pascal.304ssokorac,
-> #288, ivans:> ClrScr, iz unita Crt.
Eh, a ja u help-u tražio CLS, CLE..., DEL..., ERASE... :)
Nisam tražio pod CLR... :( Hvala.
pascal.306ppekovic,
-> #294, skoprivica>>> ->> pocinjem sa Turbo Visionom, a mislim kad postoji tema, ne
>>> -> BTW, tema je PASCAL.
>>
>> Turbo Vision = objektni paskal (kao c++ i c, ne ?)
Samo napred sa porukama o TV-u, niste pogrešili temu!
Paya
pascal.309ppekovic,
-> #296, ssokorac>> Ne tvrdim da je re{enje idealno, ali probaj sa
>> kori{}enjem ANSI sekvenci!
>>
>> Veliko hvala! Ali...kahm...kako? ;)
Na C-u bi to islo ovako:
#include <stdio.h>
main()
{
printf("NORMAL \033[7m INVERSE \033[0m NORMAL\n");
}
Dakle, sekvenca je Esc[<attr>m gde je za inverzni
prikaz attr 7 a za normal 0. Za ostale vrednosti atributa,
potrazi po conf. ostavljene su na xx mesta ANSI Esc sekvence.
Paya