pascal.101ivans,
-> #98, vasicBilo mi je zadovoljstvo da te grize savest! :))))))))
Pozdrav,
ivans.
pascal.102dejanr,
-> #100, dgrbic>> Na koji nacin Racunari dobijaju softver na testiranje? da li samo
>> od domacih zastupnika ili moze i direktno
Naravno da može i direktno... ako je proizvođač raspoložen. Manji
proizvođači su obično vrlo raspoloženi, veći imaju zastupnika...
Na žalost, u poslednje vreme se nedovoljno radi na tome - eto, ja
za taj Pascal+ nisam ni čuo :(
pascal.103bearboy,
-> #94, alazic> Postoji jedno malo ali povodom 's:string[2000]' a to je :
> ne radi. Naime turbo pascal (do verzije 5.5) pamti string
> kao prvi bajt +tekst , gde je prvi bajt duzina stringa. Iz
> thi razloga string ne moze biti duzi od 255 char-ova.
Turbo Pascal 6.0 zna ! Bar je kod mene svario !
pascal.104dejanr,
-> #103, bearboy>> Turbo Pascal 6.0 zna ! Bar je kod mene svario !
Ako imaš instaliran Turbo Pascal 6.0 (ja nemam), probaj još
jednom, to mi izgleda neverovatno. Ako nemaš instaliran, moraću
ja da ga instaliram da to probam.
pascal.105bearboy,
-> #94, alazic> Postoji jedno malo ali povodom 's:string[2000]' a to je :
> ne radi. Naime turbo pascal (do verzije 5.5) pamti string
> kao prvi bajt +tekst , gde je prvi bajt duzina stringa. Iz
> thi razloga string ne moze biti duzi od 255 char-ova.
Turbo Pascal 6.0 zna ! Bar je kod mene svario !
pascal.106ppekovic,
-> #102, dejanr>> Na žalost, u poslednje vreme se nedovoljno radi na tome - eto, ja
>> za taj Pascal+ nisam ni čuo :(
Grbo, gde si ti video ili cuo za taj Pascal? Ko je
proizvodjac? itd. Daj neku informaciju pa da potrazim po BIX-u
nesto vise o tom Pascal-u.
Paya
pascal.107ivujanic,
-> #106, ppekovic╠ Grbo, gde si ti video ili cuo za taj Pascal? Ko je
╠ proizvodjac? itd. Daj neku informaciju pa da potrazim po BIX-u
╠ nesto vise o tom Pascal-u.
U Byte-u se reklamira Pascal+. Proizvođač je Stony Brook
Software.
Ivica
pascal.108predragd,
Zdravo
Saljem vam dva programcica koji mogu da citaju gif fajlove. Prvi
program je pisan u Paskalu i Asembleru, a drugi samo u Paskalu. Na
zalost prilozeni programi mogu samo da citaju gif slicice. Naravno za
oba programa je dat kompletan sors.
Pozdrav, Pedja.
gifsrc.zippascal.109bojanp,
-> #106, ppekovic> Grbo, gde si ti video ili cuo za taj Pascal? Ko je
> proizvodjac? itd. Daj neku informaciju pa da potrazim po BIX-u
> nesto vise o tom Pascal-u.
Oni koji imaju novembarski BYTE neka okrenu stranu 116IS-58, a za one koji
isti nemaju evo nekoliko informacija o prevodiocu Pascal+:
- 100% kompatibilan sa TP V6.0
- brzina izvrsavanja do 100% veca
- velicina koda do 30% manja
- generise standrdne .OBJ file-ove
- podrzava sve memorijske modele.
Proizvodjac:
Stony Brook Software
187 E. Wilbur Road, Suite 9
Thousand Oaks
CA 91360
tel: 805/496-5837
fax: 805/496-7429
Cena
do 31-12-91: $375
od 31-12-91: $475
(U cenu ukljuceno slanje)
Pozdrav, Bojan
pascal.110dejanr,
-> #109, bojanp> - 100% kompatibilan sa TP V6.0
> - brzina izvrsavanja do 100% veca
> - velicina koda do 30% manja
> - generise standrdne .OBJ file-ove
> - podrzava sve memorijske modele.
žetvrto i peto je vrlo značajno, doduše ovde se ne pominje dužina
stringova (zapravo, ako mogu da budu duži od 256 znakova, teško će
se održati kompatibilnost sa TP jer mnogi programeri umesto
length(prom) koriste ord(prom[0])) ali je i ovo "dovoljno značajno".
Dosta koristim Pascal, ali mi je ipak $400 "na neviđeno" malo previše,
pogotovu uzevši u obzir gde ode dolar poslednjih dana :(( Moram da
probam da tražim primerak na test ;)
pascal.111dgrbic,
-> #110, dejanr:: pogotovu uzevsi u obzir gde ode dolar poslednjih dana :((
:: Moram da probam da trazim primerak na test ;)
Tako je, pa da saznamo nesto vise o tome :)
pascal.112dgrbic,
-> #110, dejanr:: Cetvrto i peto je vrlo znacajno, doduse ovde se ne
:: pominje duzina stringova (zapravo, ako mogu da budu duzi
:: od 256 znakova, tesko ce se odrzati kompatibilnost sa TP
:: jer mnogi programeri umesto
Onu poruku sam pisao po secanju, pa moze biti da sam malo omanuo
:)
pascal.113draganj,
Jednog mog prijatelja intresuje kako da ugradi zastitu u program
pisan na pascalu, tako da onemoguci piratovanje programa (namerava da
ga pusti u prodaju).
Pozdrav, Dragan.
pascal.114xenomorphe,
POstoje li proc. u TPascalu kojima se mogu pojedini sektori sa
diskova i disketa ucitavati u npr.neku promenljivu odn. array?
...ili u asembleru, pa da se proc. linkuje u TP?
pascal.115predragd,
-> #114, xenomorphe> POstoje li proc. u TPascalu kojima se mogu pojedini
> sektori sa diskova i disketa ucitavati u npr.neku
> promenljivu odn. array? ...ili u asembleru, pa da se proc.
> linkuje u TP?
Zdravo
Pa u TP ne postoji procedura koja moze da cita sektore diska, ali
zato postoji u DOS-u i BIOS-u. Saljem ti proceduru koja uz pomoc
BIOS-ovog interapta $13 cita zadati sektor sa diska/diskete.
type
sector_buffer = array [1..512] of byte;
function ReadSector (drive, head: byte;
track: word;
sector: integer;
var diskbuff: sector_buffer): byte;
var
regs: registers;
begin
fillchar (regs, sizeof (regs), 0);
with regs do
begin
ah:=$02;
al:=$01;
es:=seg(diskbuff);
bx:=ofs(diskbuff);
ch:=track;
cl:=sector;
dh:=head;
dl:=drive;
intr($13,Dos.Registers(regs));
ReadSector:=0;
if (flags and 1) = 1 then
ReadSector:=ah;
end;
end; { readsector }
Oznake za disk su ti sledece:
A - 0
B - 1
C - $80 ( fizicki disk, ne logicki }
D - $81 - || -
Pozdrav, Pedja.
pascal.116bearboy,
-> #113, draganj-+={ Jednog mog prijatelja intresuje kako da ugradi zastitu
-+={ u program pisan na pascalu, tako da onemoguci
-+={ piratovanje programa (namerava da ga pusti u prodaju).
Evo saveta za SVE jezike. Napises program, kompajliras ga, linkujes ga, a
posle toga opalis Pklite -r (ne moze se vratiti u prvobitni oblik), ili, jos
jednostavnije, sa LZEXE. Ja moje programe prepisem ovako, tako da se ne mogu ni
gledati (olako), a i sam program postaje manji.
PS. Copyright (c) Bearboy, 1991. !!!
pascal.117macak,
YOOI!
Imam jedan problem.
Budzim neki programcic koji treba da je rezidentan i koji bi mogao da
aktiviram pisuci neku naredbu ili nesto sto bi mogao da razume.
Znaci napisem u DOS-u nesto kao "aktiviraj se" <ENTER> i na taj nacin
ga startujem.Program presrece interapt 09 i posle pritiska na ENTER
on bi trebalo da proveri sta je napisano.Tu je problem - KAKO?
Probao sam da procitam bafer tastature ili barem ja mislim da je to bio
bafer.:)
Na ovaj nacin sam dobio nesto,ali to je nekako nepotpuno.
Znaci,trebala bi mi neka ...procedura koja bi kao rezultat davala komandu,
string, koji sam napisao.Nadam se da sam bio dovoljno jasan. :)))
pascal.118dzakic,
-> #117, macak>> Budzim neki programcic koji treba da je rezidentan i koji bi
>> mogao da aktiviram pisuci neku naredbu ili nesto sto bi mogao da
>> razume.
Mislim da ti nije dobra ideja da na taj način proveravaš koja je
komanda zadata. Zamisli da si u editoru i da je poslednja reč u
redu naziv tvog programa, pritisneš enter... treba li da se
aktivira? Ili ako u kucanju komande koristio delete, u baferu
neće biti ono što ti očekuješ. Dakle, batali int 9.
Treba u okviru svog programa da napraviš proveru da li je
program već instaliran pa ako jeste da podesiš parametre prema
svičevima u komandnoj liniji (da se aktivira). Jel program u
paskalu?
A ako ti BAŠ koćeš da se tvoj program aktivira na komandu "dir"
recimo ;)) onda je to suviše podlo i takve savete ne dajem :)))
pascal.119dzakic,
-> #116, bearboy>> Napises program, kompajliras ga, linkujes ga, a posle toga
>> opalis Pklite -r (ne moze se vratiti u prvobitni oblik)
Molim objašnjenje za ovo. Ja uspevam da vratim program u izvorni
oblik pomoću -x i kad ga pklitujem sa -r... ?
pascal.120macak,
-> #118, dzakic>>Ako ti bas hoces da se tvoj program aktivira na komandu "dir"
recimo ;)) onda je to suvise podlo i ne dajem takve savete.
Ma ti si mene pogresno shvatio.Ovo ne pravi nikakve "podle" stvari.
Ako neces da mi pomognes,OK,a ako ne znas,onda opet OK.
Prevrnucu celu memoriju i naci cu sta mi treba.
pascal.121vasic,
-> #120, macakNije mi jasno zasto toliko insistiras na tome. Sta fali standardnom
pozivanju sa ctrl-alt-nesto i slicnim ? A ako vec treba da se poziva
samo iz komandne linije, zasto ga jednostavno ne stavis na path. ;)
Vasa
pascal.122dzakic,
-> #120, macak>> Ma ti si mene pogresno shvatio.Ovo ne pravi nikakve "podle"
>> stvari. Ako neces da mi pomognes,OK,a ako ne znas,onda opet OK.
>> Prevrnucu celu memoriju i naci cu sta mi treba.
Nemoj macak da se ljutiš, molim te. Video si smešak na kraju.
Reko, ako čovek pravi virus, bolje da ćutim ;)) Šala bre!
Dao sam ti par konkretnih predloga u prvom delu poruke a na njih
mi nisi odgovorio. Jel ok da pozoveš svoj program sa recimo
"proba -on" i on se aktivira, posle sa "proba -off" i on se
ugasi? Ako ti ovo odgovara (ovo sam već doktorir'o), rado ću ti
detaljno objasniti šta treba da radiš. Opet te pitam jel program
u paskalu ili mašincu?
pascal.123macak,
-> #122, dzakic>>OPet te pitam jel program u pascalu ili masincu?
Pa koliko znam,ovo je tema PASCAL,a ne asembler ili tome slicno.
Virus ne moze nikako biti je bi to onda bio virus od nekih 20-30KB.
Smesno.:))) Mislio sam da kad recimo napises TYPE,ne koristi DOS-ov
TYPE,nego rutinu iz programa koja bi recimo mogla da prikaze vise
fajlova i gde bi mogao da koristis * i ? u imenu.Prvo je to trebao
da bude neki batch fajl,ali sam od toga odustao. Mislim da bi ovako
bilo elegantnije i bolje.
S'vatas sta 'ocu da ti kazem? Znaci ono proba -on i proba -off otpada.
Ja sam samo pitao jel zna neko da dobijem ono sto sam napisao u
(ocde fali ^ kako)
komandnoj liniji ,a vi digli celu frku. :))))))
P.S.sorry zbog gresaka,ovo pisem on-line.
P.S.S.Ne ljutim se,DZ,samo sam mislio da ne znas :)))
pascal.124drakce,
-> #119, dzakic
│ Molim objašnjenje za ovo. Ja uspevam da vratim program u
│ izvorni oblik pomoću -x i kad ga pklitujem sa -r... ?
└────
To važi samo za registrovanu verziju. Verovatno si zaboravio da registruješ
PKlite O:)
pascal.125djelovic,
-> #123, macak> Smesno.:))) Mislio sam da kad recimo napises TYPE,ne koristi
> DOS-ov TYPE,nego rutinu iz programa koja bi recimo mogla da
> prikaze vise
A zasto ne izmenis COMMAND.COM tako da vise ne
prepoznaje TYPE (recimo preimenujes naredbu u QYPE), pa onda
negde u path stavis TYPE.EXE?
pascal.126vasic,
-> #123, macakDaleko najjednostavnije resenje za ovo je da u CEDu, 4dosu ili DOSKEYu
(sta vec koristis) definises odgovarajuci alias koji ce pozivati npr.
LIST (ima ga na sezamu) a koji vec ima sve to sto trazis.
Vasa
pascal.127macak,
-> #126, vasicPhuuu...ono gore je bio vise kao primer.
'ocete vi meni reci ono sto sam pitao ili necete (ili ne znate (?)) :)
(bolje da sam cutao :)) ).
pascal.128radunovic,
-> #117, macak
?! Znaci napisem u DOS-u nesto kao "aktiviraj se" <ENTER> i na taj nacin
?! ga startujem.Program presrece interapt 09 i posle pritiska na ENTER
?! on bi trebalo da proveri sta je napisano.Tu je problem - KAKO?
Pa kad vec presreces int 9 onda ti lepo u neku promenjivu pisi sve sto
se pritisne, pa kad dodje ENTER eto ti sve to u promenljivoj(npr stringu).
pascal.129alazic,
Pa , pod pretpostavkom da se radi o text modu , zasto jednostavno program ne bi
non Ú─Łë╚t-stop gledÚao u video memoriju , i kada ustanovi da je zadnjih xxx
slova iza kursora 'Dir' ili nesto slicno se a▀k▀tivirao-ŚÚÚ]. Za to imaEÇÚs sve
sto ti je potrebno u tp-u : WhereX WhereY i definises ▀screen :array [1..2000]
of word , absolute $b000Ú:0000 (ili vecÚş9 ÚÚ]gde treba , to pogledas negde
nize ▀). Ok ?
pascal.130dzakic,
-> #123, macak>> Ja sam samo pitao jel zna neko kako da dobijem ono sto sam
>> napisao u komandnoj liniji
E pa to konkretno ne znam, ali ja bih to rešio drugačije. Kao
što djelović reče, možeš da promeniš type u command.com-u u
nešto drugo, ali ako hoćeš da tvoj program bude sasvim legalan,
i da ga prodaješ :) što mu ne daš neko novo ime? Ako je zaista
koristan, korisnik će se brzo navići na mtype (mačkov type :) ...
U 4dosu sve može legalno aliasima. Zatim, postoji interapt koji
možeš da presretneš kod _izvršavanja_ programa sa odredjenim
nazivom (exec), za interne komande nisam našao ništa. A i
nelogično mi je da tvoj program bude rezidentan ako će ga neko
koristiti samo kod listanja datoteka (?)
dz
pascal.131dgrbic,
-> #123, macakImas u dosu funkciju (int 21h, ah=0ah) za citanje stringa sa
stdin.
Mozes nju da "uhvatis", pa da analiziras sta ona vraca.
Jedino ne znam da li bi to radilo ako korisnik ne upotrebljava
"cisti" command.com (on poziva ovu f-ju za unos stringa), nego
koristi neki ced, ili slicno.
pascal.132macak,
-> #130, dzakic>>mtype (mackov type)
Vec imam MTYPE.EXE :))
Vidis,ja ne znam da li postoji takavoftware,ali bi meni i recimo
jednom mom oratku {dobro dosao program koji bi kontrolisao
sta ti radis iz komandne linije.Program bi bio instaliran u
u autoexecu i mogao bi da podesis koja naredba bi radila ,a koja ne i
tako te stvarcice.
Pa ja reko,│ovo je lako!Ali se ispostavilo da tu postoji par problemcica :)
(dobro sad,mozda malo vise od PAR :) ).─
Ja sam dobio nesto uz pomoc
var komanda:^string;
begin
komanda:=Ptr(0,$2E0A);
...
Dobijem string.Lici.Ali nije to bas to.Dobije se jos Ęneko djubÍre
od prethod─ůne │narečd▀be i tako to.
pascal.133bearboy,
-> #119, dzakic-+={>> Napises program, kompajliras ga, linkujes ga, a posle
-+={>> toga opalis Pklite -r (ne moze se vratiti u prvobitni
-+={ oblik)
-+={
-+={ Molim objasnjenje za ovo. Ja uspevam da vratim program
-+={ u izvorni oblik pomocu -x i kad ga pklitujem sa -r... ?
Nisam siguran za ono -r, mozda je i nesto drugo (drugi switch).Inace tu opciju
ima SAMO registrovani Pklite. Dakle ako je nemate, koristite Lzexe...
pascal.134vasic,
-> #132, macak> Program bi bio instaliran u
> u autoexecu i mogao bi da podesis koja naredba bi radila ,a koja ne i
> tako te stvarcice.
Pa napravi MCED, ;) tj. preuzmi INT 21h FN 0Ah. To rade i CED i DOSED,
posto COMMAND.COM zove ovo za unos komandne linije. E onda, kad on
pozove tvoju rutinu, ti pustis korisnika da otkuca sta hoce, proveris da
li mu je to dozvoljeno, pa ili vratis korisnika na ponovni unos ili, ako
je sve u redu, prosledis to dalje.
Jedini problem je sto verovatno ne bi smeo da koristis TP-ove I/O
procedure i funkcije za ocitavanje tastature i ispis na ekran. Sto se
tice bafera tastature, pogledaj sta NG ima da kaze o recima na 0:417h i
0:41Ch.
Vasa
pascal.135vasic,
-> #134, vasic> tice bafera tastature, pogledaj sta NG ima da kaze o recima na 0:417h i
> 0:41Ch. ^^^^^^
Greska u kuc(k)anju. Ovo je trebalo da bude 0:41Ah. Sorry.
Vasa
pascal.136xenomorphe,
-> #115, predragd
> Pa u TP ne postoji procedura koja moze da cita sektore diska, ali
> zato postoji u DOS-u i BIOS-u. Saljem ti proceduru koja uz pomoc
> BIOS-ovog interapta $13 cita zadati sektor sa diska/diskete.
Hvala na ovoj proceduri, uspeo sam i da je isprobam, sasvim lepo radi.
Zaboravio sam, medjutim da postavim sasvim logicno pitanje: kako
stoje stvari sa analognom proc koja radi obratno: array > sector.
Ako budes stigao da mi posaljes (ili ma ko drugi), dobro bi mi dosla!
Pozdrav,
Dejan.
pascal.138predragd,
-> #136, xenomorphe Greska je moja sto se nisam setio da ti posaljem proceduru za
snimanje, no zato to sada ispravljam.
procedure write_sector (drive, head: byte;
track: word;
sector: integer;
var diskbuff: sector_buffer);
var
regs: registers;
begin
fillchar (regs, sizeof (regs), 0);
with regs do
begin
ah:=$03;
al:=$01;
es:=seg(diskbuff);
bx:=ofs(diskbuff);
ch:=track;
cl:=sector;
dh:=head;
dl:=drive;
intr($13,regs);
bioserror:=ah;
end;
end; { write_sector }
Dobra strana ovih procedura (pisanih u BIOS-u) je ta da mozes
citati i tabelu particija, i da slobodno mozes svrljati po celom
fizickom disku, a mana je ta sto ces tesko ustanoviti kako da
pristupis logickom disku (C, D, ...). Stoga ti preporucujem da
ponekad koristis i MS-DOS interapte ($25, $26), ili IO-CTL funkcije.
Zoran Zivotic ih je opisao u jednom broju "Racunara". Njihove opise
imas i na SEZAM-u, medju spisku svih dokumentavanih i
nedokumentovanih interapta. Ako ih nemas skinute, javi mi se pa cu ti
preneti opise tih interapta.
Pedja.
pascal.139drpr,
Zanima me da li može recimo da se u TP 5.5 ili recimo postoji
naredba pomoću koje mogu da uradim sledeće
Recimo kad startujem program Proba.exe koji je napravljen iz
paskala pročitam i prametre iza kao recimo
proba /s /p
kao u dosu sa %1 itd..
nadam se da sam bio jasan i molim pomoć
drpr
pascal.140macak,
-> #139, drpr>>Recimo kad startujem program Proba.exe koji je napravljen u pascalu
>>procitam i parametre...
Parametre mozes da procitas uz pomoc funkcija (ili procedura ?)
PARAMCOUNT:word i PARAMSTRING:string.
Prva ti pokazuje koliko parametara si stavio uz program
(proba /s /p ovde ima 2 komada).A da...PARAMSTRING(INDEX):string
(sorry,zaboravio sam ono index).Uz pomoc ove druge dobijas
neki od parametara iz opsega koji dobijes sa PRAMCOUNT.
recimo:
FUNCTION parametar:string;
BEGINHK
{recimo neka promenaljiva Q:STRING}
q:=paramstring(1);
{U tvom slucaju bi to bilo "/s"}
KK ....
parametar:=q;
KKEND.
Ili nesto slicno. :)))
pascal.141ivans,
-> #139, drprPostoji funkcija koja radi bas to, a i malo vise. Zove se ParamStr. ParamStr(0)
vraca ono sto ti treba - stazu i ime programa koji je startovan. ParamStr(n)
vraca n-ti parametar iz komandne linije ili prazan string ako je n vece od
ParamCount. O ovome je bilo reci u "Bajtovima licne prirode", "Racunari",
nepoznat broj.
Pozdrav,
Ivans.
pascal.142xenomorphe,
Kako da najjednostavnije iskompajliram pgm u TP, da graficke rutine
budu zajedno u istom EXE faju, tako da ne bude potreban BGI posebno?
Treba li u source-u nesto menjati i sta? U pgm. se koristi samo herc.
driver i standardne graph proced. i funkc.
Pozdrav,
Dejan.
pascal.143mjova,
-> #142, xenomorphe> Treba li u source-u nesto menjati i sta? U pgm. se koristi
> samo herc.
pretpostavljam da je isti postupak kao i u C-u. ne znam napamet
postupak, probao sam jedared i znam da nije bilo problema. ništa se ne
menja u source-u jednino se linkovanje radi drugim postupkom.
pascal.144kole,
-> #142, xenomorphe>> Kako da najjednostavnije iskompajliram pgm u TP, da graficke rutine
>> budu zajedno u istom EXE faju, tako da ne bude potreban BGI posebno?
Imaš demo pod imenom BGIDEMO u kome se objašnjava ono što Ti treba.
Suština je u tome da BGI-je prevedeš u OBJ (Sa BINOBJ ako se ne varam)
, zatim ih ulinkuješ u program sa {$Lblabla..}, kasnije registruješ njihovo
postojanje u memoriji,...
>> Treba li u source-u nesto menjati i sta? U pgm. se koristi samo herc.
Treba...
Pozdrav,
Kole
P.S. Ako nemaš taj DEMO poslaću ti...
pascal.145sslavko,
-> #142, xenomorphe>> Kako da najjednostavnije iskompajliram pgm u TP, da
>> graficke rutine budu zajedno u istom EXE faju, tako da ne
Zdravo,
Isti problem je i mene mucio. U C-u je to sve detaljno objasnjeno dok
je u TP-u samo napomenuto. Ja sam to jednom uspeo ali sad pojma nemam
kako. Znam da sam uspeo da ulinkujem HERC.BGI u .EXE fajl tako da je
grafika radila i ako nema poseban drajver. Postoji jedan primer tamo,
zove se BGILINK.PAS u kome je pokazano kako se linkuju i drajveri i
fontovi. Znam da sam na osnovu njega to uradio, ali nisam uspeo da
ulinkujem vise od jednog .BGI drajvera. Naime hteo sam da napravim
program koji ce da radi na svim grafickim kartama (za koje imam
drajvere), ali sam morao da ih imam u tekucem direktorijumu.
Imam jos jedno pitanje. Kako u text fajl ubaciti neku rec. Treba mi
nesto kao:
PROCEDURE INSERT(var f:text;mesto:integer;st:string);
begin
....... ovde se na poziciju "mesto" u fajlu f ubacuje rec st
end;
Resenje koje sam ja smislio mi deluje isuvise grubo. Prepisuje se ceo
fajl od pocetka do mesta "mesto", zatim se APPEND-uje rec st pa onda
ostatak fajla.
Pozdrav
Slavko.
pascal.146bojanp,
-> #140, macak> Parametre mozes da procitas uz pomoc funkcija (ili procedura ?)
> PARAMCOUNT:word i PARAMSTRING:string.
Funkcije su:
function ParamCount : word;
function ParamStr (index : word) : string;
Sem toga obrati paznju da su "razdvajaci" parametara white spaces, pa ako
neko napise:
proba /s/p
tu postoji samo jedan parametar, a ne dva!
Pozdrav, Bojan
pascal.147bojanp,
-> #142, xenomorphe> Kako da najjednostavnije iskompajliram pgm u TP, da graficke rutine
> budu zajedno u istom EXE faju, tako da ne bude potreban BGI posebno?
U okviru TP-a ima program BgiLink u kome je sve to lepo objasnjeno i
prikazano. Problem se svodi na to da se za svaki driver/font koji koristis
definise procedura koja pokazuje na njega i da se driver/font programom
BinObj prevede u object file.
> Treba li u source-u nesto menjati i sta? U pgm. se koristi samo herc.
> driver i standardne graph proced. i funkc.
Potrebno je na pocetku programa, pre inicijalizovanja grafike "prijaviti"
programu da se driver/font nalazi u okviru exe file-a funkcijama:
RegisterBGIdriver (Driver : pointer) : integer;
RegisterBGIfont (Font : pointer) : integer;
i to svaki driver/font posebno.
Svakako pogledaj primer i sve ce ti biti jasno, a ako bude problema javi se.
Pozdrav, Bojan
pascal.149ppekovic,
-> #145, sslavko>>Resenje koje sam ja smislio mi deluje isuvise grubo. Prepisuje se ceo
>>fajl od pocetka do mesta "mesto", zatim se APPEND-uje rec st pa onda
>>ostatak fajla.
To je i jedini način!
Paya
pascal.150grom,
-> #149, ppekovic@@>> Resenje koje sam ja smislio mi deluje isuvise grubo.
@@>> Prepisuje se ceo fajl od pocetka do mesta "mesto",
@@>> zatim se APPEND-uje rec st pa onda ostatak fajla.
@@
@@ To je i jedini način!
Možda i nije, zašto bi se prepisivao ceo fajl od početka. To jeste najlakši
način za realizaciju, ali sigurno nije i jedini. Ako je to problem koji se
često javlja u sslavkovom programu, verovatno se isplati napisati bolju
rutinu. Uzgred sslavko, voleo bih da znam kojeg su reda veličine fajlovi, a
kojeg je reda veličine reč st.
GROM
pascal.151ppekovic,
-> #150, grom>>Možda i nije, zašto bi se prepisivao ceo fajl od početka. To jeste najlakši
>>način za realizaciju, ali sigurno nije i jedini. Ako je to problem koji se
>>često javlja u sslavkovom programu, verovatno se isplati napisati bolju
>>rutinu.
Možda rutina u kojoj se prepisuje ceo fajl nije
najracionalnija sa stanovišta prostora ali sa stanovišta
brzine svakako jeste, a i uštede memorijskog prostora.
Naravno, postoji i mogućnost rada na istom fajlu tako
što bi se na mestu gde treba umetnuti novi deo, prethodni
zapamtio u memorijski bafer, pa onda kreneš, zapamtiš stari,
ubaciš novi, zapamtiš stari ubaciš novi ... Ubrzanje ovog
procesa je direktno proporcionalno veličini memorije odvojenoj
za befersisanje. Uz to, ovim načinom se malo više šeta file
pointer, pa samim tim i brzina neće biti zavidna.
Neko srednje rešenje je možda da se fajl podeli na dva
i to na onom mestu gde treba da se ubaci novo parče. Onda
napraviš novi fajl kao prvi_deo_starog + novi_deo +
drugi_deo_starog.
Ipak, onaj prvi način je najprihvatljiviji osim u
slučaju manjka disk prostora.
Paya
pascal.152bojanp,
-> #145, sslavko> Znam da sam uspeo da ulinkujem HERC.BGI u .EXE fajl tako da je
> grafika radila i ako nema poseban drajver. Postoji jedan primer tamo,
> zove se BGILINK.PAS u kome je pokazano kako se linkuju i drajveri i
> fontovi. Znam da sam na osnovu njega to uradio, ali nisam uspeo da
> ulinkujem vise od jednog .BGI drajvera. Naime hteo sam da napravim
> program koji ce da radi na svim grafickim kartama (za koje imam
> drajvere), ali sam morao da ih imam u tekucem direktorijumu.
Nije mi jasno kako nisi uspeo da link-ujes vise od jednog driver-a, kada je
bas u navedenom primeru (BgiLink) linkovano 4 driver-a i 4 font-a. Mozda
nisi bio registrovao sve driver-e.
Pozdrav, Bojan
pascal.153sslavko,
-> #150, grom>> Ako je
>> to problem koji se cesto javlja u sslavkovom programu,
>> verovatno se isplati napisati bolju rutinu. Uzgred
>> sslavko, voleo bih da znam kojeg su reda velicine
>> fajlovi, a kojeg je reda velicine rec st.
Ta rutina je trenutno *najcesce* pozivana rutina u programu. Zato i
trazim neko bolje i brze resenje. Kod ovog prepisivanja se trosi
*mnogo* vremena. Fajl ce ici do jedno 300k a reci do 70 znakova.
Radi se o nekoj bazi podataka koja se cesto azurira. Da stvar bude
komplikovanija ceo fajl je izdeljen na stranice od po 100 redova. Tako
ako korisnik hoce da ubaci novi red (duzine do 70 znakova) na drugu
stranicu onda se mora po jedan red sa svake sledece stranice prebaciti
na sledecu. Znaci poslednji red sa trece ide na cetvrtu i.t.d. Ovo sve
je nadgradnja vec postojeceg programa koji koristi taj format.
Pozdrav
Slavko.
pascal.154ndragan,
-> #145, sslavko/ Resenje koje sam ja smislio mi deluje isuvise grubo. Prepisuje se ceo
/ fajl od pocetka do mesta "mesto", zatim se APPEND-uje rec st pa onda
Jedino elegantnije rešenje je da se ceo iskopira u memoriju do tog mesta,
umetne reč i onda ... čekaj, mogao bi da pišeš preko tog istog, samo da guraš
tekst uvek malo dalje. Tu si na dobitku ako ti se reč javlja pri kraju fajla.
Recimo, dođeš do pozicije x koju si tražio; pročitaš sledećih n bajta, upišeš
svoju reč na x i za njom sledećih n-len(reč) bajta; onda pročitaš sledećih n,
upišeš poslednjih len(reč) i prvih n-len(reč) iz druge ture i tako do kraja.
Programče bi moglo da bude bombonica, a?
Ako se reč pojavljuje na početku, ili ako si nešto zeznuo - ili nisi dobio
bog zna šta na vremenu, ili... šta misliš zašto editori prave .BAK fajlove?
Bue_ NDragan
pascal.155ppekovic,
-> #154, ndragan>>Recimo, dođeš do pozicije x koju si tražio; pročitaš sledećih n bajta, upišeš
>>svoju reč na x i za njom sledećih n-len(reč) bajta; onda pročitaš sledećih n,
>> upišeš poslednjih len(reč) i prvih n-len(reč) iz druge ture i tako do kraja.
>> Programče bi moglo da bude bombonica, a?
Pa tu ideju sam i ja izložio u jednoj od prethodnih poruka, ali razmisli
malo. Prvo pomeriš fajl pointer napred za len(rač) bajtova. Pa ga onda vratiš
nazad za isto toliko bajtova da bi upisao novi tekst, pa sve tako do kraja
fajla. Moraš priznati da bi to radiiiillloooo.
Ja i dalje tvrdim da je NAJBRčE! rešenje prepisivanje fajla, a voleo bi
akobi neko mogao da napravi nešto brže, premda čisto sumnjam. Dakle, ajde
programeri, pokažćite se.
Paya
pascal.156skoprivica,
-> #154, ndragan A da proba da stavi rec na kraj texta pa zatim napravi index
fijl ? Radi super sa ne-text datotekama, tj. sa datotekama kod
kojih znas duzinu sloga (record), tj. nisi ogranicen eoln-ima...
Aje... CTEBO.
pascal.157grom,
-> #155, ppekovic@@ Ja i dalje tvrdim da je NAJBRčE! rešenje prepisivanje
@@ fajla, a voleo bi akobi neko mogao da napravi nešto brže,
@@ premda čisto sumnjam. Dakle, ajde programeri, pokažćite
@@ se.
Payo, Payo... Ajde ti napravi rutinicu za upisivanje reči u fajl tako kako
ti kažeš (to mogu i ja, al' da ne ispadne da sporo radi što sam ja kodirao
:) u Turbo Pascalu (ja dogurao do 5.0 :) a ja ću sa malo pointera, malo
keširanja :) pa da vidimo koja će brže da radi.
Da te upozorim, baza NEĆE stalno biti "u komadu" (znači, biće i rutina za
čitanje baze i za povezivanje baze kod zatvaranja), da ne pričaš posle da
nisi bio upozoren :)
Još nisam počeo da pišem, da neko ne kaže da sam to već uradio pa se sada
kurčim.
Ako si zainteresovan za duel, javi mi, pa da počnemo :)
Hristos se rodi!
GROM
pascal.158ppekovic,
-> #157, grom>>Ako si zainteresovan za duel, javi mi, pa da počnemo :)
Javljam ti. Ajde kreni sa svojim nacinom, a ja cu po sistemu prepisivanja
fajla. Kriterijumi dobrote programa su naravno brzina, ali i racionalnost
koriscenja memorije, kao i sigurnost podataka (nestanak struje, i sl.
problemi).
Paya
pascal.159macak,
-> #158, ppekovicTOOO!!! FIGHT! ;))
pascal.160cacxa,
-> #156, skoprivica> A da proba da stavi rec na kraj texta pa zatim napravi
> index fijl ? Radi super sa ne-text datotekama, tj. sa
> datotekama kod kojih znas duzinu sloga (record), tj. nisi
> ogranicen eoln-ima...
Uze mi reč iz usta...
pascal.162predragd,
-> #88, powderman Zdravo
Dakle, fazon je bio u tome da se datoteka cita s kraja ka pocetku,
dake unatrag. To bi se sve moglo srediti da definisemo jednu
tekstualnu datoteku, pozicioniramo se na njen kraj, proceitamo jedan
red, sa SEEK naredbom odemo dva reda unazad ... Medjutim TP
nedozvoljava SEEK naredbu kod tekstualnih datoteka.
Moja ideja je bila da se cita bajt po bajt unatrag, s tim da se
pazi na EOL karaktere ($13 $10). To i nije tako tesko uraditi samo
sto se citanje relativno sporo izvodi, no za pocetak mislim da ce ti
i ovo biti dovoljno.
Uses
Crt;
var
F: File;
FileName, Linija: String;
Ch1, Ch2, i: Byte;
begin
ClrScr;
Write ('Unesite ime tekstualne datoteke: ');
Readln (FileName);
Assign (F, FileName);
{$I-}
Reset (F, 1);
{$I+}
if IOResult <> 0 then
begin
Writeln ('Datoteka ', FileName, ' ne postoji.');
Halt;
end;
Linija:='';
Ch1:=0;
Ch2:=0;
Seek (F, FileSize (F) - 1);
While FilePos (F) > 0 do
begin
BlockRead (F, Ch1, 1);
Seek (F, FilePos (F) - 2);
if chr (Ch1) = #10 then
begin
BlockRead (F, Ch2, 1);
Seek (F, FilePos (F) - 2);
if Chr (Ch2) = #13 then
begin
for i:=Length (Linija) downto 1 do
Write (Linija [i]);
Writeln;
Linija:='';
end
else
begin
Seek (F, FilePos (F) - 2);
Ch1:=0;
end;
end
else
Linija:=Linija + chr (Ch1);
end;
close (F);
end.
pascal.163ndragan,
-> #155, ppekovic/ Ja i dalje tvrdim da je NAJBRčE! rešenje prepisivanje fajla, a voleo
Mislim da sam se lepo ogradio - ovo je interesantnije za programiranje, a
brže je samo ako je reč negde pri kraju. Dobar keš bi izravnao razlike u
brzini. Ona dopuna problema koja se u međuvremenu pojavila drastično menja
stvar. Tu stvarno treba razmisliti o indeksu. Indeksiranje teksta i nije neki
problem - postavlja se fizički fajl pointer na prvi bajt u liniji umesto na
broj sloga u DBF (a i taj služi da se recno()*recsize+header_len dobije opet
fizički pointer na prvi bajt sloga). Da stvar može sasvim lepo da radi,
primetili su svi koji koriste SOR.
Drugo je pitanje ako on sad tu treba da pravi servisnu rutinu za čačkanje
podataka koji se prave i koriste iz tuđeg programa. To onda više liči na
sviranje kontrabasa iza leđa u liftu ili tako neku ekvilibrističku tačku;
pitanje je koliko vremena sme da prođe da se datoteka drži u nekom međustanju
u kojem format ne bi odgovarao potrebama originalne baze. Ako se izmene mogu
raditi u paketu, moglo bi biti rešenje da se u neku datoteku sa strane upišu
sve izmene, sa tekstom izmene i pointerom na mesto na kojem treba da se
ubaci, a zatim da se paketnim prepisom napravi nova: prepisuje se
pravolinijski do mesta sledećeg umetka, umetne se, pa opet prepis do sledećeg
itd. To jeste ono najprostije rešenje, a tako nekako rade i neki of lajn
editori na vaksu i PDPu. Uslov je da izmene budu poređane po redosledu
pojavljivanja u tekstu.
Bue_ NDragan
pascal.164grom,
-> #158, ppekovic@@ Javljam ti. Ajde kreni sa svojim nacinom, a ja cu po
@@ sistemu prepisivanja fajla. Kriterijumi dobrote programa
@@ su naravno brzina, ali i racionalnost koriscenja
@@ memorije, kao i sigurnost podataka (nestanak struje, i
@@ sl. problemi).
@@
@@ Paya
E, pa, evo ga, dajem ga u PD :)
Verzija 0.1.
Radi samo insertovanje i čitanje, tek da se vidi kako radi.
A radi brzo. Koristi malo memorije, podaci su sigurni. Program stalno
zapisuje tabelu indeksa na disk, tako da se u slučaju pucanja (nestanak
struje ili slične nevolje) podaci mogu povratiti posebnim programom.
Šta to čujem "gde je taj posebni program" ?
Tu je zapravo, samo treba pročitati tabelu indeksa i uraditi fclose.
Ako bude interesovanja, uradiću i funkcije fdelete, fwrite i slične, onda
obradu grešaka (disk full i slično), otvaranje više fajlova istovremeno,
i očistiću ga od (eventualnih) bagova.
Ako bude interesovanja, otvoriću grupu koja će da pronalazi bagove.
GROM
P.S. U početku sam mislio da se petljam sa Fatom, ali sam odustao iz
razloga bezbednosti :)
P.P.S. Have a safe sex :)
P.P.P.S. A gde je tvoj program?
fafil.zippascal.165bojanp,
Da li je neko pretplaćen na "Inside Turbo Pascal"? Intersuje me koliko je
kvalitetan i da li se isplati?
Pozdrav, Bojan
pascal.166grom,
-> #164, gromTek sad sam video šta sam poslao onomad :)
Elem, više sreće u drugom pokušaju.
Greškom sam poslao "radnu" verziju, kojom sam vršio lov na bubice.
Sada, da bih se oprao, dodao sam i proceduru fdelete.
Ako je neko isprobao predhodnu verziju, izvinjavamo se, mnogo se
izvinjavamo :) ovaj put je sigurno sve u redu (99% očišćeno od bagova).
Ako i ovo nije dosta da me opere, sledeći put ću poslati i program za
popravku podataka (nestanak struje, i sl. problemi).
GROM
fafil.zippascal.167ppekovic,
-> #166, grom>>Ako je neko isprobao predhodnu verziju, izvinjavamo se, mnogo se
>>izvinjavamo :) ovaj put je sigurno sve u redu (99% očišćeno od bagova).
Khm, kod mene proradi onih 1%!
Ipak, da pojasnim u cemu je caka tj. ideja u tvom programu (objasnjenje by
dgrbic, grom's brother) :)
Stos je u tome sto se u toku rada programa za insert trosi jako malo
vremena jer ovaj sistem u stvari uopste ne uradi insert nego dati string zakaci
na kraj fajla formirajuci neku pokazivacku strukturu. Kada se zatvori datoteka,
onda se fajl pakuje, tj. vrsi se stvarno umetanje umetnutih stringova na
njihova mesta, sto raaadddiiiiiI!!!!
Dakle, ovim je reseno brzina ubacivanja u toku samog rada, s tim sto se
javljuju neki sitniji problemi a to su da u toku rada, fajl moze da se cita
samo sa prilozenom funkcijom fread. Naravno, da bi sistem bio fleksibilniji,
moguce je brisati delove fajla.
E sad, tu ostaje coveku da izabere sta mu treba, ali na kraju ipak
dolaziomo do toga da fajl moras da prepisujes kako god okrenes, jedino sto to
ne mora uvek da se radi. A kad smo vec kod te ideje, bas cu da probam jednu
drugu varijantu u kojoj bi se novi stringovi dodavali u poseban fajl, a ne na
kraj postojeceg, kako bi se sacuvala originalna struktura baze, a i mislim da
bi radilo brze. Videcemo ...
Paya
pascal.168djnsnd,
-> #165, bojanp> Da li je neko pretplaćen na "Inside Turbo Pascal"?
> Intersuje me koliko je kvalitetan i da li se isplati?
Nisam pretplaćen, ali sam uz TP dobio besplatnu ponudu
da mi pošalju 3 broja, pa da posle odlučim da li ću se
pretplatiti. (Sva sreća.)
Nisam ni malo oduševljen časopisom. Nije da nema šta da se pročita,
ali očekivao sam mnogo više.
To je časopis sa 4-5 članaka u broju i listinzima programa.
Ako te interesuje mogu ti dati da vidiš.
Dejan
pascal.169grom,
-> #167, ppekovic@@ Khm, kod mene proradi onih 1%!
Ops, pa da, ja sam i rekao da je program 99% očišćen od bubica. Treba samo
neke promenljive prebaciti iz integer u longint :). Što je promena u manje
od 1% teksta programa (kako se vadim :). Kod mene je jedno vreme
radilo, a onda sam da bih vama nezahvalnicima uštedeo par bajtova
prebacivao promenljive koje su UVEK manje od MAXINT u integer. Problem je
što se onda množenjem dve integer promenljive dobija i integer rezultat :(.
Inače, i ovakav kakav je bio radi sa fajlovima kraćim od 64k.
A ti odmah moj mali programčić vs. 1M dugačkog fajla. Stidi se!
Nisam ni napomenuo da provera stringova mora biti u TP konfigurisana kao
RELAXED, ali sam živeo u dubokom ubeđenju da je već kod svih tako, je li
Payo :).
@@ Stos je u tome sto se u toku rada programa za insert
@@ trosi jako malo vremena jer ovaj sistem u stvari uopste
@@ ne uradi insert nego dati string zakaci na kraj fajla
@@ formirajuci neku pokazivacku strukturu. Kada se zatvori
@@ datoteka, onda se fajl pakuje, tj. vrsi se stvarno
@@ umetanje umetnutih stringova na njihova mesta, sto
@@ raaadddiiiiiI!!!!
Pa nije baš. Ovaj sistem u stvari uradi insert, ali CEO dobijeni klaster
(ili dva) zakači na nekorišćeno mesto u fajlu.
U pravu si da se troši jako malo vremena u toku rada :), a to da pri
zatvaranju fajla raaaaadddiiiiii, raaaaadddddiiii nešto duže od
prepisivanja celog fajla (jel to beše tvoja ideja), ali SAMO JEDNOM U TOKU
RADA. Zamisli samo 10 insertovanja ili brisanja iz baze. A i ta dužina je
uglavnom posledica malog bafera koji sam predvideo za prepisivanje. Ako se
pokaže interesovanje potrudiću se da za prepisivanje odvojim svu
raspoloživu memoriju. Ali u neko veće interesovanje ne verujem. Izgleda da
samo ti i skidaš sve verzije (koje ne rade kako treba) ovog programa, ti si
jedini i primetio da ne radi.
@@ Dakle, ovim je reseno brzina ubacivanja u toku samog
@@ rada, s tim sto se javljuju neki sitniji problemi a to su
@@ da u toku rada, fajl moze da se cita samo sa prilozenom
@@ funkcijom fread. Naravno, da bi sistem bio fleksibilniji,
@@ moguce je brisati delove fajla.
Šta fali, bolje fread nego blockread, lakše se kuca (jednom rukom :).
A možeš upisivati i malo veće strukture >64k (mada ruku na srce, to stvarno
nisam proverio, gde naći >64k smislenih podataka :).
Aha, primetio si i brisanje :).
@@ E sad, tu ostaje coveku da izabere sta mu treba, ali na
@@ kraju ipak dolaziomo do toga da fajl moras da prepisujes
@@ kako god okrenes, jedino sto to ne mora uvek da se radi.
@@ A kad smo vec kod te ideje, bas cu da probam jednu drugu
@@ varijantu u kojoj bi se novi stringovi dodavali u poseban
@@ fajl, a ne na kraj postojeceg, kako bi se sacuvala
@@ originalna struktura baze, a i mislim da bi radilo brze.
@@ Videcemo ...
Aha, sada i ti misliš da može još brže (zaražen si, možda neizlečivo).
Naravno da fajl mora da se prepisuje, samo je razlika jednom ili 10, 100,
1000... puta. Varijanta sa dodavanjem stringova u poseban fajl, hm, opet bi
moralo da se na kraju prepisuje, opet bi bila potrebna fread naredba, a
očuvanje originalne strukture baze... Zašto? Vratićemo je u originalnu
strukturu sa fclose. A i mislim da bi bilo sporije :)
Videćemo.
GROM
PS. Zna li neko šta radi šta radi ovaj program? Ne, ali evo ga opet!
fafil.zippascal.170ppekovic,
-> #169, grom>>U pravu si da se troši jako malo vremena u toku rada :), a to da pri
>>zatvaranju fajla raaaaadddiiiiii, raaaaadddddiiii nešto duže od
>>prepisivanja celog fajla (jel to beše tvoja ideja), ali SAMO JEDNOM U TOKU
>>RADA
Pa cela diskusija je krenula od ideje da coveku treba umetanje JEDNOG
stringa u fajl. I sve vreme se i pricalo u umetanju jednog stringa u fajl. Tako
da ja i dalje stojim iza toga da je prepisivanje celog fajla najbrzi nacin. E
sad, ovaj sistem koji si napravio je stvarno vredan postovanja, ali cim nadjem
par sati rvemena realzovacu onu ideju sa pamcenjem inserta u odvojenom fajlu
itd.
Dakle, imao dve stvari. Prvo: za ibacivanje jednog sloga (ili vise
svejedno) ali odjednom, najbrzi je sistem prepisivanja fajla, sto na neki nacin
i sam radis na kraju fafil-a.
E sad, smo dakle stalo kod drugog dela a to je na koji nacin u toku rada
pamtiti stringove za umetanje da bi na kraju prepisivnje bilo najbrze.
Paya
pascal.171sslavko,
-> #170, ppekovic>> Pa cela diskusija je krenula od ideje da coveku treba
>> umetanje JEDNOG stringa u fajl. I sve vreme se i pricalo
>> u umetanju jednog stringa u fajl. Tako da ja i dalje
>> stojim iza toga da je prepisivanje celog fajla najbrzi
>> nacin.
Ja se izvinjavam sto nisam ukljucen u diskusiju, ali stvarno nemam
vremena. Coveku treba taj program *hitno* da se zavrsi pa sad sve
slobodno vreme provodim sa tim. Inace, problem umetanja sam resio na
najjednostavniji moguci nacin, a kako ti kazes i najbrzi. Kad god mi
zatreba ubacivanje stringa ja lepo isprepisujem ceo fajl. Inace cela
ova diskusija je izuzetno zanimljiva i moze da bude stvarno korisna
ostalima. Cim nadjem malo vremena ukljucicu se.
Pozdrav
Slavko.
pascal.172grom,
-> #170, ppekovic@@ Pa cela diskusija je krenula od ideje da coveku treba
@@ umetanje JEDNOG stringa u fajl. I sve vreme se i pricalo
@@ u umetanju jednog stringa u fajl.
Hm, Payo, sećaš li se ove poruke (sledi). To umetanje stringa u fajl
je *najčešće* korišćena rutina u programu. Ne verujem da se ta priča
odnosi na to da se rutina poziva na N (N=mnogo) mesta u programu, a
da se izvrši samo jedan put (mada, video sam ja i takve programe).
Znači krenuli smo sa različitih početnih pozicija (ha, uhvatio sam te
da ne čitaš poruke, modulatore). Ja se izmuči pišući one rutine, izbruka
se zbog onih grešaka, a ti tako.
@@>> Ako je
@@>> to problem koji se cesto javlja u sslavkovom programu,
@@>> verovatno se isplati napisati bolju rutinu. Uzgred
@@>> sslavko, voleo bih da znam kojeg su reda velicine
@@>> fajlovi, a kojeg je reda velicine rec st.
@@
@@ Ta rutina je trenutno *najcesce* pozivana rutina u
@@ programu. Zato i trazim neko bolje i brze resenje. Kod
@@* ovog prepisivanja se trosi mnogo* vremena. Fajl ce ici
@@* do jedno 300k a reci do 70 znakova.
GROM
PS. Jasno da bi bilo najbrže da je baza indeksirana. Ove nesrećne rutine
koje sam napisao upravo indeksiraju na neki način tekstualnu bazu, i
ako kojim slučajem nema potrebe za obradom baze nečim drugim (recimo
tekst editorom), ona se i ne bi morala uvek zatvarati na dati način.
Međutim, nekoliko sekundi za 1MB fajl i nije tako mnogo, a dobija se
na fleksibilnosti.
pascal.173lgut.,
Zdravo narode !
Posedujem PC AT i imam problema sa Turbo Pascal-om (ver. 5.5) i misem.
Problem je u tome sto ne znam kako da prikazem graficki kurzor misa t.j kako
da kazem programu da iscrtava graficki a ne tekstualni kurzor.
Program koji koristim je sledeci :
uses
crt , dos , graph;
var
GrDriver : Integer;
GrMode : Integer;
Reg : Registers;
begin
GrDriver := DETECT;
InitGraph (GrDriver , GrMode , '');
reg.ax := 1; { 1 oznacava broj funkcije }
intr ($33,reg); { a 33 interap misa }
repeat until keypressed;
end.
UNAPRED ZAHVALAN
lgut. of Zrenjanin
pascal.174sslavko,
-> #173, lgut.>> Problem je u tome sto ne znam kako da prikazem graficki
>> kurzor misa t.j kako
09h Define Graphics Cursor ( funkcija 9 interapta $33 )
entry AH 09h
BX column of cursor hot spot in bitmap (-16 to 16)
CX row of cursor hot spot (-16 to 16)
ES:DX pointer to bitmap
16 words screen mask
16 words cursor mask
return unknown
note Each word defines the sixteen pixels of a row, low bit
rightmost
pascal.175predragd,
Zdravo
Nedavno sam dobio sa TRICKLE-a sours ZMODEM protokola na TP. Medjutim
kao sto cete videti u primeru, traze se neki UNIT-i koji nisam dobio. Cini
mi se da ih na TRICKLE-u nema. Moze li mi neko reci gde se ti UNIT-i mogu
nabaviti.
UNIT TpzAsync;
(* Modem interface routines for Turbo Pascal Zmodem *)
(* (c)1988 by J.R.Louvau *)
(* You will need a copy of PIBASYN45 to compile *)
(* this unit. *)
INTERFACE
USES Dos, PibAsync, PibTimer, GlobType;
Pozdrav, Pedja.
pascal.176pbojan,
Ima li neko proceduru (ili funkciju) za trazenje INVERZNE MATRICE?
HITNO!!
pBOJAN
pascal.177nboskovic,
-> #176, pbojan*> Ima li neko proceduru (ili funkciju) za trazenje INVERZNE
*> MATRICE?
Mislim da ne bi bilo frke da se napiše program. Ako ne znaš
Inverzna Matrica se računa na sledeći način:
┌ ┐
│A11 A12 ... A1s│
│A21 A22 ... A2s│
│. │
A=│. │ r=s
│. │
│. │
│Ar1 Ar2 ... Ars│
└ ┘
E ovo je data matrica za koju tražiš inverznu. Izračunava se
na sledeći način:
A*
A^-1= ───
detA
gde je A* adjugovana matrica tj. matrica čiji su članovi promenili
mesta u odnosu na osnovnu matricu A po glavnoj dijagonali. Glavna
dijagonala je od člana A11 do Ars.Nadam se da ti je ovo jasno.
Izvinjavam se ako si ovo znao a trebao ti je samo gotov program ali
ne bi trebalo da je frka da se napiše program.
(c) klap
nikola
pascal.178prvul,
-> #177, nboskovic>> gde je A* adjugovana matrica tj. matrica čiji su članovi promenili
>> mesta u odnosu na osnovnu matricu A po glavnoj dijagonali. Glavna
Nije. Ako sam dobro naučio ovu svoju algebru ( a valjda jesam) onda
si ti upravo opisao transponovanje, a ne adjungovanje matrice. Adjugovana
matrica se dobija kada se svaki element matice zameni svojim kofaktorom (a
kofaktor nekog elementa a[i,j] je determinanta submatrice koja se dobije
kada se iz matrice izbaci i-ta vrsta i j-ta kolona), pa se dobijena matrica
transponuje.
Prvul.
pascal.179spantic,
-> #176, pbojan> Ima li neko proceduru (ili funkciju) za trazenje INVERZNE
> MATRICE?
Je li može na FORTRANU 77? Mrzi me da to ponovo pišem na TP, ali ako je
hitno...
pascal.180pbojan,
-> #179, spantic>> Je li moze na FORTRANU 77? Mrzi me da to ponovo pisem na TP, ali ako je
>> hitno...
Moze i na francuskom, sto se mene tice :))). Dakle, 77, ne pravim pitanje.
pBOJAN
ps. Thanks.
pascal.181nboskovic,
-> #178, prvul*> Nije. Ako sam dobro naučio ovu svoju algebru ( a valjda
*> jesam) onda si ti upravo opisao transponovanje, a ne
*> adjungovanje matrice. Adjugovana
Dobro. Onda matrica A* izgleda ovako:
┌ ┐
│A11 A21 ... An1│
│A12 A22 ... An2│
│. │
A*=│. │
│. │
│A1n A2n ... Ann│
└ ┘
Nadam se da je sad jasnije šta i kako. Inače, u knjizi iz matematike
1 piše sledeće:
Ako je matrica A regularna, vodeći računa o tome kako se množe
determinante, njenu inverznu matricu možemo odrediti na sledeći način.
Neka su Aik, i, k=1,2,...,n, kofaktori elemenata matrice A. Adjugovana
matrica, u oznaci A*, matrice A je matrica (pa je ovde napisana gornja
matrica).
Ovo je izvod iz knjige Determinante, matrice, vektori, analitička
geometrija od Zlatka P. Mamuzića iz koje sam spremao matiš 1 za mašinac
odavno. Nadam se da negušimo auditorijum a ako gušimo pardoniram se.
(c) klap
nikola
pascal.182gww.,
-> #178, prvulJes. Mada mi se oduvek najviše svidjao sledeći metod:
┌ │ ┐
│A11 A12 ... A1s│ 1 0 0 ... 0 │
│A21 A22 ... A2s│ 0 1 0 ... 0 │
│. │ 0 0 1 │
│. │. │
│. │. │
│. │. │
│Ar1 Ar2 ... Ars│ 0 0 0 ... 1 │
└ │ ┘
│
Jedinična matrica
e pa lepo, onak se potrudiš da leva matrica posane jedinična radeći iste
operacije sa jednim ili više redova u cugu, a kad sa leve strane dobiješ
jediničnu ona sa desne strane je inverzna.
Pozdrav GWW.
pascal.183pbojan,
-> #180, pbojan
I, bre, ljudi, dok mi vi objasniste ono sto sam 'polozio' pre tri godine,
ja sam seo i napravio stvar ( mada sa kasnjenjem od 2 dana ).
U svakom slucaju, hvala svima na trudu i zalaganju.
pBOJAN
pascal.184vojkan,
Jel zna neko da li ima neki grafički program
koji pretvara sliku u sors kod TurboPaskala.
Pozdrav VOjkan
pascal.185mensi,
Da li u *standardnom* Paskalu postoji funkcija za generisanje slucajnih
brojeva? Treba mi brz odgovor (koristice mi i ako neko zna takvu funkciju
u mekintosevom Paskalu). Hvala unapred
mensi
pascal.186ivans,
-> #185, mensi* Da li u *standardnom* Paskalu postoji funkcija za
* generisanje slucajnih brojeva? Treba mi brz odgovor
Koliko mi je poznato, ne. U knjizi "Programski jezik Pascal" (Vojislav
Stojkovic, Dusan Tosic, Ivan Stojmenovic) se ne pominju slucajni brojevi, a
sama knjiga je manje-vise opis standardnog Paskala.
Pozdrav,
Ivans.
pascal.187mjova,
-> #184, vojkan> Jel zna neko da li ima neki grafički program
> koji pretvara sliku u sors kod TurboPaskala.
e, ne znam paskal, ali me zanima kako si mislio da se slika pretvori u
source? nije mi jasno. možda te zanima kako je odštampati na ekran?
ima dosta programa koji skidaju sliku u neki od formata (gif, pcx..),
ali source?
SY
pascal.188macak,
-> #185, mensi>>Funkcija za generisanje slucajnih brojeva...
U Turbo Pascalu 5.0 (taj fosil ja imam :)) ) postoji funkcija
RANDOM.Ova funkcija daje slucajan broj.Broj je iz opsega word ili
65535 (jel bese toliko? ).Ako je zadata kao RANDOM(opseg),onda
daje slucajan broj iz intervala OPSEG.
Pre ove funkcije se mora inicijalizovati generator slucajnih brojeva
sa RANDOMIZE.
E sad, za Pascal na meku je valjda isto (a mozda i nije? :)) ).
Ovde su 2 trivijalna primera koriscenja ovih funkcija i dobijanja
slucajnih brojeva :
program slucajan_broj;
var opseg:word;
broj :word;
begin
write('Upisi opseg :');readln(opseg);
randomize;
broj:=random(opseg);
writeln('Slucajan broj je:',broj);
end.
ili:
~~~~~~
program slucajan_broj_1;
uses dos,crt;
var broj :word;
koliko,q :longint;
begin
clrscr;
writeln('Gneracija slucajnih brojeva od 1 do 100 - by macak');
write('Upisite koliko slucajnih brojeva zelite :');readln(koliko);
write('Slucajni brojevi su:');
for q:=1 to koliko do
begin
randomize;
broj:=random(100);
write(broj,',');
delay(100);
end;
end.
Nadam se da ce ti ovo nesto koristiti. :)
P.S.Btw,a za cega sluzi F1 (HELP) ???? :))))))
pascal.189bojanp,
-> #188, macak>>> Funkcija za generisanje slucajnih brojeva...
> U Turbo Pascalu 5.0 (taj fosil ja imam :)) ) postoji funkcija
> RANDOM.Ova funkcija daje slucajan broj.Broj je iz opsega word ili
> 65535 (jel bese toliko? ).Ako je zadata kao RANDOM(opseg),onda
> daje slucajan broj iz intervala OPSEG.
Vidim ja da je ovde uputstvo mislena imenica :)
Funkcija Random
---------------
Funkcija: Vraća pseudo-slučajan broj
Deklaracija: Random [ (Range : word) ]
Tip rezultata: real ili word u zavisnosti od parametra
Napomena: Ako Range nije zadata, rezultat je tipa real a broj je
u opsegu 0 <= X < 1. Ako je Range zadat, izraz mora
biti tipa integer, a rezultat je pseudo-slučajni broj u
opsegu 0 <= X < Range. Ako je Range jednak 0, biće
vraćena vrdnost 0.
Inače u standardnom Pascal-u ne postoji funkcija za genersianje
pseudo-slučajnih brojeva!
Pozdrav, Bojan
pascal.190vojkan,
-> #187, mjova-> e, ne znam paskal, ali me zanima kako si mislio da se
-> slika pretvori u source? nije mi jasno. možda te zanima
-> kako je odštampati na ekran?
Pa program za crtanje koji recimo crta po pascalovim
procedurama i celu sliku može da pretvori u jednu datoteku
koja bi sadržala procedure Graph.tpu (unit) tako da u svako
doba mogu da te procedure kao blok ubacim u *.pas datoteku.
Pitam ovo jer sam mislio da napravim nešto tako :)
Olakšalo rad sa grafikom 1000x moraš priznati :)
VOjkan
P.s. COPYRIGHT BY ^^^^^^
pascal.191vojkan,
-> #185, mensi
U Turbo Pascalu posotoji funkcija RANDOM ([Number:Word]);
(naravno pre toga inicijalizuješ generator brojeva)
koja daje proizvoljan broj. Verovatno i kod tebe postoji
nešto slično ako ne probaj da je napraviš (recimo uzmi sat
kao generator brojeva).
pascal.192vojkan,
-> #188, macak-> P.S.Btw,a za cega sluzi F1 (HELP) ???? :))))))
Pa nije svaki paskal TURBO :))))
pascal.193mensi,
-> #186, ivans>> Koliko mi je poznato, ne. U knjizi "Programski jezik
>> Pascal" (Vojislav Stojkovic, Dusan Tosic, Ivan
>> Stojmenovic) se ne pominju slucajni brojevi, a sama
>> knjiga je manje-vise opis standardnog Paskala.
Ocekivao sam ovakav odgovor (ipak i ja citam uputstva), ali se tebi i
svim ostalima koji su mi odgovorili zahvaljujem na trudu. Pozdrav,
mensi
pascal.194mensi,
-> #188, macak>> E sad, za Pascal na meku je valjda isto (a mozda i nije?
>> :)) ).
Za paskal na meku stvarno vazi nesto slicno (to sam nasao u medjuvremenu
jer sam nabavio Mac Pascal Reference Manual). Hvala za primere (iako ih
verovatno necu iskoristiti - da te ne lazem).
>> P.S.Btw,a za cega sluzi F1 (HELP) ???? :))))))
Nisam siguran da razumem smisao ovog pitanja, ali ako se odnosi na help
funkciju koja je obezbedjena u nekom od (Turbo) paskala, moram ti reci
da ja nemam takvu olaksicu na mekintosu (zamisli, imam samo *taj* paskal),
mada se ja ne zalim na njegov graficki interfejs.
mensi
pascal.195mensi,
-> #189, bojanp>> Vidim ja da je ovde uputstvo mislena imenica :)
Da bi procitao uputstvo, prvo ga treba imati (ili bar naci nekog ko ga ima).
U svakom slucaju, hvala za korisne detalje u vezi ove funkcije (ako budem
radio u Turbo paskalu bice barem jedna funkcija zbog koje necu morati
da konsultujem UPUTSTVO).
mensi
pascal.196ivans,
-> #189, bojanp* Inace u standardnom Pascal-u ne postoji funkcija za
* genersianje pseudo-slucajnih brojeva!
Pa, covek je to i trazio! Zao mi sto nema... :(
Pozdrav,
Ivans.
pascal.197mensi,
-> #191, vojkan>> U Turbo Pascalu posotoji funkcija RANDOM ([Number:Word]);
>> (naravno pre toga inicijalizujes generator brojeva)
>> koja daje proizvoljan broj. Verovatno i kod tebe postoji
>> nesto slicno ako ne probaj da je napravis (recimo uzmi
>> sat kao generator brojeva).
Ne mogu da ostanem ravnodusan na toliki trud koji je ulozen da se
odgovori na moje pitanje pa cu i ja reci kako se generise slucajni
broj u MacPascalu (to sam saznao kad mi je doslo pod ruku UPUTSTVO
- naravoucenije neka izvuce svako za sebe):
-----
var
k: integer;
----
k:=random;
----
...
Ovo da se funkcija zove random verovatno nikad ne bi pogodili (ovo je teska
ironija na moj racun, jer ja ipak nisam pogodio), ali cu reci da se primenom
ove funkcije dobija ceo broj iz opsega -32768 do 32767. Hvala jos
jednom svima,
mensi
pascal.198macak,
-> #189, bojanp>>Vidim ja da je ovde uputstvo mislena imenica!:)
Kod mene u uputstvu pise:
function Random [ ( range : word ) ] :
(Same type as parameter)
Return a random number.
See also Randomize
--------
(neka posle neko kaze da je uputstvo mislena imenica :))))) )
P.S.Pa daa...mogli smo da pretpostavimo! To je nesto kao u obicnom
basic-u ...naravoucenije:ko ne cita uputstvo,taj voli sladoled
od cokolade :)))))
pascal.199jtoma,
-> #176, pbojan Uz poruku su procedure koje ja koristim za invertovanje
matrice. Kompletno objasnjenje je dato uz svaku proceduru.
Originalne procedure su bile pisane za FORTRAN, pa sam ih ja
preveo na NOS/VE Pascal (masina je CDC CY 180, drz'te se),
medjutim rade vrlo dobro i sa QUICK (odnosno TURBO) Pascal-om
(provereno).
Pozdrav, Janos.
PS. Ako imas bilo kakav problem -> MAIL.
linal.zippascal.200radunovic,
-> #184, vojkan
?! Jel zna neko da li ima neki graficki program
?! koji pretvara sliku u sors kod TurboPaskala.
Koju sliku, kog tipa? Ja mislim da imas negde u ovoj temi
procedure za prikazivanje gifova. Ali za prebacivanje u sors
nema. Sta ce ti to? To ce ti zauzeti mnogo vise prostora nego
ovako.
pascal.201ndragan,
-> #182, gww./│ A11 A12 ... A1s│ 1 0 0 ... 0 │
/ ...
/ Jedinična matrica
Ovo mi je bio omiljeni sport kad sam polagao linearnu algebru i numelu
(numeričke metode linearne algebre). Stara dobra vremena...
Bue_ NDragan
pascal.202bearboy,
-> #187, mjova-+={ ima dosta programa koji skidaju sliku u neki od formata
-+={ (gif, pcx..), ali source?
Ako je mislio na to, ja sam napravio jedan... Jes' da je spor k'o bog, al'
ima source i radi...
PS. Ako vam treba, recite, jer' cu staviti kopirajt, itd.. :)
pascal.203ognjan,
-> #202, bearboy
>> Ako je mislio na to, ja sam napravio jedan... Jes' da je spor k'o bog, al'
>> ima source i radi...
Jel' može da skine sa VGA karte sliku u GEM (IMG) formatu ???
Ako može, šalji odma' !
Pozdrav, Ogy.