Súgó - Keresés - Tagok - Naptár
Teljes változat: Turbo Pascal
PC WORLD Segélyvonal > SZOFTVER > Programozás > Pascal
Oldalak: 1, 2
mizsi
Üdv!
Azt kérdezném, hogy TP-ben mely paranccsal tudom ellenőrizni, hogy a programkönyvtárban megtalálható-e a program működéséhez szükséges két fájl (grafikával dolgoztam egy .bgi és egy .chr fájlról van szó), és ha csak az egyik is hiányzik, akkor hibaüzenetet adjon a program?
arpsoft
Az initgraph() -3-at ad vissza, ha nem találja a kijelölt bgi meghajtót.

A chr fájlt pedig úgy lehet ellenőrizni, hogy megpróbálod megnyitni. Ha sikerül, akkor bezárod, ha nem, akkor hibajelzést adsz.

KÓD
program open_example;
{ This program demonstrates the use of the open procedure. }
const
   name_of_file = 'open1.txt';
   file3 = '*Enter_a_filename-- ';
type
   char_array = varying [50] of char;
var
   infile: text;
   error: integer32;
   name: char_array;
begin
   { Open an existing file. }
   open(infile, name_of_file, 'old', error);
   if error = 0 then begin
     writeln('Opened ', name_of_file, ' for reading.');
     close(infile)
   end else
     writeln('Error opening file', name_of_file, error);
   { Open a file specified by a command line argument. }
   open(infile, '^1', 'unknown', error);
   if error = 0 then begin
     argv(1, name);
     writeln('Opened ', name, ' for reading.');
     close(infile)
   end else
     writeln('No command line argument; error code =', error);
   { Open a file that may or may not exist. }
   { Prompt user for name of file at runtime. }
   open(infile, file3, 'unknown', error);
   if error = 0 then begin
     writeln('Opened file for reading.');
     close(infile)
   end else
     writeln('Error opening file', error)
end. { open_example }
Machado
Valaki nem tudja nekem véletlenül elküldeni vagy feltölteni valahova a Turbo Pascal XP-vel működő "legújabb" verzióját? smile.gif
csutomi
Turbo Pascal + WinXP = Borland Pascal

Vagy próbáld meg a TP-t a dosboxszal emulálni, hátha sikerül.
Harmadik lehetőség, hogy fölteszed a Turbo Pascalt és letöltesz hozzá egy javítást (a Runtime Error miatt).
atzs
Delphi
google
Vagy használj Freepascalt, ha elég a konzolos mód.
http://www.freepascal.org/
Calyd
FreePascal egyébként is jobb egy pár tekintetben [pl több memóriakezelés]. Haver mondta, hogy FP-ben sikerült lefordítania egy olyan programot, amiben volt egy 10.000 elemű tömb Stringekből smile.gif [vagy 1000? Tök mindegy, sima Pascalnak mindkettő bőven nagyon sok smile.gif] Ezzel az akcióval még a Turbo-mániás programozás-oktatót is sikerült meggyőznie smile.gif

Ennek hatására Lazarust használunk. Delphi klón, de nincs saját fordítója, FreePascalt használ, valami 0.9.8beta állapotban, kicsit bugos, de ingyen van smile.gif
arpsoft
Mi értelme statikusan lefoglalni ennyi memóriát?
Calyd
Semmi biggrin.gif, szerintem is elvetemült ötlet, de azért poén, hogy Free Pascalban lefordul smile.gif
arpsoft
Persze, hogy lefordul. A Freepascal már 32 bitre van optimalizálva.
atzs
IDÉZET(arpsoft @ 2005. szeptember 25., 10:55 - vasárnap)
Mi értelme statikusan lefoglalni ennyi memóriát?

Mert (memória mennyiség)*(futási idő)=állandó.

Egyik kedvenc példám a Knuth könyv. Hogyan tudunk a leggyorsabban sorba rakni 5000 számot? Annyit tudunk róluk, hogy 1 és 20000 között van mindegyik, és nem ismétlődhet kétszer ugyanaz a szám.

Megoldás:
Lefoglalsz egy 20000-es tömböt. Egy ciklusban kinullázod. Végigmész az adatokon, és amit éppen beolvastál, a tömb annyiadik elemét átírod 1-re. Ha vége, akkor egy ciklusban végigmész a tömbön, és kiírod azokat indexeket, ahol a tömbben 1-est találsz.

Tudnék más példát is mondani, ahol az "extrém" statikus memóriahasználattal lényegesen fel tudtam gyorsítani egy algoritmust.
Calyd
Egész érdekes rendezés. Csak nem mindig van ekkora szabad kezed.
arpsoft
Most nem azért, de én ennek inkább dinamikusan foglalok memóriát.
atzs
Érdemes akkor is, ha a program futási ideje alatt végig használja a területet? Mert ha csak néha kell neki ennyi, akkor persze lefoglalom dinamikusan, és aztán felszabadítom. Ha van valami előnye, akkor átszokom rá, hogy mindig dinamikus legyen a foglalás...

@Calyd
Dehogy nincs! Én vagyok a rendszergazda. ani_wink.gif twisted.gif twisted.gif twisted.gif
Komolyra fordítva, optimalizálni természetesen csak a rendelkezésre álló erőforrások ismeretében lehet. Sajnos...
Calyd
Elég feladatspecifikus, hogy miként érdemes memóriát-foglalni. Lehet keverni is...
arpsoft
Én csak az elkerülhetetlen dolgokat rakom statikus memóriába, a többit dinamikusan foglalom. Miért tarsak meg egy átmeneti memóriablokkot, ha lehet, hogy már nem is lesz rá szükség, ráadásul bármikor újraépíthetem?
Ezt az oprendszer is jobban szereti.
Calyd
Sok esetben gyorsabb lényegesen egy statikus memóriafoglalás. Pl tömböt tudsz indexelni, listát nem... Ez igen hátrányos lehet mondjuk egy backtracknél. Írtam már visszalépéses keresést dinamikusan kezelve a memóriát: elég nehézkes, és lassú....
Babó22
IDÉZET(csutomi @ 2005. augusztus 21., 18:12 - vasárnap)
Turbo Pascal + WinXP = Borland Pascal

Vagy próbáld meg a TP-t a dosboxszal emulálni, hátha sikerül.
Harmadik lehetőség, hogy fölteszed a Turbo Pascalt és letöltesz hozzá egy javítást (a Runtime Error miatt).

Ez a Borland Pascal a Turbo Pascal nyelvét használja? Tehát ugyan az a képernyő, környezet?
arpsoft
Csak majdnem.
arpsoft
Az összes játék linkje nálam Error 404-ben végződik.
MafiaBoy
Mindjárt helyrehozom a hibát.

Most már mennek!!! exclamat.gif
Babó22
A tilitoli játék nem rossz, de van benne némi helyesírási hiba. Meg amikor sikeresen kirakod akkor a program kiírja, hogy Siker!!! helyett lehetne valami más. Például a Gratulálok!!!
MafiaBoy
Ok. Átcsinálom.

Kijavitottam a játékot és még kicsit szépítettem is rajta. De nem tudom feltenni, mert a Total Commanderrel nem tudok hozzáférni egy ftp szerveremhez se. Amikor tölti be az ftp szervert, a "LIST" nél megáll. Ha megadod az e-mail címed, akkor elküldöm neked.

Utólag: sikerült felttenni az új, kijavított Tilitoli játékot a honlapomra!
MafiaBoy
Ha valakinek van olyan honlapja ahol saját maga készített programok illetve játékok vannak(Turbo Pascallal készített), kérem küldje el a honlap címét.
Nekem lehet később lesznek grafikus üzemódba írt játékok és programok, mert most fogok tanulni programozni Pascalba grafikusan. Nem a suliba tanulom, mert ott programozás csak 11-ik oszt. végén van, az is csak olyan, én külön járok egy nagyon JÓ informatika(fizika, matematika) tanárhoz.
lorcsi
NEM TUD valaki INTERNETRŐL LETÖLTHETŐ PASCAL KÖNYVEKET

ÉN KEZDŐ VAGYOK, VAN EGY KÖNYVEM, DE AZT CSAK A CRT EGYSÉGRŐL SZÓL, ÉS MÁR NEKEM A GRAPH KÉNE

VALAMI GRAPH-OS KÖNYVLINKEZ légy szíves ÍRJATOK
arpsoft
De miért kiabálsz? annoyed.gif

Egyébként a Pascal help-je nem jó?
MafiaBoy
Felteszek a honlapomra pár dolgot a Graph egységről, nézd meg ma este vagy holnap. Meg felteszem az egyik új játékomat (Grafikus). Ma fejeztem be. Illetve még nincs minden befejezve. biggrin.gif

<<MAFIABOY>>
MafiaBoy
Már felraktam a Graph egységről szóló összeállítást. A tanárom állította össze. biggrin.gif

<<MAFIABOY>>

Ha valami különösen érdekelne, akkor szólj, és felrakom az oldalamra, mert nekem van Pascal könyvem. biggrin.gif
Botond
Helló! Most kezdtem a programozást és lenne két kérdésem:
1. Melyik menüpontal tudom átkonvertálni .pas kiterjesztésű fájlokat Turbo Pascal 7.0-ban?
2. TP 7-ben szeretnék írni egy progit ami pár mappával arréb levő fájlt nyit meg. Olyan parancsikon szerű bigyó USB kulcshoz.
arpsoft
1. Compile
2. Váljék egészségedre
Calyd
@ Botond:
1: nem teljesen értem mit értesz átkonvertálás alatt. Exe-t akarsz generálni?
2: szintén nem értem, mit szeretnél megvalósítani. Fájlútvonalakat tudsz használni Pascalban. Sima String-ként, hagyományos útvonalformában.

Bocs, de nem igazán értem a problémáidat.
Botond
1. Igen, exe-t akarok generálni. A Compile-nél mit kell még csinálni vagy hova menti? Még egyáltalán nem értem mer még most kezdtem 2 napja programozni tanulni. Légyszi rágjátok a számba.
Na tehát arról van szó hogy hogy szeretnék egy parancsikon szerű programot írni. Mint a Windowban egy
2. parancsikon. A program feladata az lenne hogy megnyissa a következő elérési úton helyezkedő fájlt: .\PortableApps\PStart\PStart.exe (remélem jól írtam smile.gif). Tehát ez az Pascal nyelvű fájl ezt nyitnámeg és SEMMILYEN más műveletet nem kell végezni csak futtatni.
kfx
1. A *.pas tartalmazza a program szövegét, ez a forrásfájl. Amikor lefordítod, vagy futtatod(a futtatás előtt automatikusan lefordítódik), akkor legenerálódik a *.exe fájl.
2. A pascalt nem éppen erre találták ki. Miért nem jó a parancsikon?
Botond
1. De az az .exefájl hová kerül? Mert én a .pas fájl mellett nem találtam. Valami olyat ír ki hogy a memóriában van. Egyáltalán nem értek ehhez a programhoz. Tudnél segíteni beállítani hogy ne a memóriába írja haenm a vinyóra?
2. Akkor milyen programnyelven tudom ezt megoldani vagy milyen programmal vagy egyáltalán hogyan? A parancsikon lassú az exe az direktebb. Próbáltam már exe-t is (Portable Total Commander legális nem vicc) és az gyorsabb volt. Meg mi jó van abban hogy jobb klikk új, parancsikon. Az sokkal élvezetesebb ha te csinálod az egészet a két kezeddel.
3. Eszembe jutott még egy kérdés: mitől függ az hogy fut e egy program egy másik oprendszeren? A Linuxban nem exe a kiterjesztés hanem más? Vagy ez hogy van?
kfx
1. Compile menü, Destination, a memory részt állítsd át diskre. Így a *.pas mellé fogja rakni a *.exe -t.
2. Mondjuk Delphiben meg tudnám csinálni, csak most nincs fent a gépemen sad.gif.
3. Windows-Linux, más felépítés, más szisztéma szerint működnek, a különbségek nagyok, és nagyon mélyen vannak. Így egy windowsra megírt program, akármilyen program legyen is az, nem fog elindulni csag úgy linux alatt. Erre találtak ki olyan programokat, amik képesek "windowst futtatni" linux alatt, vagy legalább is ahhoz elegendők, hogy egy-egy program elinduljon.
Botond
3. Tehát akkor attóllesz egy Pascal program Linuxos hogy pl. a %TEMP% az nem a ?:\Documents and Settings\felhnév\Localsettings\temp elérési utat jelenti? Na jó ez egy gagyi példa de végülis Pascalban is lehet programot írni Linuxra. Honnan szerezhetek információt arról hogy hogyan írjam meg Pascalban a programot úgy hogy Windowson és Linux-on is fusson? Vagy ilyen nincs? Vagy az ilyen program nagyon egyszerű és nem lehet bonyolultabbakat írni?
kfx
A fordítónak mást kell csinálnia attól függően, hogy a program windowson, vagy linuxon fog futni. Például a Free Pascal-t le tudod tölteni linuxra is, ami linuxon fut, és a linuxnak megfelelő kódot generál. Olyat nem tudsz csinálni, hogy windowson is, meg linuxon is fusson. Ezt már megindokoltam korábban. (Persze Java-ban lehet, de az kezdő programozónak elég meredek).
Calyd
@ Botond:
1: én sem értem a parancsikonos dolgot. Kfx mellett vagyok, mert teljesen feleslegesen vesződsz vele -szvsz-.
2: olyan programot szerintem sem lehet írni, ami mindkét rendszeren fut. Alapvetően másképp épül fel egy linux és egy windows, teljesen más a fájlok, könyvtárak jogosultsági rendszere, gyanítom a memóriakezelés, processzorkezelés, meg egyáltalán gyakorlatilag minden. Olyat viszont lehet készíteni, hogy egy kész forrást le tudsz fordítani linux-ra, os-x-re, windows-ra, de ehhez olyan fordító kell, ami ezt tudja, és még akkor sem egyszerű a művelet. Pl. Lazarus-t tudnám ajánlani, az ezt tudja, és ingyenes [vagy ha már kfx említette - FreePascal]. De hogy tényleg megy-e a dolog ne kérdezd, nem használok linux-ot.
Botond
Ennek a parnacsikonos dolognak végülis az a lényege hogy megnyit egy fájlt de nem azért hogy abból adatokat nyerjen ki, hanem csak futtatja. Ez így érthető volt?
lorcsi
sziasztok!
azt szeretném kérdezni, hogy hogyan lehet megoldani azt a problémát hogy lenyomok 1 billentyűt, pl a d gombot és akkor odébb tolódik 1 pixel a képernyőn.
mindent meg tudtam csinálni, csak az a gondom, hogyha lenyomom a d gombot még utánna egy entert is kell nyomni.
nincsen erre egy jó utasítés, hogy nem kelljen állandóan entert nyomogatni???

előre is kösszi!!
kfx
A CRT unit rendelkezik egy keyPressed függvénnyel. Boolean értékkel tér vissza. Ha lenyomsz egy billentyűt, igazzá válik. Ezt berakod egy elöltesztelős ciklusba belépési feltételként, majd egy feltételt írsz az adott billentyűre, és kész is. Persze ez az egész megint mehet megint egy ciklusba, ahol például adott billentyű lenyomása a kilépési feltétel.
Remélem érthető és tudtam segíteni.
Calyd
Már rég Pascaloztam, de én is hasonlót tudok javasolni, egy kicsit másképp. Mondjuk egy "key" nevű karakter típusú változót használva egy hátultesztelőst ciklust használnék [vagy akár biztosan rossz kezdőértékkel elöltesztelőst]:

Repeat
key:=ReadKey;
Until key='d';

De a gondolati elv ugyanaz, mint amit kfx is javasolt.
vdanika
Üdv
Nekem, egy lehet, h nagyon egyszerű problémám volna, de nem boldogulok vele.
Kezedetnek szeretnék egy egyszerű programot csinálni, ami egy előre rögzített fájlhoz, csinál egy parancsikont az Idítópultba. Ehez szeretném a segítségeteket kérni: Nem tudom, h lehet megmondeni a TP-nak, h csináljon parancsikont.
arpsoft
Win alatt inkább Delphi-t használjál.
vdanika
Ha ez a Delpi-s üzenet nekem szólt, akkor azért nem használok, mert még életembe nem dolgoztam vele, a Pascalról viszont legalább tudom, h micsoda.
kfx
Nem nehéz megszokni, mivel az alapok ugyanazok, a delphi kicsit több, de amit pascalban meg tudsz csinálni, azt delphiben is, majdnem teljesen ugyanúgy.
vdanika
Most már ott tartok, h inkább bemásoltatom a fájlt, de ez sem megy. Bármely más könyvtárba akarom másoltatni, az megy, de az indítópultot nem akarja. Azt sejtem, h az ékezetek miatt, lehet ezellen tenni vmit?
Most nincs időm, h még a delphivel is foglalkozzam
vdanika
Lehet, h hülyeséget kérdezek, de hogy lehet string-et átkonvergálni text-re?
arpsoft
Átkonvertálni.
Ha jól emlékszem akkor a text egy fájl típus, a string pedig egy változó.
A writeln fügvénnyel lehet a fájlba bármit kiírni. Vagy nem erre gondoltál?
Ez a tartalom egy lebutítottváltozata. A teljes változat képekkel kiegészült megtekintéséhez kérünk, kattints ide.