pascal.1037vector,
-> #1036, duskos> Da li neko ima komunikacione rutine za modem za BP 7.
> Ako postoji na Sezamu, recite mi gde.
Poruka broj 8.1026 u ovoj konferenciji.
pascal.1038ognjen,
-> #1035, nbjvsb)-> je ok, ako nije, izlazi iz programa. E sad, ja hocu da mu,
)-> cim pozove int $13 odmah u es:bx strpam taj podatak, bez da
)-> on proverava disketu.
Pa lako je. Preuzmi interapt za citanje. I umesto da ti
odradis posao pa pozoves originalni interapt, prvo pozovi
originalni interapt, pa promeni procitani sadrzaj.
pascal.1039nenad,
-> #1036, duskos> Da li neko ima komunikacione rutine za modem za BP 7.
> Ako postoji na Sezamu, recite mi gde.
SWAG - najveća kolekcija korisnih Pascal rutina i programa.
Ovo je ALLSWAGS od avgusta ove godine, noviji još nije izašao.
SWAG packets are available in 60 different catagories as follows :
ANSI ARCHIVES CHARS CMDLINE COLOR
COMM COPYMOVE CRC CRT CURSOR
DATATYPE DATETIME DELPHI DESQVIEW DIRS
DOS DRIVES EGAVGA ENCRYPT ENTRY
EXEC FAQ FILES FINDREPL GRAPHICS
HARDWARE INTERRUP ISR JOYSTICK KEYBOARD
MAIL MATH MEMORY MENU MISC
MOUSE NETWORK NUMBERS OOP PARSING
POINTERS PRINTING RECORDS REDIRECT SAVESCRN
SCREEN SCROLL SORTING SOUND STREAMS
STRINGS TEXTEDIT TEXTFILE TEXTWNDW TIMING
TSR UNITINFO WIN-OS2 TURTLE TUTOR
The SWAG Reader and *.SWG files are contained in various archives (ZIP204) :
SWAG.ZIP - Contains READER.EXE and Information files.
SWAGA-C.ZIP - Contains ANSI through CURSOR
SWAGD-F.ZIP - Contains DATATYPE through FINDREPL
SWAGG-M.ZIP - Contains GRAPHICS through MOUSE
SWAGN-R.ZIP - Contains NETWORK through REDIRECT
SWAGS-Z.ZIP - Contains SAVESCRN through WIN-OS2
ALLSWAGS.ZIP - Contains ALL SWAG packets PLUS READER.EXE (LOTS of bytes !!)
These packages will updated approximately every 90 days, as more "snipetts"
are collected. Each update will be provided in a "stand-alone" EXE file
that will automatically insert the new material to the existing libraries.
These update packages will be distributed the LAST week of each of the
following months, and will be named as :
FEBRUARY - SWAGYY02.ZIP
MAY - SWAGYY05.ZIP
AUGUST - SWAGYY08.ZIP
NOVEMBER - SWAGYY11.ZIP
Each file will be named using the year (YY) and month (2,5,8,11) of
distribution.
We estimate that there eventually will be over 3000 of these covering EVERY
POSSIBLE aspect of PASCAL.
Enjoy and GOOD PROGRAMMING !!!
SWAG Support Team - Internet Addresses:
Gayle Davis
GDSoft
gdavis@gdsoft.com
Jeff Fanjoy (Micky)
MatrixSoft(tm)
jfanjoy@interlog.com
pascal.1040nenad,
-> #1038, ognjen> Ovo je ALLSWAGS od avgusta ove godine, noviji još nije izašao.
Zaboravih... Dakle - OVO je allswags od avgusta ove godine:
dos\prog\pascal\*.*
------------------
allswags.zip 8408k ű SWAG 8/97: velika zbirka korisnih Pascal rutina i progr.
U datoteci je i program za pretraživanje i "browsing" kroz bazu.
pascal.1041duskos,
-> #1040, nenad>> Ovo je ALLSWAGS od avgusta ove godine, noviji jos nije izasao.
>
> Zaboravih... Dakle - OVO je allswags od avgusta ove godine:
> dos\prog\pascal\*.*
> ------------------
> allswags.zip 8408k ű SWAG 8/97: velika zbirka korisnih Pascal rutina i
> progr.
> U datoteci je i program za pretrazivanje i "browsing" kroz bazu.
Hvala very much!
Nadam se da ce mi ovo pomoci.
Pozdrav, duskos!
pascal.1042duskos,
-> #1037, vector>> Da li neko ima komunikacione rutine za modem za BP 7.
>
> Poruka broj 8.1026 u ovoj konferenciji.
Thanks you takodje.
Pozdrav, duskos!
pascal.1043nbjvsb,
-> #1038, ognjen>> Pa lako je. Preuzmi interapt za citanje. I umesto da ti
>> odradis posao pa pozoves originalni interapt, prvo pozovi
>> originalni interapt, pa promeni procitani sadrzaj.
Tacno, al' ja pojma nemam kako to da uradim, a da radi :)
Evo ga kod, pa ono, sta tu ne valja, i slicno? :)
program Koznasta;
{$M $8000,0,0 }
uses
Crt,Dos;
type
pod = array[0..511] of byte;
var
Int13Save: procedure;
p: pod;
f: file of pod;
{F+, S-, W-}
procedure Menjaj(Flags,CS,IP,AX,BX,CX,DX,SI,DI,DS,ES,BP: word); interrupt;
begin
Int13Save;
ES:=Seg(p);
BX:=Ofs(p)
end;
{F-}
begin
Assign(f,'Podaci.dat');
Reset(f);
Read(f,p);
Close(f);
GetIntVec($13,@Int13Save);
SetIntVec($13,Addr(Menjaj));
Keep(0)
end.
pascal.1044zuleika,
Pitanje od druga.
1) Postoji li 32-bitni compiler za Pascal (ne Delphi, ne BP). Treba mi za NT!
2) Postoji li stand-alone biblioteka za Turbo Vision - prenosiva na dru8ge
compiler-e?
Hvala unapred!
pascal.1045emajsijuen,
Postoji li neki nacin da se napravi niz veci od 64k ?
Pozdrav, Vlada...
pascal.1046kojai,
-> #1045, emajsijuen>> Postoji li neki nacin da se napravi niz veci od 64k ?
Postoji nacin da se napravi niz dugacak onoliko koliko imas rama!
Nekada sam pravio program, ali ga na zalost vise nemam...
Naime program pravi platformu u protected modu i onda nastavljas da pises
malo u pascalu, malo u assembleru! :)
Postoji jos jedan nacin, a to je pomocu $M svica, ali ne znam kako se to radi!
:))) U glavnom nisam ti bas puno pomogao... :)
Pozdrav!
pascal.1047nitugard,
-> #1045, emajsijuen
> Postoji li neki nacin da se napravi niz veci od 64k ?
> Pozdrav, Vlada...
Svakako.
------------- HASAN SECKATI ----------------
program PrimerNiza;
(* Ako je sve što želiš da niz zauzme više od 64K
to možeš postići na ovaj način.
Ali, ako želiš da niz ima više od 16383 članova,
onda moraš da spajaš više podnizova
od po 16383 ili već koliko odabereš članova.
*)
const
MaxClanovaNiza = 16383;
Nesto: string = 'Trla baba lan...';
type
PClanNiza = ^TClanNiza;
TClanNiza = string [19]; { recimo }
PNiz = ^TNiz;
TNiz = array [1..MaxClanovaNiza] of PClanNIza;
var
Niz: PNiz;
Brojac: word;
i: word;
KolkoTreba: longint;
begin
WriteLn ('Slobodna memorija: ', MaxAvail);
WriteLn ('Enter za pocetak.');
ReadLn;
(* proveravamo može li se napraviti *)
KolkoTreba:= longint(MaxClanovaNiza)
* (SizeOf (TClanNiza) + 4)
+ 4;
if MaxAvail < 65535 then
begin
WriteLn ('Nema dovoljno velikog bloka za pointere.');
Halt (1);
end;
if MemAvail < KolkoTreba then
begin
WriteLn ('Nema dovoljno memorije za niz.');
Halt (2);
end;
(* sada pravimo niz pointera *)
Niz:= nil;
New (Niz);
Writeln ('Pointeri alocirani.');
(* zatim pravimo članove niza *)
for i:= 1 to MaxClanovaNiza do
begin
Niz^[i]:= nil;
New (Niz^[i]);
WriteLn ('Alociran clan ', i);
end;
(* sada možemo da koristimo niz *)
for i:= 1 to MaxClanovaNiza do Niz^[i]^:= Nesto;
for i:= 1 to MaxClanovaNiza do WriteLn (i, ' : ', Niz^[i]^);
(* i da na kraju počistimo za sobom *)
for i:= 1 to MaxClanovaNiza do Dispose (Niz^[i]);
WriteLn ('Clanovi niza uklonjeni.');
Dispose (Niz);
WriteLn ('Niz uklonjen.');
WriteLn ('Slobodna memorija: ', MaxAvail);
end.
------------ HASAN JOPET SECKATI ---------------------
Ovo je pisano za TP 6. S obzirom na DPMI, u TP 7 možda postoji
i neki kulturniji (čitaj "bolje osmišljen") sistem.
Svejedno, ako malo budeš eksperimentisao sa veličinom stringa
otkrićeš koliko je 640K u stvari malo i kako se lako napuni...
... u današnje vreme i sa današnjim zahtevima.
pascal.1048emajsijuen,
-> #1047, nitugard10x! :) Resio sam problem, zahvaljujuci primeru...
pascal.1049emajsijuen,
Jel zna neko zasto mi program prijavljuje Run-time error 216 (GP fault), pri
upisivanju direktno u video memoriju ? Inace, ovo se desava samo kad program
kompajliram u protected modu. Heeeelp!
Pozdrav, Vlada...
pascal.1050kojai,
-> #1047, nitugard>> (* Ako je sve sto zelis da niz zauzme vise od 64K
>> to mozes postici na ovaj nacin.
Sta da radim ako mi treba array[1..10000] of string[100]...?
Da li postoji jos neki nacin osim protected moda da se pise po ramu?
DOS4GVM bi trebalo to da omoguci ali on radi sam pod C aplikacijama...
Video sam program za CD-Klub koji koristi DOS4GV, pise pri startovanju pro-
grama, a mene zanima da li ima nesto slicno za pascal?!
Pozdrav,
Ivan
pascal.1051nbjvsb,
-> #1045, emajsijuen>> Postoji li neki nacin da se napravi niz veci od 64k ?
Predji na liste :) Malo usporava, malo komplikuje, ali je vrlo prakticno kad
je memorija u pitanju :)
pascal.1052speedy,
-> #1049, emajsijuen> Jel zna neko zasto mi program prijavljuje Run-time error 216 (GP fault),
> pri upisivanju direktno u video memoriju ? Inace, ovo se desava samo kad
> program kompajliram u protected modu. Heeeelp!
>
> Pozdrav, Vlada...
Iz protected moda (ako je flat model) video memorija se nalazi na a0000!
^
jedna nula vise nego u real modu
(naravno ako ne koristis VESA linear framebuffer). Takodje pogledaj
u manualu kako pascal setuje segmentne registre, zato sto GP fault
verovatno znaci da prekoracujes segment limit.
pascal.1053nitugard,
-> #1050, kojai> Sta da radim ako mi treba array[1..10000] of string[100]...?
> Da li postoji jos neki nacin osim protected moda da se pise po ramu?
Pretpostavljam da misliš na "gornji" RAM, preko 1M.
Postoji, ali Bog neka je na pomoći onima koji reše to da rade.
Nije nemoguće, ali je prokleto zametno.
Uz poruku je unit koji omogućava pisanje po gornjoj memoriji.
Može da posluži za prvu pomoć i neke sitnije stvari.
Glavni problem koji se sa njim javlja je da se sve svodi
na prebacivanje velikih blokova u i iz XMS-a,
što je za većinu potreba (pomenuti niz, na primer) nezgodno
i stvara masu problema...
Za neku "komotniju" upotrebu gornjeg RAMa, kakva se ne može ostvariti
upotrebom ovog unita, potrebno je poznavanje A20 adresne linije
(to se valjda beše nazivaše tako?) i asemblera. U stvari i ovaj unit
je asemler "umotan" u paskal.
So... kao i uvek, sve zavisi od toga šta zaista želiš da uradiš.
Ako ti je jedini cilj da strpaš knjigu od 400 strana u RAM
(da, to je otprilike 10.000x100 slova B) to uz malo muke
možeš izvesti pomoću ovog unita. Ako hoćeš da praviš neku animaciju
ili nešto slično, gde je brzina kritična, izbor je prost: ili asembler
ili ovaj (ili sličan) unit.
Ako pak želiš da sortiraš redove one knjige...
Razmisli o tome da hard disk i nije tako spora naprava B)
mnogo je lakše nego sa XMS-om.
xms.zippascal.1054emajsijuen,
Evo nekoliko primera za "fire" screensaver. Sve je dato u source-u...
fire.arjpascal.1055emajsijuen,
"Smooth" scroll u text modu...
scroll.arjpascal.1056kojai,
-> #1053, nitugard
Pa jel ne moze da se upisuje u protected modu?!
Ili nekako da se koristi onaj DOS4GVM?
pascal.1057jujo,
Nesecam se kad sam zadnji put programirao u pascalu pa sam potpuno
smetnuo sa uma da pascal programeri nemaju ili imaju ocajne mogucnosti
za rad sa protected modom. Ja u C-u koristim pmodew 32-bit DOS extender.
Nekakav jadan 32-bit DOS extender za pascal sam nasao na ftp.cdrom.com
i kako pise u readme.txt, tvrdi da je u stanju da pokrene Delphi 2.0
programe pod DOS-om. Naravno....pise i to da se ne smeju koristiti nikakvi
Windows API pozivi. Cisto omogucava da koristite DCC32 iz Delphi-ja 2.0 i
generisete 32-kod.
yooyo:
pm_pas.zippascal.1058nitugard,
-> #1056, kojai> Pa jel ne moze da se upisuje u protected modu?!
> Ili nekako da se koristi onaj DOS4GVM?
Ne znam - ja nisam "porastao" do BP 7. Za ono što meni treba TP 6
(programi koji rade na, za današnje pojmove, zastarelom hardveru)
je više nego dovoljan. Za stvari koje treba da rade u DPMI modu...
Na mašinama na kojima zaista ima smisla pokretati DPMI
u većini slučajeva ima smisla i instalirati Windows...
A time je, u doba RAD alata, sve rečeno.
pascal.1059popovics,
Početnik sam u učenju Pascal-a, pa bi mi stoga trebao neki kompajler
( za početnike ). Ako ga neko ima i nije dug ( do 1 mega ) neka mi ga
baci na mail ili ovde...
pascal.1060milosh.zorica,
-> #1059, popovicsPopoviću imam ja TP 6 i TP 7,oba su odlčni i nisu veliki.Pozovi me
voice da se dogovorimo oko slanja istih mailom.TP 6 je oko 1.4 Mb
sa primerima i helpom,TP 7 je oko 1,7 Mb sa istim stvarima kao TP 6.
Svima koj rade u pascalu i c-u preporučujem da pozovu exotica
bbs,njihov tel je 556-855.
pascal.1061milosh.zorica,
Da li neko zna naredbu u paskalu,kojom se prelazi u grafički mod.?
pascal.1062emajsijuen,
-> #1061, milosh.zorica│ Da li neko zna naredbu u paskalu,kojom se prelazi u graficki mod.?
└──────────────────────────────────────────
Naredba za to je Initgraph (graph unit), a koristi se na sledeci nacin:
Program test;
uses graph, crt;
var
grdriver, grmode, errcode :Integer;
Begin
Grdriver:=detect;
InitGraph(grdriver, grmode, 'c:\util\prog\bp70\bgi\');
Errcode:=Graphresult;
If errcode <> GrOk
Then Begin {Greska prilikom inicijalizacije}
Writeln(Grapherrormsg(Errcode));
Halt;
End
Else Begin
cleardevice;
setcolor(white);
line(0,0,getmaxX, getmaxY);
End;
repeat until keypressed;
end.
pascal.1063kojai,
Kad ostanem rezidentan u memoriji kako da preuzmem dosov interapt i da
posaljem svoju naredbu na izvrsavanje, a posle da nastavim sa izvrsavanjem
dosove naredbe ili neke druge koju sam prekinuo!
Ovo mi treba posto sam napravio programcic koji belezi u fajl sve sto je
kuckano na tastaturi... Problem je sto ako sam hteo to sa snimim na hard sa
npr PrnScr tasterom ono bi mi nebulozilo... Tako da sam morao da napravim
dva programa!
Pozdrav!
pascal.1064stameni,
-> #1026, emajsijuen Nabavio sam neki fenomenalan unit za komunikacije. Glavne funkcije i
procedure su napisane u assemleru radi brzeg izvrsavanja (valjda). Ocitavanje
/Slanje podataka na modem se vrsi preko interaptova i sve ide kroz input/
output bafer, koji je promenljive velicine. Mislim da je unit odlican, i da
necete zazaliti ako ga preuzmete...
***********
Malo sam gledao ovu biblioteku i nikako da uspem da je nateram
da proradi. Mislim da u njoj ima najmanje jedan bug čija je
posledica nefunkcionisanje. U 78. redu, koji glasi:
C_PortAddr : Array[1..C_MaxPort] Of Word = ($03F8,$02F8,$02E8,$02E8);
^^^^^
vrlo verovatno umesto prvog $02E8 treba da stoji $03E8 (IRQ za
COM3; naravno, po Marfijevim zakonima, meni je modem na COM3, pa
nije radilo).
However, i posle gornje izmene nema rezultata. Sumnjiv je i
sledeći, 79. red:
C_PortInt : Array[1..C_MaxPort] Of Byte = (4,3,3,3);
Mislio sam da interrupti idu redom 2, 3, 4 i 5, bar je tako u
komunikacionim programima.
Pokušao sam da ovu biblioteku nađem u allswagsu -- bezuspešno,
mada postoji (najmanje) jedna slična (dosta oskudnija) biblioteka,
koja funkcioniše. Međutim, ova Async biblioteka mi deluje
profesionalnije, mada ne radi.
Možeš li (ti ili neko drugi) doći do novije verzije ove
biblioteke? Sigurno postoji, ova koju sam isprobao je 1.1 iz 1989.
(!), a u komentarima se pominju i .ASM i .DOC fajlovi kojih ovde
nema :(
pascal.1065emajsijuen,
-> #1064, stameni│ Pokusao sam da ovu biblioteku nadem u allswagsu -- bezuspesno,
│ mada postoji (najmanje) jedna slicna (dosta oskudnija) biblioteka,
│ koja funkcionise. Medutim, ova Async biblioteka mi deluje
│ profesionalnije, mada ne radi.
└────────────────────────────────────────────
Biblioteka se nalazi u comm.swg fajlu. Nemam pojma zasto je nema u allswags-u.
Stvari koje si pomenuo su i meni delovale sumnjivo ;) Inace, unit mi lepo radi,
a modem je na com-u 4.
Pozdrav, Vlada...
pascal.1066tomak,
-> #1063, kojai> Ovo mi treba posto sam napravio programcic koji belezi u fajl sve sto je
> kuckano na tastaturi... Problem je sto ako sam hteo to sa snimim na hard
> sa npr PrnScr tasterom ono bi mi nebulozilo... Tako da sam morao da
> napravim dva programa!
Okačio sam u PCUTIL.4:razno.968 arhivu MAKRO.ARJ u kojoj ima:
> SNIMI
>
> SNIMI snima scan i ascii kod pritisnutog tatera, maksimum 500, u fajl
> SNIMI.LOG. Startuje se bez parametara a izlazi se iz njega, odnosno
> COMMAND.COM-a kojeg pokrene, sa "EXIT".
On snima scan i ascii kod ako bi hteo da snimaš ono što se pojavljuje
na ekranu onda bi trebalo kontrolisanjem INT10, pa ako bi to trebalo u
kontinuitetu zapisivati onda bi trebalo kontolisati INT13, INT25 i INT26.
Inače SNIMI ne koristi te prekide jer zapisuje tek kad mu se vrati
potpuna kontrola (zato i ima maksimum jer 'pamti').
pascal.1067stameni,
-> #1065, emajsijuen>> Biblioteka se nalazi u comm.swg fajlu.
Ima li tamo sourcea za async.obj i datoteke async.doc? Molim te,
pogledaj, pa ako ima, a ti baci ovamo :) Verovatno se u uputstvu
može naći e-mail adresa autora, koga bih rado priupitao nekoliko
stvari :)
pascal.1068emajsijuen,
-> #1067, stameni│ Ima li tamo sourcea za async.obj i datoteke async.doc? Molim te,
│ pogledaj, pa ako ima, a ti baci ovamo :) Verovatno se u uputstvu
│ moze naci e-mail adresa autora, koga bih rado priupitao nekoliko
│ stvari :)
└─────────────────────────────────────────────────
Zavirio sam ponovo u comm.swg. Nasao sam tamo jos neki async.bak fajl,
koji je u stvari async.pas (!?!). U njemu se nalaze tacno one izmene u
vezi com port adresa, i prekida o kojima si ti pricao... Takodje sam
nasao i .asm fajl (verovatno od onog .obj fajla, nisam gledao jer se ne
razumem puno u assembler). Inace, nasao sam jos neki source na istu temu,
pa sve to zajedno saljem uz poruku.
Pozdrav, Vlada...
modem.arjpascal.1069stameni,
-> #1065, emajsijuen>> Biblioteka se nalazi u comm.swg fajlu. Nemam pojma zasto je nema u
>> allswags-u.
Ono čega ima u comm.swg (iz allswags sa Sezama) je neka
referenca na Async 1.2 (a ono što si ti poslao je Async 1.1, dakle
postoji novija verzija, sa možda ispravljenim bugom (bugovima?)):
{---------------------------------------------------------}
{ Project : Async12 for Windows }
{ By : Ir. G.W van der Vegt }
{---------------------------------------------------------}
{ Based on the following TP product : }
{ }
{ ASYNC12 - Interrupt-driven asyncronous }
{ communications for Turbo Pascal. }
{ }
{ Version 1.2 - Wedensday June 14, 1989 }
{ Copyright (C) 1989, Rising Edge Data Services}
{ }
{ Permission is granted for non-commercial }
{ use and distribution. }
{ }
{ Author : Mark Schultz }
{ }
{---------------------------------------------------------}
To i dalje nije ono što mi treba -- meni treba Async 1.2 (by
Mark Schultz) ili novija verzija. Molio bih one koji su u
situaciji da pogledaju na Internetu može li se naći ova biblioteka
(ja tražio i ne nađoh, ali nisam baš vičan pretraživanju). Bilo bi
lepo ako bi neko imao e-mail adresu Marka Schultza (takođe
izostavljenu u allswags), da pišem čoveku.
Inače, source za asinhronu komunikaciju za Windows nalazi se u
comm.swg pod brojem 0046; ako treba, mogu da šaljem. Gornji isečak
je odatle.
----
(posle preuzimanja modem.arj)
Ni sada nisam uspeo da nateram "stvar" da radi. Bilo bi lepo
kad bi se moglo naći Async 1.2. Ipak, puno hvala na pomoći oko ove
biblioteke :)
pascal.1070strider,
pozdrav svima
mislio sam da ovo nikada necu uraditi ali evo nuzda me naterala
potrebna mi je pomoc (HITNO:)) u vezi sa jednim zadatkom iz skole
sam program nije tezak ali je matematicko resenje tesko
zadatak glasi...
napisati prog. za stampanje cele funkcije
y=ax*x*x + b*x*x + c*x + d
na intervalu [-n,n] n pripada R sa korakom "k"
koliko celih 0 je na datom intervalu za stampanje zaglavlja
i vrednosti funkcije koristiti procedure
na ulazu su date vrednosti a,b,c,d (a verovatno i n i k)
ljudi pomazite kako da resim jednacinu treceg stepena
jer onako kako je ja resavam nemoze i kompjuter :)
unapred zahvalan
STRiDeR!
pascal.1071emajsijuen,
Jel nekom treba parce koda za onesposobljavanje sifre BIOS-a ? Nasao sam nesto
u SWAG-u, pa ako nekome treba...
pascal.1072jujo,
-> #1071, emajsijuen# Jel nekom treba parce koda za onesposobljavanje sifre BIOS-a ? Nasao sam
# nesto u SWAG-u, pa ako nekome treba...
ili mozda:
xor ax, ax
l1: out 70h, ax
inc al
jmp l1
posle ovog resetuj masinu i CMOS je popunjen sa 0 pa ce
masina verovatno sama uci u SETUP.
yooyo:
pascal.1073jjerry,
Kako i da li mogu sa ulaza Crt-ovom f-jom Readkey da detektujem
pritisak F1..12 dugmica,kao i Alt i Ctrl-a ? Koje su ASCII
vrednosti za njih ? E da..i kako da detektujem pritisak,na primer,
Alt + F1 ili mozhda 3 : Alt+Ctrl+F1 ?
pascal.1074emajsijuen,
-> #1073, jjerry│ Kako i da li mogu sa ulaza Crt-ovom f-jom Readkey da detektujem
│ pritisak F1..12 dugmica,kao i Alt i Ctrl-a ? Koje su ASCII
│ vrednosti za njih ? E da..i kako da detektujem pritisak,na primer,
│ Alt + F1 ili mozhda 3 : Alt+Ctrl+F1 ?
└──────────────────────────────────────────────────
Sa funkcijom readkey ne mozes da detektujes pritisak F11 i F12. Na pritisak
specijalnih tastera funkcija readkey ce da vrati 2 koda: prvi je 0, a preko
drugog mozes da odredis koji taster je pritisnut. Za Alt i Ctr, ces morati
sam da napravis rutine. (nije problem, treba samo procitati vrednost keyboard
status flag-a)... Uz poruku ti saljem program koji ce da ispise na ekran
kodove nekog tastera.
Primer:
Uses Crt;
Var
Ch1, Ch2 :Char;
Begin
Repeat
Repeat
Until Keypressed;
Ch1:=Readkey;
If Ch1=#0
Then Begin
Ch2:=Readkey;
Case Ch2 Of
#59: Begin {F1}
Sound(5500); Delay(100); NoSound;
End;
#60: Begin {F2}
Sound(3000); Delay(100); NoSound;
End;
#61: Begin {F3}
Sound(1500); Delay(100); NoSound;
End;
{...}
End; {CasE}
End;
Until Ch1=#27;
End;
Pozdrav, Vlada...
ord.arjpascal.1075popovics,
Kako da obrišem ekran u Paskalu? ( ništa posebno, samo obično CLS
), i kako da radim sa grafikom u njemu ( treba mi prebacivanje
karte u gr. mod, i prostije komandice, ekvivalenti QBASIC komandama
line, color i draw ). Kojom komandom se otvara fajl? Kako se pravi
rezidentan program? Kojom se komandom učitavanju fontovi ( mislim
da je nešto tipa Install user font, ali nisam siguran, treba mi
tačna sintaksa, kao i koji su unit-i potrebni za rad sa fontovima
), da l će fontovi ovako učitani, ostati i posle izlzka iz
programa? Vredi li čemu knjiga 'Pascal za srednje škole' sa obzirom
da sam totalni početnik? Koji se znaci koriste za deljenje,
množenje i kvadriranje ( probao sam / za deljenje, ali se Pascal
zbuni, i prijavi grešku... )?
P.S Ne zamerite na ovim stupid pitanjima, ali tek sam počeo da učim
Pascal, a nešto se ne snalazim najbolje u njegovom helpu, so
odgovorite, molim vas...
pascal.1076emajsijuen,
-> #1075, popovics
>> Kako da obrisem ekran u Paskalu? ( nista posebno, samo obicno CLS
Program clrscreen;
uses crt;
begin
clrscr;
end.
>> ), i kako da radim sa grafikom u njemu ( treba mi prebacivanje
>> karte u gr. mod, i prostije komandice, ekvivalenti QBASIC komandama
>> line, color i draw ).
Program graphdemo;
uses crt, graph;
var
Errcode, Grdriver, Grmode :Integer;
Begin
GrDriver:=Detect;
InitGraph(Grdriver, grmode, 'C:\util\prog\bp70\bgi\');
Errcode:=GraphResult;
If ErrCode <> GrOk
Then Begin
Writeln('Greska prilikom inicijalizacije grafike.');
Writeln(Grapherrormsg(ErrCode));
Halt;
End;
ClearDevice; {Brise ceo ekran}
SetColor(Red);
Line(0, 0, GetMaxX, GetMaxY);
PutPixel((GetMaxX div 2), (GetMaxY Div 2), Yellow);
SetTextStyle(SansserifFont, HorizDir, 2);
{ ~~~~~~~~~~~~~ ++++++++ ===
~~~~ - Fontovi koji ce se koristiti za ispis na ekran
++++ - Fontovi se ispisuju normalno (s' leva na desno)
==== - Velicina slova}
SetColor(White);
OutTextXY(50, 150, 'SansSerifFont');
SetTextStyle(SmallFont, HorizDir, 4);
SetColor(Yellow);
OutTextXY(50, 200, 'SmallFont');
Circle(250, 100, 20);
SetFillStyle(SolidFill, Red);
Bar(10, 230, 50, 260);
Rectangle(10, 270, 50, 300);
Repeat until keypressed;
CloseGraph;
End.
>> Kojom komandom se otvara fajl?
Program OpenFile;
Var
Fajl :Text; {u fajl moze sve da se upisuje, inace ovde mozes da navedes
i tip, npr. File Of Integer}
Tekst :String;
Begin
Assign(Fajl, 'Temp.Txt');
Rewrite(Fajl); {Moze i append(file), ako hoces da dopises nesto u vec
postojeci fajl}
Tekst:='Ovo je obican tekst fajl';
Writeln(Fajl, Tekst);
Write(Fajl, 'a sada malo brojeva...',356, '... dosta?');
Writeln(Fajl);
Close(Fajl);
End.
>> Kako se pravi rezidentan program?
Prvo ti nauci kako se obicni programi prave, pa cemo lako za rezidentne...
>> Kojom se komandom ucitavanju fontovi ( mislim da je nesto tipa Install
user font, ali nisam siguran, treba mi tacna sintaksa, kao i koji su
unit-i potrebni za rad sa fontovima ), da l ce fontovi ovako ucitani,
ostati i posle izlzka iz programa?
Fontovi za Text ili graficki mod ? Za graficki ti posao obavlja SetTextStyle,
a za text mod ne postoji standardna komanda. Ako ti treba unit za to, ja sam
napravio za sebe jedan (za 8 x 16 fontove), pa cu ti poslati. To sam upotrebio
u onom imeniku, jel si na to mislio ?
>> Vredi li cemu knjiga 'Pascal za srednje skole' sa obzirom da sam totalni
>> pocetnik?
Ako si totalni pocetnik, onda sigurno vredi. ;) Knjigu nisam video, pa
nisam u mogucnosti da ti kazem da li je dobra. Imam ja 2 knjige za TP,
jednu na srpskom, a drugu na engleskom. Ovu na srpskom treba da dam
Milosu (Milosh.zorica). Ako dobro znas engleski, onda ce ti ova 2. sasvim
odgovarati.
>> Koji se znaci koriste za deljenje, mnozenje i kvadriranje ( probao sam /
za deljenje, ali se Pascal zbuni, i prijavi gresku... )?
Za deljenje celih brojeva (integer, byte, word...) koristi se DIV. Znaci,
npr. A:=13 div 5; Naravno posle ovoga, promenljiva A ce dobiti vrednost 2, a
ostatak pri deljenju mozes da izracunas sa MOD: B:=13 MOD 5; ---> B=3;
Za deljenje realnih (REAL) brojeva, koristi se "/".
Za mnozenje se koristi "*". Kvadrat nekog broja izracunava funkcija "SQR", a
koren funkcija "SQRT". Pr. A:=SQR(5);
Pozdrav, Vlada...
pascal.1077kojai,
-> #1075, popovics>> Kako da obrisem ekran u Paskalu? ( nista posebno, samo obicno CLS
>> ), i kako da radim sa grafikom u njemu ( treba mi prebacivanje
ClrScr to radi...
U SVGA iz pascala nikako ne mozes da prebacis, ali mozes da kucas nesto tipa:
asm
mov ah,4f02h
mov al,105h
int 10h
end;
i da dobijes rezoluciju 1024x768...
>> karte u gr. mod, i prostije komandice, ekvivalenti QBASIC komandama
>> line, color i draw ). Kojom komandom se otvara fajl? Kako se pravi
Fajl otvaras sa Assign(file,ime), Reset/Rewrite...
>> rezidentan program? Kojom se komandom ucitavanju fontovi ( mislim
>> da je nesto tipa Install user font, ali nisam siguran, treba mi
>> tacna sintaksa, kao i koji su unit-i potrebni za rad sa fontovima
>> ), da l ce fontovi ovako ucitani, ostati i posle izlzka iz
Naredba Keep drzi program rezidentan, pogledaj primer...
Fontove se ne trudi da promenis, treba malo vise znanja!
Ako te ne mrzi to ti je BIOSov int(10h) i ah=11h...
>> programa? Vredi li cemu knjiga 'Pascal za srednje skole' sa obzirom
>> da sam totalni pocetnik? Koji se znaci koriste za deljenje,
>> mnozenje i kvadriranje ( probao sam / za deljenje, ali se Pascal
>> zbuni, i prijavi gresku... )?
Nabavi knjigu... :)
pascal.1078popovics,
-> #1076, emajsijuen
▄- u onom imeniku, jel si na to mislio ?
Baš na tako nešto!
▄- jednu na srpskom, a drugu na engleskom. Ovu na srpskom treba
▄- da dam Milosu (Milosh.zorica). Ako dobro znas engleski, onda
▄- ce ti ova 2. sasvim
Jel knjiga već kod Miloša? Ako jeste, ja bih i ovako-onako trebao da odem
kod njega u sledeću subotu, pa da je fotokopiram, ako ti ne smeta...
▄- Pozdrav, Vlada...
Hvala mnogo...
pascal.1079popovics,
-> #1077, kojai
▄- asm
▄- mov ah,4f02h
▄- mov al,105h
▄- int 10h
▄- end;
▄- i da dobijes rezoluciju 1024x768...
Ja bi radije 800x600, ako nije problem...
▄- Naredba Keep drzi program rezidentan, pogledaj primer...
OK, videćemo...
▄- Fontove se ne trudi da promenis, treba malo vise znanja!
Ne bih rekao, uspeo sam sa InstallUserFont.
▄- Nabavi knjigu... :)
To se podrazumeva, ali kad sam već ovde, da pitam...
pascal.1080kojai,
-> #1079, popovics>> Ja bi radije 800x600, ako nije problem...
Stavi mov al,103h(ili 101h, ne znam tacno)!
>> Ne bih rekao, uspeo sam sa InstallUserFont.
Ma nisam mislio na to... Nema veze! :)
pascal.1081nbjvsb,
-> #1079, popovics>> ▄- Fontove se ne trudi da promenis, treba malo vise znanja!
>>
>> Ne bih rekao, uspeo sam sa InstallUserFont.
InstallUserFont radi samo u grafičkom režimu, učitava .chr fajlove koji se
ne isporučuju standardno uz Pascal (naravno, možeš da učitaš i jedan od
tih fontova na takav način, ali to nema smisla), tako da možeš da ih
koristiš na isti način kao i standardne.
Čovek koji ti je odgovorio je očigledno mislio da želiš sistemski da
promeniš font (ono, u tekst režimu ubaciš svoje fontove ukoliko ti se
standardni ne sviđaju), a za to definitivno treba malo više znanja :)
pascal.1082supers,
-> #1075, popovics
>> programa? Vredi li čemu knjiga 'Pascal za srednje škole' sa obzirom
>> da sam totalni početnik? Koji se znaci koriste za deljenje,
Ne znam kakva je to knjiga i ko je autor.
Bolje ti je da nabaviš knjigu za svoju verziju Pascala, nego da učiš iz
suvoparne školske knjige. Specijalizovana knjiga će da te nauči da
koristiš sve korisne opcije svog kompajlera.
Ja sam Turbo Pascal 6 naučio iz Stephen O'Brianove knjige, kod nas
izdala Mikroknjiga.
pascal.1083emajsijuen,
-> #1078, popovics│ Bas na tako nesto!
└────────────────────────────────────────────
Stize unit uz poruku. Ako ti nesto ne bude jasno, slobodno me pitaj.
│ Jel knjiga vec kod Milosa? Ako jeste, ja bih i ovako-onako trebao da odem
│ kod njega u sledecu subotu, pa da je fotokopiram, ako ti ne smeta...
└────────────────────────────────────────────
Nije jos. Trebao sam pre neki dan da mu je odnesem, medjutim nisam nasao
dovoljno vremena da jurim po Zemunu, sve zbog glupe skole... :(
unit.arjpascal.1084emajsijuen,
-> #1079, popovics│ Ne bih rekao, uspeo sam sa InstallUserFont.
└──────────────────────────────────────────────
To je za graficki mod. Zar ti nije trebalo za text mod ???
pascal.1085popovics,
-> #1080, kojai
▄- Ma nisam mislio na to... Nema veze! :)
Nema veze? Nema veze? Sve ima veze, ukapirao sam začkoljicu ( razliku
između InstallUserFont i SetTextStyle ) i da rade u graf. modu. Ne znam
zašto bi mi to smetalo ( što rade u graf. modu ), kad u 99% slučajeva, i
ovako i onako moram da učitam biblioteke crt i graph... Ali iz čite
radoznalosti ( i obožavanja text moda ) voleo bih da znam kako se
fontovi učitavaju u text mod ( bar da budu u nekom standardnom formatu
tj. .FNT, .FON, .RAW... )
Inače, da li postoji komanda ( naredba ) kojom iz Pascal programa,
pozivam neki drugi program ( .COM ili .EXE ) tj. da bude ekvivalent
Qbasic komande RUN...
CU
pascal.1086popovics,
-> #1081, nbjvsb
▄- standardni ne sviđaju), a za to definitivno treba malo više
▄- znanja :)
Slažem se, čak šta više sa tim, ali kako misliš da naučim ako ne
probam, napiši postupak, a i primer je poželjan...
Koje je tačno korišćenje KEEP-a?
pascal.1087kojai,
-> #1085, popovicsTo sa fontovima sto ti kazes da si uspeo to ti je pod grafickim modom!
Ide valjda preko BGI-a...
U textualnom modu nije problem inicijalizovati font koji hoces samo ti je
potrebno malo znanja assemblera ili dobro poznavanje input/output-a!
Skini helppc pa pogledaj koji interrupt sluzi za ovo...
Ja mislim da je otprilike al=11h, naravno int 10h, a ostalo ne mogu napamet!
Kao sto rekoh procitaj! :)
pascal.1088popovics,
-> #1084, emajsijuen
▄- To je za graficki mod. Zar ti nije trebalo za text mod ???
Ljudi, treba mi za OBA! Za grafički sam već apsolvirao, ali za text
nemam pojma. Valjda ću uspeti uz pomoć onog tvog unit-a ( nisam ga još
ni otpakovao, zbog school-e ).
pascal.1089jjerry,
Jel' zna neko kako da pishem & crtam neshto preko Bar3D-a ? (Ne
mislim na "ruchno" pisanje,nego nekom f-jom.)
pascal.1090nbjvsb,
-> #1085, popovics>> tj. .FNT, .FON, .RAW... )
^^^^ ?
btw. Ako imas neke fontove za pascal, tj. .chr fajlove, baci slobodno ovde :)
Dobro bi mi dosao i editor, ako ga ima, i ako dobro radi.
pascal.1091stameni,
-> #1090, nbjvsb>> Dobro bi mi dosao i editor, ako ga ima, i ako dobro radi.
Ima nešto, mada se nisam previše petljao njime:
dos\graph\
------------------
sfe.zip 49k Stroked Font Editor, editovanje .CHR fontova (BGI)
pascal.1092nbjvsb,
-> #1091, stameni>> Ima nešto, mada se nisam previše petljao njime:
>>
>> dos\graph\
>> ------------------
>> sfe.zip 49k Stroked Font Editor, editovanje .CHR fontova (BGI)
Staro... ne svidja mu se moj EGAVGA.BGI drajver. Valjda trazi drajver
iz TP6.0 (ja imam BP7.0)
pascal.1093jujo,
-> #1088, popovics#
# ▄- To je za graficki mod. Zar ti nije trebalo za text mod ???
#
# Ljudi, treba mi za OBA! Za graficki sam vec apsolvirao, ali za text
# nemam pojma. Valjda cu uspeti uz pomoc onog tvog unit-a ( nisam ga jos
# ni otpakovao, zbog school-e ).
Imas fonter.zip u konfu razno. Tu se nalazi i C source za isti. U stvari
ima vise ASM-a nego C-a, a ceo listing staje na 25 redova ekrana...pa
mislim da ces se snaci...
yooyo:
pascal.1094popovics,
-> #1092, nbjvsb
▄- Staro... ne svidja mu se moj EGAVGA.BGI drajver. Valjda trazi
▄- drajver iz TP6.0 (ja imam BP7.0)
Ni kod mene ne radi, tj, prijavi kao da nemože da ga nađe, ajde, ako je
neko dobre volje da okači .BGI fajlove iz starije ver. TP-a, bio bih mu
zahvalan ( a verovatno i ne samo ja )...
pascal.1095bokir,
-> #1077, kojai> >> Kako da obrisem ekran u Paskalu? ( nista posebno, samo obicno CLS
> >> ), i kako da radim sa grafikom u njemu ( treba mi prebacivanje
>
> ClrScr to radi...
> U SVGA iz pascala nikako ne mozes da prebacis, ali mozes da kucas nesto
> tipa:
Možeš, uz BGI drajvere za SVGA mod. Drajvera ima i u Sezamovom
direktorijumu.
pascal.1096jjerry,
Kako da napravim da u textwindow stavljam vishe od jednog i po
reda...Sigurno znate da,bilo odakle ne mozhete pisati vishe od
jednog i po reda.(uglavnom pochne da pishti)E poshto mi treba
"malo" vishe od jednog i po reda,da li mozhe nekako to da se
zaobidje ? (Pokushavao sam npr. sa ovim
if wherex = 79 then gotoxy(2,lnum+1) {lnum je broj linije}
Ali to ne radi,ne znam zashto,jer f-ja wherex daje 100% tachan
rezultat.
Josh neshto,da li sa procedurama GetImage i PutImage mogu da
obuhvatim i tekst tj. da tekst bude tretiran kao bili koji deo
grafike ?
pascal.1097emajsijuen,
-> #1096, jjerry>> Kako da napravim da u textwindow stavljam vishe od jednog i po
>> reda...Sigurno znate da,bilo odakle ne mozhete pisati vishe od
>> jednog i po reda.(uglavnom pochne da pishti)E poshto mi treba
>> "malo" vishe od jednog i po reda,da li mozhe nekako to da se
>> zaobidje ? (Pokushavao sam npr. sa ovim
>>
>> if wherex = 79 then gotoxy(2,lnum+1) {lnum je broj linije}
>> Ali to ne radi,ne znam zashto,jer f-ja wherex daje 100% tachan
>> rezultat.
Nista te nisam razumeo. Probaj da mi pojasnis sta ti treba.. Jel
ti treba neka funkcija za unos nekog string, koji je n slova
dogacak, ili sta ? Ako je ovo, imam pravu stvar za tebe.
>> Josh neshto,da li sa procedurama GetImage i PutImage mogu da
>> obuhvatim i tekst tj. da tekst bude tretiran kao bili koji deo
>> grafike ?
Mislis na tekst koji je ispisan na ekranu ? Naravno..., samo tako
i moze da bude tretiran.
pascal.1098epson,
Kada pozivam eksterni program sa Exec kojom komandom mogu da omo-
gućim da se ne pojavi ispis na ekranu ?
Da li neko ima unit za rad sa configuracionim (ini,cfg...) datote-
kama ? Uopšte kako se koriste uniti ? (uses imeunita; i posle se u
toku programiranja koriste njegove komande ?)
Na koji način mogu da proverim da li postoji već fajl ?
pascal.1099jujo,
-> #1098, epson#
# Kada pozivam eksterni program sa Exec kojom komandom mogu da omo-
# gucim da se ne pojavi ispis na ekranu ?
Pa probaj npr...
exec('dir > nul');
i neces dobiti nista.....:))))
yooyo:
pascal.1100obren,
-> #1098, epson> Kada pozivam eksterni program sa Exec kojom komandom mogu da omo-
> gućim da se ne pojavi ispis na ekranu ?
Ne znam koliko će ti "recept" biti jasan ako nemaš iskustva sa
funkcionisanjem DOS uređaja (stdin, stdout, stderr...) Uglavnom,
preusmeriš hendlove standardnih uređaja na koje ide ispis (stdout
i ako hoćeš stderr) na hendl od NUL-a. E sad, ne pamtim kad sam
uzeo Pascal u ruke niti ga imam trenutno instaliranog, ali evo ti
fragment iz Seniora za uključivanje odnosno isključivanje redirekcije
ispisa. Sve relevantne funkcije koje se koriste (_open i dup2) su
u stvari DOS servisi i mogu se pozvati i na nižem nivou (inline ASM)
ukoliko ih Turbo Pascal, ili šta već koristiš, ne podržava.
---------------------- cut here ------------------------
...
int hnul, hcon; // hendlovi koji se koriste za redirekciju ispisa
...
// preusmeri stdout i stderr na NUL
void redirectOutput(void)
{
if ((hnul = _open("NUL", O_RDWR)) == -1) return;
dup2(hnul, 1); // stdout
dup2(hnul, 2); // stderr
}
// vrati stdout i stderr na CON
void restoreOutput(void)
{
if ((hcon = _open("CON", O_RDWR)) == -1) return;
_close(hnul);
dup2(hcon, 1);
dup2(hcon, 2);
_close(hcon);
}
---------------------- cut here --------------------
Znam da ti nisam baš konkretno pomogao pošto si pitao u temi "pascal" ali
valjda ćeš se snaći...
pascal.1101kojai,
-> #1098, epson>> Na koji nacin mogu da proverim da li postoji vec fajl ?
U Dosovom unitu imas naredbe FindFirst i FindNext...
Ako se dobro secam ovo bi trebalo to da radi:
FindFirst('mika.pas',dirinfo,anyfile);
If DosError=0 then Halt;
Mozda nije DosError, ali pogledaj kako se zove naredba za prijavu gresaka...
Ako nenadje fajl mislim da vraca 2!
Pozdrav!
pascal.1102epson,
-> #1099, jujo
│ exec('dir > nul');
│
│ i neces dobiti nista.....:))))
└─────────────────────────────────────────────────
To sam prvo probao i neće da radi, tj. program koji pozivam to po-
grešno protumači i prijavi error.
pascal.1103epson,
-> #1100, obren
│ u stvari DOS servisi i mogu se pozvati i na nižem nivou (inline ASM)
│ ukoliko ih Turbo Pascal, ili šta već koristiš, ne podržava.
└─────────────────────────────────────────────────
Šta znači "inline ASM" ? TP 7.0 podržava asembler, ali mi se čini
da je ovo C.
│ Znam da ti nisam baš konkretno pomogao pošto si pitao u temi "pascal" ali
│ valjda ćeš se snaći...
└─────────────────────────────────────────────────
Koliko sam razumeo ovo je za C ?
pascal.1104epson,
-> #1101, kojai
│ U Dosovom unitu imas naredbe FindFirst i FindNext...
│ Ako se dobro secam ovo bi trebalo to da radi:
│ FindFirst('mika.pas',dirinfo,anyfile);
│ If DosError=0 then Halt;
└─────────────────────────────────────────────────
Hvala.
pascal.1105stameni,
-> #1098, epson>> Na koji način mogu da proverim da li postoji već fajl ?
var
f: file;
procedure ima;
...
procedure nema;
...
begin
assign(f, 'imanema.krk');
{$I-}
reset(f);
{$I+}
if IOResult = 0 then
ima
else
nema;
close(f)
end.
pascal.1106popovics,
Ako neko ima volju neka mi objasni ( ako može i neki primer ) korišćenje
Pascal komandi KEEP i EXEC.
Unapred hvala...
pascal.1107epson,
-> #1105, stameni
│ assign(f, 'imanema.krk');
│ {$I-}
│ reset(f);
│ {$I+}
│ if IOResult = 0 then
└─────────────────────────────────────────────────
Hvala.
pascal.1108emajsijuen,
-> #1102, epson>> │ exec('dir > nul');
>> │
>> │ i neces dobiti nista.....:))))
>> └─────────────────────────────────────────────────
>>
>> To sam prvo probao i nece da radi, tj. program koji pozivam to po-
>> gresno protumaci i prijavi error.
Probaj da napises >nul (spojeno). BTW, output nekih programa se uopste
ne moze preusmeriti. Takav je slucaj sa svim programima koji su pravljeni
u TP-u, a koriste crt unit.
Pozdrav, Vlada...
pascal.1109emajsijuen,
-> #1098, epson>> Na koji nacin mogu da proverim da li postoji vec fajl ?
Ima dosta nacina... Evo jednog od njih...
Uses Dos;
Begin
If FSearch('tekst.txt', 'C:\;C:\dos;C:\windows') = 'tekst.txt'
Then Write('Fajl je pronadjen')
Else Write('Fajl nije pronadjen');
End.
Naravno kao drugi parametar, prilikom poziva funkcije FSearch, navodis
string promenljivu, u koju redjas direktorijume u kojoj fajl treba da se
trazi. Imena direktorijuma treba da budu odvojena sa ";". Ako fajl trazis
u tekucem dir-u, onda stavi samo ''.
Pozdrav, Vlada...
pascal.1110obren,
-> #1103, epson> Šta znači "inline ASM" ? TP 7.0 podržava asembler, ali mi se čini
> da je ovo C.
Inline ASM je upravo to "podržavanje asemblera" :) Drugim rečima,
možeš da ubacuješ AMS kôd direktno u .PAS fajlove, bez potrebe da
ih pišeš odvojeno, prevodiš i linkuješ sa Pascal projektom.
> Koliko sam razumeo ovo je za C ?
To jeste primer konkretno za C, ali na potpuno isti način se radi i na
Pascalu (čak i bez direktne upotrebe "inline ASM-a" ;)
---------------------- cut here ---------------------
Program Dup;
Uses DOS;
Var F:file;
Procedure DupHandle(NewH, OldH:Word);
Var Regs:Registers;
Begin
Regs.ah:=$46;
Regs.bx:=NewH;
Regs.cx:=OldH;
MsDos(Regs);
End;
(* Preusmeri stdout i stderr na NUL *)
Procedure RedirectOutput;
Begin
Assign(F, 'NUL'); { Može bilo koji dos file }
Rewrite(F);
If IOResult<>0 then Exit;
DupHandle(FileRec(F).Handle, 1); { stdout }
DupHandle(FileRec(F).Handle, 2); { stderr }
End;
(* Vrati stdout i stderr na CON *)
Procedure RestoreOutput;
Begin
Close(F);
Assign(F, 'CON');
Rewrite(F);
if IOResult<>0 then Exit;
DupHandle(FileRec(F).Handle, 1); { stdout }
DupHandle(FileRec(F).Handle, 2); { stderr }
End;
Begin
Writeln('Ovo se vidi');
RedirectOutput;
Writeln('Ovo se NE vidi');
RestoreOutput;
Writeln('Ovo se OPET vidi');
End.
----------------------------- cut here -----------------------------
pascal.1111epson,
-> #1108, emajsijuen
│ Probaj da napises >nul (spojeno). BTW, output nekih programa se uopste
│ ne moze preusmeriti. Takav je slucaj sa svim programima koji su pravljeni
│ u TP-u, a koriste crt unit.
└─────────────────────────────────────────────────
Probao sam i to :).
pascal.1112epson,
-> #1110, obren
│ To jeste primer konkretno za C, ali na potpuno isti način se radi i na
│ Pascalu (čak i bez direktne upotrebe "inline ASM-a" ;)
└─────────────────────────────────────────────────
Hvala puno.
pascal.1113epson,
-> #1109, emajsijuen
│ Ima dosta nacina... Evo jednog od njih...
└─────────────────────────────────────────────────
Hvala.
pascal.1114epson,
-> #1109, emajsijuen
│ >> Na koji nacin mogu da proverim da li postoji vec fajl ?
│
│ Ima dosta nacina... Evo jednog od njih...
└─────────────────────────────────────────────────
A direktorijum ?
pascal.1115emajsijuen,
-> #1114, epson│ A direktorijum ?
└──────────────────────────────────────
Moraces da koristis FindFirst i FindNext. Tu negde ima da se podesi tacno
atribute fajlova koje ce da izlistava. Tu mu lepo stavis da izlistava samo
dirove, i to je to. Ne znam tacno napamet sintaksu za koriscenje, pa pogledaj
help.
Pozdrav, Vlada...
P.S. mozes i na sl. nacin, mada je to budzenje:
Program dir;
Var
Fajl :Text;
Begin
Assign(Fajl, 'dirname');
{$I-}
Reset(Fajl);
{$I+}
If IoResult <> 0
Then Begin {dir postoji}
Halt;
End;
Close(Fajl);
End.
A mozes i preko CHDIR, pa da pratis Ioresult...
Pozdrav, Vlada...
pascal.1116epson,
Kako se neki string koji sadrži velika i mala slova "konvertuje" u
string sa sve malim ili sve velikim slovima ?
pascal.1117emajsijuen,
-> #1116, epson│ Kako se neki string koji sadrzi velika i mala slova "konvertuje" u
│ string sa sve malim ili sve velikim slovima ?
└──────────────────────────────────────────
Program tekst;
Var
Tekst :String;
Function LCase(Ch :Char): Char;
Begin
If (Ch > #64) and (Ch < #91)
Then LCase:=Chr(Ord(Ch)+32)
Else LCase:=Ch;
End;
Procedure UpperCase(Var S: String);
Var
Br: Byte;
Begin
For Br:=1 to Ord(S[0]) Do S[Br]:=UpCase(S[Br]);
{Ord(S[0]) == Length(S)}
End;
Procedure LowerCase(Var S: String);
Var
Br: Byte;
Begin
For Br:=1 to Ord(S[0]) Do S[Br]:=LCase(S[Br]);
End;
Begin
Tekst:='OvO jE oBiCaN sTrInG';
Writeln('Normalno: ', Tekst);
UpperCase(Tekst);
Writeln('Velika slova: ',Tekst);
LowerCase(Tekst);
Writeln('Mala slova: ',Tekst);
Halt;
End.
Pozdrav, Vlada...
pascal.1118dzakic,
-> #1117, emajsijuen> {Ord(S[0]) == Length(S)}
Ono što iz iskustva mogu da kažem, jeste da se ovakve 'vragolije' uopšte
ne isplate iz više razloga. Zašto kažem isplate, zato što pretpostavljam
da je ideja upotrebe ord(s[0]) bila da se ubrza izvršavanje funkcije, jer
se ne 'poziva' funckija Length. Ono jes ako se tako gleda i ord je f-ja
;). Ako se iz dibagera pogleda generisani kod, može se lako videti da je
potpuno svejedno da li se koristi length(s) ili ord(s[0]), kao što je
isto da li pišete i:=i+1, ili inc(i). Paskal istina nema neznamkakvu
optimizaciju, ali za toliko nije lud ;).
Zašto onda length(s), a ne ord, ako je već isto? Zato što ćete sutra,
hteli ili ne, doći u priliku da svoj kod portujete na neki drugi os, ili
neku drugu platformu. Svaki budući paskal kompajler će razumeti length, a
ord nije sigurno. Evo, već u delfiju se dužina stringa pamti kao 16-bitna
vrednost. Ko je pisao Length, program će se prevesti bez intervencija.
Čak i recimo s[0]:=#4 - delfi će odbiti da prevede. Preporučiće upotrebu
SetLength procedure, upravo zbog kompatibilnosti.
Pozdrav, Zak
pascal.1119sivek,
Hi people,
ja bih nesto da pitam pa ako neko zna odgovor
i ne mrzi ga da pise nega mi odgovori.
Hteo bi da napravim program koji ce da vodi
fudbalsku tabelu.
Znaci hteo bih da upisem podatke o nekim timovima
u neki fajl,i posle da procitem te iste podatke
ali za svaki od klubova posebno.
Kako to da izvedem?
I ima li neko ideju kako da ih sortiram posle svakog od kola?
aj molim vas odgovorite mi.
Pozdrav.
pascal.1120kojai,
-> #1119, sivek>> Znaci hteo bih da upisem podatke o nekim timovima
>> u neki fajl,i posle da procitem te iste podatke
>> ali za svaki od klubova posebno.
Moze ovako, a mozes i drugacije... :)
Type
Timovi=Record
PostignutoGolova: Word; {kod partizana je ovo smallint }
PrimljenoGolova: Word; {ali zato je ovde longint :))}
Plasman: Byte;
...
end;
Klubovi=Record
Zvezda: Timovi;
Partizan: Timovi;
Obilic: Timovi;
...
end;
Var
f: File of Klubovi;
a: Klubovi;
begin
Assign(f, 'Klubovi.dat');
Rewrite(f);
Write(f, a); {Upisujes}
Read(f, a); {Citas}
Write(a.Zvezda.PrimljenoGolova); {Koristis :)}
Close(f);
end.
pascal.1121epson,
Kako da od PAS fajla napravim TPU ?
pascal.1122zdravkod,
Jel ima neko neki program koji bi radio ono sto radi i DIR /S.
Dakle treba mi source koji ce da radi jako brzo i koji ce da mi
izlista sve fajlove iz svih direktorijuma na disku, zajedno sa
njihovom duzinom itd...
Zdravko
pascal.1123stameni,
-> #1121, epson>> Kako da od PAS fajla napravim TPU ?
Iz komandne linije unit prevodiš sa tpc nekilevi.pas, a iz IDE
prvo promeniš Compile / Destination na "disk", pa zatim to
iskompajliraš najobičnijim Compile / Compile (ili pritisneš Alt-
F9).
pascal.1125nbjvsb,
-> #1121, epson>> Kako da od PAS fajla napravim TPU ?
unit ImeUnita; { ime datoteke i ImeUnita mora da bude isto! }
interface { ova rezervisana rec kaze da se od nje pa do rezervisane reci
implementation vrsi definicija tipova, konstanti, procedura,
funkcija i promenljivih koje ce se sve videti iz programa
koji poziva ovaj unit }
...
implementation { odavde pa do kraja idu same procedure }
...
end. { obavezno je end. na kraju unita }
Evo ti i jedan primer:
unit Nizovi;
interface
const
Max = 50;
type
Niz = array[1..Max] of integer;
procedure PromeniMesta(var a1,a2: integer);
procedure SortNiz(n: byte; var f: Niz); { n - duzina niza, f - sam niz }
implementation
procedure PromeniMesta;
var
pom: integer;
begin
pom:=a1;
a1:=a2;
a2:=pom
end;
procedure SortNiz;
var
i,j: byte;
begin
for i:=1 to n-1 do
for j:=i+1 to n do
if f[i]>f[j]
then
PromeniMesta(f[i],f[j])
end;
end.
U glavnom programu ubacis uses ImeUnita;
i koristis deklaraciju niza odavde, znaci nesto kao:
var f: Niz;
Kada ubacis sve elemente u niz, uradis jedno SortNiz(n,f), i imas sortiran
niz :)
pascal.1126epson,
Utilitys
Na početku da se zahvalim svima koji su odgovarali na moja pitanja
bilo u konferenciji/mailu/pageu!
Uz poruku sam prikačio dva utilitya napisana za dva dana. Fast
(FastExtract) i Disk (DiskMake).
FastExtract traži sve arhive (npr. sezam.rar) u tekućem direktori-
ju i otpakuje ih u istoimene poddirektorijume (npr. \sezam). Opcije
su -/+ O (overwrite) ili D (delete). U FAST.INI fajlu se definiše ar-
hiver (Arh=), njegove opcije pri otpakivanju (Prm=), overwrite para-
metar (Ovr=) i ekstenzija arhive (Ext=) kojih može biti više (npr.
Ext=*.ARJ;*.A01) i parametri programa (Swi=) koji mogu biti +O/D
(npr. Swi=+O+D) - parametri iz komandne linije imaju prednost.
DiskMake je jednostavan program čiji je jedini parametar broj, ko-
jim kreira direktorijume od DISK1 do DISKbroj.
Ukoliko naiđete na neki baga ili imate želja za unapređenjem pro-
grama napišite ih - svaki komentar je koristan.
utils.rarpascal.1127kojai,
Sivek, evo ti ono za tabelu, u slucaju da nisi primio na mil!
Posto puno zeza slanje!
tabela.arjpascal.1128vlarad,
Posto sam pocetnik koju knjigu mi preporucujete za TP 7.0?
Hvala.
C U
pascal.1129epson,
Pozicija za upis u fajl
Kako da navedem poziciju (reda,karakter u redu npr. 2,5) pri upisu
u fajl ? Koristim write(ln) komandu.
pascal.1130jujo,
-> #1129, epson# Pozicija za upis u fajl
#
# Kako da navedem poziciju (reda,karakter u redu npr. 2,5) pri upisu
# u fajl ? Koristim write(ln) komandu.
Nikako..probaj da prvo formiras "ekran" u memoriji, u njemu
ispisi sve sto ti treba, pa onda ga snimi u fajl.
yooyo:
pascal.1131kojai,
-> #1130, jujo>> # Pozicija za upis u fajl
>> #
>> # Kako da navedem poziciju (reda,karakter u redu npr. 2,5) pri upisu
>> # u fajl ? Koristim write(ln) komandu.
>>
>> Nikako..probaj da prvo formiras "ekran" u memoriji, u njemu
>> ispisi sve sto ti treba, pa onda ga snimi u fajl.
Nije bas nikako... Nisam bas upucen sta ti treba ali sa naredbom seek
pristupas poziciji fajla! Treda da prvo odredis koliko ima redova fajl tj.
koliko se puta ponavlja enter, znaci #13 i onda da snimis ili u memoriju ili
direktno status, a mozes i da odmah skines sa diska 20-30 kilobajta i da
trazis npr 5 red(peto ponavljanje entera) i 4 karakter i da sracunas gde se to
nalazi i da ga postavis na tu poziciju...
Inace ovo se tako ne radi, vec se otvori oko 600 kb memorije i u nju se stavi
sadrzaj fajla, po kome kasnije pises! Znaci samo preko pointera...
Mozes da napravis ovako budjavu proceduricu za samo upis na poziciju:
Procedure Upisi(Pos: LongInt; Char: Chr(ili Byte));
begin
Seek(f, Pos);
Write(f, Char);
end;
Ako si to trazio to ti je to...
pascal.1132emajsijuen,
-> #1131, kojai│ Nije bas nikako... Nisam bas upucen sta ti treba ali sa naredbom seek
│ pristupas poziciji fajla! Treda da prvo odredis koliko ima redova fajl tj.
│ koliko se puta ponavlja enter, znaci #13 i onda da snimis ili u memoriju ili
│ direktno status, a mozes i da odmah skines sa diska 20-30 kilobajta i da
│ trazis npr 5 red(peto ponavljanje entera) i 4 karakter i da sracunas gde se
│ to nalazi i da ga postavis na tu poziciju...
└──────────────────────────────────────────────
Zao mi je, ali to nece moci ovako da se uradi. Komanda seek, kao sto
i pise u helpu, ne moze da radi sa text fajlovima, a njemu bas to treba.
Znaci, neka ipak formira "ekran" u memoriji... :)
Pozdrav, Vlada...
pascal.1133kojai,
-> #1132, emajsijuen>> Zao mi je, ali to nece moci ovako da se uradi. Komanda seek, kao sto
>> i pise u helpu, ne moze da radi sa text fajlovima, a njemu bas to treba.
>> Znaci, neka ipak formira "ekran" u memoriji... :)
Naravno da ce moci... Otvori variablu File of Byte i uradi!
Naravno da ne postoji naredba za pozicioniranje reda, itd ali lako se pravi...
Meni nije jasno kako radi BP editor posto moze da ucita fajl n velicine i da
ga obradjuje...
pascal.1134epson,
-> #1131, kojai
│ Ako si to trazio to ti je to...
└─────────────────────────────────────────────────
Hvala svima, probaću.
pascal.1135emajsijuen,
-> #1133, kojai│ Naravno da ce moci... Otvori variablu File of Byte i uradi!
└──────────────────────────────────────────────
Sledeci put procitaj poruku do kraja, pa tek onda odgovaraj - ovo se odnosi
na poruku na koju si prvi put odgovorio, a ne na moju. Covek je rekao da mu
trebaju Write i Writeln komande. Ako otvori fajl kao File Of Byte, onda je
ogranicen samo na Write komandu...
Pozdrav, Vlada...
pascal.1136kojai,
-> #1135, emajsijuen> Sledeci put procitaj poruku do kraja, pa tek onda odgovaraj - ovo se odnosi
> na poruku na koju si prvi put odgovorio, a ne na moju. Covek je rekao da mu
Ok, ok! :)
pascal.1137bokir,
-> #1135, emajsijuen> Sledeci put procitaj poruku do kraja, pa tek onda odgovaraj - ovo se
> odnosi na poruku na koju si prvi put odgovorio, a ne na moju. Covek je
> rekao da mu trebaju Write i Writeln komande. Ako otvori fajl kao File Of
> Byte, onda je ogranicen samo na Write komandu...
S tim što je WriteLn isto što i Write(13, 10).