PCPROG.3

26 Jul 1993 - 22 Apr 1994

Messages - pascal

pascal.722 isekulovic, -> #714, eagle
>> SIgurnije je svaki put pročitati vreme sa 40h:6Ch adrese. A ako korisnik šteluje sat u medjuvremenu?
pascal.721 isekulovic, -> #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.723 markom, -> #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.724 andrejt, -> #723, markom
... QUOTE>>Imaj i mene na umu ;) Imam te ... ;)
pascal.725 ognjen, -> #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.726 mzdravkovic,
Kako iz pascala da ocitam seriski broj diska ? Hvala
pascal.727 andrejt, -> #726, mzdravkovic
QUOTE>> Kako iz pascala da ocitam seriski broj diska ? Malo sam priglup,kakav serijski broj ?(Jel' iz setupa ?)
pascal.728 markom,
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.729 mzdravkovic, -> #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.730 postmast,
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.731 andrejt, -> #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.732 janko, -> #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.733 andrejt, -> #732, janko
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 ?
pascal.734 markom, -> #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.735 dejanr, -> #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.736 djelovic, -> #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.738 eagle, -> #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.739 janko, -> #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.740 janko, -> #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.741 dr.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.742 dejanr, -> #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.743 dragisha, -> #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.744 kenza,
Hi! Ima li neko unit(e) za rad pod novelom? Otvaranje fajlova sa lockovanjem,... itd.. Tnx
pascal.745 dragisha, -> #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.746 dragisha, -> #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.747 dr.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.748 rower,
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.749 darone,
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.750 djelovic, -> #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.751 bearboy, -> #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.752 darone, -> #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.753 janko, -> #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.754 vitez.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.755 peca.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.756 markom, -> #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.757 skerl, -> #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.758 bigbrada, -> #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.760 lovro, -> #749, darone
­=- 6.1051->1027 pascal m.hristodulo 14.05.93. ­=- 18:06 allgraph.zip U PC.PROG.2, fina stvar.
pascal.761 darone, -> #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.762 predragd, -> #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.763 almi,
Evo jednog ostvarenja u pascalu.Mine Sweeper for DOS. Uz poruku ide source koji treba prevesti. Sve primedbe saljite almi-u. Pozdrav Almi. minepas.zip
pascal.764 ognjen,
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.765 almi,
Evo ispravne arhive sa Úmine sweeperom Pozdrav Misel minepas.zip
pascal.766 bigbrada, -> #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.767 postmast,
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.768 sale, -> #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.769 lovro, -> #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.770 lovro, -> #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.771 ognjen, -> #766, bigbrada
)-> Ne kazem da je to najbolje (cak suprotno - veoma je )-> primitivno), ali radi posao. Da, lepo radi. :) Tnx! :)
pascal.773 ognjen, -> #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.772 ognjen, -> #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.774 markom, -> #773, ognjen
*** E, a da li bi mogao da objasnis sta stâ radi... Isprazni bafer tastature ;) Marko
pascal.775 peca.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.776 dzakic, -> #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.777 dzakic, -> #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.778 ndragan, -> #767, postmast
/ Zato ti pri zavrsxetku programa karaktr 'iskocxi' na ekran... Koji je Set Code za korisnika postmast? Bue_ Ndragan
pascal.779 dpriest...,
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.780 dejanr, -> #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.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 :)?
pascal.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?)
pascal.783 dzakic, -> #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.784 peca.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.785 peca.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.786 dvesic, -> #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.787 dzakic, -> #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.788 dzakic, -> #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.789 peca.st, -> #786, dvesic
!-> Mozda ovako : Ovako samo u trenutnom direktorijumu. Za čitav disk je potrebna rekurzija. Peđa.
pascal.790 almi,
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.zip
pascal.791 boris, -> #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.792 mjova, -> #790, almi
> -inicijalizacija fonta iz fajla S ,cija su slova visine SI dužinu datoteke podeli sa 256 i dobićeš visinu fonta.
pascal.793 peca.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.794 ognjen, -> #784, peca.st
)-> Pomocu FindFirst i FindNext. Za sve fajlove i direktorijume )-> na disku najlakse je uraditi rekurzijom. Moze li jedan primercic... Please...
pascal.795 ognjen,
Kako da iskljcim / ukljcim / promenim velicinu kursora u pascalu?
pascal.796 dvesic, -> #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.797 dzakic, -> #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.798 dzakic, -> #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.799 peca.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.800 ognjen, -> #797, dzakic
)-> Procedure StoreCursor; assembler; ~~~~~~~~~ Moze li se to uradiri malo vise "pascalski"?
pascal.801 markom, -> #800, ognjen
*** Moze li se to uradiri malo vise "pascalski"? Mnogo oćeš, nije ovo C :( Marko
pascal.802 ilazarevic, -> #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.803 dzakic, -> #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.804 almi, -> #792, mjova
Znam ali to je čisto onako parametar tako da se to da izmeniti u source-u Pozdrav Almi
pascal.805 paki, -> #800, ognjen
­> Moze li se to uradiri malo vise "pascalski"? Teško, ali šta smeta ovome? Em je brzo, em je kratko :)
pascal.806 tij.ma.ta.,
cvcxvxc xcvzxcv
pascal.807 ognjen, -> #805, paki
)-> Tesko, ali sta smeta ovome? Em je brzo, em je kratko :) Fali sto nista ne kapiram... :(
pascal.808 markom, -> #807, ognjen
*** Fali sto nista ne kapiram... :( Za početak je odlično! Zamisli da sve znaš, onda nije zanimljivo, zar ne :)) Marko
pascal.809 peca.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.810 dzakic, -> #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.811 paki, -> #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.812 markom, -> #811, paki
*** Äta da kapiraä? Stvar radi, i . :) Paki, set kode :)) Marko
pascal.813 ognjen, -> #809, peca.st
)-> Uzmi Norton Guide za asembler i malo ceprkaj tamo po . . . Gde je? :)
pascal.814 ognjen, -> #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.815 peca.st, -> #813, ognjen
!-> Gde je? :) Pa... moraćeš da ga nabaviš sa strane, Nortonove stvari nisu PD. Peđa.
pascal.816 peca.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.817 lovro, -> #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.818 drpr,
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.819 paki, -> #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.820 ilazarevic, -> #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.821 nick,
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.822 ognjen, -> #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... :)