pascal.722isekulovic,
-> #714, eagle>> SIgurnije je svaki put pročitati vreme sa 40h:6Ch adrese.
A ako korisnik šteluje sat u medjuvremenu?
pascal.721isekulovic,
-> #716, markom>> Ajde ako te ne mrzi nabaci primer ...
Ceo program? Nemam ništa gotovo, što bi ličilo na nešto, a ni vremena
da pišem. Evo kako bi izgledao delić koji bi trebao odlučivati da li da se
aktivira.
var Activate : Boolean;
Ctrl, Shift, Alt : Boolean;
InDos : ^Boolean;
Old_Int9, Old_Int8, Old_int28 : procedure;
Procedure posao;
begin
ovde_radis_sta_vec_hoces;
activate := false;
end;{posao}
Procedure My_Int9; interrupt;
begin
case Port[$60] of
29: Ctrl := true;
157: Ctrl := false;
42: Shift := true;
170: Shift := false;
56: Alt := true;
184: Alt := false;
57: Activate := true;
end;{case}
Inline($9C); Old_Int9;
end;{My_Int9}
Procedure My_Int8; interrupt;
begin
Inline($9C); Old_Int8;
if activate and not (InDos^) then posao;
end;{My_Int8}
Procedure My_Int28;
begin
Inline($9C); Old_Int28;
if activate then posao;
end;{My_Int28}
var r:registers;
begin
r.ah := $34; MsDos(r);
InDos := Ptr(r.es,r.bx);
activate := false;
Ctrl := false; Shift := false; Alt := false;
Swapvectors;
GetIntVec($08,@Old_Int8);
GetIntVec($09,@Old_Int9);
GetIntVec($28,@Old_Int28);
SetIntVec($08,@My_Int8);
SetIntVec($09,@My_Int9);
SetIntVec($28,@My_Int28);
Keep(0);
end.
pascal.723markom,
-> #720, andrejt■■■ i na jos nekim mestima) neki tpu za odsviravanje pa cu videti
■■■ da ga skinem i da ti dostavim preko maila.
Imaj i mene na umu ;)
Marko
pascal.724andrejt,
-> #723, markom...
QUOTE>>Imaj i mene na umu ;)
Imam te ... ;)
pascal.725ognjen,
-> #720, andrejt)-> tpu za odsviravanje pa cu videti da ga skinem i da ti
)-> dostavim preko maila.
E, ejde, molim te, bas bi mi trebalo... Imam gomilicu pesmica
iz Basica, pa mi zao da ih brisem...
BTW, kako da saznam komande iz TPU-a? Ima li neki nacin (ne
mislim na citanje txt fajla :)?
pascal.726mzdravkovic,
Kako iz pascala da ocitam seriski broj diska ?
Hvala
pascal.727andrejt,
-> #726, mzdravkovicQUOTE>> Kako iz pascala da ocitam seriski broj diska ?
Malo sam priglup,kakav serijski broj ?(Jel' iz setupa ?)
pascal.728markom,
Potrebna mi je procedura za sortiranje dvostruko povezane liste pointera. Ako
neko ima (zna) neka nabaci ovde ili na mail. Jako mi je hitno.
Unapred zahvalan,
Marko
pascal.729mzdravkovic,
-> #727, andrejt>> QUOTE>> Kako iz pascala da ocitam seriski broj diska ?
>>
>> Malo sam priglup,kakav serijski broj ?(Jel' iz setupa ?)
Mislio sam na onaj serijski broj koji daje chkdsk .
pascal.730postmast,
Path: fon!Osmeh.FON.Uni-BG.YU!dex
From: dex@Osmeh.FON.Uni-BG.YU (Dejan Jakovljevic)
Subject: Re: pascal
Organization: Fakultet Organizacionih Nauka, Beograd
Date: Fri, 28 Jan 1994 11:08:14 GMT
Message-ID: <CKC6xr.251@fon>
X-Newsreader: TIN [version 1.2 PL1]
References: <sezam$pascal:01.095.3591@sezam>
Sender: news@fon (News)
Marko Mandic (markom@sezam.UUCP) wrote:
: Potrebna mi je procedura za sortiranje dvostruko povezane liste pointera. Ako
: neko ima (zna) neka nabaci ovde ili na mail. Jako mi je hitno.
daj josx malo 'data' o listi, nekad sam znao...mog'o bi' da pomognem...
ako vecy neko nije
..dex..
pascal.731andrejt,
-> #729, mzdravkovic...
QUOTE>>Mislio sam na onaj serijski broj koji daje chkdsk .
Dakle to je ... Po HelpPCu 2.1 to ti je Boot Sector offset 27h.
pascal.732janko,
-> #729, mzdravkovic> Mislio sam na onaj serijski broj koji daje chkdsk .
Meni chkdsk ne daje nikakav serijski broj. Jesi li siguran da bi
taj program radio na mom računaru? ;)
pascal.733andrejt,
-> #732, jankoQUOTE>>Meni chkdsk ne daje nikakav serijski broj. Jesi li siguran da bi
QUOTE>>taj program radio na mom racunaru? ;)
Jesi li ti siguran da si chkdsk probao na 'pravom disku',
to jest ne stacker drajvu i slicnim ?
pascal.734markom,
-> #730, postmast■■■ Marko Mandic (markom@sezam.UUCP) wrote:
^^^^^^^^^^^^ ^^^^^^
AAAAAA, pa ja sam Marko Milivojević !!! :))
■■■ daj josx malo 'data' o listi, nekad sam znao...mog'o bi' da
■■■ pomognem... ako vecy neko nije
Bilo šta, treba mi samo algoritam i ništa više, ja ću to da preradim za moju
listu.
Marko
pascal.735dejanr,
-> #732, janko>> Meni chkdsk ne daje nikakav serijski broj. Jesi li siguran da bi
>> taj program radio na mom računaru? ;)
Mora biti da koristiš neku stariju verziju DOS-a (3.30? 3.31?).
Inače, algoritam za čitanje serijskog broja diska dat je prošlog
januara, u "Bajtovima lične prirode" ("Računari"). Preuzet je sa
Sezama, ali ko bi sada našao poruku...
pascal.736djelovic,
-> #734, markom> Bilo šta, treba mi samo algoritam i ništa više, ja ću to da preradim za
> moju listu.
Ako znaš da "čitaš" C, onda pogledaj SNIPPETS arhivu u C direktorijumu. Ako
me sećanje dobro služi, tamo ima alogritam za shell-sort duplo uvezanih lista.
pascal.738eagle,
-> #728, markom> Potrebna mi je procedura za sortiranje dvostruko povezane liste
> pointera. Ako neko ima (zna) neka nabaci ovde ili na mail.
Napravi proceduru za ubacivanje čvora u sortiranu listu
na određenu poziciju, tako da lista ostane sortirana.
Ako hoćeš da kreiraš sort. listu ubacuj nove članove
preko te procedure. Ako već imaš listu i treba da je
sortiraš, to bi išlo otprilike ovako:
procedure SortList(var Pocetak: PList);
var Old, Poc: PList;
begin
Poc := Pocetak;
Pocetak := nil;
while Poc <> nil do
begin
Old := Pocž.Sledeci;
SortInsert(Pocetak, Poc); (* var Pocetak: PList; P: PList *)
Poc := Old;
end;
end.
pascal.739janko,
-> #733, andrejt> QUOTE>>Meni chkdsk ne daje nikakav serijski broj. Jesi li
> siguran da bi QUOTE>>taj program radio na mom racunaru? ;)
>
> Jesi li ti siguran da si chkdsk probao na 'pravom disku',
> to jest ne stacker drajvu i slicnim ?
Sigurno sam siguran.
Serijski broj je izmišljotina novijih verzija Mesi dosa. Koliko je
pametno onda pisati programe koji ne rade na starim dobrim verzijama?
pascal.740janko,
-> #735, dejanr>>> Meni chkdsk ne daje nikakav serijski broj. Jesi li
>>> siguran da bi taj program radio na mom računaru? ;)
>
> Mora biti da koristiš neku stariju verziju DOS-a (3.30?
> 3.31?).
:) A baš su ljudi počeli da se pitaju kako to. Kvariš im zabavu. ;)
> Inače, algoritam za čitanje serijskog broja diska dat je
> prošlog januara, u "Bajtovima lične prirode" ("Računari").
> Preuzet je sa Sezama, ali ko bi sada našao poruku...
Ma ja sam to pisao zbog toga, što sam se odmah pomislio, šta takve
stvari daju kada čitaju 3.31 diskove i diskete (i diskete imaju SN, ili
ne)? Da li zbog takve "pametne" mogućnosti iskaču sa porukom "treba vam
dos 5.0?" Da neki programi domaćih programera ne pokušavaju i da pišu po
tome? But sektor i susedstvo? Zgroz.
Sad se setih. Kao, to su jedinstveni brojevi i tralala. Zna li neko
algoritam po kome DOS pravi te brojeve? Da li negde drži neku semenku
(seed) i od koliko bajtova, pa je lepo apdejtuje svaki put kad generiše
novi broj? Ili izračunava fazu meseca pa nju upiše?
pascal.741dr.grba,
-> #740, janko>> Sad se setih. Kao, to su jedinstveni brojevi i tralala. Zna li neko
>> algoritam po kome DOS pravi te brojeve? Da li negde drži neku
>> semenku (seed) i od koliko bajtova, pa je lepo apdejtuje svaki put
>> kad generiše novi broj? Ili izračunava fazu meseca pa nju upiše?
Jednom sam otvorio 4 kutije novih disketa i krenuo u iscrpljujući posao
formatiranja... DOS 6.0, njegov FORMAT, "format another" = "Yes"...
Posle izvesnog vremena sam primetio da se jedan broj (valjda prvi)
menja po nekom na prvi pogled neprepoznatljivom ključu, dok se drugi
broj uredno inkrementirao za jedan u heksadekadnom sistemu, pri čemu
je prvoizabrani bio neki random broj. Kada bih prekinuo FORMAT, pa
startovao ponovo, samo bi se izabrao novi random, a slika bi se ponovila.
Mnogo važno, uostalom (:
pascal.742dejanr,
-> #741, dr.grba>> Kada bih prekinuo FORMAT, pa startovao ponovo, samo bi se izabrao
>> novi random, a slika bi se ponovila.
I kod mene se slično ponaša kada formatiram diskete, ali sada vidim
da su mi serijski brojevi na svim particijama (C, E, F i G, particija
D je drugi disk) jednaki. E sad kako je to uspelo, pojma nemam, ali
tako kaže CHKDSK :) Bug ili feature? :)
pascal.743dragisha,
-> #740, janko-> Sad se setih. Kao, to su jedinstveni brojevi i tralala. Zna li neko
-> algoritam po kome DOS pravi te brojeve? Da li negde drži neku semenku
-> (seed) i od koliko bajtova, pa je lepo apdejtuje svaki put kad generiše
-> novi broj? Ili izračunava fazu meseca pa nju upiše?
Datum+vrijeme kreiranja volumeta. Po jedan word, tj standardni DOS format
za iste. Izuzetno naivan način zaštite, ako mene neko pita:).
--
[Woman who stays long on bedspring may get offspring.]
pascal.744kenza,
Hi!
Ima li neko unit(e) za rad pod novelom?
Otvaranje fajlova sa lockovanjem,... itd.. Tnx
pascal.745dragisha,
-> #706, peca.st-> Pa... za šta bi služilo seek u tekstualnoj? Mislim, na koju poziciju bi
-> to trebalo da pomeri pointer? Eventualno da se kao jedna pozicija računa
-> jedan red, ali je to onda teško (nemoguće?) izvodljivo. (zbog
-> promenljive dužine reda)
Analiziram tekst file u kome su podaci paragrafi (dvije i više linija)
a u zadnjoj liniji se nalazi time+date stamp. Počinjem od početka i tražim
određeni datum da bih uradio neki posao. Tekst fajl ima preko 10Mb.
Poanta, kad nađem stamp moram da obradim i paragraf koji je upravo
završio.
Ubio bih se (tj korisnik:)) bez baferisanja+seek-a istovremeno.
--
[Life is a sexually transmitted and terminal disease.]
pascal.746dragisha,
-> #743, dragisha-> Datum+vrijeme kreiranja volumeta. Po jedan word, tj standardni DOS
-> format za iste. Izuzetno naivan način zaštite, ako mene neko pita:).
Da demantujem:). Ovo je slučaj na mojim disk particijama, ali ne i na par
disketa koje sam probao. Izgleda da je bitan i program kojim se to radi,
diskove sam čini mi se formatirao sa DOS 5.0, a sada imam 6.0. Kako
izgleda, nema DOS poziva koji generiše taj broj (?) već to radi program za
formatiranje.
--
[Do married women make the best wives?]
pascal.747dr.grba,
-> #742, dejanr>> I kod mene se slično ponaša kada formatiram diskete, ali sada vidim
>> da su mi serijski brojevi na svim particijama (C, E, F i G,
>> particija D je drugi disk) jednaki. E sad kako je to uspelo, pojma
>> nemam, ali tako kaže CHKDSK :) Bug ili feature? :)
Aman, i kod mene! MS DOS 6.2, tri particije, ser. broj svake je 1B6C-946F.
Ne, ne reci da je isti broj i kod tebe... (:
pascal.748rower,
Cuo sam da Paskal moze da cita slike PCX ili BMP formata.
Da li neko zna kako se to radi (ako moze). Kakve jos
postoje fore sa slikama u Paskalu ????
Pozdrav ROWER
pascal.749darone,
Par pitanja:
a) koja je najbolja mouse biblioteka, a da je ima na sezamu? ili već neki sors,
nije važno
b) da li je moguće ulinkovati .chr font fajlove u .exe?
c) da je potrebno isporučivati .bgi fajlove uz program ili se linkuju u .exe?
d) nema više ;)
Unapred hvala :)
pascal.750djelovic,
-> #749, darone> b) da li je moguće ulinkovati .chr font fajlove u .exe?
> c) da je potrebno isporučivati .bgi fajlove uz program ili se linkuju u .ex
U oba slučaja odgovor je "može, ali ne mora". I fontovi i BGI drajveri se
mogu ulinkovati u EXE, ali i ne moraju.
pascal.751bearboy,
-> #749, darone> b) da li je moguće ulinkovati .chr font fajlove u .exe?
> c) da je potrebno isporučivati .bgi fajlove uz program ili se
> linkuju u .exe?
Baci pogled u BGILINK.PAS i sve će ti se samo ka'sti...
pascal.752darone,
-> #750, djelovic>> > b) da li je moguće ulinkovati .chr font fajlove u .exe?
>> > c) da je potrebno isporučivati .bgi fajlove uz program ili se linkuju u
>> .ex
>>
>> U oba slučaja odgovor je "može, ali ne mora". I fontovi i BGI drajveri se
>> mogu ulinkovati u EXE, ali i ne moraju.
b1) kako se .chr fajlovi linkuju u .exe? (može i okvirno broj poruke, ili
datum, kopaću)
c1) bear reče da to ima negde u bgilink.pas, jel to deo TP paketa?
p.s. valjda vidite da to nije za mene :)
pascal.753janko,
-> #752, darone> c1) bear reče da to ima negde u bgilink.pas, jel to deo TP
> paketa?
Da. To je u direktorijumu sa CHR fajlovima, primer kako se linkuju ta
čuda.
Usput, mogao si da lupiš jedno FF BGILINK.PAS :)
pascal.754vitez.koja,
-> #749, darone#=> a) koja je najbolja mouse biblioteka, a da je ima na
#=> sezamu? ili već neki sors, nije važno
Na znam koja je najbolja, ali ima jedna (na sezamu, naravno) koja omogućava
onaj fancy klizeću kursor kao u Nortonu :=
#=> b) da li je moguće ulinkovati .chr font fajlove u .exe?
Jeste, ali moraš da praviš nekakav make fajl. Ma, pređi na C :)
#=> c) da je potrebno isporučivati .bgi fajlove uz program
#=> ili se linkuju u .exe?
Po želji, može i jedno i drugo.
Fontovi i drajveri se po 'defaultu' ne linkuju, nego to moraš odlično da
zahtevaš. U okviru TPa dati su fajlovi bgilink.* - pogledaj i kazaće ti se
samo.
pascal.755peca.st,
-> #748, rower!-> Cuo sam da Paskal moze da cita slike PCX ili BMP formata.
Za PCX imaš unit u Pascal direktorijumu.
BMP je vrlo prost format. U prvih ne znam napamet kolko bajtova je
visina, širina slike, broj boja i još neki manje važni podaci. Onda sledi
paleta (3 * broj boja). Posle toga ti ide slika koja nije ni na kakav način
kriptovana, bajt za bajtom. I to je sve. Ako je potrebno, mogu da pošaljem
source koji čita BMP.
Peđa.
pascal.756markom,
-> #755, peca.st■■■ kriptovana, bajt za bajtom. I to je sve. Ako je potrebno,
■■■ mogu da pošaljem source koji čita BMP.
Baš bi mogao ... :)
Marko
pascal.757skerl,
-> #754, vitez.koja
│# => a) koja je najbolja mouse biblioteka, a da je ima na
│# => sezamu? ili vec neki sors, nije vazno
│
│ Na znam koja je najbolja, ali ima jedna (na sezamu, naravno) koja
│ omogucava onaj fancy klizecu kursor kao u Nortonu :=
└─────
mouslib8.zip
pascal.758bigbrada,
-> #755, peca.st!##! kriptovana, bajt za bajtom. I to je sve. Ako je potrebno,
!##! mogu da pošaljem source koji čita BMP.
Ili, preciznije, pola bajta po pola bajta. :)
Brada.
pascal.760lovro,
-> #749, darone=- 6.1051->1027 pascal m.hristodulo 14.05.93.
=- 18:06 allgraph.zip
U PC.PROG.2, fina stvar.
pascal.761darone,
-> #754, vitez.koja>> Jeste, ali moraš da praviš nekakav make fajl. Ma, pređi na C :)
Ja da programiram? Nikada :)))
Hvala svima na odgovorima, pokupio sam sve što mi treba :)
pascal.762predragd,
-> #754, vitez.koja> Na znam koja je najbolja, ali ima jedna (na sezamu,
> naravno) koja omogućava onaj fancy klizeću kursor kao u
> Nortonu :=
Kako je ime toj arhivi, i gde se nalazi.
Peđa.
pascal.763almi,
Evo jednog ostvarenja u pascalu.Mine Sweeper for DOS.
Uz poruku ide source koji treba prevesti.
Sve primedbe saljite almi-u.
Pozdrav Almi.
minepas.zippascal.764ognjen,
Evo jednog problema (bez obzira na jezik, ali meni treba za
pascal:):
Daklem, recimo:
Repeat
{posao...}
Until KeyPressed
E, taj "posao..." :) mora da se izvrsi ceo, dakle da dodje do
kraja, pa tak onda da se "pobegne" iz njega. To i nije problem,
ako je posao kratak, ali, ako isti traje 10ak sekundi, moram da
cekam celih deset sekundi (posle pritiska nekog tastera) da bi se
izaslo iz petlje. Ali, kako da "podesim" da mogu u svakom
trenutku iz nje da izdjem? Jedino sto ja "vidim" je da posle
svake komande stavim If PressedKey then... ali ni to nije nesto
jer ako imam Delay (10000) (10sec) opet nece raditi, a i mnogo je
primitivno...
I pod broj 2, kad je ovo Until KeyPressed tik ispred end
(dakle, program se zavrsava kad se pritisne tipka), taj
pritisnuti taster ostaje u baferu, i ispisuje se na komandnoj
liniji (ili, recimo ako ste koristili NC, pa pritisnuli ENTER,
program ce se zavrsiti i ponovo startovati). Ali, kako isprazniti
taj Keyboard bafer? Ima jedno resenje u vidu ch := ReadKey, ali
to je dosetka, a ne resenje...
PS: Ovo drugo sam malo zavrnuo, ali je valjda, jasno... :)
pascal.765almi,
Evo ispravne arhive sa Úmine sweeperom
Pozdrav Misel
minepas.zippascal.766bigbrada,
-> #764, ognjen*>> E, taj "posao..." :) mora da se izvrsi ceo, dakle da dodje
*>> do kraja, pa tak onda da se "pobegne" iz njega. To i nije
*>> problem, ako je posao kratak, ali, ako isti traje 10ak
*>> sekundi, moram da cekam celih deset sekundi (posle pritiska
*>> nekog tastera) da bi se izaslo iz petlje. Ali, kako da
*>> "podesim" da mogu u svakom trenutku iz nje da izdjem?
*>> Jedino sto ja "vidim" je da posle svake komande stavim
*>> If PressedKey then... ali ni to nije nesto jer ako imam
*>> Delay (10000) (10sec) opet nece raditi, a i mnogo je
*>> primitivno...
"Rešenje" koje bih ja primenio bi bilo nešto u stilu:
I := 0;
Repeat
Delay (100);
Inc (I);
Until KeyPressed Or (I = 100);
Ne kažem da je to najbolje (čak suprotno - veoma je primitivno),
ali radi posao. Ne moraš baš posle svake naredbe stavljati
If KeyPressed. Stavi na svaku treću ;)
*>> taj Keyboard bafer? Ima jedno resenje u vidu ch := ReadKey,
*>> ali to je dosetka, a ne resenje...
Dosetka ili rešenje, ali to radi posao, kao i malopre. I ja koristim
isti štos.
Brada.
pascal.767postmast,
Path: fon!buefhp.etf.uni-bg.yu!jd53492d
From: jd53492d@buefhp.etf.uni-bg.yu (Dejan Jakovljevic)
Subject: Re: pascal
Organization: Fakultet Organizacionih Nauka, Beograd
Date: Thu, 17 Feb 1994 21:58:43 GMT
Message-ID: <CLE2Dv.Lzt@fon>
X-Newsreader: TIN [version 1.2 PL1]
References: <sezam$pascal:01.095.3879@sezam>
Sender: news@fon (News)
Ognjen Blagojevic (ognjen@sezam.UUCP) wrote:
<*> Evo jednog problema (bez obzira na jezik, ali meni treba za
<*> pascal:):
<*> Daklem, recimo:
<*> Repeat
<*> {posao...}
<*> Until KeyPressed
otprilike ovako : KeyPressed ti samo kazxe DA LI u baferu
ima karaktera...na tebi ostaje da vidisx sxta cyesx sa njima.
Zato ti pri zavrsxetku programa karaktr 'iskocxi' na ekran...
..dex..
ps: a za drugi deo odgovora ?!? ne znam L:(((
--
Jakovljevic Dejan, Sokobanja O:-) ////// yours (?),
(try me at osmeh.FON.Uni-Bg.YU as dex) ////// ..dex..
pascal.768sale,
-> #764, ognjen> Repeat
> šposao...ć
> Until KeyPressed
>
> trenutku iz nje da izdjem? Jedino sto ja "vidim" je da posle
> svake komande stavim If PressedKey then... ali ni to nije nesto
> jer ako imam Delay (10000) (10sec) opet nece raditi, a i mnogo je
> primitivno...
Može ovako: a) napraviš svoj delay koji proverava i pritisak na tastaturu
b) napraviš svoj handle keyboard interrupta koji će da natera
program da skoči na određeno mesto ako pritisneš taster.
(ako hoćeš ovako, daj da razradimo.)
> program ce se zavrsiti i ponovo startovati). Ali, kako isprazniti
> taj Keyboard bafer? Ima jedno resenje u vidu ch := ReadKey, ali
> to je dosetka, a ne resenje...
KeyPressed nikada ne dira buffer - on i treba samo da javi da li ima nečega
ili ne. Najelegantnije je upravo to da se stavi ch:=readkey; ali ima i to
manu: ako pritisneš neki funkcijski taster, u buffer stižu dva znaka - prvi je
0 a drugi zavisi od toga koji je taster pritisnut. Tako da i ovo ch:=readkey
će da ostavi ovo drugo.
Zato: while keypressed do ch:=readkey; tik iza unitl keypressed;
Sale
pascal.769lovro,
-> #764, ognjen=- I pod broj 2, kad je ovo Until KeyPressed tik ispred
procedure clbuf;
var kbdhead: word absolute $40:$1A;
kbdtail: word absolute $40:$1C;
begin
kbdtail:=kbdhead;
end;
pascal.770lovro,
-> #768, sale=- 0 a drugi zavisi od toga koji je taster pritisnut. Tako da
=- i ovo ch:=readkey ce da ostavi ovo drugo.
Nece.
pascal.771ognjen,
-> #766, bigbrada)-> Ne kazem da je to najbolje (cak suprotno - veoma je
)-> primitivno), ali radi posao.
Da, lepo radi. :) Tnx! :)
pascal.773ognjen,
-> #769, lovro)-> procedure clbuf;
)-> var kbdhead: word absolute $40:$1A;
)-> kbdtail: word absolute $40:$1C;
)-> begin
)-> kbdtail:=kbdhead;
)-> end;
E, a da li bi mogao da objasnis sta stâ radi...
pascal.772ognjen,
-> #768, sale)-> a) napravis svoj delay koji proverava i pritisak na tastaturu
Kako? :)
)-> b) napravis svoj handle keyboard interrupta koji ce da natera
)-> program da skoci na odredeno mesto ako pritisnes taster.
Kako? :)
pascal.774markom,
-> #773, ognjen*** E, a da li bi mogao da objasnis sta stâ radi...
Isprazni bafer tastature ;)
Marko
pascal.775peca.st,
-> #773, ognjen!-> E, a da li bi mogao da objasnis sta stâ radi...
kbdhead ti je početak tastaturnog bafera, a
kbdtail je kraj. Kada postaviš da kraj bude na početku,
znači da u baferu neće biti ništa.
Peđa.
pascal.776dzakic,
-> #772, ognjen> )-> a) napravis svoj delay koji proverava i pritisak na tastaturu
>
> Kako? :)
Recimo:
Procedure MyDelay(i:word);
begin
repeat
delay(1);
dec(i)
until KeyPressed or (i=0);
end;
Mada, bojim se da vreme izvršavanja ove procedure neće biti baš
jednako vremenu izvršavanja pravog Delay-a, pogotovu na XT-u :).
> )-> b) napravis svoj handle keyboard interrupta koji ce da natera
> )-> program da skoci na odredeno mesto ako pritisnes taster.
>
> Kako? :)
Mora da se sale šalio :). Nije baš preporučljivo u paskalu tek
tako iz interapt hendlera skakati na proizvoljno mesto u
programu. Ima brdo razloga, siguran sam da problem možeš rešiti
i bez toga. Osim, naravno, ako ne želiš da tim pritiskom na
taster iskočiš načisto iz programa...
pascal.777dzakic,
-> #773, ognjen> )-> procedure clbuf;
> )-> var kbdhead: word absolute $40:$1A;
> )-> kbdtail: word absolute $40:$1C;
> )-> begin
> )-> kbdtail:=kbdhead;
> )-> end;
>
> E, a da li bi mogao da objasnis sta stâ radi...
Bafer za tastaturu je običan kružni bafer, od inicijalno 16
wordova u biosovom data segmentu (40h). Pokazivač na početak i
kraj bafera se takođe nalaze među tim biosovim promenljivama na
adresama 1Ah i 1Ch. Uprošćeno, kada stisneš taster, bios njegov
scan i ascii kod stavi na mesto gde pokazuje kbdhead i uveća ga
za dva (word), a kada neki program traži da pročita šta je
pritinsuto (ReadKey), bios pokupi sadržaj lokacije na koju
ukazuje kbdtail i uveća ga za dva. Kad je bafer prazan, kbdhead
je jednak kbdtail-u, i na taj način radi KeyPressed - proverava
da li su jednaki.
Procedura clbuf je koliko se sećam objavljena u bajtovima i radi
ovo izjednačavanje pointera na 'glavu' i 'rep'. Pošto se radi o
promenljivama koje ne pripadaju paskal programu, već su 'negde
daleko' - u biosovom segmentu, korišćena je absolute direktiva
koja kazuje kompajleru gde se one nalaze.
pascal.778ndragan,
-> #767, postmast/ Zato ti pri zavrsxetku programa karaktr 'iskocxi' na ekran...
Koji je Set Code za korisnika postmast?
Bue_ Ndragan
pascal.779dpriest...,
Problem(?):
Pascal (7.0) kada se uradi OVRInit(xxx.ovr) ostavi
.ovr fajl nedostupan za mrezu, sto rezultira time
da ako je taj .ovr fajl na serveru a neko hoce da ga
kopira, dobija gresku File share violation. Ista greska
se desava i ako pokusam da radim OVRInit sa stanice na
.ovr file na serveru... normalno... I STA SAD?
Znam da ima neka konstanta u overlay unit-u koja se
zove filemode ili nesto slicno, ali ne znam na sta da
je postavim da bi goreopisani problem bio resen...
ako iko nesto zna o ovome neka mi ma wr ili ako
mislite da je problem zanimljiv pomagajte ovde! Da li
ima razlike ili nekih ogranicenja kada se omoguci da
vise programa koristi jedan .ovr na mrezi?
HELP!
DPriest...
P.S. postavio sam taj fajl u setovanju mreze da ga
mogu u isto vreme otvoriti vise korisnika tako
da problam ne pravi mreza vec pascal!
pascal.780dejanr,
-> #779, dpriest...>> Pascal (7.0) kada se uradi OVRInit(xxx.ovr) ostavi
>> .ovr fajl nedostupan za mrezu, sto rezultira time
>> da ako je taj .ovr fajl na serveru a neko hoce da ga
>> kopira, dobija gresku File share violation.
Probaj da tom .ovr fajlu staviš read only atribut pre startovanja
programa. Trebalo bi da pomogne.
pascal.781ognjen,
Kako da u pascalu dobijem "spisak" svih fajlova, a kako
"spisak" direktorijuma. Recimo, hocu da obrisem sve fajlove & sve
direktorijume da uklonim, kako to da uradim (ne, ne sa XRD :)?
pascal.782ognjen,
Kako u pascalu resiti View nekog fajla (osnovne komande: Up,
Down, PgUp, PgDn, Home, End) velicine (do) 32 Kb? (A kako vece
fajlove?)
pascal.783dzakic,
-> #779, dpriest...> Pascal (7.0) kada se uradi OVRInit(xxx.ovr) ostavi
> .ovr fajl nedostupan za mrezu, sto rezultira time
Promenljiva filemode je u system unitu, i pre otvaranja datoteke
postaviš je na vrednost koju dobiješ sabiranjem po jedne iz ove
dve grupe:
const
readonly = 0;
writeonly = 1;
readwrite = 2;
compatibility = 0;
exclusive = 16;
denywrite = 32;
denyread = 48;
permitall = 64;
Probaj da pre inicijalizacije overlay manager-a staviš
filemode:=readonly+denywrite; Ako filemode nisi dirao, biće
compatibility, a to nekad zna da pravi probleme. Sa share-om iz
dosa radi u desqview-u a neće u windowsima. Na mreži nije bilo
problema.
pascal.784peca.st,
-> #781, ognjen!-> Kako da u pascalu dobijem "spisak" svih fajlova, a kako
!-> "spisak" direktorijuma. Recimo, hocu da obrisem sve fajlove & sve
!-> direktorijume da uklonim, kako to da uradim (ne, ne sa XRD :)?
Pomoću FindFirst i FindNext. Za sve fajlove i direktorijume na disku
najlakše je uraditi rekurzijom.
Peđa.
pascal.785peca.st,
-> #782, ognjen!-> Kako u pascalu resiti View nekog fajla (osnovne komande: Up,
!-> Down, PgUp, PgDn, Home, End) velicine (do) 32 Kb? (A kako vece
!-> fajlove?)
Za fajlove do 64k pamtiš ih cele u nekoj strukturi, sad zavisi kako
ti odgovara. A za šetanje kroz fajl... Jedini savet je da ideš direktno
u video memoriju, nemoj slučajno write. Ostalo već moraš sam da smisliš,
zavisno od potreba. Možeš da pogledaš kako je to urađeno u Turbo Vision-u,
ili ako ti odgovara okolina (a i programiranje u TV) i da koristiš to.
Peđa.
pascal.786dvesic,
-> #781, ognjen>>
>> Kako da u pascalu dobijem "spisak" svih fajlova, a kako
>> "spisak" direktorijuma. Recimo, hocu da obrisem sve fajlove &
>> sve direktorijume da uklonim, kako to da uradim (ne, ne sa XRD
>> :)?
Mozda ovako :
uses Dos;
var
DirInfo: SearchRec;
begin
FindFirst('*.*', AnyFile, DirInfo);
while DosError = 0 do
begin
{ If (DirInfo.Attr And Directory)<>0 Then } <-- Obrada za dir-ove.
WriteLn(DirInfo.Name);
FindNext(DirInfo);
end;
end.
pascal.787dzakic,
-> #781, ognjen> Kako da u pascalu dobijem "spisak" svih fajlova, a kako
> "spisak" direktorijuma. Recimo, hocu da obrisem sve fajlove & sve
Pogledaj u helpu procedure FindFirst i FindNext. Dobijaćeš redom
datoteke i direktorijume iz dir-a, a proverom atributa ćeš
ustanoviti o čemu od to dvoje se radi.
pascal.788dzakic,
-> #782, ognjen> Kako u pascalu resiti View nekog fajla (osnovne komande: Up, Down,
> PgUp, PgDn, Home, End) velicine (do) 32 Kb? (A kako vece fajlove?)
Sad, problem je malo obimniji da ti šaljem ovde gotovu proceduru. Do
32k ne bi trebalo da je problem. Učitaš celu datoteku u toliki
bafer, i za svaku liniju usmeriš po jedan pointer na njen početak u
baferu. Kod pomeranja na dole, poslednji pointer uvećavaš dok ne
nađeš sledeću liniju a ostale pointere pomeriš na gore (text ide
gore). Slično je i za scroll u suprotnom smeru.
Uz malo truda će tih 32k... (ili možda bolje 48, tako sam ja radio
kad sam pisao Z za herkules) biti 'prozor' za pogled na neku
veeeliku datoteku. Treba samo da prilikom traženja sledeće linije
proveriš da li si ispao iz bafera i ako jesi, onda poslednjih 16k
prebaciš na početak, a od 16-tog kilobajta učitaš sledećih 32...
Opet, isto važi i za vraćanje unazad. Naravno, ima tu posla. Možda
da probaš sa turbovizijom?
pascal.789peca.st,
-> #786, dvesic!-> Mozda ovako :
Ovako samo u trenutnom direktorijumu.
Za čitav disk je potrebna rekurzija.
Peđa.
pascal.790almi,
Ovo je unit za korišćenje fontova koji idu uz VGAMax (vidi YU-dir na SEZAM-u).
Postoje sledeće procedure:
Procedure InitFont(s:String;si:Byte);
-inicijalizacija fonta iz fajla S ,cija su slova visine SI
pr.:Hoćemo da inicijalizujemo font swiss.f16 -> InitFont('swiss.f16',16);
Procedure DrawChar(CurX,CurY:Word;ch:Char);
-Crta znak Ch na koordinatama (CurX,CurY)
pr.:DrawChar(100,100,'C');
Procedure WriteTextXY(CurX,CurY:Word;S:String);
-Crta string S na koordinatama CurX,CurY
Procedure DoneFont;
-Dispose Fonta (***OBAVEZNO URADITI NA KRAJU PROGRAMA***)
Procedure SetFontSize(z:Byte);
-Uvećavanje Fonta
Procedure SetInversFont;
-Invertuje BitMapu Fonta;
Pozdra Almi.
vfont.zippascal.791boris,
-> #784, peca.st> Pomoću FindFirst i FindNext. Za sve fajlove i direktorijume na
> disku najlakše je uraditi rekurzijom.
Mislim da mu može pomoći članak Vlade Kostića iz nekih starih računara
pod nazivom "Rekurzivna trka po disku". Tamo se radi samo sa
direktorijumima (ako se ne varam) ali nije teško ukapirati princip i
proširiti i na fajlove.
Boris
pascal.792mjova,
-> #790, almi> -inicijalizacija fonta iz fajla S ,cija su slova visine SI
dužinu datoteke podeli sa 256 i dobićeš visinu fonta.
pascal.793peca.st,
-> #791, boris!-> Mislim da mu može pomoći članak Vlade Kostića iz nekih starih
!-> računara pod nazivom "Rekurzivna trka po disku". Tamo se radi samo
!-> sa direktorijumima (ako se ne varam) ali nije teško ukapirati
!-> princip i proširiti i na fajlove.
Ma evo otprilike skicirano kako bi to trebalo da izgleda:
Procedure KrozCeoDisk (...);
Begin
FindNext (...);
Ispis (...);
If "direktorijum" Then Begin
ChDir (Ime);
KrozCeoDisk (...);
ChDir ('..');
End;
If DosError = 0 Then KrozCeoDisk (...);
End;
I to je sva mudrost.
Još pre poziva procedure treba uraditi FindFirst i preći u root.
Peđa.
pascal.794ognjen,
-> #784, peca.st)-> Pomocu FindFirst i FindNext. Za sve fajlove i direktorijume
)-> na disku najlakse je uraditi rekurzijom.
Moze li jedan primercic... Please...
pascal.795ognjen,
Kako da iskljcim / ukljcim / promenim velicinu kursora u pascalu?
pascal.796dvesic,
-> #793, peca.st>> Procedure KrozCeoDisk (...);
>> Begin
>> FindNext (...);
>> Ispis (...); <--- (1)
>> If "direktorijum" Then Begin
>> ChDir (Ime);
>> KrozCeoDisk (...);
>> ChDir ('..'); <---- (2)
>> End;
>> If DosError = 0 Then KrozCeoDisk (...);
>> End;
>>
>> I to je sva mudrost.
>> Jos pre poziva procedure treba uraditi FindFirst i preci u
>> root.
Pa sad, nisam bas siguran :))
Ko ti garantuje da ce struktura koju je dos formirao na
mestu (1) biti ista kao na mestu (2) tako da dos zna gde
da nastavi ?
Probaj ovaj prgram i videces da bas i ne radi !
Pozdrav,
Dejan.
pascal.797dzakic,
-> #795, ognjen> Kako da iskljcim / ukljcim / promenim velicinu kursora u pascalu?
Evo procedura za gašenje i paljenje kursora. Potrebno je prvo
sačuvati njegovu veličinu pozivom StoreCursor, i nakon toga sa
Hide i ShowCursor ga isključuješ i uključuješ. Za promenu veličine
izmeni ShowCursor tako da se ch i cl pune vrednostima za liniju u
kojoj kursor počinje i prestaje...
var cursorstatus:word;
Procedure StoreCursor; assembler;
asm mov ah,3
int 10h
mov cursorstatus,cx
end;
Procedure HideCursor; assembler;
asm mov ah,1
mov cx,$2000
int 10h
end;
Procedure ShowCursor; assembler;
asm mov ah,1
mov cx,cursorstatus
int 10h
end;
Zak
pascal.798dzakic,
-> #796, dvesic> Probaj ovaj prgram i videces da bas i ne radi !
U pravu si. Rekurzivna procedura treba prvo da pozove samu sebe
za sve poddirektorijume pa onda da ispiše sve datoteke u tekućem
diru.
pascal.799peca.st,
-> #796, dvesic!-> Probaj ovaj prgram i videces da bas i ne radi !
Da, u pravu si, probao sam i pre nego što sam pročitao
poruku. Ono sam kucao iz glave. Treba ipak opaliti findfirst
kad se pređe u novi direktorijum.
Peđa.
pascal.800ognjen,
-> #797, dzakic)-> Procedure StoreCursor; assembler;
~~~~~~~~~
Moze li se to uradiri malo vise "pascalski"?
pascal.801markom,
-> #800, ognjen*** Moze li se to uradiri malo vise "pascalski"?
Mnogo oćeš, nije ovo C :(
Marko
pascal.802ilazarevic,
-> #800, ognjen> Moze li se to uradiri malo vise "pascalski"?
Može isto to, samo u paskal sintaksi:
uses dos;
var cursorstatus:word;
regs:registers;
procedure StoreCursor;
begin
regs.ah:=3;
intr($10, regs);
cursorstatus:=regs.cx;
end;
i tako dalje, za sve ostale procedure.
pascal.803dzakic,
-> #800, ognjen> )-> Procedure StoreCursor; assembler;
> Moze li se to uraditi malo vise "pascalski"?
Može, ali bi opet išlo sa deklarisanjem Registers strukture koju
bismo napunili određenim vrednostima za registre (r.ax, r.cx...)
i na kraju pozvali interapt sa Intr($10). Ako već koristiš
TP 6.0 ili veći, nema razloga da procedura ne bude 'assembler' -
kraći je kod. Dakle, ako baš hoćeš:
uses dos;
var cursorstatus:word;
Procedure HideCursor;
var r:registers;
begin
r.ah:=3;
Intr($10,r);
cursorstatus:=r.cx;
end;
itd.
Nešto mi i ne izgleda mnogo paskalskije :)
pascal.804almi,
-> #792, mjovaZnam ali to je čisto onako parametar tako da se to da izmeniti u source-u
Pozdrav Almi
pascal.805paki,
-> #800, ognjen> Moze li se to uradiri malo vise "pascalski"?
Teško, ali šta smeta ovome? Em je brzo, em je kratko :)
pascal.806tij.ma.ta.,
cvcxvxc xcvzxcv
pascal.807ognjen,
-> #805, paki)-> Tesko, ali sta smeta ovome? Em je brzo, em je kratko :)
Fali sto nista ne kapiram... :(
pascal.808markom,
-> #807, ognjen*** Fali sto nista ne kapiram... :(
Za početak je odlično! Zamisli da sve znaš, onda nije zanimljivo, zar ne :))
Marko
pascal.809peca.st,
-> #807, ognjen!-> Fali sto nista ne kapiram... :(
Uzmi Norton Guide za asembler i malo čeprkaj tamo po
DOS funkcijama, interaptima i BIOS pozivima, ako baš želiš da ukapiraš.
Možeš usput i da naučiš nešto od asemblera. :)
Peđa.
pascal.810dzakic,
-> #807, ognjen> )-> Tesko, ali sta smeta ovome? Em je brzo, em je kratko :)
> Fali sto nista ne kapiram... :(
Što ne kažeš da hoćeš da ukapiraš :). U BIOSu postoji potprogram
koji je zadužen za promenu veličine kursora. Poziva se tako što
se registri napune određenim vrednostima i onda pozove int 10h.
> 01H set cursor size/shape (text modes).
> Input: AH = 01H
> CH = start line (0-1fH; 20H=no cursor)
> CL = end line (0-1fH)
Sad, veličina kursora se zadaje ovako:
˙˙˙˙˙˙˙˙˙˙˙˙
˙˙˙˙˙˙˙˙˙˙˙˙
˙˙˙˙˙˙˙˙˙˙˙˙
˙˙˙˙˙˙˙˙˙˙˙˙
˙˙˙˙˙˙˙˙˙˙˙˙
˙˙˙˙˙˙˙˙˙˙˙˙
xxxxxxxxxxxx <-- End line
xxxxxxxxxxxx
xxxxxxxxxxxx <-- Start line
Da bi se kursor isključio, postaviš da je start line 'iznad' end
line i na taj način kursor postaje nevidljiv. U techelpu se
preporučuje da start linija bude 32. Kako izgled kursora zavisi
od video karte (na cga je visina znaka 8, na ega 14, na vga
16...) uradili smo čuvanje originalnog izgleda u promenljivoj
cursorstatus, da bismo kad nam treba ponovno paljenje vratili
vrednosti kako su bile.
Dakle, iz paskala direkno ne može. Pozivanje biosa je neizbežno.
A mislim da je najbezbolnije pomoću 'procedure assembler'.
pascal.811paki,
-> #807, ognjen> )-> Tesko, ali sta smeta ovome? Em je brzo, em je kratko :)
>
> Fali sto nista ne kapiram... :(
Äta da kapiraä? Stvar radi, i . :)
pascal.812markom,
-> #811, paki*** Äta da kapiraä? Stvar radi, i . :)
Paki, set kode :))
Marko
pascal.813ognjen,
-> #809, peca.st)-> Uzmi Norton Guide za asembler i malo ceprkaj tamo po . . .
Gde je? :)
pascal.814ognjen,
-> #810, dzakic)-> Sto ne kazes da hoces da ukapiras :). U BIOSu postoji
)-> potprogram koji je zaduzen za promenu velicine kursora.
)-> Poziva se tako sto se registri napune odredenim vrednostima i
)-> onda pozove int 10h.
Ma nije problem ukapiati kad bih ja znao nesto o memoriji &
biosu & adresama... Ali, posto o tome definitvno nemam veze, ne
ostaje mi nista drugo, nego da radim "suvi" pascal.
Imate li neke predloge iz literature o memoriji?
pascal.815peca.st,
-> #813, ognjen!-> Gde je? :)
Pa... moraćeš da ga nabaviš sa strane, Nortonove stvari nisu PD.
Peđa.
pascal.816peca.st,
-> #814, ognjen!-> Imate li neke predloge iz literature o memoriji?
Konkretno za ovo ti treba znanje o interaptima više nego o
memoriji. E, sad, neko ko ume lepo da objašnjava (a to je Zak ;)
bi ukratko mogao u par rečenica da ti kaže šta su interapti,
to nije nešto specijalno teško.
Peđa.
pascal.817lovro,
-> #810, dzakic=- Dakle, iz paskala direkno ne moze. Pozivanje biosa je
=- neizbezno. A mislim da je najbezbolnije pomocu 'procedure
Mislim da moze direktnim pisanjem u memoriju, negde na 0:4xx
pascal.818drpr,
Haj,
potreban mi je algoritam za rešavanje dseterminanti bilo kog reda, recimo
<10 pa molim dobru dušu da znanje podeli samnom :).
cope
pascal.819paki,
-> #812, markom> Paki, set kode :))
Sorry :( Ovaj put sam ubacio '..set code custom2' u autoexec.
Nadam se da više neće biti ovakvih brljotina.
pascal.820ilazarevic,
-> #814, ognjen> Ma nije problem ukapiati kad bih ja znao nesto o memoriji &
> biosu & adresama... Ali, posto o tome definitvno nemam veze, ne
Uzmi lepo DOS Referens, ili Interapt list, i prelistaj. Ima mnogo lepih i
korisnih stvari.
pascal.821nick,
Moj mladjani komsija me je zamolio da ovde zamolim
vas, poznavaoce pascala da mu na nekom elementarnom
primeru objasnite upotrebu pointera. Najbolje bi bilo
isti problem resen sa i bez upotrebe pointera.
hvala.
pascal.822ognjen,
-> #816, peca.st)-> E, sad, neko ko ume lepo da objasnjava (a to je Zak ;) bi
)-> ukratko mogao u par recenica da ti kaze sta su interapti
Cekam(o?) objasnjenje... :)