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?
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
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?
"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)
"bár ezt nem kell tudnod"
Úgy értem hogy kezdőként még nem baj ha nem tudod.
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
"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
"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
"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.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!