Kezdőoldal » Számítástechnika » Programozás » Turbo Pascal - Free Pascal...

Turbo Pascal - Free Pascal által létrehozott konzolos alkalmazás teljes képernyőn futtatása. Meg lehet vhogy oldani h jól működjön?

Figyelt kérdés

Ha Turbo Pascal-al megírt DOS konzolos alkalmazást kiteszem teljes képernyőre akkor tökéletesen jól fut teljes képernyőn. Ha azonban FreePascal-által készített alkalmazás teszem ki teljes képernyőre akkor teljesen rossz a kép, a karakterek mások stb. FP-ben ezzel lehet vmit kezdeni h jól fusson?


Meg nem csak a Turbo Pascal alkalmazások hanem amelyek "régiek". (Pl Turbo Assembler, Norton Commander) Kis méretűek, és a gépet eléggé leterhelik. A Free Pascal által készített alkalmazások nagyobbak de nem terhelik annyira a gépet.


Köszönöm, üdv


2012. júl. 12. 16:06
1 2 3
 11/22 A kérdező kommentje:
Ez fantasztikus, tökéletesen fut teljes képernyőn!! :D:D Nagyon köszönöm :D Nem is gondoltam hogy a crt unittal ennyi a baj, akkor már értem h Delphi 7-ben miért nincs. Köszönöm még egyszer, üdv :D
2012. júl. 15. 14:22
 12/22 anonim ***** válasza:
Nagyon szívesen. :)
2012. júl. 15. 14:48
Hasznos számodra ez a válasz?
 13/22 A kérdező kommentje:

Még abban segítenétek, hogy a háttérszínt hogyan állíthatom át a crt unit textcolor() helyett?


A linken amit adtál azt látom h a SetConsoleTextAttribute() függvénnyel kell, de hogyan?

2012. júl. 15. 17:17
 14/22 anonim ***** válasza:
100%

"Még abban segítenétek, hogy a háttérszínt hogyan állíthatom át a crt unit textcolor() helyett? "

Helyesen mondva háttérszínre a TextBackground helyett.


"A linken amit adtál azt látom h a SetConsoleTextAttribute() függvénnyel kell, de hogyan?"

Igen ezzel kell, leírom hogy működik. (Egyébként valójába ezen az elven működött a karakteres képernyő karakter & háttér színezése mindig is.)

A függvény kap egy bináris számot ebből 4 bit a háttérszín 4 bit a betűszín.

Fizikailag a betű és a háttérszínt nem lehet külön-külön állítani, ha csak pl. a háttérszínt akarjuk megváltoztatni akkor olyan számot kell átadni neki aminek az alsó 4 bitje ugyan az mint a jelenlegi betűszín színkódja.

Pl. jelenleg a betűszín white (fehér) ami egy számkonstans pascal-ba (nem kell tudni fejből az értékét)

a háttérszín black (fekete, mellesleg 0 a színkódja) és szeretném a háttérszínt green-re (zöldre).

SetConsoleTextAttribute(hConsoleOut,green) nem jó mert a betűszín lesz zöld, a háttérszín fekete mert a green konstans felső 4 bitje 0 ami a fekete hátteret jelenti.

Ha a green-t feljebb tolom 4 bittel akkor pont jó lesz a háttérszín.

Vagyis SetConsoleTextAttribute(hConsoleOut,green shl 4) , de így meg a betűszínt rontottam el, mert az 0 lett.

SetConsoleTextAttribute(hConsoleOut,green shl 4 + white) ez lesz a jó.

Vagyis álalánosan igaz hogy

SetConsoleTextAttribute(hConsoleOut,háttérszín shl 4 + betűszín)

Viszont lehetne írni rá egy egy elárást melyekkel a betűszínt a másikkal a háttérszínt lehet állítani (mint ami a crt unitba van), a SetConsoleTextAttribute függvényt felhasználva, a bitmaszkolások segítségével.


Itt az első paraméter (bár ezt nem kell tudnod) a hConsoleOut a konzol ablakod kimeneti leírója (egyedi azonosítója, ami minden GUI ablaknak, gombnak,editbox-nak ... van)

2012. júl. 15. 20:51
Hasznos számodra ez a válasz?
 15/22 anonim ***** válasza:
100%

"bár ezt nem kell tudnod"

Úgy értem hogy kezdőként még nem baj ha nem tudod.

2012. júl. 15. 20:59
Hasznos számodra ez a válasz?
 16/22 A kérdező kommentje:

Szuperül működik, nagyon köszönöm a segítségedet :D:D


Még utoljára, egy tanácsot kérnék tőled (mivel írtad h egyetemen tanultál szoftverfejlesztést).


Én igazából már 2-3 éve foglalkozok Pascal/Delphi-vel, és terveztem ezt az egészet szépen átvenni, főleg Delphi-ben a GUI alkalmazások fejlesztését meg ezeket az emelkedettebb dolgokat mint pl amit belinkeltél nekem. Csak hát ez még rengeteg előttem álló anyag és tanulás lenne. Szerinted megérné még ily módon Pascal/Delphi-be fektetni ilyen sok energiát és időt, vagy inkább haladjak tovább C/C++ -ra?, abban meg úgyis átfogom venni pl ezeket amiket belinkeltél.


Már elég régóta szenvedtem Pascal-ban ezzel a teljes képernyős cuccal, és még a Pascal nyelven íródott legjobb szoftvereimet megírom teljes képernyős módra :D


Köszönöm a válaszaidat, Üdv

2012. júl. 16. 00:08
 17/22 anonim ***** válasza:

"Szerinted megérné még ily módon Pascal/Delphi-be fektetni ilyen sok energiát és időt, vagy inkább haladjak tovább C/C++ -ra?"

Szerintem ha már elkezdted és már ennyi ideje foglalkozol vele akkor fejleszt tökéletesebbre az ismeretedet,( természetesen ne az ősrégi Turbo Pascal-al). Az nem azt jelenti hogy ezeket "el kell" felejteni később. Attól még hogy Delphi-zel elkezdheted tanulni a C/C++ nyelvet. Én úgy tanultam hogy mindig a pascal-hoz hasonlítottam hogy mi hogy van. Arra alapozva gondoltam át.


Ha pl c++ - ba fejlesztesz akkor az nem kizáró tényező hogy mondjuk a szoftver egy része (pl a GUI) delphi-be legyen megírva. Nem kötelező egy nyelven írni egy szoftvert. (Most nem a kezdő szintre utalok persze.)

Egyébként a Delphi népszerűsége világszerte nem olyan rossz mint ahogy sokan hiszik, persze a C az szinte verhetetlen és jóval előkelőbb helyen van a népszerűségi ranglistán. Ezt a [link] hivatalosan is elfogadott statisztikai elemzésre alapozom.


"Már elég régóta szenvedtem Pascal-ban ezzel a teljes képernyős cuccal, és még a Pascal nyelven íródott legjobb szoftvereimet megírom teljes képernyős módra :D "

Remélem nem úgy gondoltad hogy amit írtam a programod elejére azt minden programod elejére bemásolod. Ez az egyik legrosszabb módszertan. (Lényeges dolog a kód újrafelhasználás.) A kódban minimális változtatással kell megtenni. (Még rengeteg dolgot tudnék mondani, de most a többi annyira nem fontos.)

Ezt egy segéd unit használatával ajánlom. (Gondolom unit-okat már készítettél)

A unit-oknak van egy olyan mellékhatása hogyha több unit-ot használsz pl unit1,unit2 és mind a 2-nek van egy x nevű globális változója akkor a később felsorolt (itt a unit2) unit-é elfedi a másikat és azt éred el, hasonlóan mint eljárásokra/függvényekre.


Csináltam egy mycrt unit-ot : [link]

Hozzá példaprogram : [link]

A betűk nem vibrálnak és nem is színezi őket a crt unit (vagyis nincs rá hatással) az én mycrt unit-om mellékhatása miatt.

Azt ajánlom hogy írj olyan textcolor, textbackgrond eljárásokat. Ha ez lesz a nevük és ilyen nevű elárást hívsz meg akkor ezek fognak meghívódni nem a crt unit beliek és ez esetben remélem nem kell a kód többi részéhez nyúlni.

Ha biztosan mindig ilyen konzol ablakot akarsz akkor a setDefaultDosConsoleSize()-t hívd meg a unit-om inicializáló részénél. (írd a "rewrite(output);" és az "end." sor közé)

-------------------------

Ui.:

Vettél már dinamikus memóriakezelést, pointer aritmetikát, láncolt listákat ?


Üdv :D

2012. júl. 16. 20:34
Hasznos számodra ez a válasz?
 18/22 A kérdező kommentje:

"Szerintem ha már elkezdted és már ennyi ideje foglalkozol vele akkor fejleszt tökéletesebbre az ismeretedet,( természetesen ne az ősrégi Turbo Pascal-al)"


Az egyetlen egy dolog ami már hosszú ideje a Turbo Pascal-hoz kötött az h azon jól megy a teljes képernyő.


"Ha pl c++ - ba fejlesztesz akkor az nem kizáró tényező hogy mondjuk a szoftver egy része (pl a GUI) delphi-be legyen megírva. Nem kötelező egy nyelven írni egy szoftvert. (Most nem a kezdő szintre utalok persze.)"


Igen énis gondoltam h párhuzamosan csináljam, ami feltartott az az h megéri-e, de akkor már végigrágom magam a könyveimen ha már elkezdtem :D


"Remélem nem úgy gondoltad hogy amit írtam a programod elejére azt minden programod elejére bemásolod."


Nem dehogyis :D Ennél azért már régebb óta foglalkozok programozással, a Pascal nem az első nyelvem volt.


"Csináltam egy mycrt unit-ot : [link]

Hozzá példaprogram : [link]

A betűk nem vibrálnak és nem is színezi őket a crt unit (vagyis nincs rá hatással) az én mycrt unit-om mellékhatása miatt.

Azt ajánlom hogy írj olyan textcolor, textbackgrond eljárásokat. Ha ez lesz a nevük és ilyen nevű elárást hívsz meg akkor ezek fognak meghívódni nem a crt unit beliek és ez esetben remélem nem kell a kód többi részéhez nyúlni."


Köszönöm nagyon h energiát fektettél még ebbe is. Mindenképpen fogom használni a jövőben :D


"Vettél már dinamikus memóriakezelést, pointer aritmetikát, láncolt listákat ?"


Foglalkoztam már velük de nagyon nem mélyültem el benne. Most nyáron szándékozom ezt és a OOP-t szőrén-szálán átvenni.



Köszönöm a válaszodat. Izé.. Te nagyon jó fejnek tűnsz h ennyit segítettél, MSN-en nem tarthatnám veled a kapcsolatot? :D Nem akaszkodnék rád, csak mivel teljesen egyedül foglalkozok programozással, néha jó vkivel beszélgetni v tartani a kapcsolatot. Persze csak ha nem gond és van rá időd, nem akarok a terhedre lenni.


Köszönöm a válaszodat, Üdv

2012. júl. 16. 21:24
 19/22 anonim ***** válasza:

"MSN-en nem tarthatnám veled a kapcsolatot? :D"

Nincs MSN-em. Skype-om viszont van. Amúgy meg sokszor nem vagyok gépközelbe meg sokszor más dolgom van és van hogy sok hétig egy betűt nem írok a gyk-ra. Igaz most 1 2 hete ez nem így van. A hétvégén nyaralni megyünk, nem gépezni megyek oda. Ez nem elutasítás a részemről csupán közlöm a tényeket. Ha neked az megfelel és van skype-od akkor skype-on csetelhetünk időnként.

Üdv.

2012. júl. 17. 11:50
Hasznos számodra ez a válasz?
 20/22 A kérdező kommentje:
Értem. Én nem igazán szeretem a Skype-t, meg nincs is. Azért köszönöm a lehetőséget, és minden válaszodat. Üdv.
2012. júl. 17. 20:18
1 2 3

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!