PCPROG.6

25 Sep 1995 - 24 Dec 1999

Topics

  1. algoritmi (449)
  2. baze.podataka (309)
  3. ms.dos (17)
  4. windows (294)
  5. asembler (553)
  6. basic (458)
  7. jezici (42)
  8. pascal (1297)
  9. cccc (522)
  10. cpp (299)
  11. clipper (601)
  12. fox (70)
  13. cavo (14)
  14. delphi (1130)
  15. java (100)
  16. razno (776)
  17. unknown (127)

Messages - pascal

pascal.308 postmast,
From: nemesis@styx.bc.co.yu (NEMESIS) Subject: RE: ERRORLEVEL Date: Tue, 21 Nov 95 00:04:00 +0100 ---> Ima li neka dobra dusa da mi kaze kako je moguce reci programu sa kojim errorle ---> velom da se zavrsi? ---> --== NCK ==-- /SBHS/VBC/ ima HALT(X) .. zaustavlja sa X error-om ... Ima isto nesto i sa EXIT ... ┌────────────────────────────────────────────────────────────────────Ě │/\■/\ .:NemesiS:. /\■/\ S.T.Y.X BBS /\■/\ ║ │ / > NEMESIS@STYX.BC.CO.YU >:[­] / \ 011\444-95-22 - 22-06 < \ ║ ď════════════════════════════════════════════════════════════════════╝ ... /\ S.T.Y.X BBS /\ 011\444-95-22 /\ 22-06 /\ * ■ >:[­] NemesiS ■
pascal.309 postmast,
From: SKOA@vila.bc.co.yu Subject: pascal Date: Sun, 19 Nov 95 12:26:32 GMT -=> Quoting "Vladimir Maric" <vitez.koja@sezam. to All <=- #=> "V<> Treba mi nesto da iz DOS programa predem u #=> Windowse. Tj. program "V<> treba da simulira pritisak na #=> Alt+Tab. Pokusaj sa rutinicom koja simulira pritisak #=> tastera. Ako je nemas poslacu ti je. "M<> Zanimljiva ideja, ali mislim da nece da radi. Da li je neko pokusao? Ne znam da li Hoce da radi ali evo rutine : uses Dos; var ReGs : ReGisters; procedure WriteToKeyBuff(ScanCode, ASCIICode : InteGer); beGin ReGs.AH := 05; ReGs.CH := ScanCode; ReGs.CL := ASCIICode; Intr($10, ReGs); end; beGin WriteToKeyBuff($2E, 65); ReadLn; end. Ovo je moja rutina za slanje karaktera i ima isti efekat kao kod pritiska na taster `A'. Ako ne bude radila kod tebe u proceduri umjesto `ReGs.CH := ScanCode' stavi `ReGs.CH := ASCIICode', a kad zoves proceduru umjesto `WriteToKeyBuff($2E, 65)' stavi `WriteToKeyBuff(65, 65)'. Kad se proGram izvrsi na ekranu ce ti biti slovo `A'. Samo trebas saznati ASCII code tastera Alt+Tab. ... Bilo kuda kiki svuda --- FMail/386 1.02 * Origin: Vila co.BBS ■ Prijedor_RS ■ +381 79 11 301 ■ B.C.: (95:790/113)
pascal.310 postmast,
From: SKOA@vila.bc.co.yu Subject: errorlevel Date: Wed, 22 Nov 95 11:29:45 GMT -=> Quoting Nikola.Sivacki%f136.n103.z38@setnet to All <=- Ni> Ima li neka dobra dusa da mi kaze kako je moguce reci programu sa Ni> kojim errorlevelom da se zavrsi? Pokusaj pri izlasku iz programa da stavis DOSERROR := n; {n = broj errollevela} Ako radi, nisam siguran :). ... Don't drink&drive, take a joint and fly. --- FMail/386 1.02 * Origin: Vila co.BBS ■ Prijedor_RS ■ +381 79 11 301 ■ B.C.: (95:790/113)
pascal.311 postmast,
From: SKOA@vila.bc.co.yu Subject: pascal Date: Wed, 22 Nov 95 11:29:46 GMT -=> Quoting "Zeljko Jovanovic" <zeljkoj@sezam.U to All <=- "J<> Kakve su ovo gluposti u vezi BASIC-a? "J<> Da li ste vas dvojica uopste nekada videli neki dobar BASIC kompajler "J<> tipa Microsoft Proffessional BASIC-a 7.1 (koji je te, 1990. godine "J<> zauzimao preko 15 MB (sto ipak govori nesto o kompleksnosti i "J<> mogucnostima), a mogao je (i jos moze ;) da pravi DOS i OS/2 "J<> programe... Turbo Pascal je bio vrrrlo skromnih mogucnosti u odnosu na "J<> njega. Da ne pominjem Visual BASIC u izdanjima za DOS i Windows... "J<> Na kraju, BASIC kao jezik (ne uzimajuci u obzir konkretnu "J<> implementaciju), je daleko bolji od Pascala. Mislis ??!?!?!? Koliko zauzima Mb nije vazno, nego je vazno koji je program userfriendly, shvatas? U paskalu se moze uraditi mnogo, mnogo, mnogo ... * beskonacnost vise od bejzika. I nije u pitanju koliko zauzima ... TP6.0 zauzima oko 2 Mb na disku i sam njim se moze uraditi puno vise nego sa tvojih 15Mb bejzika. Visual Basic ........ pogledaj DELPHI !!!! ... There is no borders for frendship --- FMail/386 1.02 * Origin: Vila co.BBS ■ Prijedor_RS ■ +381 79 11 301 ■ B.C.: (95:790/113)
pascal.312 postmast,
From: broker@setnet.co.yu (Predrag Supurovic) Subject: EMS XMS Date: Mon, 20 Nov 1995 09:07:11 Asmir Badnjevic said: PS> Pa upravo uz pomoc nekebiblioteke za XMS/EMS. One ti obicno daju PS> zamene za GetMem i FreeMem, samo stoalociraju memoriju u gornjoj AB> Kad smo vec kod toGa i to si moGao poslati u mail, ako nije AB> veliko :). Znas li mozda brze prebacivanje nekoG dijela memoriju u Ne znam, pogledacu koliko je pa ako je dovoljno mlo, eto ga... AB> neki druGi dio memorije, recimo da sliku iz pomocne mem. prebacim AB> na ekran? Koristio sam MOVE komandu iz paskala ali je spora AB> (dobro, brza je ali ne za moje potrebe) i ne moGu stvoriti efekat Mislim da ces morati da koristis DMA, a oko toga vec znam vrlo malo. Bilo jepre nekog vremena reci bas u ovoj konferenciji... Naci ce se vec neko dati pomogne. * Origin: Oreska BBS, Uzice = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.313 postmast,
From: OGNEN.DUZLEVSKI%f108.n108.z38@setnet.setnet.co.yu (OGNEN DUZLEVSKI) Subject: Strimovi Date: Sat, 18 Nov 1995 10:28:00 VS>uses Objects, Drivers; VS>var s:PDosStream; VS> ime:PString; VS>begin VS> ime^:='Vladimir'; ime := NewStr('Vladimir'); VS> s:=new(PDosStream, Init('text',stCreate)); VS> s^.WriteStr(ime); VS> s^.Done VS>end. ime mozes da unistis sa DisposeStr, a da ga procitas iz stream-a sa ReadStr. Ognen * OLX 2.1 TD * When Rolling Stones are high, are they Rolling Stoned ? * Origin: SETNet: Struga BBS +389 96 74074 * Macedonia * (38:108/108)
pascal.314 postmast,
From: OGNEN.DUZLEVSKI%f108.n108.z38@setnet.setnet.co.yu (OGNEN DUZLEVSKI) Subject: Turbovizija Date: Sat, 18 Nov 1995 10:43:00 VS>Naisao sam na jedan problem koristeci turboviziju. Naime, trebalo bi mi VS>da mi se u jednom prozoru ispise sadrzaj jedne tekstualne datoteke. Pri VS>tom ne mislim da to bude editor, tj. sadrzaj te datoteke ne sme da se VS>menja, vec samo da se vidi. U turboviziji postoji objekat TWindow, ali VS>ne znam kako da u njega upisem sadrzaj datoteke. Unapred hvala. Napravi naslednika TWindow koji ce kao polje imati TTerminal. Za TTetminal mozes da zakacis datoteku sa AssignDevice. Experiment a bit. Ognen * OLX 2.1 TD * What do you do when your sister glows in the dark ? * Origin: SETNet: Struga BBS +389 96 74074 * Macedonia * (38:108/108)
pascal.315 postmast,
From: OGNEN.DUZLEVSKI%f108.n108.z38@setnet.setnet.co.yu (OGNEN DUZLEVSKI) Subject: Knjiga Za Objektni Tp Date: Sat, 18 Nov 1995 10:31:00 MM> Ja sam genije. Shvatio sam pravo resenje za konflikt u MM> Bosni!!! Svi mi treba da se pomirimo i zivimo lepo kao MM> ranije. Treba mi neka knjiga iz politike da vidim prakticnu MM> primenu i najbolje resenje za moj zakljucak. Mesas babe i zabe a i pricas gluposti. Ognen * OLX 2.1 TD * ROBOCOMM - a ROBOCOP for modems. * Origin: SETNet: Struga BBS +389 96 74074 * Macedonia * (38:108/108)
pascal.316 postmast,
From: broker@setnet.co.yu (Predrag Supurovic) Subject: Strimovi Date: Mon, 20 Nov 1995 14:52:40 OGNEN DUZLEVSKI to VLADIMIR SVRKOTA about OD> ime mozes da unistis sa DisposeStr, a da ga procitas iz stream-a sa OD> ReadStr. Moze li nesto malo vise o ovim strimovima? U dokumentaciji od BP ne nadjoh im ni pomena. Da li je to ugradjeno u sam Paskal ili je neka dodatna biblioteka? * Origin: Oreska BBS, Uzice = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.317 postmast,
From: broker@setnet.co.yu (Predrag Supurovic) Subject: swap Date: Mon, 20 Nov 1995 21:15:05 Ima li neko kakav fin unit za swap u DOS shell? * Origin: Oreska BBS, Uzice = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.318 postmast,
From: broker@setnet.co.yu (Predrag Supurovic) Subject: Zastita programa Date: Tue, 21 Nov 1995 13:12:16 Dragan Levic said: PS> Ivan Stamenkovic je u nekim od prvih brojeva Cipa (CHIP), pisao bas PS> o metodi zastite gotovih exe programa. Dao je cak i TP izvorni kod PS> necega slicnom PKLite-u. DL> Da li bi mogao da mi posaljes sta je on to tacno napisao? Nazalost, poslao sam dezinformaciju. Razgovarao sam sa Ivanom i on rece da je to sto jeon radio samo mala nadgradnja za PKLITE, i da je bez PKLITE-a neupotrebljivo. Ne omogucava da se tvoj kod izvrsi na pocetku nekog EXE-a. * Origin: Oreska BBS, Uzice = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.319 postmast,
From: broker@setnet.co.yu (Predrag Supurovic) Subject: EMS XMS Date: Tue, 21 Nov 1995 13:12:17 Asmir Badnjevic said: PS> Mislim da ces morati da koristis DMA, a oko toga vec znam vrlo malo. PS> Bilo jepre nekog vremena reci bas u ovoj konferenciji... Naci ce se PS> vec neko dati pomogne. AB> Sta ti je DMA? Ako sam i cuo onda sam zaboravio (jesam slozio AB> recenicu :)))). Direct Memory Access. Umesto da pises program ili koristis funkcije za premestanje sadrzaja memorije, taj posao prepustic hardveru. Samo mu kazes koji memorijski blok gde zelis da bude prebacen. Posto to radi hardver, trebalo bi da bude mnogo brze od bilo kakvog programa. * Origin: Oreska BBS, Uzice = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.320 postmast,
From: broker@setnet.co.yu (Predrag Supurovic) Subject: pascal Date: Tue, 21 Nov 1995 13:12:25 "Vladimir Maric" said: "M> razmisljanja (zato sam i poceo recenicu sa "licno"). Uzmimo u "M> razmatranje neki prost primer, npr. skidanje ANSI sekvenci iz "M> teksta koji se nalazi u baferu: "M> while(*text) { "M> if(*text==ESC) "M> if(*(text+1)=='[') { "M> while(!isalpha(*text++)); "M> continue; "M> } "M> putch(*text++); "M> } "M> U Pascalu oko ovog trivijalnog problema ima mnogo vise da se "M> mozga, i to ne zbog prirode problema nego zbog prirode jezika. "M> Demantujte me, napisite krace/logicnije od ovoga u Pascalu. (i u "M> Cu najverovatnije moze krace, ovo sam napisao iz glave). Sve je potpuno isto kao i ovo sto si ti napisao samo sto je druga sintaksa, ako se koristi ASCIZ tip. Ako se koristi string tip onda je stvar za nijansu drugacija, ali ne mnogo. * Origin: Oreska BBS, Uzice = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.321 postmast,
From: broker@setnet.co.yu (Predrag Supurovic) Subject: pascal Date: Tue, 21 Nov 1995 13:12:25 "Zeljko Jovanovic" said: "J> Na kraju, BASIC kao jezik (ne uzimajuci u obzir konkretnu "J> implementaciju), je daleko bolji od Pascala. Vidim da se neko bacio u polemiku s tobom, na osnovu ove i slicnih izjava. Ja cu te shvatiti da si samo bacio kosku da nas napalis. Ako ti je to bio cilj, uspelo ti je :))))) Sve sto si naveo kao prednosti bejzika su samo naizgled prednosti. BEJZIK je odlican za one koji ne znaju mnogo o programiranju jer pola posla zavrsi sam po principu, vazno je da radi a kako radi, to i nije tako bitno. Nigde nisi pomenuo optimizovanje koda, efikasnost tipova s kojima je bejzik u "prednosti" nad visim programskim jezicima, efikasnost fukcija koje operisu sa takvim tipovima, itd... Ili da pricamo o tome da su ogranicenja visih programskih jezika u stvari ogranicenja masine na kojoj su realizovani, a ne programskog jezika. Sve te "prednosti" su u stvari prevazilazenja ogranicenja masine i nije ih tesko implementirati u visim programskim jezicima, samo sto je to uvek naustrb funkcionalnosti (citaj brzine), ili, cesce, program se jednostavno pise za protected mod. Bejzik je jezik za decu. On samo spolja dostize vise programske jezike, ali je u samoj osnovi takav da ne moze da se meri sa njima. Razlika izmedju bejzika i visih programskih jezika (moracemo da uvedemo neku skracenicu za ovo :> ) je u tome sto se u bejziku nesto napise brzo i lako, a u ovim drugim jezicima je na prvom mestu da program radi brzo i lako. Eto, a kad sam pisao ono "bejzik, bljak", pomislio sam da ce se mozda naci neko da prigovori... :))))) * Origin: Oreska BBS, Uzice = SF BIBLIOTEKA = SETNet: (38:101/101)
pascal.322 postmast,
From: Asmir.Badnjevic%p1.f135.n135.z38@setnet.setnet.co.yu (Asmir Badnjevic) Subject: EMS XMS Date: Tue, 21 Nov 1995 17:28:41 >> Petar Ristic nekad rece, a ja ga sad citiram << PR> Uzmi lepo assembler i uradi scroll. E da, umalo da zaboravim, PR> obavezno cekaj da mlaz dodje dole, kad scroll-ujes. :) Pomocu assemblera? U assembleru sam radio vrlo malo a i ono sto znam nije dovoljno :(. Da objasnim ... ucitam mapu sa diska, stavim je u pomocnu memoriju, pomocu komande MOVE prebacujem slike, takoreci, trenutno na ekran, ali ... kod skrolovanja nece da radi tako brzo :(((. Da objasnim malo skrolovanje ... kad ucitam mapu ona ide u pomocnu memoriju u promjenljive tipa array[0..64000] of byte; (koristim 320x200.256 rezoluciju) i sa njima manipuliram kako hocu ... a kada hocu da skrolujem radim to po slijed ecem postupku (citaj program)... uses Dos; type Maper = Array[1..200, 1..320] of byte; var P1, P2 : Pointer; Screen : Maper ABSOLUTE $A000:$0000; TmpScr : Maper ABSOLUTE $A000:$0001; {jedan bajt desno} Map1, Map2 : ^Maper; {nisam siguran da li ide "^"} r, i, j : Integer; Regs : Registers; procedure LoadFileMap(FileName : String; WhatPart : Maper); var F : File; begin Assign(F, FileName); ReSet(F); BlockRead(F, WhatPart, 500); Close(F); end; begin Regs.AH := 00; Regs.AL := 19; Intr($10, Regs); {inicijalizuje grafiku 320x200.256} New(P1); New(P2); GetMem(P1, 64000); GetMem(P2, 64000); Map1 := @P1^; Map2 := @P2^; {stavlja Map1 na slobodnu mem.} LoadFileMap('PICTURE.1', Map1^); LoadFileMap('PICTURE.2', Map2^); Move(Map1, Screen, SizeOf(Map1)); {stavlja prvu sliku na ekran} For i := 1 to 100 do begin For j := 1 to 200 do begin Move(TmpScr, Screen, SizeOf(TmpScr)); Screen[j, 320] := Map2^[j, 320]; end; end; end. Eto, to je taj program. Nisam siguran da li ce da radi posto sam ga onako pisao (na herkules karti) ali ja to radim tako, ako si shvatio :))). Sliku snimi sa BlockWrite(F, $A000:$0000, 500); (ili tako nekako) i onda probaj program. Ako ne bude radio ,ailuj pa cemo vidjeti, a, ako ti imas rijesenje u masincu opet mailuj pa cemo vidjeti. P.S. Unaprijed hvala. pozdraw, ASKO ... Ko prvi djevojc sam u nju upada ! * Origin: Vila co.BBS # Prijedor_RS # +381 79 11 301 # SETNet: (38:135/135.1)
pascal.323 postmast,
From: Asmir.Badnjevic%p1.f135.n135.z38@setnet.setnet.co.yu (Asmir Badnjevic) Subject: EMS XMS Date: Tue, 21 Nov 1995 17:28:42 PS> Asmir Badnjevic said: Pedja said :)) PS> Ne znam, pogledacu koliko je pa ako je dovoljno mlo, eto ga... Pogledaj :). PS> Mislim da ces morati da koristis DMA, a oko toga vec znam vrlo malo. PS> Bilo jepre nekog vremena reci bas u ovoj konferenciji... Naci ce se PS> vec neko dati pomogne. DMA, sta je to. Valjda ce se naci, bar se nadam :). P.S. Ovo sam ti vec pisao ali izgleda da je poruka negdje isparila. pozdraw, ASKO ... tata vidi .... TAG * Origin: Vila co.BBS # Prijedor_RS # +381 79 11 301 # SETNet: (38:135/135.1)
pascal.324 postmast,
From: vojam@setnet.co.yu (Vojislav Mihailovic) Subject: Knjiga Za Objektni Tp Date: Wed, 22 Nov 1995 22:45:06 * U poruci za MARKO MILIVOJEVIC, OGNEN DUZLEVSKI kaze: OD> MM> Ja sam genije. Shvatio sam pravo resenje za konflikt u OD> MM> Bosni!!! Svi mi treba da se pomirimo i zivimo lepo kao OD> MM> ranije. Treba mi neka knjiga iz politike da vidim prakticnu OD> MM> primenu i najbolje resenje za moj zakljucak. OD> Mesas babe i zabe a i pricas gluposti. A i ovo je NET.PASCAL * Origin: SETNet * BBS Politika, Bgd * +381 11 3229148 * 0-24 (38:103/133)
pascal.325 postmast,
From: Vladimir.Svrkota%f119.n111.z38@setnet.setnet.co.yu (Vladimir Svrkota) Subject: Strimovi Date: Wed, 22 Nov 1995 15:44:00 OD> ime mozes da unistis sa DisposeStr, a da ga procitas iz stream-a sa OD> ReadStr. Kako vidim, strimovi ti nisu strani :). Interesuje me da li je moguce (mislim da jeste moguce, samo je pitanje kako) snimiti _objekte_ u strim na disku, a posle te iste ucitati sa diska? ... éí 'aaníígóó 'áhoot'é * Origin: ECSTASY BBS * Indjija * 022 53-884 * SETNet: (38:111/119)
pascal.326 postmast,
From: Vladimir.Svrkota%f119.n111.z38@setnet.setnet.co.yu (Vladimir Svrkota) Subject: Turbovizija Date: Wed, 22 Nov 1995 01:11:00 VS>menja, vec samo da se vidi. U turboviziji postoji objekat TWindow, ali VS>ne znam kako da u njega upisem sadrzaj datoteke. Unapred hvala. OD> Napravi naslednika TWindow koji ce kao polje imati TTerminal. Za OD> TTetminal mozes da zakacis datoteku sa AssignDevice. Experiment a bit. Pa upravo tim putem sam krenuo i - zaglavio se. Ja jesam nasledio TWindow i u njega ubacio TTerminal, ali problem mi je prenos sadrzaja datoteke u terminal (uzgred, duzina datoteke u terminalu moze biti max. 64k, koliko iznosi maksimalni bafer terminala). Dalje, sa AssignDevice sam preusmerio standardni izlaz (output) na terminal, pa sam sa klasicnim readln citao liniju iz datoteke i sa writeln je upisivao u terminal. To je, medjutim, uzasno sporo. Postoji i drugi nacin, a to je pomocu metode StrWrite iz klase TTerminal. Sintaksa ide ovako: procedure StrWrite(var S: TextBuf; Count: Byte); virtual; Ovo bi trebalo da iz bafera S prebaci Count linija teksta u bafer ter- minala, tj. u sam prozor terminala. E, meni je glavni problem onaj bafer S. Sta god da na njegovo mesto stavim (pointer, string,...) kompajler me obraduje jednim Type Mismatch. Sta da radim ? ... éí 'aaníígóó 'áhoot'é * Origin: ECSTASY BBS * Indjija * 022 53-884 * SETNet: (38:111/119)
pascal.327 zeljkoj, -> #295, postmast
> A liste u Basicu si zaboravio... ? ;) A šta će mi liste kad imam lepe dinamičke nizove? :))
pascal.328 zeljkoj, -> #307, postmast
> Nelupaj ... > U TP mozes da definisheh i STRING duzinine 60Kb :)) Da, ali samo u BP 7.0. :) I to je null-terminated string što znači da u stringu ne sme da postoji chr(0) karakter. > A to vezano za BASIC . je smesno ... > Em sto uzima mnogo MEMORIJE ... > VELIKO JE ... > I SPOOOOOOOOOOOOOOOROOOOOOOOOOOOOO !!!!!!!!! Šta je smešno? Šta zauzima mnogo memorije? Šta je sporo? > ┌─────────────────────────────────────────────────────────────── > │/\■/\ .:NemesiS:. /\■/\ S.T.Y.X BBS > /\■/\ ║ │ / > NEMESIS@STYX.BC.CO.YU >:[­] / \ 011\444-95-22 > - 22-06 < \ ║ > ď═══════════════════════════════════════════════════════════════ > > ... /\ S.T.Y.X BBS /\ 011\444-95-22 /\ 22-06 /\ > * ■ >:[­] NemesiS ■ Sa ovim bi više mogao da prestaneš.
pascal.329 zeljkoj, -> #311, postmast
> Mislis ??!?!?!? Koliko zauzima Mb nije vazno, nego je vazno > koji je program userfriendly, shvatas? U paskalu se moze > uraditi mnogo, mnogo, mnogo ... * beskonacnost vise od > bejzika. I nije u pitanju koliko zauzima ... TP6.0 zauzima oko > 2 Mb na disku i sam njim se moze uraditi puno vise nego sa > tvojih 15Mb bejzika. Naravno da nije bitno koliko zauzima MB. Samo kažem, da je jedina uporediva verzija TP-a sa BASIC-om, BP 7.0 koji zauzima 30 MB. Već TP 6.0 nema ni delić od PDS-ovih mogućnosti.
pascal.330 zeljkoj, -> #321, postmast
> Ja cu te shvatiti da si samo bacio kosku da nas napalis. > Ako ti je to bio cilj, uspelo ti je :))))) Ne, nije mi to bio cilj. Pogrešno si shvatio. > je bejzik u "prednosti" nad visim programskim jezicima, BASIC je viši programski jezik. :) > Bejzik je jezik za decu. On samo spolja dostize vise programske > jezike, ali je u samoj osnovi takav da ne moze da se meri sa > njima. Kakvi visokoumni zaključci. :)) BTW, (drugi put): BASIC je viši programski jezik. > Razlika izmedju bejzika i visih programskih jezika (moracemo da > uvedemo neku skracenicu za ovo :> ) je u tome sto se u bejziku Treći put: BASIC je viši programski jezik.
pascal.331 dpredovic, -> #267, maksa
> - Šabloni > - Izuzeci > - RTTI Exceptions i RTTI postoje i u pascalu. Doduše ne zove se BP8 nego Delphi, ali to ne bi trebalo da ima veze. Opet, u Delphiju šabloni nisu niti potrebni. Sve klase imaju zajednički koren, pa se sve svodi na običan type-cast. > Da stvar bude grđa po Pascal, sve ove stvari (a i one koje ti > pominješ) su u definiciji C++ jezika, dok' su objekti u Pascalu > (ubr., stoje mu k'o piletu gas-maska ;) Borlandova izmišljotina, A objekti u C-u izmišljotina nekog šveđanina. Svašta. >;) A kada smo već kod definicije jezika, koliko je C++ trebalo godina da dobije sve te lepe stvari sa početka poruke? Dok se usaglase svi ti ANSI/ISO/DIN/JUS komiteji Borland 16 puta promeni jezik iz korena. :) A da C++ dobije ono što ima Delphi, prvo ćete morati da ubijete Stroustrupa i pola AT&T-a. :) Vidi šta se desilo strogo standardizovanim jezicima (fortran, cobol...), a gde je dogurao basic. > Zar vas ne zamara da jednim okom čitate uputstvo za Object Oriented > Pascal, a drugim pratite stanje Borlandovih akcija na berzi? > Phuuu brate, frka ... pogotovo u ova smutna vremena. ;) Nemoj misliti da sam neki veliki zaljubljenik u pascal, a još manje u Borland. C/C++ imaju mnogo časova radnog staža u mom editoru. C mi je još uvek referenta tačka. Kada učim nov jezik, sve sintaksne strukture prvo u glavi prevodim u C. Uz C++ sam naučio šta je OOP. Sa druge strane TP, ne znam koja verzija, je jedan od prvih programa na mom prvom PC-u. Također, jedan je od prvih programa na kojima sam upotrebio XRD. Delphi je opet treća priča. Nestandardan jezik koji ima sve što i C++, a i nešto više - slobodu dizajna koja je potrebna kompajliranom jeziku da postane nalik interpreteru - Visual Basicu. Od računara i programiranja leba jedem (a život je kod nas straašno skup), i potrebno mi je nešto što će mi omogućiti da budem što je moguće produktivniji. Pod DOS-om to nije bio niti TP niti BC niti MSC nego Clipper, prilično nestabilan kompajler totalno nestandardnog dijalekta vrlo nesrećno dizajniranog jezika. Al' što sam se sa njim namlatio para ne mogu da ti se nahvalim. ;) I niti jednog trenutka se nisam zamislio nad tržišnom sudbinom tamo nekog Nuntacketa koji ga je napravio. Oni su pukli, Clipper je otkupio CA, i nikom ništa. A i da ga nije otkupio, pa šta onda? Nemaju valjda kompajleri link sa Wall Streetom, pa da stupaju u štrajk kada kompanija pukne? Radio bi on sasvim lepo možda pola godine-godinu dok se ja ne bi prešaltovao na nešto drugo, a i još mnogo duže, dok god treba da održavam matore programe. BTW, misliš da će standardizacija C++ da pomogne silnim OWL programerima kada Borland pukne?
pascal.332 postmast,
From: Asmir.Badnjevic%p1.f135.n135.z38@setnet.setnet.co.yu (Asmir Badnjevic) Subject: EMS XMS Date: Wed, 22 Nov 1995 16:29:49 PS> Direct Memory Access. Umesto da pises program ili koristis funkcije PS> za premestanje sadrzaja memorije, taj posao prepustic hardveru. PS> Samo mu kazes koji memorijski blok gde zelis da bude prebacen. PS> Posto to radi hardver, trebalo bi da bude mnogo brze od bilo kakvog PS> programa. To sve tako divno zvuci :))). Kako to da uradim ??? Je li pomocu asemblera ? pozdraw, ASKO ... Sta vredi robijasima sto imaju brojeve kad ne ucestvuju u izvlacenju!! * Origin: Vila co.BBS # Prijedor_RS # +381 79 11 301 # SETNet: (38:135/135.1)
pascal.333 visnja, -> #267, maksa
> - Šabloni > - Izuzeci > - RTTI Ne znam sta su sabloni i RTTI ali PASCAL IMA IZUZETKE, Pogledaj verziju BP 8.0 poznatiju i kao DELPHI! > Da stvar bude grđa po Pascal, sve ove stvari (a i one koje ti > pominješ) su u definiciji C++ jezika, dok' su objekti u Pascalu > (ubr., stoje mu k'o piletu gas-maska ;) Borlandova > izmišljotina, i postojaće dok postoji ta firma. Dakle, ulažeš > vreme i trud da savladaš nešto (paskal sa objektima) čiji > opstanak i unapređivanje zavisi od razvojne politike jedne > ugrožene firme, i njenog kotiranja na berzi, spram C++-a koji > je priznati standard sa lepom sadašnjosti i istom takvom > perspektivom. > Zar vas ne zamara da jednim okom čitate uputstvo za Object > Oriented Pascal, a drugim pratite stanje Borlandovih akcija na > berzi? Definiciju koju definisu Ameri za svoje proizvode. Nisu ludi da definisu PASCAL koji nije Americkog porekla! (apsolutno odobravam) Zato je Pascal i promenio ime u DELPHI, sada je Americki! Sto je naravno odlicno. Gledajuci DELPHI nisam siguran da ce da crkne. Moze samo vlasnika da promeni. Na kraju krajeva, rekao sam da je C sjajan, i stvarno je u mnogim primenama ELEGANTNIJI od Pascala. I ko je programer? Onaj koji zna C ili PASCAL sigurno nije. Znas slova - nisi pismen, moras da znas i da pises! I zasto Pascalu ne stoje objekti? Pa C (C++) i Pascal SU ISTI JEZICI. Razlika je u sintaksi, implementacija raznih algoritma je identicna, DO..WHILE, FOR, blokovi (sada jesu li {...} ili BEGIN...END)... Pozdrav, Visnja.
pascal.334 visnja, -> #269, mastermind
> ali #27 je konstanta, a chr(27) je funkcija... potrebno je neko > vreme da on pozove funkciju, i da se vrati posle toga (uz razne > operacije sa stekom) Ljudi, nisam gledao na optimizaciju nego cisto na estetiku samog source-ta u smislu da lici na C, da bih dokazao da su C i Pascal isti jezici i da ako se nesto napise u jednom ovako, u drugom moze isto tako... Implementacija konkretnog algoritma na C-u i Pascalu je slicna, dok npr. u FORTH-u ne lici ni na jedan od ova dva jezika... Pozdrav, Visnja.
pascal.335 iznogud, -> #331, dpredovic
:: Opet, u Delphiju šabloni nisu niti potrebni. Sve klase imaju zajednički :: koren, pa se sve svodi na običan type-cast. A šta ako tvoj objekat treba da bude, recimo, generički kontejner za sve ostale vrste objekata, pa i onih koji nisu izvorno Delfijevi? Hoće li i onda da pali type-cast? Jesi li ti nekad koristio šablone? Po ovoj logici, ni C++-u nisu trebali šabloni, pošto sve može da se radi sa pointerima, pa onda i kod njega pali 'običan type cast'. :: BTW, misliš da će standardizacija C++ da pomogne silnim OWL programerima :: kada Borland pukne? A kakve veze ima standardizacija jezika za programiranjem pod Windows-ima? Ako nekom tu treba standard, onda neka uzme MFC - bar tri kompajlera (BTW, sva tri prave bolji kod od Borlandovog) podržava MFC. (BTW, da li se nekad budiš oznojen, jer si sanjao ovaj san: 2020-ta je godina, svi radimo na PowerPC-u na 10 GugolHz, a ti pokušavaš da prodaš program koji radi pod emulacijom Intela i emulacijom Win31. Zašto? Pa Borland je puk'o 1997...) Standardizacija će da pomogne kod prenošenja programa sa platforme na platformu, i sa kompajlera na kompajler - džaba meni što (recimo) MSVC 1.5 pravi bolji kod od Borland C++ 4.0, kada to čudo nema izuzetke. Ili, zamisli situaciju prenošenja neke biblioteke zasnovane na RTTI-u na unix, gde gcc ne podržava nove ekstenzije C++-a... Ja znam da ovi argumenti ne vrede baš u temi koja se (uglavnom) bavi nestandardnim i neprenosivim jezikom, ali znaš kako kaže stara kineska poslovica: 'ne bacaj kamen na tuđu kuću ako je tvoja od stakla' ;)
pascal.336 .sima, -> #316, postmast
║║ Moze li nesto malo vise o ovim strimovima? ║║ U dokumentaciji od BP ne nadjoh im ni pomena. ║║ Da li je to ugradjeno u sam Paskal ili je neka dodatna biblioteka? Iz BP 7.0: ┌───────┐ │TObject│ └───┬───┘ ┌───┴───┐ │TStream│ └───┬───┘ ┌────────┼────────┐ ┌────┴──────┐ │ ┌──────┴──────┐ │TEmsStream │ │ │TMemoryStream│ └───────────┘ │ └─────────────┘ ┌─────┴────┐ │TDosStream│ └─────┬────┘ │ ┌─────┴────┐ │TBufStream│ └──────────┘ Pogledaj za sve ove tipove. Korišćenje je više nego jednostavno.
pascal.338 .sima, -> #317, postmast
║║ Ima li neko kakav fin unit za swap u DOS shell? Ne znam da li je fini, ali meni je super radio. Podržana je XMS. Kod je davno napisan i nije skoro korišćen. Swapuje ceo heap u XMS. <---------------- {------------------------------------------------------------------------------ } { Copyright by Srdjan Simic } { 1993 } { <.sima@sezam.co.yu> } { <ss45791d@buefhp.etf.bg.ac.yu> } {------------------------------------------------------------------------------ } {$A+,B-,D+,E-,F-,G+,I+,L+,N+,O-,P-,Q+,R+,S+,T-,V+,X+,Y+} {$M 2048,0,655360} uses dos, crt, xms; procedure SetMemTop(MemTop: Pointer); assembler; asm mov BX,MemTop.Word[0] add BX,15 mov CL,4 shr BX,CL add BX,MemTop.Word[2] mov AX,PrefixSeg sub BX,AX mov ES,AX mov AH,4AH int 21H end; procedure shellreal; var swaped: boolean; Max, Total, handle, NumPage: word; velicina: longint; begin velicina:=longint(Seg(HeapPtr^))*16+longint(Ofs(HeapPtr^))-longint(Seg(HeapOrg^ ))*16; NumPage:=velicina div 1024; if NumPage <> velicina /1024 then inc(NumPage); swaped:=false; X_QuerryFree(Max,Total); if X_Installed and(NumPage <= Max) then begin swaped:=true; X_AllocEMB(NumPage, handle); with MovRec do begin duzina:=velicina; ZeroS:=0; SPtr:=HeapOrg; ZeroD:=handle; DPtr:=nil end; X_MoveEMB(@MovRec); SetMemTop(HeapOrg) end; { swapvectors; exec(GetEnv('COMSPEC'),''); swapvectors;} if swaped then begin SetMemTop(HeapEnd); with MovRec do begin duzina:=velicina; ZeroS:=handle; SPtr:=nil; ZeroD:=0; DPtr:=HeapOrg end; X_MoveEMB(@MovRec); X_FreeEMB(handle) end end; var i: integer; begin readkey; shellreal; writeln('Gotovo'); end. Zahteva XMS.PAS. Mislim da je iz xms30.zip. Nije baš za poruku.
pascal.339 oper, -> #331, dpredovic
>> Exceptions i RTTI postoje i u pascalu. Doduše ne zove se BP8 >> nego Delphi, ali to ne bi trebalo da ima veze. Exceptions & RTTI ne postoje u pascalu, već u Delphi-ju. Ni jedan drugi kompajler ih ne podržava. Kod c++ kompajlera, stvar je sasvim drugačija. Mada, sve ovo i nema veze, ako u Delphiju za jedno posle podne mogu da uradim ono za šta mi u c++ u treba par dana :) >> Opet, u Delphiju šabloni nisu niti potrebni. Sve klase imaju >> zajednički koren, pa se sve svodi na običan type-cast. Ne razumem se mnogo u objektni paskal, ali me interesuje kako se u njemu postiže sledeća konstrukcija: template <class T> class Erej { T* data; int size; public: Erej(int); ~Erej(); T& operator[](int i) {return data[i]);} }; void main(void) { Erej<int> niz_intova(5); Erej<char*> niz_stringova(10); } žini mi se da ovo, ipak, nije moguće?
pascal.340 postmast,
From: ivica@I_should_put_my_domain_in_etc_NNTP_INEWS_DOMAIN (Ivica Nikolic) Subject: Re: PASCAL Date: Mon, 27 Nov 1995 11:40:25 GMT NEMESIS je napisao: >> TRECA STVAR .... >> UZMESH I IZBUSIS DISKETU BUSILICOM NA NEKOM MESTU ! >> NEMA LEBA DA NAPRAVI ISTU KOPIJU ... >> I napravis program koji prilagodjava testiraneje disketi :))) Eeee, najzad posle gomile suma da i ti napises nesto pametno Ja sam jos davno razmisljao o takvoj zastiti, jos dok sam pisao neki program za Amigu. Otprilike, iglom probusis formatiranu disketu na nekom mestu, onda utvrdis koji su tacno sektori osteceni, i posle u svom programu povremeno pokusavas da formatiras te sektore, da bi utvrdio da li je stvarno prisutna originalna disketa. Naravno, treba nekako da budes siguran da neces unistiti sektore na kojima je snimljeno nesto korisno. Radi otezavanja posla hakerima, za pristup unistenom sektoru trebalo bi da se zaobidje BIOS, i da se gadja sam kontroler, sto bi malo zakomplikovalo zastitu. Prednosti: - Prakticno je nemoguce iskopirati takvu disketu, cik da vidim nekog da probusi disketu tacno na mestu treceg sektora u 76-om cilindru. - Jeftinije od hardlock-a, i moze se lako uraditi u domacoj radinosti - od dodatnog hardvera potrebna je samo igla. Nedostaci: - Originalna disketa mora da bude u drajvu dok se program koristi. - Za svaku kopiju programa treba probusiti disketu, videti koji sektori su osteceni, i onda iskompajlirati svoj program da radi samo sa tom disketom, i ni sa jednom drugom. Ovaj proces bi mogao da se automatizuje (osim samog cina busenja diskete), ali bi i dalje to islo presporo za neku masovniju proizvodnju. -- Program too big to fit in memory
pascal.341 postmast,
From: nemesis@styx.bc.co.yu (NEMESIS) Subject: RE: SWAP Date: Sat, 25 Nov 95 01:28:00 +0100 ---> Ima li neko kakav fin unit za swap u DOS shell? Ima ja jedan .. radi SWAP ili na DISK ili na EMS/XMS/.. ALi problem je sto nemam INC file za taj TP .. A PAS sam slucajno obrisao ... Ako oces poslacu ti ga ... ┌────────────────────────────────────────────────────────────────────Ě │/\■/\ .:NemesiS:. /\■/\ S.T.Y.X BBS /\■/\ ║ │ / > NEMESIS@STYX.BC.CO.YU >:[­] / \ 011\444-95-22 - 22-06 < \ ║ ď════════════════════════════════════════════════════════════════════╝ ... /\ S.T.Y.X BBS /\ 011\444-95-22 /\ 22-06 /\ * ■ >:[­] NemesiS ■
pascal.342 maksa, -> #331, dpredovic
>> Exceptions i RTTI postoje i u pascalu. >> Doduše ne zove se BP8 nego Delphi, Koliko sam shvatio iz Borlandove reklamne kampanje, ("VB Killer", tako beše?) Delphi je pandan Visual Basic-u, a po onome što čitam vidim da su i po performansama (kompajliranje i izvršavanje) tu negde. 'Ajmo malo konzistentnije. Ovde se do sada vodila "teorijska rasprava" (od toga, btw, 'leba nema, al' 'ajde kad se već razgovaramo) o standardima, a ne o implementacijama. A ako ćemo baš i o implementacijama... evo ti očigledna prednost standarda vs. implementacije, odn. poenta onoga što sam 'teo reći: Mogu da se napišu C++ klase sa izuzecima, šablonima i RTTI-jem za bilo kakvu konkretnu (inžinjersku, naučnu, knjigovodstvenu ... ) primenu, koje će da rade pod DOS-om (uz malo zezanja i kompromisa i pod nekim Unix-om) i da se po potrebi presade u Windows ili na Mac-a, ali *ne može* da se napravi Paskal ekvivalent koji obezbeđuje sve te lepe nove konstrukcije, a da trči pod oba (ili sva tri) okruženja. Na pr., tvoja klasa Matrica, (kod koje se pucanje van granica matrice, ili slučaj Det=0, i slični belaji ... hvataju izuzecima) će u Delphi-ju raditi samo pod Windows-ima, a u C++-u možeš da je nosaš sa sobom duž većine hardverskih platformi i operativnih sistema. >> Opet, u Delphiju šabloni nisu niti potrebni. Sve klase imaju >> zajednički koren, pa se sve svodi na običan type-cast. Ovako od ove jedne rečenice se ne čini da je to mehanizam koji potpuno zamenjuje šablone. Ako bi bio voljan da to malo razjasniš? Šta ako hoću da mi kontejner sadrži, na pr., funkcije? Kako bi se preko tog zajedničkog korena, recimo, izveo generički asocijativni niz? Šta u Delphi-ju zamenjuje template (ne klase, nego) funkcije? >> kod definicije jezika, koliko je C++ trebalo godina da dobije >> sve te lepe stvari sa početka poruke? Mnogo manje (duplo) nego Wirth-ovom Paskalu. ;) >> BTW, misliš da će standardizacija C++ da pomogne silnim OWL >> programerima kada Borland pukne? OWL programerima najbolje može da pomogne munjevito šaltanje na MFC, što bi im garantovalo lep život na trenutno tri kompajlera. Ako neko paranoično (ovo nije ništa loše, nemirna su vremena) ne veruje ni u jedno od ta dva rešenja, može da odvoji koji mesec i napravi svoje rudimentarne Windows klase, i tu je C++, što bi DVV rekao, "skoro uvek sigurna kupovina", baš zahvaljujući standardizaciji i rasprostranjenosti. Da prekinemo ovo, pošto je "od izvora 'iljadu putića", a i slabo ljubim ovakve "svete ratove". Samo sam reagovao na neispravnu tvrdnju da "sve što može C++ može i Paskal", i to još uvek tvrdim. Programiranje je već duže vreme dovoljno širok pojam, sa dovoljno velikim dijapazonom primena, i ako se to ne sagleda, dolazi do ovakvih i sličnih nesporazuma i neslaganja.
pascal.343 vitez.koja, -> #320, postmast
#=> From: broker@setnet.co.yu (Predrag Supurovic) #=> Subject: pascal #=> Date: Tue, 21 Nov 1995 13:12:25 #=> Sve je potpuno isto kao i ovo sto si ti napisao samo sto #=> je druga sintaksa, ako se koristi ASCIZ tip. Ako koristiš pointere i ASCIIZ tip (pchar ili neki tvoj, svejedno), nema potrebe da pišeš u Pascalu, jer je C jezik za tebe.
pascal.344 icile, -> #229, zeljkoj
Dobro, a cemu sluze ti stringovi od 32K. Da li je to navedeno samo kao 'pa, eto ima i to pored svega' ili kao neka ozbiljna prednost koja se ispoljava u programiranju. Naravno da je bolja obavezna deklaracija promenljivih jer to daje nakakvu preglednost programu. Ako toga nema, otkud znam sta sam u programu upotrebio kao imena promenljivih? To je narocito znacajno ako neki program pises, pa posle odredjenog vremena (kad sve zaboravis) hoces da ga dopunis. Kako ces znati sta ti znaci svako od imena promenljivih? Meni je bilo zanimljivo nesto sto je neki covek rekao o Bejziku i ostalim (boljim programskim jezicima, u koje ubrajam i Pascal): "Kada resavate neki problem u nekom programskom jeziku (normalnom) mozete u potpunosti da se posvetite resavanju tog problema, dok u Bejziku morate da razmisljate na koji nacin je to moguce implementirati."
pascal.345 icile, -> #230, zeljkoj
-> Deklarisanje promenljivih mozda jeste korisno, ali je strasno zamorno. -> Uostalom, postoji OPTION EXPLICIT, pa mozes da biras. :) Postoji mnogo glupih komandi koje je potrebno zadati tom Bejzik kompajleru da bi ozbiljan programer bio zadovoljan njegovim radom. Zar OVO nije zamorno?
pascal.346 icile, -> #251, jablan
-> zato paskal sluzi i u edukativne svrhe. E sad, stvar je kompajlera -> kako ce ovo prevesti i da li ce C biti brzi nego paskal. Optimizacija -> u 90% slucajeva na sadasnjim masinama nije toliko bitna. Hm, pre nekoliko godina sam gledao neki program koji sljaka sa vektorskom grafikom i, covek je napravio verziju na Paskalu i ekvivalent na C-u. Posto je program sporo radio, covek je merio koji je program brzi za istu radnju. Ispostavilo se, na njegovo iznenadjenje, da je brze radio ovaj u Paskalu! Verovatno se radilo o Borlandovim Turbo jezicima, pa je Turbo Pascal, omiljeno Borlandovo cedo, mnogo bolje uradjen od njegovih ostalih kompajlera. Da ne pricam o kodu, koji je bio znatno kraci, ali ... ko jos to sad gleda.
pascal.347 icile, -> #244, zeljkoj
A, ima li taj fantasticni Bejzik nesto tipa record na Paskalu ili strukture na C-u??
pascal.348 icile, -> #219, dr.urbano
-> Zna li neko kako mogu da procitam ime diskete ? (vrlo je hitno) Pa, citas ga normalno kao ime fajla, samo ime diskete ima poseban atribut. Probaj sa parom funkcija FindFirst, FindNext. Pogledaj primere u Help-u i sve ce ti biti jasno.
pascal.349 postmast,
From: ivica@galeb.etf.bg.ac.yu (Ivica Nikolic) Subject: Re: pascal Date: Wed, 29 Nov 1995 14:25:21 GMT Zeljko Jovanovic je napisao: >> > A liste u Basicu si zaboravio... ? ;) >> A sta ce mi liste kad imam lepe dinamicke nizove? :)) Da sam na tvom mestu, posle ove izjave bih odmah prodao modem, kompjuter, frljnuo indeks u kontejner, i otiso ispred Vuka da trazim posao. -- D Break, CONT repeats
pascal.350 postmast,
From: ivica@galeb.etf.bg.ac.yu (Ivica Nikolic) Subject: Re: pascal Date: Wed, 29 Nov 1995 14:54:25 GMT Milos Visnjic je napisao: >> Evo DIREKTNOG prevoda C programa na PASCAL, TEXT je terminisan nulom, >> dakle >> ide do 65535 (ili nesto manje) karaktera, cak i vise ako se program >> prevede >> u PROTECTED rezimu, upotrebio sam nezgrapne skupove (IN !), jer sam >> pre par >> poruka rekao da i PASCAL ima ISALPHA! E pa nije bas tacno, ima >> ISCHARALPHA >> funkciju koja je ekvivalent, ali ta funkcija je u WINPROCS unit-u, >> dakle ...... >> Konkurencija kaze: (izvod iz BorlandPascal HELP-a) >> FormatStr procedure (DRIVERS unit) >> >> Declaration: >> procedure FormatStr(var Result: String; Format: String; var >> Params); >> Function: ovo gledaj \/ \/ \/ \/ \/ >> A generalized string formatting routine that works much like the C ..... >> SEM PREOPTERECENJA OPERATORA i visestrukog nasledjivanja ( A da vidim >> ko >> koristi visestruko nasledjivanje sem u RTL-u), nema toga sto C++ moze >> a >> Pascal ne MOZE! I sta si time dokazao? Da Pascal moze sve sto moze i C++? Onda nisi morao toliko da pises, svaki programski jezik moze sve sto moze i C++, ali nije u tome sustina problema. Ti si zapravo dokazao da je Pascal bio neupotrebljiv za efektivno programiranje (za sta uostalom nije ni izmisljen), dok na njega nisu nakalemljene brojne ekstenzije preuzete direktno iz C(++)-a i Module. Ne, nisam ja nikav Pascalomrzac, mnogo sam kilobajta sorsa napisao u Turbo Pascalu, ali jednog trenutka sam video da se 95% mojih Pascal programa sastoji od budzevina koje nisu deo standardnog Pascala. Samim tim, moji Pascal programi su bili neportabilni, cak su postali zavisni i od verzije Turbo Pascala u kojoj su pisani. S druge strane, C i C++ su strogo standardizovani jezici, njihova sintaksa i semantika uopste ne zavise od implementacije (sa izuzetkom Borlandovih DDVT u OWL 1.x, koja je ionako zstarela), takodje i standardna biblioteka funkcija. Posto su skoro sve "budzevine" u Pascal prenesene iz C(++)-a, logicno je da je u C(++)-u njihovo koriscenje mnogo prirodnije uklopljeno u samu filozofiju jezika. Cim pocnes da pises malo veci program, takve sitne neprirodnosti pocinju da zuljaju, i pocinju da uticu na samu strukturu programa. Jos jedna stvarcica koju i danas ne mogu da oprostim Pascalu je nemogucnost da funkcija vrati vrednost koja nije osnovnog tipa (Integer, String, Boolean...). 1992. sam poceo da na Amigi pisem prilicno veliki program za titlovanje. Poceo sam ga u HiSoft Pascalu, koji je neka vrsta TP klona za Amigu. Taj Pascal je, naravno, podrzavao i Amigine sistemske pozive - formalno nije bilo nikakvih prepreka da se ceo projekat izgura u njemu. E, onda su poceli da se gomilaju problemi: prvo, nema staticke inicijalizacije, sve promenljive moraju da se inicijalizuju pomocu := operatora. Zero-terminted stringovi nisu podrzani u funkcijama za rad sa stringovima, nema pointerske aritmetike... Onda mi je do ruku dosao jedan udzbenik za C, i video sam da najvise vremena trosim na zadovoljavanje Pascal-ovih sintaksnih hirova, koji su u originalnoj Pascalovoj filozofiji bili sasvim opravdani. I tako sam ja lepo naucio C, i ceo projekt uradio u Aztec C-u. Da rezimiram, pre nego sto se potpuno rasplinem: sve frizirane verzije Pascala omogucuju da se u Pascalu pisu C(++) programi. Verujte mi na rec, C(++) programi se mnogo bolje pisu u C(++)-u. -- Program too big to fit in memory
pascal.351 postmast,
From: mladen.adamovic@blbbs.elf.bl.ac.yu (MLADEN ADAMOVIC) Subject: Re: pascal Date: Sun, 26 Nov 95 20:13:00 -1 -+=+- Dejan Jelovic rece : -+=+- DJ> A da optimizacija nije bitna... Pa sad, ja drzim da je rucna DJ> optimizacija cak stetna, ali ona koju radi kompajler? Razlika sa i bez DJ> nje je drrrasticna. Ja mislim da prepirka da li je bolje optimizovan BORLAND C i BORLAND PASCAL manje-vise nebitna. Algoritamski program treba da bude optimizovan, a ostalo moze da dovede do ubrzanja programa najvise desetak puta, sto uglavnom nije toliko bitno... ... Newtonov slabo poznati sedmi zakon : Bolje vrabac u ruci nego iznad gl ___ Blue Wave/QWK v2.12
pascal.352 postmast,
From: mladen.adamovic@blbbs.elf.bl.ac.yu (MLADEN ADAMOVIC) Subject: RE: PASCAL Date: Sun, 26 Nov 95 20:42:00 -1 -+=+- Nemesis rece : -+=+- Ne> UZMESH I IZBUSIS DISKETU BUSILICOM NA NEKOM MESTU ! Istim su se zanimali Sezamovci pre par godina i shvatili su da busilica nije potrebna - dovoljno je samo malo bocnuti iglom, ako ne zelite MNOOOOOGO losih sektora :). ... XjhgwaduiwueoqimnBDDDDKJSBMN! <--Tag created on Pentium ___ Blue Wave/QWK v2.12
pascal.353 postmast,
From: srdjan.dakic@panon.ns.ac.yu (Srdjan Dakic) Subject: Re: pascal Date: Wed, 22 Nov 1995 14:40:00 GMT --> From: "Dejan Jelovic" <djelovic@sezam.UUCP> DJ> > Licno mislim da su oba pomenuta jezika slabija od Ca (basic DJ> > mi je suvise mrljav, pascal suvise krut) DJ> Licno mi se cini da su C i Pascal (ili Modula-2, nije bitno) funkcional DJ> identicni, s tim sto Pascal ipak ima daleko citljiviju sintaksu, plus nema DJ> perverzne operatore koji danas uz optimizujuce kompajlere ionako vise nisu DJ> bitni. Ako cemo do citljivosti, onda je M2 najcitljivija bas zbog preterivanja u doslednosti sa Virtovim zamislima vizuelno lepog sourcea. ;) Meni se licno cini da Pascal ima vise apstrakcije od C-a (i M2 sa nestandardnim -- citaj: uobicajenim -- bibliotekama) Pogledaj samo rad sa fajlovima. C mu vise dodje preprocesor za asembler, sto sa opmizujucim kompajlerima koje pominjes, svakim danom postaje sve tacnije.
pascal.354 zeljkoj, -> #344, icile
> Dobro, a cemu sluze ti stringovi od 32K. Da li je to navedeno > samo kao 'pa, eto ima i to pored svega' ili kao neka ozbiljna > prednost koja se ispoljava u programiranju. Na primer, često mi treba da tekstualnu datoteku sa jaaaaaako velikim redovima učitam u niz i onda obradjujem. U BASIC-u svaki taj red može biti velik 32 kB a niz može zauzimati CELU raspoloživu memoriju. > Naravno da je bolja obavezna deklaracija promenljivih jer to > daje nakakvu preglednost programu. Ako toga nema, otkud znam > sta sam u programu upotrebio kao imena promenljivih? To je > narocito znacajno ako neki program pises, pa Ako baš voliš možeš da staviš OPTION EXPLICIT pa će te BASIC terati da deklarišeš svaku promenljivu. :) > dopunis. Kako ces znati sta ti znaci svako od imena > promenljivih? Vidi se po imenu promenljive. > Meni je bilo zanimljivo nesto sto je neki covek rekao o Bejziku > i ostalim (boljim programskim jezicima, u koje ubrajam i > Pascal): "Kada resavate neki problem u nekom programskom jeziku > (normalnom) mozete u potpunosti da se posvetite resavanju tog > problema, dok u Bejziku morate da razmisljate na koji nacin je > to moguce implementirati." Upravo je obrnuta stvar. Sve što zamisliš, u BASIC-u već postoji i samo ga treba upotrebiti, dok ako radiš u Pascalu prvo treba smisliti kako pomoću stvari koje ti stoje na raspolaganju to da uradiš. Plus što je Pascal previše 'krut' i tera te da o čitavom problemu razmišljaš imajući sam jezik u vidu. Suviše se i vremena i prostora troši na razne deklaracije, begin/end-ove, uopšte stvari koje nisu od samog značaja za rešenje problema. Navedi primer nekog problema koji ćeš ti u Pascalu brzo i lako rešiti, a ja u BASIC-u prvo treba 'da razmislim o načinu na koji ću to implementirati'. Tvrdim da ne postoji ni jedan jedini takav problem. Naravno, postoji mnooogo stvari oko kojih ćeš se, pišući ih u Pascalu, dobro namučiti, a koje se u BASIC-u brzo i elegantno rešavaju. BASIC programeru daje veliku slobodu što se tiče samog stila pisanja programa. Recimo da imam promenljivu MikaPeraLaza. Ako je ne deklarišem, ona je po defaultu tipa SINGLE (single precision floating-point). Recimo da želim da ona bude tipa INTEGER. Najjednostavnije je da umesto identifikatora MikaPeraLaza pišem MikaPeraLaza%. Ono % na kraju znači da je promenljiva tipa INTEGER. Recimo da želim da obavezno deklarišem svaku promenljivu i napisao sam OPTION EXPLICIT na početku programa. U tom slučaju ću promenljivu deklarisati sa DIM MikaPeraLaza%. Ali - šta ako želim da se promenljiva zove samo MikaPeraLaza bez onog % na kraju, a da ipak bude tipa INTEGER? Napisaću DIM MikaPeraLaza AS INTEGER. Šta ako želim da sve promenljive koje počinju slovom M, kao i slovima A, B, C, D budu INTEGER? Jednostavno ću ih implicitno deklarisati sa DEFINT A-D, M. Dalje, promenljivu je moguće proglasiti za globalnu u modulu u kome je definisana korišćenjem DIM SHARED umesto samo DIM. Ako želim da bude globalna za sve module, koristiću COMMON SHARED, itd. Recimo da imam dinamički niz koji je (negde u programu, ne mora na početku) deklarisan kao DIM Niz(10000) AS STRING (koji je BTW, mogao biti deklarisan i sa DIM Niz$(10000) ili npr. sa DIM Niz$(0 TO 10000), i u toku izvršavanja programa vidim da je ono 10000 suviše malo. Jednostavno ću sa REDIM PRESERVE Niz(20000) AS STRING povećati njegovu veličinu na 20000 pri tom sačuvavši postojeće podatke. Liste su u BASIC-u sasvim nepotrebne. Naravno - veličina niza ne mora biti poznata pri pisanju programa. Može se (negde u programu) napisati INPUT A%: DIM Niz(A%), što je u Pascalu nezamislivo. Itd, itd... moglo bi tu još mnoogo da se priča. :)
pascal.355 zeljkoj, -> #345, icile
> -> Deklarisanje promenljivih mozda jeste korisno, ali je > strasno zamorno. -> Uostalom, postoji OPTION EXPLICIT, pa mozes > da biras. :) > > Postoji mnogo glupih komandi koje je potrebno zadati tom Bejzik > kompajleru da bi ozbiljan programer bio zadovoljan njegovim > radom. Zar OVO nije zamorno? Teško ti je da jedanput napišeš OPTION EXPLICIT? Ok, niko te ne tera. To je samo ukoliko čELIŠ da te kompajler TERA da deklarišeš promenljive. Možeš ih deklarisati i bez toga, a ne moraš ih uopšte ni deklarisati. Mnogo je više zamorno za svaku promenljivu pisati var xyz: tip;
pascal.356 zeljkoj, -> #347, icile
> A, ima li taj fantasticni Bejzik nesto tipa record na Paskalu > ili strukture na C-u?? Naravno da ima. BASIC sve ima. :) Evo malog primera (da ne objašnjavam, shvatićeš o čemu se radi): TYPE PodaciORadnicima Ime AS STRING*20 Prezime AS STRING*30 GodinaRodjenja AS INTEGER Plata AS DOUBLE END TYPE Onda lepo deklarišeš promenljivu sa npr. DIM xyz AS PodaciORadnicima
pascal.357 zeljkoj, -> #349, postmast
> Da sam na tvom mestu, posle ove izjave bih odmah prodao modem, > kompjuter, frljnuo indeks u kontejner, i otiso ispred Vuka da > trazim posao. Ali - nisi na mom mestu. :) > -- > D Break, CONT repeats -- C Nonsense in BASIC
pascal.358 dvesic, -> #354, zeljkoj
> Upravo je obrnuta stvar. Sve što zamisliš, u BASIC-u već > postoji i samo ga treba upotrebiti, dok ako radiš u Pascalu > prvo treba smisliti kako pomoću stvari koje ti stoje na > raspolaganju to da uradiš. Plus što je Aman, dogovori se vec jednom pricamo li o IMPLEMENTACIJI ili o samom jeziku ? Tesko da u standardnom Basic-u ima sve sto postoji. > Naravno - veličina niza ne mora biti poznata pri pisanju > programa. Može se (negde u programu) napisati INPUT A%: DIM > Niz(A%), što je u Pascalu nezamislivo. Nije bas nezamislivo, nego se moras petljati sa pokazivacima :) > BASIC programeru daje veliku slobodu što se tiče samog stila > pisanja programa. U kom smislu ? Nista manju slobodu ne daje ni Pascal. > ona bude tipa INTEGER. Najjednostavnije je da umesto > identifikatora MikaPeraLaza pišem MikaPeraLaza%. Ono % na kraju > znači da je promenljiva A sto je to elegantnije od jednog Integer MikaPeraLaza ?
pascal.359 dvesic, -> #355, zeljkoj
> Mnogo je više zamorno za svaku promenljivu pisati var xyz: tip; Mislis : Var MikaPeraLaza, IovoJeCeoBroj, AiOvo : Integer; Nije tako strasno, zar ne ? > CONF JOIN PC.PROG.6 > CONF REPLY 7.356 > > Naravno da ima. BASIC sve ima. :) > Evo malog primera (da ne objašnjavam, shvatićeš o čemu se > radi): Ne vredi. Ti i dalje pricas o implementaciji. Ovo NIJE standardni BASIC.
pascal.360 vasic, -> #327, zeljkoj
> A šta će mi liste kad imam lepe dinamičke nizove? :)) Dobro, Genije, objasni nam kako se uklanja element iz sredine lepog dinamičkog niza?
pascal.361 zeljkoj, -> #358, dvesic
> Aman, dogovori se vec jednom pricamo li o IMPLEMENTACIJI ili o > samom jeziku ? Tesko da u standardnom Basic-u ima sve sto Rekli smo: BP 7.0 vs MS QBX PDS 7.1. > A sto je to elegantnije od jednog Integer MikaPeraLaza ? Da. Uvek se vidi kog je tipa promenljiva, a ne moraš svaki čas da gledaš po deklaracijama.
pascal.362 zeljkoj, -> #359, dvesic
> Ne vredi. Ti i dalje pricas o implementaciji. Ovo NIJE > standardni BASIC. Nisu ni null-terminated stringovi (o kojima je bilo reči) standardni Pascal. Dakle, pričamo o konkretnim implementacijama. Standarde smo samo malo pominjali na početku diskusije. :)
pascal.363 zeljkoj, -> #360, vasic
> Dobro, Genije, objasni nam kako se uklanja element iz sredine > lepog dinamičkog niza? Na primer, ako treba ukloniti n-ti element niz Niz (koji recimo ima x elemenata): DIM PomocniNiz(x - n) b = 0 FOR a = n + 1 TO x PomocniNiz(b) = Niz(a) b = b + 1 NEXT a REDIM PRESERVE Niz(x-1) b = 0 FOR a = n TO x - 1 Niz(a) = PomocniNiz(b) b = b + 1 NEXT a ERASE PomocniNiz I sve to može lepo da se upakuje u proceduru tako da se svako brisanje vrsi prostim pozivom proc. Ok, priznajem da je relativno komplikovano i sporo. :) Bolje je definisati tip koji sadrzi podatak i pokazivac na sledeci podatak u nizu, pa onda dimenzionisati niz tog tipa. Podaci se uklanjaju prostim menjanjem pokazivaca. Ovo je kao neka simulacija liste. :) Jeste da nije bas tako elegantno kao kod pravih (pascalovih) listi, ali bar nema ogranicenja od 64 kB. ;)
pascal.364 djelovic, -> #362, zeljkoj
> Nisu ni null-terminated stringovi (o kojima je bilo reči) standardni > Pascal. Dakle, pričamo o konkretnim implementacijama. Standarde smo > samo malo pominjali na početku diskusije. :) Netačno. Stringovi terminisani nulom su realizovani sasvim standardnim Pascal konstrukcijama. PString nije ništa drugo do ^char. Što se tiče tvoje tvrdnje da se mnoge stvari rade brže u Bejziku, moram da se složim s tobom. No, to je sve dok ostajemo u okviru manjih projekata i prototpiova. Upravo zbog te snage "da se nešto napravi na brzinu", Bjezik se pokazao kao malo lošiji od Pascala za veće projekte.
pascal.365 djelovic, -> #363, zeljkoj
> bas tako elegantno kao kod pravih (pascalovih) listi, ali bar nema > ogranicenja od 64 kB. ;) Ni Pascal nema ograničenje za liste od 64K.
pascal.366 vitez.koja, -> #356, zeljkoj
#=> Naravno da ima. BASIC sve ima. :) Ama, baš sve? Da li ima i unije (union, iz C-a) ?
pascal.367 maksa, -> #363, zeljkoj
>> menjanjem pokazivaca. Ovo je kao neka simulacija liste. :) >> Jeste da nije bas tako elegantno kao kod pravih (pascalovih) >> listi, ali bar nema ogranicenja od 64 kB. ;) Nema, ako se cela stvar baci u HUGE model. A znaš kolika su u tom slučaju usporenja? ;) PS A ono tupavo ograničenje od 64 Kb (sorsa) po modulu?
pascal.368 postmast,
From: markom@setnet.co.yu (Marko Milivojevic) Subject: Re: Pascal Date: Mon, 27 Nov 1995 21:05:00 ***> Citiram '"milan Maksimovic"' za 'All' <*** "M> - Izuzeci Delphi... -=> MM <=- * Origin: Exodus, Novi Beograd #22-09# (011) 137-477 SETNet: (38:103/130)
pascal.369 postmast,
From: markom@setnet.co.yu (Marko Milivojevic) Subject: Re: Pascal Date: Mon, 27 Nov 1995 21:05:00 ***> Citiram '"predrag Knezevic"' za 'All' <*** "K> Nema potrebe, jer ce rezultat kompajliranja biti isti - chr(27) ce "K> biti zamenjeno vrednoscu koju vraca ova sistemska funkcija. Ne bi trebalo, pogotovo pri kompajliranju iz Windowsa, zato sto Chr(27) ne mora uvek da bude ESC ;-) -=> MM <=- * Origin: Exodus, Novi Beograd #22-09# (011) 137-477 SETNet: (38:103/130)
pascal.370 zeljkoj, -> #366, vitez.koja
> Ama, baš sve? Da li ima i unije (union, iz C-a) ? Nema ih, a i nisu potrebne u BASIC-u.
pascal.371 vasic, -> #363, zeljkoj
> Na primer, ako treba ukloniti n-ti element niz Niz (koji recimo ima x > elemenata): > DIM PomocniNiz(x - n) > Ok, priznajem da je relativno komplikovano i sporo. :) Ne samo da je komplikovano i sporo, nego je tvoje rešenje još i duplo komplikovanije i sporije nego što bi moralo da bude. Šta će ti uopšte pomoćni niz? Ali nije poenta u tome nego u... > Bolje je definisati tip koji sadrzi podatak i pokazivac na sledeci podatak > u nizu, pa onda dimenzionisati niz tog tipa. Podaci se uklanjaju prostim > menjanjem pokazivaca. Ovo je kao neka simulacija liste. :) Simuliraćeš ti tu ne samo listu nego i kompletan heap mehanizam koji je inače ugrađen u "normalne" jezike - one sa pointerima. I to za svaku takvu listu iz početka. Shvataš li sad šta se htelo reći sledećom rečenicom: "Kada resavate neki problem u nekom programskom jeziku (normalnom) mozete u potpunosti da se posvetite resavanju tog problema, dok u Bejziku morate da razmisljate na koji nacin je to moguce implementirati." (icile, 7.334) Ok, ako je tebi lepo sa Basic-om i ne osećaš njegova ograničenja - nema problema, radi u Basic-u. Samo nemoj da pokušavaš da nas ostale ubediš kako je to najbolji jezik na svetu. I _ni_slučajno_ nemoj reći kako je Visual Basic idealna alatka za Windows programiranje. It... makes... me... MAAAAAAD!!! - I see, you are no stranger to pain. - I've been working with Visual Basic. - Aww. - Twice. - Awwwwwww....
pascal.372 vitez.koja, -> #356, zeljkoj
#=> Evo malog primera (da ne objašnjavam, shvatićeš o čemu se radi): #=> Ime AS STRING*20 A meni nešto pričaš o upotrebi stringova fiksne dužine? :) sk
pascal.373 vitez.koja, -> #359, dvesic
#=> Ne vredi. Ti i dalje pricas o implementaciji. Ovo NIJE #=> standardni BASIC. Je li, kad si zadnji put video standardni Pascal? sk ps. A Basic? :)
pascal.374 janko,
Kao mali prilog diskusiji koji je bolji jezik, i na temu tvrdnje da je BASIC bolji jezik za stvari "na brzinu", tvrdim da je AWK najbolji. ;) A idući put ću smisliti zadatak kojim ću vam dokazati da je najbolji jezik asembler za 8086. ;) A posle i zadatak kojim ću dokazadti da je najbolji jezik Word Basic. ;) Evo vam zadatka, pa rešite u svom omiljenom jeziku, da vidim koliko će vam trebati koda: ;> --- Iseci odavde U ovom tekstu prebrojati reči i ispisati svaku različitu reč i broj njenih pojavljivanja, a zatim i broj različitih reči u tekstu. Takođe ispisati sve delove teksta koji se ne mogu smatrati rečima i broj njihovog pojavljivanja, kao i broj ne-reči u tekstu. (Smatrati da je REž svaki deo teksta koji čine slova s/h i engleske abecede, ako pre njega ne postoji nikakav znak koji nije belina ili otvorena zagrada, i ako iza tog dela teksta ne stoji pre beline a posle specijalnih znakova i cifara neki drugi znak koji pripada s/h abecedi. Veliko i malo slovo naše abecede mora se smatrati za isti znak!) --- Iseci dovde Broji se broj linija koda rešenja, a nije dozvoljeno da postoje dve naredbe u jednoj liniji! Takođe nije dozvoljeno koristiti rutine koje se NE dobijaju u programskom paketu samog jezika. Moje rešenje, na jeziku (GNU) AWK, ima 31 liniju. Ko, i na kom jeziku, može manje? === Celo rešenje: === function toyulower( a ) { a= tolower( a ) sp = "ŠĐžĆčšđčćž" for ( k=1;k<6;k++ ) gsub( substr( sp, k, 1 ) , substr( sp, k+5, 1 ), a ) return a } { for (i=1; i<=NF; i++) { rs = match( $i, /[a-zA-Zšđč枊ОĆč]+/ ) rl = RLENGTH if ( ( rs == 1 || ( rs == 2 && substr( $i, 1, 1 ) == "(" )) \ && match( substr( $i, rl + rs ), /[a-zA-Zšđč枊ОĆč]/ ) == 0 ) a[ toyulower( substr( $i, rs, rl ) ) ]++ else b[ $i ]++ } } END { for ( i in a ) { printf( "%-20s %4d\n", i, a[ i ] ) dw++ } print "Total of different words " dw print "*** Not a word ****" for ( i in b ) { printf( "%-20s %4d\n", i, b[ i ] ) nw++ } print "Total not words " nw } ==== Deo rezultata ("..." su umesto izostavljenih delova): == ... broj 4 ... reč 2 ... i 9 ... Total of different words 66 *** Not a word **** s/h 2 ne-reči 1 Total not words 2
pascal.375 postmast,
From: Vlado.Menkovski%f132.n108.z38@setnet.setnet.co.yu (Vlado Menkovski) Subject: Ne mozzam da vlezam vo Informa Date: Fri, 24 Nov 1995 20:10:00 Abe dimi ova Informava ne se trpi pa ja po navika si doaggam tuka !!!! i ondak to .... ( Citat od K-15 ) Pozdravi doma... ... How come pizza gets to your house faster than the police? * Origin: SETNet: ĆMemory Master BBS +389/91-164-877ž SKOPJE (38:108/132)
pascal.376 postmast,
From: KLIMENT.ANDREEV%f108.n108.z38@setnet.setnet.co.yu (KLIMENT ANDREEV) Subject: delphi knjiga Date: Mon, 20 Nov 1995 09:08:00 U ovoj konferenciji proccitao sam poruku da je u izdanju CIP-a izassla knjiga za Delphi. Molio bih one koje znaju da mi kazzu koliko kossta ova knjiga u DEM i gde mozze da se nabavi, kako bih se javio ortaku koji zzivi u BGD-u da mi kupi istu i possalje u Skoplju. Ako neko vecc ima ovu knjigu voleo bih da ccujem i komentar u ovoj ili nekoj drugoj odgovarajuccoj konferenciji. 10x Chombe * OLX 2.1 TD * Bel Spagette. * Origin: SETNet: Struga BBS +389 96 74074 * Macedonia * (38:108/108)
pascal.377 postmast,
From: OGNEN.DUZLEVSKI%f108.n108.z38@setnet.setnet.co.yu (OGNEN DUZLEVSKI) Subject: Strimovi Date: Fri, 24 Nov 1995 16:11:00 PS>Moze li nesto malo vise o ovim strimovima? PS>U dokumentaciji od BP ne nadjoh im ni pomena. PS>Da li je to ugradjeno u sam Paskal ili je neka dodatna biblioteka? Zavisi kako gledas na stvari :). Turbo Vision je biblioteka objekata koja dolazi uz BP - streamovi su objekti u TV-u. Stream-ovi se koriste za pamcenje drugih objekata bilo u EMS memoriji (TEmsStream) bilo na disku (TDosStream i TBufStream). Svi ovi objekti su naslednici jedne klase - TStream. Ako imas originalnu instalaciju BP-a, pogledaj \BP\EXAMPLES\DOCDEMOS\TV\STREAM1.PAS i STREAM2.PAS. Svaki objekat koji zelis da zapises u Stream mora sadrzati sledece dve metode - constructor Load(var S:TStream) i procedure Store(var S:TStream). U ovim metodima se citaju/zapisuju u Stream podatci koje objekat sadrzi. E, sad, objekat naslednik ili instanca stream-a koji zapisuje gorenavedene objekte u stream, zapisuje ih metodom PUT a cita ih sa GET. Normalno ovde je dozvoljen typecasting. Da bi objekat mogao biti zapisan u stream on mora da bude registrovan tj. da mu bude dodeljen jedinstven broj kojim je povezan. Registracija se obavlja preko registration record-a u kojem se nalazi gorenavedeni jedinstveni broj koji sam odabires, ofset VMT tabele objekta (dobija se kao Ofs(TypeOf(Objekat)^), i adrese metoda Load i Store. Registracija se obavlja procedurom RegisterType koja kao parametar prima promenljivu tipa TStreamRec tj. nas registration record. Streamovi su sjajan metod za cuvanje objekata. Borland Pascal omogucava tri stream-a, u EMS memoriji, i dva tipa fajlova, sa i bez baferisanog pristupa (TDosStream i TBufStream). Uz malo znanja moguce je naslediti TStream i napisati TXmsStream - stream koji cuva objekte u XMS memoriji. Nadam se da sam pomogao. :) Ako je nesto ostalo nejasno, reci slobodno. Ognen * OLX 2.1 TD * The easiest way to woman's heart is thru 'er chest. * Origin: SETNet: Struga BBS +389 96 74074 * Macedonia * (38:108/108)
pascal.378 postmast,
From: OGNEN.DUZLEVSKI%f108.n108.z38@setnet.setnet.co.yu (OGNEN DUZLEVSKI) Subject: Strimovi Date: Fri, 24 Nov 1995 13:07:00 VS>Kako vidim, strimovi ti nisu strani :). Interesuje me da li je moguce VS>(mislim da jeste moguce, samo je pitanje kako) snimiti _objekte_ u VS>strim na disku, a posle te iste ucitati sa diska? uses Crt,Objects; type PMyObject = ^TMyObject; TMyObject = object(TObject) x,y:PString; constructor Init(s1,s2:String); destructor Done; virtual; procedure ConCat; constructor Load(var S:TStream); procedure Store(var S:TStream); virtual; end; constructor TMyObject.Init(s1,s2:String); begin inherited Init; x:=NewStr(s1); y:=NewStr(s2); end; destructor TMyObject.Done; begin DisposeStr(x); DisposeStr(y); inherited Done; end; procedure TMyObject.ConCat; begin WriteLn('Strings before: ',x^,', ',y^); WriteLn('Concat. : ',x^+' '+y^); end; constructor TMyObject.Load(var S:TStream); begin x:=S.ReadStr; y:=S.ReadStr; end; procedure TMyObject.Store(var S:TStream); begin S.WriteStr(x); S.WriteStr(y); end; const RMyObject:TStreamRec= ( Objtype : 110; VmtLink : Ofs(TypeOf(TMyObject)^); Load : @TMyObject.Load; Store : @TMyObject.Store); procedure RegisterMyObject; begin RegisterType(RMyObject); end; var ObjFile:PBufStream; PMO : PMyObject; begin ClrScr; WriteLn('Sada zapisujemo objekte u stream'); RegisterMyObject; ObjFile:=New(PBufStream,Init('stream.dat',stCreate,1024)); PMO:=New(PMyObject, Init('This', 'is')); ObjFile^.Put(PMO); Dispose(PMO,Done); PMO:=New(PMyObject, Init('a', 'stream')); ObjFile^.Put(PMO); Dispose(PMO,Done); PMO:=New(PMyObject,Init('example','.')); ObjFile^.Put(PMO); Dispose(PMO,Done); Dispose(ObjFile,Done); WriteLn('Rezultat: fajl stream.dat koji sadrzi objekte na disku.'); WriteLn; {sada citamo zapisani stream } WriteLn('Sada citamo objekte iz stream-a.'); WriteLn; ObjFile:=New(PBufStream,Init('stream.dat',stOpenRead,1024)); repeat PMO:=PMyObject(ObjFile^.Get); if PMO<>NIL then PMO^.ConCat; until PMO=NIL; Dispose(ObjFile,Done); end. Nadam se da sam pomogao. :) Ognen * OLX 2.1 TD * Pain - a feeling that I have to eat all she cooks. * Origin: SETNet: Struga BBS +389 96 74074 * Macedonia * (38:108/108)
pascal.379 postmast,
From: OGNEN.DUZLEVSKI%f108.n108.z38@setnet.setnet.co.yu (OGNEN DUZLEVSKI) Subject: swap Date: Fri, 24 Nov 1995 13:08:00 PS>Ima li neko kakav fin unit za swap u DOS shell? TApplication.DosShell radi isti onaj swap koji dobijes opcijom DOS SHELL u Borland PAscal IDE-u. Valjda je dovoljno ? :) Ognen * OLX 2.1 TD * You have a terminal illness - check your terminal. * Origin: SETNet: Struga BBS +389 96 74074 * Macedonia * (38:108/108)
pascal.380 postmast,
From: OGNEN.DUZLEVSKI%f108.n108.z38@setnet.setnet.co.yu (OGNEN DUZLEVSKI) Subject: EMS XMS 2/2 Date: Fri, 24 Nov 1995 13:11:00 >>> Continued from previous message extended buss; this being the price paid for PC compatibility. D.M.A. LEVELS Although we have discussed the operation of a single device using the D.M.A., it is custom to cater to the needs of several devices by providing several D.M.A. channels, each one dedicated to a peticualar device. The 8237 provides four seperate D.M.A. channels, known as levels 0 through 3. Correspondingly, there are 4 D.M.A. request lines, DACK 0-3. These lines are prioritized according to two possible protocols set by a bit in the controller command register, either fixed priority, either fixed priority where lower D.M.A. levels have higher priority than higher levels, or rotating priority, where each level takes turn at having the highest priority. The PC BIOS sets the 8237 to operate in fixed priority mode on power up, and it is inadvisable to change this. The PC/AT adds to the number of D.M.A. channels by using two 8237 D.M.A. controllers. Since one channel is used to cascade one controller into the other, this is acually adds an additional 3 channels, all of which appears on the 16-bit additional expanision connectors of the PC/AT and dedicated to 16-bit transfers. Apart from its uses for high speed data transfer, the D.M.A. controller includes counter hardware that cycles through the memory addresses, so as a byproduct of its design, it can also be used to refresh dynamic memory, saving the cost of a separate memory refresh controller. This is what IBM chose to do in the PC, and on all models Level 0 performs this function with the DREQ being driven from counter 1 of the 8253 timer at a 15 microsecond intervals. The complete assignmentes for the levels are as follows. For all machines, these levels are capable of 8-bit transfers: Level 0 - Memory Refresh Level 1 - Not assigned and usally avalible, Certain local area network interfaces may use this level Level 2 - Used by the floppy disk controller and not free for any other purpose Level 3 - May be used by the hard disk controller on some PC/XT models. On floppy disk only, PC/AT and some PC/XT machines, this level is free for other uses. For the PC/AT only, these levels are capable of 16-bit transfers: Level 4 - used for cascading Level 5-7 - Avalaible on AT special connections ___--------------------------------------------------------------------- Ognen * OLX 2.1 TD * Software Factory * Origin: SETNet: Struga BBS +389 96 74074 * Macedonia * (38:108/108)
pascal.381 postmast,
From: OGNEN.DUZLEVSKI%f108.n108.z38@setnet.setnet.co.yu (OGNEN DUZLEVSKI) Subject: Turbovizija 2/2 Date: Fri, 24 Nov 1995 16:15:00 >>> Continued from previous message R.Assign(Bounds.B.X-1, Bounds.A.Y+1, Bounds.B.X, Bounds.B.Y-1); VScrollBar := New(PScrollBar, Init(R)); VScrollBar^.Options := VScrollBar^.Options or ofPostProcess; if Left then VScrollBar^.GrowMode := gfGrowHiY; Insert(VScrollBar); R.Assign(Bounds.A.X+2, Bounds.B.Y-1, Bounds.B.X-2, Bounds.B.Y); HScrollBar := New(PScrollBar, Init(R)); HScrollBar^.Options := HScrollBar^.Options or ofPostProcess; if Left then HScrollBar^.GrowMode := gfGrowHiY + gfGrowLoY; Insert(HScrollBar); Bounds.Grow(-1,-1); MakeInterior := New(PInterior, Init(Bounds, HScrollBar, VScrollBar)); end; procedure TDemoWindow.SizeLimits(var Min, Max: TPoint); var R: TRect; begin TWindow.SizeLimits(Min, Max); Min.X := LInterior^.Size.X + 9; end; { TMyApp } procedure TMyApp.HandleEvent(var Event: TEvent); begin TApplication.HandleEvent(Event); if Event.What = evCommand then begin case Event.Command of cmNewWin: NewWindow; cmNewDialog: NewDialog; else Exit; end; ClearEvent(Event); end; end; procedure TMyApp.InitMenuBar; var R: TRect; begin GetExtent(R); R.B.Y := R.A.Y + 1; MenuBar := New(PMenuBar, Init(R, NewMenu( NewSubMenu('~F~ile', hcNoContext, NewMenu( NewItem('~O~pen', 'F3', kbF3, cmFileOpen, hcNoContext, NewItem('~N~ew', 'F4', kbF4, cmNewWin, hcNoContext, NewLine( NewItem('E~x~it', 'Alt-X', kbAltX, cmQuit, hcNoContext, nil))))), NewSubMenu('~W~indow', hcNoContext, NewMenu( NewItem('~N~ext', 'F6', kbF6, cmNext, hcNoContext, NewItem('~Z~oom', 'F5', kbF5, cmZoom, hcNoContext, NewItem('~D~ialog', 'F2', kbF2, cmNewDialog, hcNoContext, nil)))), nil)) ))); end; procedure TMyApp.InitStatusLine; var R: TRect; begin GetExtent(R); R.A.Y := R.B.Y - 1; StatusLine := New(PStatusLine, Init(R, NewStatusDef(0, $FFFF, NewStatusKey('', kbF10, cmMenu, NewStatusKey('~Alt-X~ Exit', kbAltX, cmQuit, NewStatusKey('~F4~ New', kbF4, cmNewWin, NewStatusKey('~Alt-F3~ Close', kbAltF3, cmClose, nil)))), nil) )); end; procedure TMyApp.NewDialog; var Bruce: PView; Dialog: PDemoDialog; R: TRect; C: Word; begin R.Assign(20, 6, 60, 19); Dialog := New(PDemoDialog, Init(R, 'Demo Dialog')); with Dialog^ do begin R.Assign(3, 3, 18, 6); Bruce := New(PCheckBoxes, Init(R, NewSItem('~H~varti', NewSItem('~T~ilset', NewSItem('~J~arlsberg', nil))) )); Insert(Bruce); R.Assign(2, 2, 10, 3); Insert(New(PLabel, Init(R, 'Cheeses', Bruce))); R.Assign(22, 3, 34, 6); Bruce := New(PRadioButtons, Init(R, NewSItem('~S~olid', NewSItem('~R~unny', NewSItem('~M~elted', nil))) )); Insert(Bruce); R.Assign(21, 2, 33, 3); Insert(New(PLabel, Init(R, 'Consistency', Bruce))); R.Assign(3, 8, 37, 9); Bruce := New(PInputLine, Init(R, 134)); Insert(Bruce); R.Assign(2, 7, 24, 8); Insert(New(PLabel, Init(R, 'Delivery instructions', Bruce))); R.Assign(15, 10, 25, 12); Insert(New(PButton, Init(R, '~O~k', cmOK, bfDefault))); R.Assign(28, 10, 38, 12); Insert(New(PButton, Init(R, 'Cancel', cmCancel, bfNormal))); end; C := DeskTop^.ExecView(Dialog); Dispose(Dialog, Done); end; procedure TMyApp.NewWindow; var Window: PDemoWindow; R: TRect; begin Inc(WinCount); R.Assign(0, 0, 45, 13); R.Move(Random(34), Random(11)); Window := New(PDemoWindow, Init(R, 'Demo Window', WinCount)); DeskTop^.Insert(Window); end; var MyApp: TMyApp; begin ReadFile; MyApp.Init; MyApp.Run; MyApp.Done; DoneFile; end. * OLX 2.1 TD * When Rolling Stones are high, are they Rolling Stoned ? * Origin: SETNet: Struga BBS +389 96 74074 * Macedonia * (38:108/108)
pascal.382 postmast,
From: OGNEN.DUZLEVSKI%f108.n108.z38@setnet.setnet.co.yu (OGNEN DUZLEVSKI) Subject: Knjiga Za Objektni Tp Date: Fri, 24 Nov 1995 16:19:00 VM>OD> MM> Ja sam genije. Shvatio sam pravo resenje za konflikt VM>OD> MM> Bosni!!! Svi mi treba da se pomirimo i zivimo lepo ka VM>OD> MM> ranije. Treba mi neka knjiga iz politike da vidim prakticn VM>OD> MM> primenu i najbolje resenje za moj zakljucak. VM>OD> Mesas babe i zabe a i pricas gluposti. VM>A i ovo je NET.PASCAL Znam da je NET.PASCAL, ali procitaj jos jednom chain i videces da nisam ja taj koji je progresio. Bas zato sto je NET.PASCAL treba napisati nesto konstruktivno samo ako imas da takvo sta kazes, a ne da filozofiras unaokolo...Covek je lepo postavio pitanje o nekoj knjizi koja ce mu objasniti kako da prakticno programira pod Windowsima a kao odgovor je dobio nesto sto nema blage veze sa konf. Ognen * OLX 2.1 TD * "Singing in the rain" is the best way to catch pneumonia * Origin: SETNet: Struga BBS +389 96 74074 * Macedonia * (38:108/108)
pascal.383 postmast,
From: Asmir.Badnjevic%p1.f135.n135.z38@setnet.setnet.co.yu (Asmir Badnjevic) Subject: EMS XMS Date: Tue, 28 Nov 1995 18:41:35 AB> Sta ti je DMA? Ako sam i cuo onda sam zaboravio (jesam slozio AB> recenicu :)))). <OD> DMA = Direct Memory Access. Ovo je najbrzzi naccin da prenosiss blokove <OD> memorije sa jednog mesta na drugi, da pristupass memoriji itd. Sad mi je tek jasnije :-). Mozes li i ti da objasnis to prenosenje mem. OviH dana sam pokusavao nesto pomocu ASM ali se nije pokazao tako brz ko sto se prica :(((. P.S. Uvozim OBJ fajlove u paskal. T.J. Koristim mijesano ASM i paskal :(. ... Sta ja o tome da vam razbijam glavu. * Origin: Vila co.BBS # Prijedor_RS # +381 79 11 301 # SETNet: (38:135/135.1)
pascal.384 postmast,
From: Asmir.Badnjevic%p1.f135.n135.z38@setnet.setnet.co.yu (Asmir Badnjevic) Subject: EMS XMS Date: Tue, 28 Nov 1995 18:41:35 <PR> E ovako. NAjbolje je iz assemblera, ali cistog, jer nista nije toliko <PR> brzo kao 100% assembler. ali ... ako ti je to sporo koristi razne <PR> trikove: nemoj da scroll-ujes za 1 vec za 2,3 tacke i OBAVEZNO to radi <PR> kad je mlaz u dnu ekrana. Ja mislim da nisi malo shvatio ovo sto sam napisao (ne potcjennju jem te) :))). Ne zamjeram ti, ja kad nesto napisem treba i sam da Ga desifrujem :((. Bi li mogao objasniti malo kako bi ti to uradio. Mozda i koji primjer :>>. pozdraw, ASKO ... Kod homosexualca je uvijek - prvo pa musko :). * Origin: Vila co.BBS # Prijedor_RS # +381 79 11 301 # SETNet: (38:135/135.1)
pascal.385 postmast,
From: Asmir.Badnjevic%p1.f135.n135.z38@setnet.setnet.co.yu (Asmir Badnjevic) Subject: EMS XMS Date: Tue, 28 Nov 1995 18:41:38 Zdravo Pedja, da li si vidio da mi posaljes onaj sors za memoriju (pleaseeeeeeeeeeeeee) ??? pozdraw, ASKO ... Novac kvari covjeka ... upotrebjavajte cekove. * Origin: Vila co.BBS # Prijedor_RS # +381 79 11 301 # SETNet: (38:135/135.1)
pascal.386 postmast,
From: markom@setnet.co.yu (Marko Milivojevic) Subject: Re: Pascal Date: Wed, 29 Nov 1995 08:10:00 ***> Citiram 'Ivica Nikolic' za 'All' <*** IN> - Prakticno je nemoguce iskopirati takvu disketu, cik da vidim IN> nekog da probusi disketu tacno na mestu treceg sektora u 76-om IN> cilindru. - Jeftinije od hardlock-a, i moze se lako uraditi u IN> domacoj radinosti - od dodatnog hardvera potrebna je samo igla. Evo principa hakovanja... NDD -> vidis koji su sektori bad NDD -> na novoj disketi te sektore obelezis kao BAD COPY IMEPROGRAMA ;-) -=> MM <=- * Origin: Exodus, Novi Beograd #22-09# (011) 137-477 SETNet: (38:103/130)
pascal.387 postmast,
From: markom@setnet.co.yu (Marko Milivojevic) Subject: Re: Pascal Date: Wed, 29 Nov 1995 08:10:00 ***> Citiram '"zeljko Jovanovic"' za 'All' <*** "J> Da, ali samo u BP 7.0. :) I to je null-terminated string sto znaci "J> da u stringu ne sme da postoji chr(0) karakter. Nije tesko napraviti svoj sistem astringova koji ce raditi isto kao Pascalovi (r), a biti ograniceni na 65533 bajta :-) -=> MM <=- * Origin: Exodus, Novi Beograd #22-09# (011) 137-477 SETNet: (38:103/130)
pascal.388 zeljkoj, -> #371, vasic
> takvu listu iz početka. Shvataš li sad šta se htelo reći > sledećom rečenicom: > > "Kada resavate neki problem u nekom programskom jeziku > (normalnom) mozete u potpunosti da se posvetite resavanju tog > problema, dok u Bejziku morate da razmisljate na koji nacin je > to moguce implementirati." Isto tako mogu da se pronadju stvari koje u BASIC-u postoje, a koje bi u Pascalu bilo potrebno simulirati.
pascal.389 postmast,
From: ivica@galeb.etf.bg.ac.yu (Ivica Nikolic) Subject: Re: Pascal Date: Fri, 1 Dec 1995 17:35:10 GMT Marko Milivojevic je napisao: >> Evo principa hakovanja... >> NDD -> vidis koji su sektori bad >> NDD -> na novoj disketi te sektore obelezis kao BAD >> COPY >> IMEPROGRAMA Ne, nisi razumeo princip. Zasticeni program bi disketu proveravao tako sto bi direktno od samog floppy kontrolera zahtevao da formatira namerno unistene sektore, uz zaobilazenje DOS-a i BIOS-a, i direktno od kontrolera bi dobijao informaciju da li je formatiranje uspelo. Ako je uspelo, znaci da je sektor lazno oznacen kao los. Naravno, tu bi se nasao neki pametnjakovic koji bi pokusao da osteti sve sektore u okolini, u nadi da ce time unistiti i sektor koji zasticeni program proverava. Zbog toga program treba da pokusa da formatira i okolne sektore, i da zakljuci da je doslo do hakeraja, ako su i okolni sektori unisteni. -- Allways look on the bright side of death
pascal.390 kriss, -> #340, postmast
˙˙>> TRECA STVAR .... ˙˙>> UZMESH I IZBUSIS DISKETU BUSILICOM NA NEKOM MESTU ! ˙˙ Nedostaci: Neko te tuži zato što mu je otišla glava na drajvu / zato što su mu prodao faličnu (opasnu) disketu / zato što ne može da pravi rezervnu kopiju programa (što ima pravo) ... Bilo je govora o ovome na SEZAM-u, pre jedno godinu ipo, dve.
pascal.391 visnja, -> #350, postmast
> Da rezimiram, pre nego sto se potpuno rasplinem: sve frizirane > verzije Pascala omogucuju da se u Pascalu pisu C(++) programi. > Verujte mi na rec, C(++) programi se mnogo bolje pisu u > C(++)-u. Znas, u pravu si, ovaj odgovor mi se svidja. Najvise me nervira sto TPU napravljen verzijom 6.0 ne radi u verziji 7.0. U C-u me nervira vreme kompajliranja, ali to nema veze sa samim jezikom, trenutno se ubijam da nadjem PXEngine za protected rezim za pascal, - za C sam nasao "od prve". Zatim, ako se pogleda lista trazenosti programerskih poslova na zapadu, C i C++ su na zavidnom nivou, a pascal-a nema nigde. Zatim sam pozvao ortaka koji poznaje c++ u praksi i rekao mu sta sve da mi demonstrira, jer imam dosta aplikacija u pascalu. Nije lose. Teplate-ovi su mi oduvek trebali, mocna je to stvar. Nastavicu ja da proucavam C++, ali jos uvek ne smem u njemu necega ozbiljnijeg da se prihvatim, pascal mi je domacinski teren. Pozdrav, Visnja.
pascal.392 .sima, -> #379, postmast
║║ TApplication.DosShell radi isti onaj swap koji dobijes opcijom DOS ║║ SHELL u Borland PAscal IDE-u. Valjda je dovoljno ? :) Da ako se pravi TV aplikacija, ali ako ne, onda mora da se napravi posebna procedura.
pascal.393 .sima, -> #274, postmast
║║ Kad smo vec kod toGa i to si moGao poslati u mail, ako nije veliko ║║ :). Znas li mozda brze prebacivanje nekoG dijela memoriju u neki ║║ druGi dio memorije, recimo da sliku iz pomocne mem. prebacim na ║║ ekran? Koristio sam MOVE komandu iz paskala ali je spora (dobro, ║║ brza je ali ne za moje potrebe) i ne moGu stvoriti efekat ║║ skrolovanja ekrana a da Za prebacivanje memorije koristim MoveEMB funkciju iz XMS specifikacije. Pošto radi u zaštićenom modu vrlo je brza. 4MB prebaci za tren. Evo da me ne bi davili. Ovo je prerađen ( malo :) unit za rad sa XMS-om. Naravno DMA je brži, ali ja nisam nešto mnogo primetio razliku kod svakodnevnog programiranja. {$A+,B-,D-,E-,F+,G+,I+,L-,N-,O-,P-,Q-,R-,S-,T-,V+,X+,Y-} unit XMS; interface const X_Ok = $00;{ function succeeded. } X_NotImplemented = $80;{ the function is not implemented. } X_VDiskFound = $81;{ a VDISK device is detected. } X_A20Err = $82;{ an A20 error occurs. } X_GenErr = $8E;{ a general driver error occurs. } X_UnrecovErr = $8F;{ an unrecoverable driver error occurs. } X_HMAnotExist = $90;{ the HMA does not exist. } X_HMAInUse = $91;{ the HMA is already in use. } X_HMAminSize = $92;{ DX is less than the /HMAMIN= parameter. } X_HMANotAlloced = $93;{ the HMA is not allocated. } X_A20StillEnabled = $94;{ the A20 line is still enabled. } X_OutOfMemory = $A0;{ all extended memory is allocated. } X_OutOfHandles = $A1;{ all available extended memory handles are in use.} X_InvalidHandle = $A2;{ the handle is invalid. } X_SourceHanldeInv = $A3;{ the SourceHandle is invalid. } X_SourceOffsetInv = $A4;{ the SourceOffset is invalid. } X_DestHanleInv = $A5;{ the DestHandle is invalid. } X_DestOffset = $A6;{ the DestOffset is invalid. } X_LenInv = $A7;{ the Length is invalid. } X_Overlap = $A8;{ the move has an invalid overlap. } X_Parity = $A9;{ a parity error occurs. } X_EMBUnlocked = $AA;{ the block is not locked. } X_EMBLocked = $AB;{ the block is locked. } X_LockOverflow = $AC;{ the block's lock count overflows. } X_LockFail = $AD;{ the lock fails. } type X_MoveRec = record case boolean of False : (duz : Longint; { 32-bit number of bytes to transfer } SHandle : Word; { Handle of source block } SOffset : Longint; { 32-bit offset into source } DHandle : Word; { Handle of destination block } DOffset : Longint; { 32-bit offset into destination block } ); True : (duzina : Longint; { note that the lenght must be even ! } ZeroS : Word; { zero sourcehandle means a seg:ofs } SPtr : Pointer; { pointer to "normal" memory } ZeroD : Word; { zero dest handle means a seg:ofs } DPtr : Pointer; { pointer to "normal" memory } ); end; PX_MoveRec = ^X_MoveRec; var X_Installed: boolean; MovRec: X_MoveRec; procedure X_Version(var ver, rev:word;var HMA:boolean); function X_HMARequest(Space: word): byte; function X_HMARelease: byte; function X_GlobalEA20: byte; function X_GlobalDA20: byte; function X_LocalEA20: byte; function X_LocalDA20: byte; function X_QueryA20(var A20: boolean): byte; function X_QuerryFree(var Max, Tot: word):byte; function X_AllocEMB(size:word; var handle:word):byte; function X_FreeEMB(handle: word): byte; function X_MoveEMB(movrec:PX_MoveRec):byte; function X_LockEMB(handle: word; var adresa:longint):byte; function X_UnLockEMB(handle: word):byte; function X_GetHanInfo(handle: word; var LCount, FreeHan:byte; var EMBduz:word):byte; function X_ReallocEMB(handle, NewSize: word):byte; function X_RequestUMB(ReqSize:word; var UMBSeg, Size: word):byte; function X_ReleaseUMB(UMBSeg: word):byte; function X_ReallocUMB(ReqSize, UMBSeg:word):byte; implementation var X_Control: longint; procedure X_Start; assembler; asm mov ax,4300h int 2Fh cmp al,80h jne @@NoDriver mov ax, 4310h int 2fh mov word ptr X_Control, bx mov word ptr X_Control+2, es inc X_Installed @@NoDriver: end; procedure X_Version(var ver, rev:word;var HMA:boolean);assembler; asm xor ah, ah call X_Control les di, [ver] mov [word ptr es:di], ax les di, [rev] mov [word ptr es:di], bx les di, [HMA] mov [byte ptr es:di], dl end; function X_HMARequest(Space: word): byte; assembler; asm mov ah, 1 mov dx, Space call X_Control dec ax jz @@Success mov al, bl @@Success: end; function X_HMARelease: byte; assembler; asm mov ah, 2 call X_Control dec ax jz @@Success mov al, bl @@Success: end; function X_GlobalEA20: byte; assembler; asm mov ah, 3 call X_Control dec ax jz @@Success mov al, bl @@Success: end; function X_GlobalDA20: byte; assembler; asm mov ah, 4 call X_Control dec ax jz @@Success mov al, bl @@Success: end; function X_LocalEA20: byte; assembler; asm mov ah, 5 call X_Control dec ax jz @@Success mov al, bl @@Success: end; function X_LocalDA20: byte; assembler; asm mov ah, 6 call X_Control dec ax jz @@Success mov al, bl @@Success: end; function X_QueryA20(var A20: boolean): byte; assembler; asm mov ah, 7 call X_Control les di, [A20] mov [byte ptr es:di], al mov al, bl end; function X_QuerryFree(var Max, Tot: word):byte; assembler; asm mov ah, 8 call X_Control les di, [Max] mov [word ptr es:di], ax les di, [Tot] mov [word ptr es:di], dx mov al, bl end; function X_AllocEMB(size:word; var handle:word):byte; assembler; asm mov ah, 9 mov dx, size call X_Control les di, [handle] mov [word ptr es:di], dx dec ax jz @@Success mov al, bl @@Success: end; function X_FreeEMB(handle: word): byte; assembler; asm mov ah, 0Ah mov dx, handle call X_Control dec ax jz @@Success mov al, bl @@Success: end; function X_MoveEMB(movrec: PX_MoveRec):byte; assembler; asm push ds mov ah, 0Bh lds si, movrec call X_Control dec ax jz @@Success mov al, bl @@Success: pop ds end; function X_LockEMB(handle: word; var adresa:longint):byte; assembler; asm mov ah, 0Ch mov dx, handle call X_Control les di, [adresa] mov [word ptr es:di],bx mov [word ptr es:di+2],dx dec ax jz @@Success mov al, bl @@Success: end; function X_UnLockEMB(handle: word):byte; assembler; asm mov ah, 0Dh mov dx, handle call X_Control dec ax jz @@Success mov al, bl @@Success: end; function X_GetHanInfo(handle: word; var LCount, FreeHan:byte; var EMBduz:word):byte;assembler; asm mov ah, 0Eh mov dx, handle call X_Control les di,[LCount] mov [Byte ptr es:di],bh les di,[FreeHan] mov [Byte ptr es:di],bl les di,[EMBduz] mov [Word ptr es:di],dx dec ax jz @@Success mov al, bl @@Success: end; function X_ReallocEMB(handle, NewSize: word):byte;assembler; asm mov ah, 0Fh mov dx, handle mov bx, NewSize call X_Control dec ax jz @@Success mov al, bl @@Success: end; function X_RequestUMB(ReqSize:word; var UMBSeg, Size: word):byte;assembler; asm mov ah, 10h mov dx, ReqSize call X_Control les di, [UMBSeg] mov [Word ptr es:di], bx les di, Size mov [Word ptr es:di], dx dec ax jz @@Success mov al, bl @@Success: end; function X_ReleaseUMB(UMBSeg: word):byte;assembler; asm mov ah, 11h mov dx, UMBSeg call X_Control dec ax jz @@Success mov al, bl @@Success: end; function X_ReallocUMB(ReqSize, UMBSeg:word):byte;assembler; asm mov ah, 12h mov bx, ReqSize mov dx, UMBSeg call X_Control dec ax jz @@Success mov al, bl @@Success: end; begin X_Installed:=false; X_Start end.
pascal.394 atech, -> #390, kriss
> ˙˙>> TRECA STVAR .... > ˙˙>> UZMESH I IZBUSIS DISKETU BUSILICOM NA NEKOM MESTU ! > > ˙˙ Nedostaci: > > Neko te tuzi zato sto mu je otisla glava na drajvu / zato sto > su mu prodao falicnu (opasnu) disketu / zato sto ne moze da > pravi rezervnu kopiju programa (sto ima pravo) ... Bilo je > govora o ovome na SEZAM-u, pre jedno godinu ipo, dve. I ne samo to. Dodje majstor Mica i izmeni jedan jedini bajt u programu koji radi sve ovo low level formatiranje i ode zastita u nepovrat. Btw, moja iskustva su takva da ne trebe insistirati na hardverskoj zastiti disketa od kopiranja vec zastitu koncipirati na drugi nacin a kupcu obezbediti neogranicen backup. Pored toga, testirajuci neke od americkih zastita disketa (softverskih, nema busenja i sl ;)) mogu da kazem sledece: - Svaku od ovih je bilo moguce prevariti koriscenjem klasicnih alata za rad sa disketama bez ikakvih izmena programa. O tome da se isti posao moze odraditi menjenjem programa koji vrsi kontrolu da i ne govorim... - Korisnici koji su koristili ovakve diskete zalili su se da im cesto posle nekog vremena dolazi do fizickog ostecenja diskete (obicno se radi o slavnom sector no found) pa su primorani da ponovo jure (cak i da ponovo placaju) novu disketu. E sad, kakvo je stanje kod nas (mnosto pisaca 'jeba' procedura, 'fuck the user' sistem) mozda nekome ovo i odgovara...:( poz, Blagoje
pascal.395 visnja, -> #390, kriss
> Neko te tuži zato što mu je otišla glava na drajvu / zato što > su mu prodao faličnu (opasnu) disketu / zato što ne može da > pravi rezervnu kopiju programa (što ima pravo) ... Bilo je > govora o ovome na SEZAM-u, pre jedno godinu ipo, dve. Axa, malo morgen kod nas. Ako neko za ovo moze da me tuzi, ne bih ni stitio programe, nego bih i ja tuzio pirate, kada bi kod nas zakon funkcionisao tako lepo...
pascal.396 pedjak, -> #369, postmast
> Ne bi trebalo, pogotovo pri kompajliranju iz Windowsa, zato > sto Chr(27) ne mora uvek da bude ESC ;-) Bilo je reči o tome kako to radi Borland Pascal. Kako to radi Delphi, ne znam.
pascal.397 postmast,
From: DENIS@vila.bc.co.yu Subject: ReadLn Date: Sat, 02 Dec 95 09:56:22 GMT Hi ! Jedna sitnica koja mew vec dugo muci: Zasto u Pascal-u kursor prelazi na pocetak novog reda bez obzira da li napisao Read ili ReadLn.Npr Var T : Real; Begin Write('***Vrijeme: '); Read(T); WriteLn('sec.'); End. Kod mene ce to na ekranu izgledati ovako(ako unesem T=554): ***Vrijeme : 554 sec. Isto kao i da sam napisao: Var T : Real; Begin Write('***Vrijeme: '); ReadLn(T); WriteLn('sec.'); End. Unaprijed hvala ! !)enis ... Backup not found: (A)bort (R)etry (P)anic --- FMail/386 1.02 * Origin: Vila co.BBS ■ Prijedor_RS ■ +381 79 11 301 ■ B.C.: (95:790/113)
pascal.398 postmast,
From: bady@setnet.co.yu (Attila Megyeri) Subject: Rimski Date: Thu, 30 Nov 1995 23:30:51 Ima li neko gotov algoritam za konverziju rimskih brojeva u decimalne brojeve ? Ili bar za proveru (tj. da li je broj ispravan ) ? Nije problem u kompleksnosti algoritma, vec sto me mrzi da ga pisem ako ga neko od vas ima :) Pozdrav: ---Bady ... "Scotty, beam me up another Blue Wave message." * Origin: Prometheus BBS - The Northern Frontier - SETNET (38:111/107)
pascal.399 postmast,
From: OGNEN.DUZLEVSKI%f108.n108.z38@setnet.setnet.co.yu (OGNEN DUZLEVSKI) Subject: pascal Date: Fri, 01 Dec 1995 08:37:00 "M>Logicki izrazi tipa "X in ['a'..'z']" su (mnogo?) sporiji nego "M>pesacko ispitivanje "if X>='a' and X<='z'", ali nema ni to veze. Bilo nekad. Od verzije 7.0 optimizovan je rad sa setovima. "M>Ono sto ima veze je da tvoj pascal program radi sa baferom duzine "M>do 256 bajtova, sto je smesno. Ako ne koristis Turbo Pascalov tip "M>string, nego radis sa najobicnijim nizom, onda ne mozes da "M>koristis funkciju Length, pa ti program manje ili vise raste, vec "M>prema tome kako organizujes stringove. A sta je sa null-terminisanim stringovima u BP-u ? Oni imaju poseban unit sa svim potrebnim funkcijama/procedurama. Ognen * OLX 2.1 TD * ROBOCOMM - a ROBOCOP for modems. * Origin: SETNet: Struga BBS +389 96 74074 * Macedonia * (38:108/108)
pascal.400 postmast,
From: utvara@setnet.co.yu (Slobodan Utvic) Subject: PASCAL Date: Fri, 01 Dec 1995 13:46:00 I heard MLADEN ADAMOVICF@ MacADAMOVIC said PASCAL : Ne> UZMESH I IZBUSIS DISKETU BUSILICOM NA NEKOM MESTU ! MA> Istim su se zanimali Sezamovci pre par godina i shvatili su da MA> busilica nije potrebna - dovoljno je samo malo bocnuti iglom, ako ne MA> zelite MNOOOOOGO losih sektora :). Pa moze i sa magnetnom iglom :))) * Slobodan Utvic(Utvara)-email:utvara@setnet.co.yu,utvara@epitaph.bc.co.yu * sutvic@osmeh.fon.bg.ac.yu & sutvic@alef.yucca.co.yu ... ... Oxymoron: Only Choice. * Origin: ECSTASY BBS * Indjija * 022 53-884 * SETNet: (38:111/119)
pascal.401 postmast,
From: Dusan.Lacarac%f119.n111.z38@setnet.setnet.co.yu (Dusan Lacarac) Subject: Zadatak Date: Sat, 02 Dec 1995 15:49:01 Cujte ja sam malo glup sto se tice programiranja (malo vise). Pa dali bi neko znao da uradi ovaj zadatak: NAPISATI FUNKCIJU PROST KOJA VRACA LOGICKU UREDNOST TROU AKO JE BROJ PROST ODNOSNO FOLS AKO JE BROJ SLOZEN!!! Naravno radi se u PASCAL-u Pozdrav!!!!!!!!!!! RAPTOR ... I call things as I see them; If I didn't see them, I make them up! * Origin: ECSTASY BBS * Indjija * 022 53-884 * SETNet: (38:111/119)
pascal.402 dvesic, -> #401, postmast
>> NAPISATI FUNKCIJU PROST KOJA VRACA LOGICKU UREDNOST TROU AKO >> JE BROJ PROST ODNOSNO FOLS AKO JE BROJ SLOZEN!!! 'Oćemo jedno malo takmičenje ? :) Ovo je najbrže rešenje koje znam :) ========================================================= Function JeProst(n: Integer): Boolean; Var Vrni : Boolean; korak , delisa , gorgran: Integer; Begin Vrni := true; If n > 3 Then Begin korak := 2 ; delisa := 5 ; gorgran:= trunc(sqrt(n)) ; Vrni := (n mod 2) <> 0 ; Vrni := Vrni And ( (n mod 3) <> 0) ; While Vrni And ( delisa <= gorgran ) Do Begin Vrni := (n mod delisa)<>0 ; delisa := delisa+korak; korak := 6-korak; End End; JeProst := Vrni; End; =========================================================
pascal.403 kile, -> #391, visnja
>> Zatim, ako se pogleda lista trazenosti programerskih poslova na zapadu, >> C i C++ su na zavidnom nivou, a pascal-a nema nigde. A najveći bedak je što je među najtraženijima Visual Basic :(
pascal.404 iznogud, -> #354, zeljkoj
:: BASIC programeru daje veliku slobodu što se tiče samog stila pisanja :: programa. Recimo da imam promenljivu MikaPeraLaza. Ako je ne deklarišem, Jedno malo pitanjce: ti, recimo, ne voliš da pišeš 'option explicit' na početku programa. I negde u programu umesto MikaPeraLaza napišeš MkaPeraLaza (dakle, pogrešno ime promenljive). BASIC shvati da hoćeš da koristiš novu promenljivu, i dodeli joj 0 (default). Rezultat: ti se ubiješ tražeći grešku u programu (program ti ne računa dobro). Možda ipak ima razloga za eksplicitnu deklaraciju? Na kraju krajeva, u svoj novijoj literaturi za BASIC (tj. njegovog vizuelnog burazera) se programeri usmeravaju da zaborave atavizam zvan 'nedeklarisanje promenljivih'...
pascal.405 iznogud, -> #361, zeljkoj
:: Da. Uvek se vidi kog je tipa promenljiva, a ne moraš svaki čas da gledaš :: po deklaracijama. I nije neki argument ;). Recimo, u 'Programming Windows' (C. Petsold) se naširoko rabi tkz. 'Mađarska notacija', gde se imenu promenljive dodaje prefiks u zavisnosti kojeg je tipa. Npr. hHandle, iIntVariable...
pascal.406 evlad, -> #397, postmast
TO: DENIS@vila.bc.co.yu <> Jedna sitnica koja mew vec dugo muci: Zasto u Pascal-u kursor prelazi <> na pocetak novog reda bez obzira da li napisao Read ili ReadLn.Npr zato što je to komanda sa ehom, a enter je <cr><lf> i otera ti kursor dole. rešenje je da podatke uzimaš preko konstrukcije i:=0; repeat buff[i] := ReadKey; inc(i); until #13; stim da moraš ispisati na ekran brojeve :) ili da upamtiš red i kolonu gde si bio (pomoću finkcija) wherex wehery <> Var T : Real; <> Begin <> Write('***Vrijeme: '); savx:=wherex; savy:=wherey; <> Read(T); val(t,tmpstr); gotoxy(savx,savy+length(tmpstr)+1); <> WriteLn('sec.'); <> End. ti odluči kako ćeš da uradiš :)
pascal.407 vitez.koja, -> #402, dvesic
#=> Ovo je najbrže rešenje koje znam :) I koliko vidim netačno za n=1 :) sk
pascal.408 supers, -> #397, postmast
>> Kod mene ce to na ekranu izgledati ovako(ako unesem T=554): >> >> *** Vrijeme : 554 >> sec. Problem je u tome što ti moraš da pritisneš Enter da bi uneo broj :) Napisao ti Read(T); ili ReadLn(T); koji funkcionišu sasvim istovetno kada je unos sa tastature, a ne iz fajla u pitanju, isto ti se hvata. Dakle, prelazak u novi red potiče od tvog stiskanja Entera. Ono što ti želiš, da program ispiše dodatan tekst nakon tvog unosa u istom redu, ne možeš da izvedeš sa standardnom ReadLn procedurom.