pascal.409supers,
-> #398, postmast>> Ima li neko gotov algoritam za konverziju rimskih brojeva u
>> decimalne brojeve ? Ili bar za proveru (tj. da li je broj ispravan
Imam u jednoj knjizi nekoliko takvih gotovih programa, pisanih u
Spectrumovom Basicu :) Ako ti to nije problem, podseti me naknadno da
ti prekucam, sada zbilja nemam vremena...
pascal.410zeljkoj,
-> #404, iznogud> 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).
Da, znam da se ovakve greške teško otklanjaju, ali malo pažnje pri pisanju
imena promenljivih rešava problem. :)
> 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'...
Pa dobro... nravno da je lakše kad kompajler upozorava na pogrešno
napisano (nedeklarisano) ime promenljive.
pascal.411kuki,
-> #407, vitez.koja># => Ovo je najbrže rešenje koje znam :)
> I koliko vidim netačno za n=1 :)
Kako netačno? Pa vratiće true (zar ne)?
pascal.412dvesic,
-> #407, vitez.koja>># => Ovo je najbrže rešenje koje znam :)
>>
>> I koliko vidim netačno za n=1 :)
Kako bre netačno ? Jedino sad da se svađamo oko toga jeste li
1 prost ili ne :)
pascal.413visnja,
-> #400, postmast> Pa moze i sa magnetnom iglom :)))
Dabome, pa namagnetises glavu drajva i unistis klijentu stotinak disketa
i sam drajv pa onda on tebi razbije glavu... :))))
pascal.414mastermind,
-> #412, dvesică─> Kako bre netačno ? Jedino sad da se svađamo oko toga jeste li
ă─> 1 prost ili ne :)
jedinica nije ni prost ni složen broj.prost broj se definiše kao broj koji
ima samo 2 delioca , jedinicu i samog sebe, a složen ima još delioca.
a jedinica nema dva delioca.
MasterMind
pascal.415postmast,
From: igor.grahek@panon.ns.ac.yu (Igor Grahek)
Subject: Re: Delphi
Date: Sun, 3 Dec 1995 10:43:00 GMT
N> From: "Nebojsa Lazic" <nlazic@sezam.UUCP>
N> ali Delphi moze i mnogo vise, nevezano za baze. Najtacnije bi bilo reci
N> da je to zapravo Borland Pascal 8.0 + BDE + gomila klasa za rad sa svim
N> i svacim (pocev od INI datoteka, pa do pisanja client/server aplikacija
Osim klasa za serijsku komunikaciju :( Sto je uostalom Borlandov obicaj.
I.G.or
---
■ SPEED 1.30 #256 ■ Dok se saberem ja se oduzmem
pascal.416postmast,
From: srdjan.dakic@panon.ns.ac.yu (Srdjan Dakic)
Subject: Re: pascal
Date: Mon, 27 Nov 1995 17:06:00 GMT
--> dr.urbano@sezam
DR> Dakle moze li se nesto sakriti u bad sector originalne diskete i kasnije
DR> koristiti ?
Znas sta je zgodno za zastitu? Formatiras jednu traku viska i tu upises
podatke: Ako disketa ima 80 traka ti formatiras 81. i u upises nesto sto
ces koristiti.
Ovo prezivljava i stari dobri COPYIIPC; svojevremeno sam se pucao svojom
genijalnoscu... :))
Samo imas jedan problem -- ovo vise nije pouzdana zastita, jer sad
dosta ljudi zna za to. ;)
pascal.417postmast,
From: srdjan.dakic@panon.ns.ac.yu (Srdjan Dakic)
Subject: Re: pascal
Date: Mon, 27 Nov 1995 17:09:00 GMT
--> "Vladimir Maric" <vitez.koja@sezam.UUCP>
VI> Logicki izrazi tipa "X in ['a'..'z']" su (mnogo?) sporiji nego
VI> pesacko ispitivanje "if X>='a' and X<='z'", ali nema ni to veze.
I 'x>y and r<i' je logicki izraz.
I nije mnooogo brzi, ali je necitak.
pascal.418postmast,
From: srdjan.dakic@panon.ns.ac.yu (Srdjan Dakic)
Subject: Re: swap
Date: Mon, 27 Nov 1995 17:15:00 GMT
--> broker@setnet.co.yu (Predrag Supurovic)
PS> Ima li neko kakav fin unit za swap u DOS shell?
Ako ti treba malo memorije sasvim fino resenje je da uradis BlockWrite
po redu sve dinamicki alocirane promenljive i da ih sa free oslobodis.
Inverzna operacija ide nakon shella.
Cirka 20-30 linija koda.
pascal.419postmast,
From: nemesis@styx.bc.co.yu (NEMESIS)
Subject: RE: PASCAL
Date: Sun, 03 Dec 95 17:38:00 +0100
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 :).
Sad sam se setio .. :)) mada NEPOSTOJI IDELNA ZASTITA :))
---> ... XjhgwaduiwueoqimnBDDDDKJSBMN! <--Tag created on Pentium
Posle 6 sati ppogadjanja ;))
┌────────────────────────────────────────────────────────────────────Ě
│/\■/\ .: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.420postmast,
From: mladen.adamovic@blbbs.elf.bl.ac.yu (MLADEN ADAMOVIC)
Subject: Re: Zadatak
Date: Mon, 04 Dec 95 08:28:00 -1
-+=+- Dusan Lacarac rece : -+=+-
DL> NAPISATI FUNKCIJU PROST KOJA VRACA LOGICKU UREDNOST TROU AKO JE BROJ
DL> PROST ODNOSNO FOLS AKO JE BROJ SLOZEN!!!
Evo ovako, napamet pa se ti posle... snalazi da ispravis eventualne greske
(ne programiram u pascalu, no ovde ti je bitan algoritam ;>).
funktion prost ( broj : integer) : boolean;
var i : integer;
begin
prost:=TRUE;
for i:=1 to sqrt(broj)+1 do
if broj mod i = 0 then prost:=FALSE;
end;
... Isla dva coveka i naidju na drugog.Znaci isli su prvi i treci.
___ Blue Wave/QWK v2.12
pascal.421postmast,
From: nick@setnet.co.yu (Nikola Sivacki)
Subject: arrow <-> char
Date: Sun, 03 Dec 1995 21:51:01
Zna li neka dobra dusa da mi kaze kako je moguce koristiti strelice ili recimo, f. tastere, uz readkey? ASCII strelice na dole je #00 #80, ali tako nesto ne pali! Ne moze da se koristi kao karakter...:(
--== NCK ==-- /SBHS/VBC/
* ■ NICKRead ■ * Guns don't kill people, it's the bullets. Guns get them goi
* Origin: <-=SCORPION=-> * Bgd * 011-699-784 * 22-07 * SetNet: (38:103/136)
pascal.422postmast,
From: Miroslav.Minovic%f133.n103.z38@setnet.setnet.co.yu (Miroslav Minovic)
Subject: Re: delphi knjiga
Date: Sun, 03 Dec 1995 11:50:00
KA> izdanju CIP-a izassla knjiga za Delphi. Molio bih
KA> one koje znaju da mi kazzu koliko kossta ova knjiga
Knjigu sam na sajmu platio 50 din,a cena je verovatno
nesto veca ako je kupis u knjizari.
Inace imas je u CET biblioteci :
CET Computer Shop
Skadarska 45,Beograd
tel./fax : 343 - 043
KA> Ako neko vecc ima ovu knjigu voleo bih da ccujem i komentar
KA> u ovoj ili nekoj drugoj odgovarajuccoj konferenciji.
Inace knjiga je dobra kao uvod,ali je potpuno normalno da
se u jednoj knjizici ne moze opisati ceo Delphi tako da
i dalje >>Akrobat rider<< sa .pdf fajlovima koji se dobijaju
uz Delphi ostaje najbolja knjiga(ako znas engleski).
Pozdrav,Mindza.
... All I need is a Wave and a board to surf it on.
* Origin: SETNet * BBS Politika, Bgd * +381 11 3229148 * 0-24 (38:103/133)
pascal.423jablan,
-> #409, supers>>> Ima li neko gotov algoritam za konverziju rimskih brojeva u
>>> decimalne brojeve ? Ili bar za proveru (tj. da li je broj
>>> ispravan
Hm, ja imam ignore na postmaster, al videh ovu poruku, pa rekoh da
pomognem:). Evo, u turbo paskalu. Valjda radi.
{Roman->Decimal numbers conversion}
{Mladen Jablanovic, 7. Nov 1995.}
{$S-}
program Roman;
function GetValue(C:char):integer;
begin
case C of
'M':GetValue:=1000;
'D':GetValue:=500;
'C':GetValue:=100;
'L':GetValue:=50;
'X':GetValue:=10;
'V':GetValue:=5;
'I':GetValue:=1;
end;
end;
function Convert(Rom:String):integer;
var K,i,Pos:integer;
begin
if Length(Rom)=0 then
Convert:=0
else
if Length(Rom)=1 then
Convert:=GetValue(Rom[1])
else
begin
K:=1;
for i:=0 to Length(Rom) do
IF GetValue(Rom[i])>K then
begin
K:=GetValue(Rom[i]);
Pos:=i;
end;
Convert:=GetValue(Rom[Pos])-
Convert(Copy(Rom,1,Pos-1))+
Convert(Copy(Rom,Pos+1,Length(Rom)-Pos));
end;
end;
begin
WriteLn(Convert(ParamStr(1)));
end.
pascal.424dpredovic,
-> #335, iznogud> :: 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?
>
Ne, ne - _svi_ objekti u Delphi-ju _moraju_ da imaju zajednički koren. Postoji
generička klasa TObject, i ako se ne navede klasa roditelj, podrazumeva se
ona.
Inače, šablone sam oduvek mrzeo. Oni su vrlo očit primer rešavanja problema
nastalih u dizajnu jezika metodom grube sile.
> :: 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.
Hteo sam da kažem da ako Borland ode pod led, ja sa svojim Delphi programima
neću imati ništa više problema od prosečnog OWL programera. OWL ovde uzimam
ne kao primer win programiranja, nego kao primer _komplikovanih_ iliti ne-
trivijalnih programa. Jes da je C++ standardizovan kao jezik, ali što se tiče
biblioteka... Kuku lele... A tek biblioteke klasa... Kuku lele ** 2...
> Standardizacija će da pomogne kod prenošenja programa sa platforme na
> platformu, i sa kompajlera na kompajler - džaba meni što (recimo)
Nešto ne primećujem da se to i dešava u realnom svetu. Ljudima obično kosa
osedi portujući GNU<->MSC ili Borland<->Watcom. Da ne govorimo da ni dva
UNIX-a nisu sors kompatibilna, a kamoli DOS<->UNIX ili MAC<->VMS.
pascal.425dpredovic,
-> #339, oper>>> 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
Eh, sad... I paket BC4.5 može da se zove Mika, pa će jezik opet da bude
C++. Delphi jeste ime paketa, ali jezik je Object Pascal.
>>> Opet, u Delphiju šabloni nisu niti potrebni. Sve klase imaju
>>> zajednički koren, pa se sve svodi na običan type-cast.
> void main(void)
> š
> Erej<int> niz_intova(5);
> Erej<char*> niz_stringova(10);
> ć
>
> žini mi se da ovo, ipak, nije moguće?
Postoji generički TList, koji drži Items pointere. Postoji i TStringList.
Ovo je bio blaži način da se kaže da ne može ;) Ne može, ali u najvećem
broju slučajeva i ne treba. Ono što je najčešće potrebno i moguće je isto
to, ali sa klasama. U stvari ne mogu da se setim da mi je ikada bila potre-
bna lista klot integera. Lista stringova ajde de, ali lista integera?
pascal.426dpredovic,
-> #342, maksa>>> 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.
Upravu si 50%. Što se tiče kompajliranja tu su negde, a što se tiče izvrša-
vanja ni blizu... Ne znam koje si to testove gledao?
> 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
Mogu da se urade C++ klase sa RTTI, pod uslovom da ciljni kompajler nije
MSC, koji je ujedno jedini na DOS platformi za kojeg se pouzdano zna da neće
da pukne. ;) Što potvrđuje prednost implementacije nad standardom. ;)
>>> 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š?
Dobro, dobro... Već sam priznao da to nije _baš_ to... :) Ali... Ne verujem
da firma koja ume da ugradi template mehanizam u C++ (onako kako je to
zamislio tamo neki šveđanin) ne ume to da uradi u jeziku koji može da krpi
kako kod hoće. Object Pascal je Pascal sa C++-like extenzijama. Sve je tu:
private, protected, public, konstruktori, destruktori, etc., etc. ...
Prosto - Borland je od C++ pokupio sve što mu se dopadalo i "prepisao" to
u pascal. Ono što im se nije dopalo, i što guši i u samom C++u nisu preneli.
>>> 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. ;)
Da ga je razvijao samo jedan čovek (kao C++) ihaaaj, gde bi bio...
>>> 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
Kao i Delphi programerima. Ali teško da bi im to garantovalo lep život ;)
pascal.427vitez.koja,
-> #411, kuki#=>> I koliko vidim netačno za n=1 :)
#=> Kako netačno? Pa vratiće true (zar ne)?
Pa kažem netačno :)
Dakle, jedan nije prost broj.
sk
ps. A nisu ni negativni brojevi, ali nema veze :)
pascal.428iznogud,
-> #424, dpredovic:: Ne, ne - _svi_ objekti u Delphi-ju _moraju_ da imaju zajednički koren.
:: Postoji generička klasa TObject, i ako se ne navede klasa roditelj,
:: podrazumeva se ona.
žekaj? žak i osnovni tipovi, recimo integer? U, ala su ga napravili,
svaka im čast.
I kako se pomoću te fantomske klase TObject izbegava upotreba šablona?
Pomoću type-casta? Pa u čemu je onda razlika u odnosu na ono što
pomenuh, tj. da se u C/C++ isto može postići pokazivačima na void i
takođe type-castom?
Koliko ja vidim, čak ni jedinstvena bazna klasa ti ne može dati neke
stvari koje ti šabloni daju - npr. da kontejner zna sam da dinamički
alocira prostor potreban za smeštanje objekta.
:: Inače, šablone sam oduvek mrzeo. Oni su vrlo očit primer rešavanja
:: problema nastalih u dizajnu jezika metodom grube sile.
Imaš pravo da ih mrziš, ali ostatak konstatacije je malo... napamet.
Meni lično su šabloni pomogli da rešim stvari za koje sam ranije morao
da potežem pretprocesor. Ne vidim šta je tu glupo, i kako bi se
drugačije uradilo.
:: Hteo sam da kažem da ako Borland ode pod led, ja sa svojim Delphi
:: programima neću imati ništa više problema od prosečnog OWL programera.
I OWL programer i ti imate isti problem: vezani ste za Borland.
Ostatak sveta koristi MFC.
Što se biblioteka za C++ tiče, ANSI/ISO standard je propisao kako
izgledaju sve standardne biblioteke klasa - kao što na svakom C
kompajeru možeš da napišeš '#include <stdio.h>', tako ćeš za neko
vreme (čim se standard primi) moći da upotrebljavaš standardne klase
za stringove, matrice ili kontejnere na bilo kom C++ kompajleru.
U tome je prednost standardizovanih jezika.
PS Raspitaj se malo: postoje biblioteke za razvijanje aplikacija koje
će raditi pod Win, X Win i Mac sistemima. Napišeš kod, i
prekompajliraš.Možeš jednom da pogađaš u kom su jeziku pravljene.
pascal.429iznogud,
-> #425, dpredovic:: Postoji generički TList, koji drži Items pointere. Postoji i
:: TStringList. Ovo je bio blaži način da se kaže da ne može ;) Ne može,
:: ali u najvećem broju slučajeva i ne treba.
Ovako se sve može dokazati, samo kažeš 'to što nema i ne treba mi' ;)
U praksi je vrlo često potrebna lista integera koja može da raste
prema potrebi.
Probaj da elegantno rešiš sledeći problem: treba napraviti sortiranu
listu, a instance te liste ćeš kasnije koristiti za smeštanje
stringova, integera, objekte klase koje ćeš napisati za dve godine,
kao i instance same liste (uslov za sortiranje će biti broj objekata u
kontejneru).
Ako je moguće, takav kontejner bi mi trebao i na Unix-u, kao i na OS/2
i WinNT za razne procesore (dakle, treba da radi na GNU C++, MSVC i
BC++).
Ili se ni ovo nikada ne javlja u praksi? ;)
pascal.430iznogud,
-> #426, dpredovic:: Mogu da se urade C++ klase sa RTTI, pod uslovom da ciljni kompajler nije
:: MSC, koji je ujedno jedini na DOS platformi za kojeg se pouzdano zna da
:: neće da pukne. ;) Što potvrđuje prednost implementacije nad standardom.
:: ;)
MSVC 2.1 podržava RTTI.
BTW, odakle ti informacija da 'samo MSC neće da pukne'? Ljudi se žale
na, recimo, brzinu koda optimizovanog BC++, ali vrlo retko na njegovu
pouzdanost.
O Watcomu neću ni da pričam, nešto ne vidim da OS/2 ili Auto CAD
'pucaju'.
pascal.431oper,
-> #425, dpredovic
>> > 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
>>
>> Eh, sad... I paket BC4.5 može da se zove Mika, pa će jezik opet da
>> bude C++. Delphi jeste ime paketa, ali jezik je Object Pascal.
To sam i ja rekao. Ako (što reče Maksa) pukne Borland, ja ću
da pređem na majkrosoftov ili vatkomov ili xyzov kompajler i
imaću i RTTI i šablone i sve. A koliko firmi pravi kompajlere
za Object Pascal?
>> Postoji generički TList, koji drži Items pointere. Postoji i
>> TStringList. Ovo je bio blaži način da se kaže da ne može ;) Ne
>> može, ali u najvećem broju slučajeva i ne treba.
Ja volim da je tu. 'leba ne jede ;)
Imao sam priliku da probam Delphi ovih dana. Pošto se bakćem
sa nekim paradox tabelama (koristio sam Paradox Engine uz BC)
odlučio sam da pokušam da neke delove paketa uradim u
Delphiju. Uradio sam ih i cijenim da bi mi za isti posao u
kombinaciji C + OWL + Paradox Engine trebalo tri puta više
vremena. A sa paskalom se nisam družio par godina. Samo, to
su ipak prosti poslovi i mali program. Već pri tom broju,
problem je da se snalaziš u svim onim prozorima. Koliko
Borlandovom C++ u nedostaju vizuelni alati, toliko Delphiju
nedostaju mehanizmi za rad sa većim projektima.
pascal.432ognjen,
-> #414, mastermind)-> a jedinica nema dva delioca.
Jedinica ima dva delioca: Jedinicu i samu sebe. Ekvivalentno
kao što neke kvadratne imaju dva, _ista_, ali i dalje dva,
rešenja.
pascal.433mastermind,
-> #432, ognjenă─> Jedinica ima dva delioca: Jedinicu i samu sebe. Ekvivalentno
ă─> kao što neke kvadratne imaju dva, _ista_, ali i dalje dva,
ă─> rešenja.
Treba da ima 2 različita delioca.... uostalom, pitaj profesora analize,
on će ti objasniti to bolje.
MasterMind
pascal.434mmitrovic,
-> #364, djelovic::::: Netačno. Stringovi terminisani nulom su realizovani sasvim
standardnim
::::: Pascal konstrukcijama. PString nije ništa drugo do ^char.
Mala ispravka, da ne bude zabune:
null-terminated stringovi su tipa PChar=^Char, a
PString je ^String što predstavlja standardni Paskal string.
pascal.435mmitrovic,
-> #265, jablan::::: Hm, kao što sam rekao, trudio sam se da poštujem ISO Pascal
(mada
::::: nisam u potpunosti uspeo), tako da nisam želeo da koristim ove
::::: nestandardne hibridne ekstenzije.
Da budemo precizni, i nisi uspeo. Tvoj program se zasniva na
tome da
je buff tipa String. Standardni paskal nema taj tip već mora da se
koristi
buff: PACKED ARRAY [1..???] of CHAR;
Samim tim otpada upotreba Length funkcije (koja je takođe
hibridna
kvazi-funkcija. Kvazi je zato što se Length(buff) ne prevodi kao
poziv
već kao ord(buff[0]) ). Morao bi da izmišljaš mehanizam za
prepoznavanje
dužine stringa (ili da simuliraš C ili borland paskal sistem
stringova).
::::: E, ja mislim na standarni paskal, jer Borland paskal ne liči
više na
::::: paskal, i smatram da nije dostojan da nosi to ime. Standardan
paskal,
::::: inače, nije za drugo, sem za edukativne svrhe, jer šta će ti
paskal
::::: bez raznih 'uses-a' i sličnih poštapalica?
Ako Borland Paskal nije paskal, šta je onda? Sve programe koji
rade
na Turbo Paskalu 3.0 (zadnja verzija koja je kompletno
"standardna")
prevodi i BP7.0. žak i one koji koriste Turtle graphics ;)
Niko tebe ne bije po ušima da koristiš Uses i slične
"poštapalice",
ali se time lišavaš mnogih prednosti. BTW, packed array of char
postoji
i na BP7.0.
Ako ćemo tim putem, onda ni današnji bejzici nisu bejzici (fuj,
pr.aut.),
C++ nije C, FORTRAN 90 nije FORTRAN. Po tome, mi bismo svi trebali
da
pišemo programe u COBOL-u (ne mogu da verujem da ovo još predaju
na
FON-u, zajebali ljude i uvalili im ovaj šit umesto C++-a :))),
jerbo on
još "živi" u originalnoj formi. Zastarele stvari se i zovu
zastarele
zato što postoje bolje i novije.
::::: Lično mislim da je paskal idealan za učenje programiranja, a da
::::: kasnije, kada se dobro ispeče zanat, treba preći na neki
moćniji
::::: jezik, tj. C ili Modulu-2.
To je definitivno tačno. Mnogo ljudi se lako zapetlja u svoj
ego i
kažu sebi: "Ja sve mogu da držim u glavi" i onda krenu sa
programiranjem
od C-a. Ne kažem da je to loš put (uzeti C), ali je loš izbor uz
prethodno tvrđenje. Onda krenu sa pisanjem do bola prljavih
programa, jer
su oni zaboga hakeri, pa posle ni oni sami ne znaju šta su
napisali.
Sem par ljudi koje sam imao čast da upoznam i koji stvarno sve
drže u
glavi, ostali samo prave sebi probleme. Jedan moj ortak je počeo
sa C-om
i ništa mu nije radilo kako treba, pa sam mu predložio da
privremeno pređe
na paskal. Mesec dana je huktao kako stalno mora da kuca one glupe
rezervisane reči, ali su kroz par meseci, kada se vratio na C, svi
njegovi programi počeli da rade. A i bilo ih je moguće pročitati.
Sa druge strane, teško mogu da se složim da je "standardni"
paskal
idealan za učenje programiranja. Nedostatak gomile potrebnih
tipova i
komandi samo otežava rad i predstavlja probleme pri prelasku na
novije
alatke. Po meni učenje bi trebalo početi od TP5.0 (neverovatno, al
još
ga čuvam na 4 prašnjave 5.25"DD disete :)) pošto je dovoljno
komforan
da ti ne presedne rad, a dovoljno striktan da te natera da naučiš
da
programiraš čisto. Lakše je pretvoriti (sad pričam o C-u):
a = 120;
b = pow10(a/16);
a++;
c = ln(a+6*b)
a = c-b;
u a=(c=ln((a++)+6*(b=pow10((a=120)/16)))-b; nego obratno, zar ne?
;)
::::: neko voli ovo...':). I ja, kao i ti, više volim paskal, ali ću
i ja
::::: verovatno preći na C(++), zato što se u poslednje vreme prave
moćniji
::::: kompajleri i neke stvari se mnogo brže završe.
Ja sam pre mesec dana prešao da ozbiljno radim na C++ i počeo
od
verzije 4.02 (prva verzija C++ u kojoj nisam morao da se
maltretiram oko
održavanja projekta). Sam jezik je boza, ali je OWL noćna mora u
odnosu
na BP-ov OWL (kako su mi neki C++ ljudi obasnili, postoji velika
razlika
i između ovog OWL-a i onog iz C++3.1). Trebalo mi je mesec dana da
iskopam
ko tu šta pije a ko plaća. Da ne pominjem do koje je mere
iskomplikovano
strimovanje objekata (koje je u BP-u bilo boza). Ni dan danas ne
znam kako
da u C++ kreiram objekat sa diska (prethodno snimljenog preko
stream-a).
Da ne pominjem event-response tabele i misterije tipa "kako on
dodjavola
zna koji metod da pozove?!?" :)
Dakle, neke stvari se brže završe (manje koda se ukucava za
neke stvari
zbog proširene sintakse C jezika), ali su neke stvari
iskomplikovane bez
potrebe). Najviše me nervira što ne moga da kreiram instancu
pure-virtual
klase čak iako znam da pure-virtualne metode ne bivaju pozivane.
Nego
moram da nasleđujem i ostavljam prazne funkcije.
pascal.436mmitrovic,
-> #399, postmast::::: Bilo nekad. Od verzije 7.0 optimizovan je rad sa setovima.
Samo ako je skup neprekidan (npr. X in [1..5]). Kad se radi o
uniji više "podskupova" (npr X in [1..5,8..13]) višestruki if je
brži.
pascal.437nbatocanin,
-> #424, dpredovic>> Standardizacija će da pomogne kod prenošenja programa sa
>> platforme na platformu, i sa kompajlera na kompajler -
> džaba meni što (recimo)
>
> Nešto ne primećujem da se to i dešava u realnom svetu.
> Ljudima obično kosa osedi portujući GNU<->MSC ili
> Borland<->Watcom.
Samo da potvrdim ovo. Mada se dosta govori o multiplatformskim
kompajlerima i portabilnosti jezika, veoma malo toga se zaista i
koristi. Šta mi vredi što je jezik isti i za DOS i za Win, kad moram
potpuno da menjam filozofiju programa i korisničkog interfejsa.
pascal.438dpredovic,
-> #428, iznogud> :: Inače, šablone sam oduvek mrzeo. Oni su vrlo očit primer rešavanja
> :: problema nastalih u dizajnu jezika metodom grube sile.
>
> Imaš pravo da ih mrziš, ali ostatak konstatacije je malo... napamet.
Hoćeš nećeš, tako je. Šabloni su posledica toga da C++ nema zajednički
koren klase, i da su svi tipovi nisu baš ravnopravni pa int i nije baš
isto što i MojInt. Prvo je ladno moglo da se reši na način kako je to
rešeno u Delphiju, a drugo je posledica toga da je C++ nastao kao C
pretprocesor.
BTW, kada se standard za klase primi, da li će da se menja i MFC? Ako hoće,
šta će da se radi sa silnim matorim programima i svim silnim string/kontejner
klasama? QQ... Ko će to da prepiše... ;)
pascal.439dpredovic,
-> #430, iznogud> :: Mogu da se urade C++ klase sa RTTI, pod uslovom da ciljni kompajler nije
> :: MSC, koji je ujedno jedini na DOS platformi za kojeg se pouzdano zna da
> :: neće da pukne. ;) Što potvrđuje prednost implementacije nad standardom.
> :: ;)
>
> MSVC 2.1 podržava RTTI.
>
VC 2.1? Za to verovatno treba NT sa 64 mega rama i pojede jedno pola mega
diska?
> BTW, odakle ti informacija da 'samo MSC neće da pukne'? Ljudi se žale
> na, recimo, brzinu koda optimizovanog BC++, ali vrlo retko na njegovu
> pouzdanost.
Mislio sam na finansijsko pucanje, a što se tiče pouzdanosti Borlanda...
Bolje da ne pričamo o tome...
pascal.440dpredovic,
-> #429, iznogud> Probaj da elegantno rešiš sledeći problem: treba napraviti sortiranu
> listu, a instance te liste ćeš kasnije koristiti za smeštanje
> stringova, integera, objekte klase koje ćeš napisati za dve godine,
> kao i instance same liste (uslov za sortiranje će biti broj objekata u
> kontejneru).
>
> Ako je moguće, takav kontejner bi mi trebao i na Unix-u, kao i na OS/2
> i WinNT za razne procesore (dakle, treba da radi na GNU C++, MSVC i
> BC++).
>
> Ili se ni ovo nikada ne javlja u praksi? ;)
Elegantno rešenje tog problema je: uzmi C++ i delji. Problem je u tome
što je taj problem toliko apstraktan da za _mene_ njegovo rešavanje nije
od nikakvog interesa. Ne znam nikoga kome mogu da prodam ono što radim
a kome je bitno portovanje na Unix ili Mac ili OS/2. Uostalom ljudi
koji kupuju moje programe radiće pod onim OS-om pod kojim ja kažem
da treba da rade - da znam neki lep alat za OS/2 radili bi pod njim, a
pošto ne znam - radiće pod Win31/Win95, a programi će da budu u Delphiju/
WatcomSQL/Oracle 7.
Da ne dužimo: ako su šabloni i Borlandova nepredvidiva budućnost jedina
prednost C++ nad Delphijem, onda taj C++ i nije baš nešto naročito ;)
pascal.441dpredovic,
-> #431, oper> To sam i ja rekao. Ako (što reče Maksa) pukne Borland, ja ću
> da pređem na majkrosoftov ili vatkomov ili xyzov kompajler i
> imaću i RTTI i šablone i sve. A koliko firmi pravi kompajlere
> za Object Pascal?
Tjah... Kada pukne Borland ja ću još neko vreme da prodajem Delphiće,
a onda ću da gledam šta ću... Verovatno PowerBuilder ili SQLWindows,
možda čak i VB4. Sve će da zavisi od Win95 verzija alata.
pascal.442spantic,
-> #439, dpredovic> VC 2.1? Za to verovatno treba NT sa 64 mega rama i pojede jedno pola mega
> diska?
Radi odlično i pod Windows 95 sa 16 MB (radilo je i sa 8 MB, ali
i sam W95 štuca sa istom količinom memorije). Zauzima u punoj
instalaciji oko 100 MB na disku.
pascal.443.sima,
-> #420, postmastRE: Prost broj
║║ funktion prost ( broj : integer) : boolean;
║║ var i : integer;
║║ begin
║║ prost:=TRUE;
║║ for i:=1 to sqrt(broj)+1 do
║║ if broj mod i = 0 then prost:=FALSE;
║║ end;
Ovo je sporo, jer nepotrebno ispituje za parne i svake treće neparne
brojeve. Ispitivanje treba da bude za 2 i 3 pa onda za 5,7,11,13,17...
To se dobija tako što se postavi korak:=2, pa se od 5 proba i dodaje
korak. Korak se u svakoj iteraciji izračunava sa korak:=6-korak. Mislim
da je neko već dao ranije ovo rešenje. Pored ovog postoje i razni drugi
algoritmi.
pascal.444iznogud,
-> #438, dpredovic:: BTW, kada se standard za klase primi, da li će da se menja i MFC? Ako
:: hoće, šta će da se radi sa silnim matorim programima i svim silnim
:: string/kontejner klasama? QQ... Ko će to da prepiše... ;)
To je cena standardizacije. Verovatno će se uraditi ono što je uradio
i Borland sa svojim kontejnerskim klasama kada su se pojavili šabloni:
napravili su BIDS, koji može da emulira staru biblioteku, a ostavili
su i staru bibilioteku, radi kompatibilnosti, uz preporuku da je više
niko ne koristi.
Isto se desilo i kada je promovisan ANSI C, a većina programa je
radila na K&R C-u...
BTW, ja bih voleo da MS malo više poradi na MFC-u, i da ga uklopi u
nove standarde jezika. Kod OWL-a mi se svidela robustnost: čak i na Win
3.1, program je vrlo retko pucao 'namrtvo'. Obično bi se javljao neki
izuzetak, kulturno me obaveštavajući da sam uradio nešto nedozvoljeno.
Poslednji MFC koji sam gledao (MSVC 1.5) nije to imao.
pascal.445iznogud,
-> #439, dpredovic:: VC 2.1? Za to verovatno treba NT sa 64 mega rama i pojede jedno pola
:: mega diska?
Oh, da... Prvo nema, pa ako nema onda mi i ne treba, a ako mi treba
onda je glupo, a ako nije glupo onda je mnogo zahtevno...
486DX4 + 16MB RAM košta negde oko 2500 - 3000 DEM... Ne mislim da je
to mnogo za mašinu od koje se živi.
Uopšte, problem sa programiranjem kod nas je mišljenje da to svako
može da radi, i da kompajler mora da radi na _svakoj_ mašini. Pogledaj
CAD-ovce - kada se poslednji put neko požalio što AutoCAD neće da radi
kako treba bez 32 Mb memorije? Ljudi su shvatili šta znači izreka
'plati pa klati', što programerima izgleda nije jasno. Ili su to
'programeri'?
Sebe smatram hobistom, tj. nekim ko ne živi od programiranja. Kada
budem rešio da živim od programiranja, kupiću kompajler koji mi treba,
pogledati šta na kutiji piše, koja je mašina za njega potrebna, i
kupiti tu mašinu - ta šta je 3000 DEM ako ću da je isplatim već od
prvog programa, zar ne? ;)
pascal.446iznogud,
-> #440, dpredovic:: Da ne dužimo: ako su šabloni i Borlandova nepredvidiva budućnost jedina
:: prednost C++ nad Delphijem, onda taj C++ i nije baš nešto naročito ;)
K'o što sam ja rekao, a ti zaboravio, C++ je standardizovan jezik. To
tebi, očigledno, ne znači mnogo, a meni znači (razlika u ukusima).
Između ostalog i zbog toga što je to standardni jezik za programiranje
pod Win / OS/2 / Unix-om, tako da je sva literatura pisana za C/C++.
Ja, eto, volim da isprobavam razne stvari, pa se osećam nelagodno kad
mi je na kompjuteru OS za koji nemam kompajler ;)
Što se tiče Delphi vs C++, tu je malo neukusno raspravljati, pošto je
Delphi C++ nakarikan na pascal sintaksu, onako kako to Borland vidi. U
toj situaciji ja se ipak odlučujem za C++, pošto mi se više sviđa
osnova jezika - C je jezik koji je pisao programer za programere, dok
je pascal jezik koji je pisao profesor za svoje učenike... Clear?
pascal.447jablan,
-> #437, nbatocanin> koristi. Šta mi vredi što je jezik isti i za DOS i za Win, kad
> moram potpuno da menjam filozofiju programa i korisničkog
> interfejsa.
Encapsulation, my dear Watson...
pascal.448djelovic,
-> #424, dpredovic> Inače, šablone sam oduvek mrzeo. Oni su vrlo očit primer rešavanja problema
> nastalih u dizajnu jezika metodom grube sile.
Zašto? Jedini problem sa šablonima jesto to što prave po jednu konkretnu
klasu za svaki tip podataka za koji se koriste, ali ne vidim kako pobeći od
toga sa čvrsto tipiziranim jezikom? Alternativa tome su stalni cast-ovi, koji
bi sa programerskog gledišta bili užasni.
> Jes da je C++ standardizovan kao jezik, ali što se tiče
> biblioteka... Kuku lele... A tek biblioteke klasa... Kuku lele ** 2...
ANSI standard za C++ koji se upravo završava ima sasvim standardizovanu
biblioteku klasa za razne poslove. A što se tiče biblioteka za korisnički
interfejs, pa tu se samo treba odvojiti od nekog proizvođača: ZINC, XVT++ i
drugi nude portabilnost na Motif, Mac-a, text mod, VMS i tako dalje, a čak i
sam MFC je prenet na Alfu i na Mac.
pascal.449djelovic,
-> #444, iznogud> BTW, ja bih voleo da MS malo više poradi na MFC-u, i da ga uklopi u
> nove standarde jezika. Kod OWL-a mi se svidela robustnost: čak i na Win
> 3.1, program je vrlo retko pucao 'namrtvo'. Obično bi se javljao neki
> izuzetak, kulturno me obaveštavajući da sam uradio nešto nedozvoljeno.
> Poslednji MFC koji sam gledao (MSVC 1.5) nije to imao.
Smile :), verzija 2.1 ima ceo "rad" sa izuzecima.
pascal.450nbatocanin,
-> #447, jablan> Encapsulation, my dear Watson...
Da je tako jednostavno, imali bi Windowse na svakom sokoćalu počev od
Spektruma 16K do IBM 3090 ;>
Ajde, probe radi: neka se javi neko ko je uradio ozbiljan C program
na jednom OS i _direktno_ ga prebacio na drugi, a da program nije
ekvivalentan sa nalaženje maksimuma od 100 brojeva.
pascal.451ikordic,
-> #445, iznogudRE:
=> 486DX4 + 16MB RAM košta negde oko 2500 - 3000 DEM... Ne mislim da je
=> to mnogo za mašinu od koje se živi.
Van teme, al' košta mnogo manje :)
pascal.452icile,
Da li neko zna na koji nacin mogu da uskladim brzinu izvrsavanja nekog
programa, nezavisno od masine na kojoj se izvrsava? Trebalo bi da on
moze da se pokrene na masini 286-586, sa Herkules odn. EGA, VGA
kartama - sve kombinacije moguce.
Da li je neko to vec radio, ili bar zna princip po kom bi to moglo da
se uradi?
pascal.453iznogud,
-> #450, nbatocanin:: Ajde, probe radi: neka se javi neko ko je uradio ozbiljan C program
:: na jednom OS i _direktno_ ga prebacio na drugi, a da program nije
:: ekvivalentan sa nalaženje maksimuma od 100 brojeva.
Pod portabilnošću ja obično podrazumevam nešto drugo... Vizuelni
jezici jesu lepa stvar (mnogo ih volim ;) ), ali ako radiš nešto
zaista važno, onda ćeš 'engine' toga uraditi odvojeno od interfejsa
(naravno, u granicama mogućnosti - jednostavno nije moguće sve uraditi
nezavisno od interfejsa). Portabilnost u tom slučaju znači ponovno
pisanje interfejsa, ali... Bar se taj interfejs piše na istom jeziku,
ako je C/C++ u pitanju, 'engine' ti ostaje isti, što nije slučaj kada
se cela stvar pisala na nekom nestandardnom jeziku.
Bilo koji objektni jezik je kao stvoren za ovakav način pisanja
programa.
pascal.454iznogud,
-> #451, ikordic:: Van teme, al' košta mnogo manje :)
Naravno, al' dopustimo sebi, pošto smo profesionalci, suuper monitor,
suuper disk i suuper još dosta toga ;)
pascal.455pedjak,
-> #452, icile> Da li neko zna na koji nacin mogu da uskladim brzinu izvrsavanja
> nekog programa, nezavisno od masine na kojoj se izvrsava? Trebalo bi
> da on
Rešenje postoji, potrebno je samo pri pravljenju potrebnih pauza
konsultovati sistemski časovnik. Ukoliko radiš pod DOS-om, postoji
mogućnost da se izbegne stalno pozivanje funkcije koja vraća tačno
vreme. Na adresi 0000:046Ch se nalazi stanje brojača (četiri
bajta), koji se uvećava pri svakom pozivaju tajmer interapta (08h).
Pri prelasku na novi dan dolazi do njegovog resetovaja.
S obzirom da se int 08h poziva 18.2 puta u sekundi, minimalno
vreme koje se može izmeriti na ovaj način je 1/18.2 s. Dalje
povećanje rezolucije se može ostvariti reprogramiranjem timer
kontrolera, terajući ga da poziva int 08h više puta, nego što je
uobičajeno (što ti ne bih savetovao, ukoliko stvarno ne znaš šta
radiš).
Ovaj princip, po kome se ostvaruje nezavisnost od takta procesora je
iskorišćen u ZBTet-u (jednako brzo/sporo se izvršava na svim mašinama :)
pedja
pascal.456jablan,
-> #450, nbatocanin>> Encapsulation, my dear Watson...
> Da je tako jednostavno, imali bi Windowse na svakom sokoćalu
> počev od Spektruma 16K do IBM 3090 ;>
Da, da je 16K bilo 16M i da je radio na 66 MHz. Konkretno, mislio sam
na programe, ne na OS.
> Ajde, probe radi: neka se javi neko ko je uradio ozbiljan C
> program na jednom OS i _direktno_ ga prebacio na drugi, a da
> program nije ekvivalentan sa nalaženje maksimuma od 100
> brojeva.
Pod prenosivošću se ne podrazumeva to da ti jednostavno _preneseš_
program, iskompajliraš ga i radi (sem u konkretnom slučaju
maksimuma:), nego da izmeniš one stvari koje su karakteristične za
platformu (OS), a ovo ostalo ne diraš. Znači, u pravu si za korisnički
interfejs, ipak ne možeš od Win-a i Dos-a očekivati da ti progutaju
taj deo programa, ali ono jezgro, zapravo baš ono za šta program i
služi ostaje kako je bilo. Kod standardizovanih jezika tipa c, c++,
modula-2, ovo funkcioniše, pod uslovom da poštuješ principe modularnog
programiranja. Ali ako radiš u nekom VBasic-u, ili BPascal-u,
ograničen si ne samo na konkretan OS, već i na konkretan kompajler.
E, sad, u zavisnosti od toga da li praviš neki program kome je 90%
šminka i korisnički interfejs, a 10% ono šta ustvari radi, ili
obrnuto, imaš proporcionalno tome i da menjaš program pri prenosu na
drugu platformu i/ili drugi kompajler.
poz, jablan.
pascal.457nbatocanin,
-> #453, iznogud> Ajde, probe radi: neka se javi neko ko je uradio
> ozbiljan C program na jednom OS i _direktno_ ga
> prebacio na drugi, a da program nije ekvivalentan sa
> nalaženje maksimuma od 100 brojeva.
>
> Pod portabilnošću ja obično podrazumevam nešto drugo...
> Vizuelni jezici jesu lepa stvar (mnogo ih volim ;) ), ali
> ako radiš nešto zaista važno, onda ćeš 'engine' toga
> uraditi odvojeno od interfejsa (naravno, u granicama
> mogućnosti - jednostavno nije moguće sve uraditi nezavisno
> od interfejsa).
... i tako se manje ili više približiti nekom od proizvoda koji
interfejs imaju "u sebi". Primera radi, Fox (bi trebalo) da radi
na svim platformama bez ikakvih izmena. Poenta nije u tome da na svim
OS isto radi IF naredba - to je najlakša stvar na svetu. Problem je
sa neophodnim OS-zavisnim funkcijama.
pascal.458mminovic,
Hi!
Zna li neko kako da ugasim kursor u tekstualnom režimu?
Unapred hvala,Miroslav.
pascal.459nlazic,
-> #458, mminovic>> Zna li neko kako da ugasim kursor u tekstualnom režimu?
Ovo bi trebalo da obavi posao:
procedure HideCursor; assembler;
asm
MOV ax,$0100
MOV cx,$2607
INT $10
end;
procedure ShowCursor; assembler;
asm
MOV ax,$0100
MOV cx,$0506
INT $10
end;
pascal.460ognjen,
-> #458, mminovic)-> Zna li neko kako da ugasim kursor u tekstualnom rezimu?
Probaj preko asm procedure sa pozivom int 10h.
pascal.461boko,
e kako da napravim program koji ce da radi u protected modu, u TP 7 ?
pascal.462nlazic,
-> #461, boko>> e kako da napravim program koji ce da radi u protected
>> modu, u TP 7 ?
U TP 7 nikako. Trebaće ti BP7, tamo izabereš Target DOS Protected Mode,
lupiš F9 i to je.
pascal.463boko,
-> #462, nlazicBO■>U TP 7 nikako. Trebace ti BP7, tamo izaberes Target DOS
:((
Jel ovo sigurno ?
pascal.464nlazic,
-> #463, boko>> BO■>U TP 7 nikako. Trebace ti BP7, tamo izaberes Target DOS
>> Jel ovo sigurno ?
100%. Ali, ne vidim u čemu je problem. TP7 i BP7 se isporučuju u istom
paketu, tako da samo treba da pređeš sa turbo.exe na bp.exe. Postoji,
doduše i samostalan paket Turbo Pascal 7.0, pa ako imaš tu kombinaciju,
menjaj je.
pascal.465boko,
-> #464, nlazicBO■>doduse i samostalan paket Turbo Pascal 7.0, pa ako imas tu
kombinaciju,
BO■>menjaj je.
:) ehhh...
pascal.466boko,
E vidi prog :
Uses Dsp,Crt;
var
a : integer;
samplef : file;
sample : array [0..64000] of Byte;
p : pointer;
begin
assign(samplef,'dork.wav');
reset(samplef,1);
BlockRead(samplef,sample,FileSize(samplef),a);
ResetDSP(2);
SpeakerOn;
Playback(@sample,FileSize(samplef),8000);
end.
radi kako treba iz onog Turbo.exe i iz Tpx.exe, ali kad ga
compiliram, kvrchi bez veze ?
u cemu je faZon ?
pascal.467mc.kuzma,
-> #466, boko> Uses Dsp,Crt;
> var
> a : integer;
> samplef : file;
> sample : array [0..64000] of Byte;
> p : pointer;
>begin
> assign(samplef,'dork.wav');
> reset(samplef,1);
> BlockRead(samplef,sample,FileSize(samplef),a);
> ResetDSP(2);
> SpeakerOn;
> Playback(@sample,FileSize(samplef),8000);
>end.
Posalji unit dsp pa da vidim da li je mozda tu greska?
BTW. Na cemu ovo pustas?
pascal.468hercog,
Hitno, strahovito hitno mi je p koja na izlazu daje sve
kombinacijease.
Znači na ulazu imam N i K, a na izlazu dobijem
matricu koja po redovima sadrži kombinacije
Primer:
N = 4
K = 3
Matrica
1 2 3
1 2 4
1 3 4
2 3 4
Pri čemu ovo 1, 2, 3 i 4 koji se dobijaju na izlazu predstavljaju
redni broj elementa u početnom nizu elemenata iz koga se prave ko-
mbinacije.
Sale
pascal.469dvesic,
-> #468, hercog> Znači na ulazu imam N i K, a na izlazu dobijem
> matricu koja po redovima sadrži kombinacije
Prelistaj po prvim ( < 20, mislim) brojevima Računara, tamo je bio
vrlo simpatičan program za kombinacije, varijacije i sličnu boraniju :)
pascal.470boko,
-> #467, mc.kuzmaBO■>BTW. Na cemu ovo pustas?
Pushtam na SB 2.0 compatible muzi...
Delimicno sam provalio u cemu je fazon, ali ne sasvim...
Shema je da ti kazesh Play Sample (kako vec beshe) on on to
sve sredi i pushta preko DMA...
e sam stavio da se program odmah posle toga zavrshi, tj
program se zavrshava pre samplea, i zbog toga je kvrcao
(valjda je dealocirao stack, pa se izgubila adresa ?), pa
sam onda stavio da ceka (delay) dok se sample ne zavrshi,
pa je to radilo, ali ne sve vreme, tj sample malo ide, pa
posle jedno 4-5 sec pocne da krchi bez veze...
nemam pojma, evo ti DSP.PAS pa ti vidi..
dsp.paspascal.471imangovski,
Kako da inicijalizujem neki od svga modova u pascalu?
Kada inicijalizujem,kako da nacrtam tacku?
pascal.472boko,
-> #471, imangovskiBO■>Kako da inicijalizujem neki od svga modova u pascalu?
BO■>Kada inicijalizujem,kako da nacrtam tacku?
Pa imash u dos\program (ili kako se vec zvashe :)
direktorijumu unite za svga..
(prebacivanje u 640x480 800x600 1024x768 i sve ostale modove ;), kao
i sve standardne graph.tpu procedure, samo prilagodjene za ove modove
drawpoly, line, bar, putpixel...)
pascal.473boko,
-> #471, imangovskie sad sam pogledao...
nema :)
cek sa cu poshaljem neke, pa ti vidi :)
svga.zippascal.474dzakic,
os2\*.*
------------------
speedos2.zip 1221k ű Novi 32-bitni Paskal kompajler (BP7 komp., demo)
U direktorijumu je demo verzija, bez samostalnog asemblera, command
line kompajlera i on-line helpa. I pored toga, nije teško snaći se
jer su se autori potrudili da IDE i sama sintaksa budu jako slični ili
identični Borlandovom Turbo Paskalu.
Na prvi pogled, ceo paket deluje jako ozbiljno, kompletno i pouzdano.
Ima stvari koje, u poređenju sa BP, nisu implementirane prvenstveno iz
razloga što pod os/2 nemaju smisla a u nekim stvarima polako vuče na C,
kao što se iz citata vidi. Sve razlike su lepo dokumentovane, ali sam
primetio još neke nedostatke. O njima drugom prilikom. Autori
najavljuju dalji razvoj paketa i implementiranje stvari koje još nisu
završene.
Demo verzija pravi exe koji na žalost radi 24 sata a nakon toga vas
ljubazno zamoli da program kupite :). Evo šta piše u doc-u:
---
SpeedPascal/2 is a Borland Pascal 7.0 compatible compiler and an integrated
development environment (IDE) with a host of features designed to ease the
task of writing OS/2 Presentation Manager(TM) programs.
From the IDE, you can access the power of the SpeedPascal/2 tools:
A PM-based MDI editor
An integrated debugger
A 32-bit OS/2 compiler
An OS/2 Assembler
A Resource Editor and Compiler
An Inline Assembler
Context sensitive help
** SOME NEW THINGS OF SPEED-PASCAL/2
1) SPEED-PASCAL/2 has an additional data type called CSTRING. This is a
C-like string which has no length byte but additionaly a terminating
#0 character. You can easily assign CSTRINGs to STRINGs and STRINGs
to CSTRINGs, the Compiler will convert the types for you !
Also you can pass a STRING to a procedure that expects a CSTRING.
2) When calling OS/2 API functions you can pass a NIL parameter to a
function that expects a variable parameter or a CSTRING. Sometimes
there's a significant need to do this. The whole OS/2 API is based
upon the C language and expects C data types. To make life easier
SPEED-PASCAL/2 supports some of the C features including NULL
parameters for functions expecting variable parameters.
3) There's an additional keyword called MACRO. MACROS are directly inserted
into the code and can be much faster than calling a procedure or
function. This feature comes from the C language
4) String substitution with #DEFINE like in the c language. The syntax is
{$#DEFINE identifier=somewhat} where identifier must match the rules of
identifiers and cannot be a reserved word and somewhat is the string
which is the substitution of identifier in the text.
(see documentation)
5) One line comments initiated by // (like in the C language)
6) The global data segment is limited to 512K. This is since SPEED-PASCAL/2
doesn't distingish yet between initialized and uninitialized data. That
means ALL data is initialized and therefore written to the applications
EXE. It is strongly recommended to use dynamic heap memory when there's
a need for large memory pools.
pascal.475ognjen,
Hi!
Moze li neko da mi da jedan kratak primer kako da uz pomoc
turbovision-a, napravim neke proste menije, dodelim im
funkcijeske (ili alt) tastere i povezem ih sa odredjenim
procedurama.
Gladao sam one primere iz "Kompletan vodic", ali, em ne rade,
em nista ne shvatam.
pascal.476ognjen,
-> #475, ognjen)-> Moze li neko da mi da jedan kratak primer kako da uz pomoc
)-> turbovision-a, napravim neke proste menije, dodelim im
)-> funkcijeske (ili alt) tastere i povezem ih sa odredjenim
)-> procedurama.
Svi ste mi lupili ignore ili niko ne zna da radi sa TVom? :)
pascal.477dvesic,
-> #476, ognjen> Svi ste mi lupili ignore ili niko ne zna da radi sa TVom? :)
Tebe baš mrzi da pogledaš primere ? ;)
Ajde sad gledaj :
program Primer;
uses Objects, Drivers, Views, Menus, Dialogs, App; { potrebni unit-i }
const
cmFileOpen = 100; { Ovo su konstante koje ce povezati }
cmFileClose = 101; { menije i procedure }
{ Iz postojece TApplication klase kreiras tvoju klasu, koja ce se }
{ malo drugacije ponasati. Metode koje menjas su sigurno : }
{ HandleEvent - kontrola poruka po sistemu }
{ InitMenuBar - inicijalizacija i kreiranje menija }
{ InitStatusLine -inicijalizacija i kreiranje menija }
{ Naravno, ako ta aplikacija nesto radi :) dodas tvoje funkcije i }
{ procedure. }
type
TMyApp = object(TApplication)
procedure HandleEvent(var Event: TEvent); virtual;
procedure InitMenuBar; virtual;
procedure InitStatusLine; virtual;
procedure OtvoriFajl;
procedure ZatvoriFajl;
end;
{ TMyApp }
procedure TMyApp.HandleEvent(var Event: TEvent);
begin
TApplication.HandleEvent(Event); { Glavna petlja koja obradjuje }
if Event.What = evCommand then { poruke koje stizu }
begin { Generalno je to obican CASE }
case Event.Command of
cmFileOpen: OtvoriFajl;
cmFileClose: ZatvoriFajl;
else
Exit;
end;
ClearEvent(Event);
end;
end;
procedure TMyApp.InitMenuBar; { Funkcija za meni }
var R: TRect;
begin
GetExtent(R); { Velicina aktivnog prozora }
R.B.Y := R.A.Y + 1; { Pozicija meni linije }
MenuBar := New(PMenuBar, Init(R, NewMenu(
NewSubMenu('~F~ile', hcNoContext, NewMenu(
NewItem('~O~pen', 'F3', kbF3, cmFileOpen, hcNoContext,
NewItem('~C~lose','F4', kbF4, cmFileClose, hcNoContext,
NewLine(
NewItem('E~x~it', 'Alt-X', kbAltX, cmQuit, 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('~F3~ Open', kbF3, cmFileOpen,
NewStatusKey('~F4~ Close', kbF4, cmFileClose,
nil)))),
nil)
));
end;
procedure TMyApp.OtvoriFajl;
var
R: TRect;
D: PDialog;
C: Word;
begin
{ Kreiraj dijalog }
R.Assign(10,10,60,17);
D := New(PDialog, Init(R,'Prozor sa porukom'));
{ Insertuj najobicniji tekst }
R.Assign(15, 5, 50, 6);
D^.Insert(New(PStaticText, Init(R, 'Primer teksta :)')));
{ Prikazi dijalog }
C := DeskTop^.ExecView(D);
end;
procedure TMyApp.ZatvoriFajl;
begin
end;
var
MyApp: TMyApp;
begin
MyApp.Init;
MyApp.Run;
MyApp.Done;
end.
pascal.478hercog,
Mozda ce nekome zatrebati
{Ovaj program predstavlja preradu programa iz Racunara 27 na pascal}
{Mozda ce nekome zatrebati za generisanje kombinacija bez ponavljanja}
{pocevsi od 1 klase do klase navedene pod K}
program Kominacije;
uses Crt;
var petlja,ponavljaj:boolean;
i,j,k,n:integer;
izlaz:array [1..100] of integer;
el:array [1..100] of char;
minimum:longint;
procedure proc;
var l:integer;
duzina:longint;
begin
for l:=1 to k do
write(el[izlaz[l]]);
end;
begin
petlja:=true;
n:=20; {broj elemenata}
k:=20; {klasa}
for i:=1 to n do {generisanje elemenata}
begin
el[i]:=chr(i+ord('A')-1);
end;
While petlja do
begin
proc;
i:=k;
ponavljaj:=false;
if i>=1 then ponavljaj:=true;
while ponavljaj do
begin
if izlaz[i]<>n-k+i then
begin
izlaz[i]:=izlaz[i]+1;
if i=k then
ponavljaj:=false
else
begin
for j:=i+1 to k do
izlaz[j]:=izlaz[j-1]+1;
ponavljaj:=false
end
end
else
begin
i:=i-1;
if i<1 then
begin
petlja:=false;
ponavljaj:=false;
end
end
end
end
end.
pascal.479ognjen,
Ocete da budete korisni? :)
Pravio sam jednu igricu koja ima jednostavne komande (levo,
desno, pucaj), a kontrolu tastature sam uradio preko READKEY i
KEYPRESSED. Problem je sto je tako kretanje presporo, a i nije
kontinuirano (posle prvog znaka sledi kratka pauza).
Onda sam se odlucio za logicnije resenje. Citanje preko
porta. U petlji se izmedju ostalog ponavlja key:=port[$60] a
onda analiza tastera, i Boolean promenjljive LEFTkey, RIGHTkey,
SHOOTkey dobijaju odgovarajuce vrdnosti.
Medjutim sad je problem bio prevelika brzina. I na najkraci
dodir tastera kursor (tj. gun) je tri puta skrolovao po ekranu.
Kontrala je nemoguca. Najjednostavnije resenje bilo je ubaciti
delay (50) posle svakog pomeranja, ali: postoji vise problema:
1. Ako se taster otpusti za tih 50 ms, program nece
registrovati promenu na portu, pa ce kurstor nastaviti kretanje
(pucanje) kao da drzimo dati taster.
2. Gubljenje rada u realnom vremenu za ˝50ms. Ovo drugo i
nije previse bitno.
Treba dakle napraviti neki delay koji ce biti nezavistan od
promena na portu (svaka promena ce se registrovati) i koji nece
koristiti pascalov delay, da ne bi kvario realno vreme. Da li
neko zna kako to?
pascal.480dzakic,
-> #479, ognjenNapravi 'interrupt' proceduru koja čita port tastature i ispituje da
li je u pitanju neki od tastera koji tebe zanimaju. Dakle,
registruješ pritisak i puštanje svakog od tastera tako što setuješ
odnosno resetuješ odgovarajuće flagove 'leftpressed', 'rightpressed'
i 'firepressed'. Na kraju procedure treba signalizirati interapt
kontroleru da je interapt obrađen jednim port[$20]:=$20;
Onda 'instaliraj' svoj interapt sa
var oldintvect:pointer;
getinctvect(9,oldint9)
setintvect(9,@myint9)
Iz programa testiraj stanje promenljivih left/right/firepressed, a i
delay će nesmetano raditi (kasnije delay možeš korisno upotrebiti za
proračun putanje neprijatelja i sl.). Jedini je problem što
testiranjem promenljivih dobijaš _TRENUTNO_ stanje tastera, tako da
se može desiti da taster bude pritisnut i otpušten između tvoja dva
testiranja (za vreme delay) i tvoj program to neće registrovati. Ako
je delay dovoljno kratak, ovo ne bi trebalo da predstavlja problem.
Ne zaboravi da po izlasku iz programa vratiš originalni int vektor sa
setintvect(9,oldint9)
Ako bude problema, tu sam :)
Pozdrav, Zak
pascal.481dj.vlada,
Otvorena je grupa "TP", ko želi da uđe neka mi pošalje molbu mailom...
pascal.482ognjen,
-> #480, dzakic)-> se moze desiti da taster bude pritisnut i otpusten izmedu
)-> tvoja dva testiranja (za vreme delay) i tvoj program to nece
)-> registrovati.
Kako nece registrovati, ako sam preuzeo interapt? Nije valjda
da delay blokira izvrsavanje interapata?
pascal.483dzakic,
-> #482, ognjen> Kako nece registrovati, ako sam preuzeo interapt? Nije valjda
> da delay blokira izvrsavanje interapata?
Mislio sam na sledeću situaciju:
1. Testirao si flegove, ništa nije pritisnuto.
2. Program je krenuo u delay(xx);
3. Igrač stiska recimo taster u levo.
4. Izvršava se interapt rutina, setuje se fleg stisnuto je levo.
5. Delay, ukoliko je dug, se i dalje izvršava.
6. Igrač otpušta taster.
7. Interapt rutina resetuje fleg stisnuto je levo.
8. Završava se delay.
9. Tvoj program testira fleg - ništa nije stisnuto, iako je taster
bio pritisnut pa otpušten za vreme delay-a.
Ovo se naravno da rešiti, ali objašnjenje nije postojalo u mojoj
poruci, u pitanju je bila samo ideja. Nadam se da si problem rešio
i da ćemo uskoro videti igricu :)
Pozdrav, Zak
pascal.484dj.vlada,
Otvorena je grupa "TP", ko želi da uđe neka mi pošalje molbu mailom...
pascal.485zeljkoj,
-> #484, dj.vlada> Otvorena je grupa "TP", ko želi da uđe neka mi pošalje molbu
> mailom...
A što kad postoji ova tema? :)
Svi koji programiraju u TP je verovatno prate.
pascal.486dj.vlada,
-> #485, zeljkojHeHe>> Otvorena je grupa "TP", ko želi da uđe neka mi pošalje molbu
HeHe>> mailom...
HeHe> A što kad postoji ova tema? :)
HeHe> Svi koji programiraju u TP je verovatno prate.
Pa eto lepo... Ovde imaju i neka pravila...u grupi nema...
pascal.487destructor,
Kada iz Pascal-a zelim da izvrsim neki program sa strane, to
nije problem koristeci 'Exec',medjutim kako da "nateram" program
koji ja pisem da unosi parametre koje taj program trazi,tj. da
ih ne ceka sa tastature.Npr:Ako Exec-ujem 'Del *.*' da moj
program sam odgovori sa 'Y' na pitanje "Da li ste sigurni...."
pascal.488janko,
-> #487, destructor
> Kada iz Pascal-a zelim da izvrsim neki program sa strane, to
> nije problem koristeci 'Exec',medjutim kako da "nateram" program
> koji ja pisem da unosi parametre koje taj program trazi,tj. da
> ih ne ceka sa tastature.Npr:Ako Exec-ujem 'Del *.*' da moj
> program sam odgovori sa 'Y' na pitanje "Da li ste sigurni...."
Da li se varam ili se ponavlja priča koja se već jednom dogadila u
ovoj konferenciji. Javio se dečko koji je hteo da napravi maligni
virus, očigledno bez puno znanja, a kada su ga pitali da li to stvarno
hoće da uradi rekao je prvo "ma samo pitam teorijski" ali se brzo
zaključilo da je upravo to hteo?
Kakav program pišeš pa ti treba y na del *.* ?
pascal.489dvesic,
-> #487, destructor> koji ja pisem da unosi parametre koje taj program trazi,tj. da
> ih ne ceka sa tastature.Npr:Ako Exec-ujem 'Del *.*' da moj
> program sam odgovori sa 'Y' na pitanje "Da li ste sigurni...."
Možda redirekcija ? (nisam probao, samo ideja):
Exec("ECHO Y|DEL *.*")
Ovo na komandnoj liniji radi. Probaj pa javi.
pascal.491destructor,
-> #488, janko>..ali se ispostavilo da je uravo to hteo..
Virusima se ne bavim..(dok jos ponesto ne naucim ;))), a ako
si reply napiso zbog mod USERNAME-a nemoj se uzbudjivati..to je
iz drugog razloga.
Sto se tice programa radio sam sledece:
Program treba da obrise navedeni direktorijum,kao i sve
njegove poddirektorijume.
To sam uspeo da uradim tako sto sam
ulazio u sve direktorijume,trazio file po file, a zatim ga
brisao.Medjutim ova druga ideja mi izgleda lepse, ali ne mogu da
je realizujem.
Znaci:Meni ovo treba prakticno, a NE teorijski!!
CU
pascal.492janko,
-> #491, destructor
> Sto se tice programa radio sam sledece:
> Program treba da obrise navedeni direktorijum,kao i sve
> njegove poddirektorijume.
> To sam uspeo da uradim tako sto sam
> ulazio u sve direktorijume,trazio file po file, a zatim ga
> brisao.Medjutim ova druga ideja mi izgleda lepse, ali ne mogu da
> je realizujem.
Nisi napisao šta radi ceo tvoj program. I dalje me nisi uverio da ti
nije cilj da nekome upropastiš disk?
Ako me uveriš, vrlo ću ti rado pomoći.
Vidim da su ti već dali jedan recept... inače, za brisanje
direktorijuma sa podrirektorijumima u DOS-u postoji naredba
DELTREE.
pascal.493rdejan,
-> #487, destructor>> ih ne ceka sa tastature.Npr:Ako Exec-ujem 'Del *.*' da moj
>> program sam odgovori sa 'Y' na pitanje "Da li ste sigurni...."
Šta fali tupavoj i sporoj kombinaciji FindFirst i Erase (pa
čak i ne tako sporoj, pogotovo u odnosu na swap, koji ti
želiš da uradiš)? Otkucaj FindFirst, stisni Ctrl-F1 (ako je
Borlandov Pascal, a verujem da jeste) i sve će ti se kasti...
Pozdrav, Dejan
pascal.494ognjen,
-> #487, destructor)-> ih ne ceka sa tastature.Npr:Ako Exec-ujem 'Del *.*' da moj
)-> program sam odgovori sa 'Y' na pitanje "Da li ste
)-> sigurni...."
Jedno od neelegantnih resenja je da napravis datoteku, na
primer yes.dat:
-----
y [CR][LF]
-----
I da kad execujes, uradis redirekciju iz fajla.
del *.* <yes.dat
Postoji, naravno, mnogo elegantnije resenje za brisanje svih
fajlova, sa FindFirst i FindNext. O:)
pascal.495destructor,
-> #492, janko>..i dalje nisi uspeo da me ubedis ..
E to vec nije moja greska, a sto se tice ubedjivanja nemam
nameru da ti se pravdam.Inace DELTREE znam da postoji,ali ga ja
nemam, jer koristim 5.0.
pascal.496destructor,
Pozdrav momcima koji su mi dali predloge za 'del *.*'.
Sada imam jedno drugo pitanje.
Recimo ako obradjujem maticu na neki nacin,i ta procedura
kojom to radim je rekurzivna,da li je moguce nekako da sredim da
se velicina matrice menja,tj. ako mi na sledecem stepenu obrade
treba manja matrica,da ne rezervisem celu matricu kao u
prethodnom pa da koristim samo odredjeni deo , vec da rezervisem
matricu tacno one velicine koja mi u tom trenutku treba.
Npr:
...
...
matr:Array[1..p,1..p] Of ...
...
pascal nece da prihvati ukoliko p nije definisano kao
konstanta.Pitanje:Moze li se ovo zaobici(tako da p moza da bude
i promenjiva)?
p.s.Na dam se da i ovo neki nece proglasiti destruktivnim.;))
Pozdrav!
pascal.497mastermind,
oko simuliranja pritisaka...
postoji interrupt koji to radi ( int 16h , f-ju ne znam napamet )
a možeš i direktno da gađaš kbd buffer. oko toga prelistaj staru konfu pcprog,
teme algoritmi i asm.
za brisanje ti je mnogo bolji findfirst/findnext sistem.
potraži u helpu to, i biće ti mnoogo jasnije.
MasterMind
pascal.499janko,
-> #496, destructor
> Recimo ako obradjujem maticu na neki nacin,i ta procedura
> kojom to radim je rekurzivna, da li je moguce nekako da sredim da
> se velicina matrice menja,tj. ako mi na sledecem stepenu obrade
> treba manja matrica,da ne rezervisem celu matricu kao u
> prethodnom pa da koristim samo odredjeni deo , vec da rezervisem
> matricu tacno one velicine koja mi u tom trenutku treba.
> Npr:
> ...
> ...
> matr:Array[1..p,1..p] Of ...
> ...
> pascal nece da prihvati ukoliko p nije definisano kao
> konstanta.Pitanje:Moze li se ovo zaobici(tako da p moza da bude
> i promenjiva)?
Koliko se ja razumem u Paskal, ne može, dimenzije niza su konstante,
jer to je pricnip rada kompajlera.
Kakav je to algoritam? Obično se problemi sa matricama rešavaju bez
pravljenja novih matrica u svakom pozivu, jer je većina
problema sa matricama prvi put rešavana u Fortranu, koji nema ni
rekurzije. ;)
Ako ti je problem ozbiljan, vredi se pomučiti i ili primenjivati neke
nestandardne metode, ili da promeniš jezik, platformu ili kompajler.
Recimo:
Delfi 2 može da radi sa svom memorijom koja je Windowsu na
raspolaganju, što je uvek više od 640 K...
C++ omogućava dinamičku alokaciju proizvoljno velikog niza (pa zato
i matrice).
itd...
>p.s.Nadam se da i ovo neki nece proglasiti destruktivnim.;))
>Pozdrav!
Neće! Go ahead! :)
pascal.500dvesic,
-> #496, destructor> pascal nece da prihvati ukoliko p nije definisano kao
> konstanta.Pitanje:Moze li se ovo zaobici(tako da p moza da bude
> i promenjiva)?
Ne, ne može. Možeš da primeniš rešenje sa pokazivačima.
Alociraš onoliko memorije koliko ti stvarno treba prilikom
svakog rekurzivnog ulaska u proceduru; ovo dosta komplikuje
baratanje sa elemntima matrice, ali se da izvesti.
pascal.501destructor,
-> #499, janko >Kakav ti je to algoritam?Vecina problema sa matricama...
Pa pokusavao sam da napisem program koji resava sisteme
linearnih jednacina Gausovim algoritmom(dosta je neefikasan,
ali za sade nemam bolji), za proizvoljan broj jednacina,pa sam
matricu koristio za skladistenje koeficijenata.
Medjutim pocetnu matricu ne smem da menjam, jer na osnovu
rezultata prethodne matrice izracunavam sledecu promenjivu.
Ipak tnx, da bar znam da se ne mucim oko onoga.
p.s.Mozda ovo upotrebim da nekom sredim disk!;))
pascal.502dvesic,
-> #501, destructor> linearnih jednacina Gausovim algoritmom(dosta je neefikasan,
> Medjutim pocetnu matricu ne smem da menjam, jer na osnovu
> rezultata prethodne matrice izracunavam sledecu promenjivu.
Što praktično znači da ti ovde rekurzija i ne treba, već samo
dimenzionisanje dve matrice; jedna čuva koeficijente prethodnog
koraka a druga novonastajuće :)
pascal.503ognjen,
HELP!
Jedna ortakinja iz odeljenja pise seminarski, igra kartama -
Makao (jos se zove i Mau-Mau), ali smo danas naisli na problem
koji nam se cini neresiv.
Naime, u datoteci SEMINARI nalazi se spil karata, datoteka je
file of slog2, gde je slog2=record u kome se cuvaju podaci o
svakoj karti.
Prilikom raznih operacija sa spilom karata (secenje, mesanje)
radili smo razne akrobacije sa SEEK i TRUNCATE, i sve izgleda
ok, medjuim, kad se prodje secenje, treba da se izbaci zadnja
karta sa spila sa:
seek (f, filesize(f)-1);
truncate(f);
Kompajliranje vraca sve okay, ali kad se startuje, na
truncate se zaglavi, tako da mu samo reset (soft) moze pomoci.
Problem *nije* u truncate, bilo koja procedura koja radi sa
fajlom F (probano i CLOSE) zaglavljuje racunar.
Posto se radi o veoma hitnoj stvari, molim vas da pogledate
ceo program (ako nemate ideju iz ove poruke, sta bi mogla da
bude greska), jer smo ja i ona proveli oko 3 sata trazeci
gresku, i nismo mogli da ukapiramo u cemu je stvar.
10x.
problem.zippascal.504galimpic,
-> #503, ognjen> Posto se radi o veoma hitnoj stvari, molim vas da pogledate
> ceo program (ako nemate ideju iz ove poruke, sta bi mogla da
> bude greska), jer smo ja i ona proveli oko 3 sata trazeci
> gresku, i nismo mogli da ukapiramo u cemu je stvar.
Ukratko: zaboravio si da inicijalizuješ pointer tal.
Naširoko:
(za druge koje zanima, verujem da ćeš se ti lupiti u čelo i sa onim gore)
Problem u programu nije rad sa fajlovima, već sa pointerima. Stavio sam
brakpoint malo ranije i video da pri dodeli tal^:=... vrednosti pointera
tal je NIL. Nisam gledao, možda to radiš i sa još nekim pointerima.
Kada deklarišeš pointer varijablu, kreira se samo ona u memoriji (tj. mesto
za čuvanje neke adrese), a NE i ono na šta ona pokazuje. Kompajler se neće
buniti kada pokušaš da dodeliš vrednost onome na šta pointer pokazuje, ali
to je gađanje po memoriji sa nepredvidljivim rezultatima, jer pointer nije
inicijalizovan. Moraš da komandom new alociraš mesto za ono na šta pointer
pokazuje, uz automatsko dodeljivanje te adrese pointeru:
type x=integer;
var p:^x;
begin
new(p);
p^:=10;
dispose(p);
end.
Ako ne želiš da pointer pokazuje na posebnu promenljivu, već na neku od
postojećih, prebaci ADRESU već alocirane i postojeće promenljive pointeru,
pa će opet sve lepo da radi za tu svrhu:
p:=@x
Tvoj program nije radio zbog gađanja po memoriji upotrebom neinicijalizovanih
pointera, a trenutak zaglavljivanja onda može biti bilo kad.
pascal.505ognjen,
-> #504, galimpic)-> Tvoj program nije radio zbog gadanja po memoriji upotrebom
)-> neinicijalizovanih pointera, a trenutak zaglavljivanja onda
)-> moze biti bilo kad.
Znaci cela stvar je u tome da je na nekom mestu zaboravljeno
NEW(tal)? Uh, ko bi se toga setio. :)
Jos samo jedno pitanje: koju vrednost ima pointer kada je
postavljen na NIL, tj. da li ce upis na taj pointer rezultirati
prijavom kompajlera da nije u redu, run-time greske, ili ce opet
sve biti u redu, samo ce se zaglaviti u nekom levom trenutku?
pascal.506galimpic,
-> #505, ognjen> Jos samo jedno pitanje: koju vrednost ima pointer kada je
> postavljen na NIL, tj. da li ce upis na taj pointer rezultirati
> prijavom kompajlera da nije u redu, run-time greske, ili ce opet
> sve biti u redu, samo ce se zaglaviti u nekom levom trenutku?
Kada je postavljen na NIL trebalo bi da ima vrednost 0, bar u C-u. Za Pascal
nisam siguran, ali kao sto vidis ne prijavljuje gresku nego brlja. Mozda ima
neki svic kojim se ovakve greske proveravaju i prijavljuju pri izvrsavanju?
Neka se javi neko ko zna.
pascal.507npmiki,
Potreban mi je izvorni kod za rad sa modemom. U vezi toga sledi
pitanje : dali je moguce napraviti program koji ce kada se
startuje dati mogucnost onome koji pozove modemom drugi
kompjuter , da pristupa svim fajlovima na disku ?
Vrlo potrebno . Please help !!
pascal.508nenad,
-> #507, npmiki> pitanje : dali je moguce napraviti program koji ce kada se
> startuje dati mogucnost onome koji pozove modemom drugi
> kompjuter , da pristupa svim fajlovima na disku ?
Preporučujem ti da pogledaš program DoorAway (\dos\bbs\drwy222.zip),
on omogućava da svaki program radi preko modema i možda je
zadovoljavajuće rešenje za tvoj problem.
Za početak, treba da ga konfigurišeš da poziva command.com, a u
svom komunikacionom programu (na računaru sa koga zoveš) da
aktiviraš tzv. doorway mod kako se pritisci na tastere ne bi
prevodili po aktivoj terminal emulaciji već "direktno" slali
remote računaru.
pascal.509ivko,
-> #507, npmikiPod jedan: takav program nije tesko napraviti, trebas
samo da znas da radis sa komunikacionim portovima
u programskom jeziku u kom radis takav program, treba
da procitas neki USER'S MANUAL od modema da vidis
koje su standardne komande modema i nacin njegovog
rada i trece da nabavis izvorni kod nekog transfer protokola
(video sam negde u datotekama na Sezam-u izvorni kod
za ZMODEM). Inace program ne bi trebalo da bude tehnicki
slozen (osim ako neces da pravis srpski Telemate).
Pod dva: zavisi koji nivo pristupa tvom disku
zelis da ima protivnicki modem. Da moze da lista ceo
disk, da kopira, premesta po njemu, da kopira fajlove
na tvoj disk, sa tvog diska na njegov (uopste ono sto
mozes postici i sa COMMAND.COM programom tj.da napravis
modifikovani COMMAND.COM) ne bi trebalo
da bude problema ali ako hoces da sa tvog modema startujes
program na daljinskom kompjuteru i da se on izvrsava na njemu
a da se ono sto se izvrsava vidi na tvom ekranu, malo teze
(citaj nemoguce) iz 5*10^3 razloga a najveci je mala brzina
prenosa podataka modemom. A i pored toga, postoji dosta drugih
ogranicenja rezultovanih organizacijom DOS-a i Windows-a.
Ali ako budes radio komunikacioni program mogu ti pomoci.
Kontaktiraj me na e-mail.
Pozdrav!
pascal.510dpredovic,
-> #507, npmiki> pitanje : dali je moguce napraviti program koji ce kada se
> startuje dati mogucnost onome koji pozove modemom drugi
> kompjuter , da pristupa svim fajlovima na disku ?
Sasvim moguće, ali je pitanje zašto bi to radio kad već postoji.