Free Pascal-ban írt, Windows alatt lefordított program ne a Dos ablakban fusson, mit lehet tenni? (bővebben lent)
Szeretném, ha a program a Windows-ban futna és nem az emulált DOS ablakban, mert ekkor megváltozik a kódtábla-kiosztás (gondolom CP437 lesz mint a régi szép időkben), és az ékezetes billentyűkre nem reagál, a többire igen, példaként beraktam (alább a példaprogram). Gondolom, valamilyen módon GUI-t kellene tenni rá, mi ennek a legegyszerűbb módja? Nem szeretnék semmilyen különleges grafikát, csak hogy egy grafikus ablakban fusson a program, tehát nem akarok szövegdobozokat, se egerészést, semmit, csak hogy úgy fusson mint egy Win32 alkalmazás és ne a cmd.exe által fusson mint egy régi DOS program. Simán Free Pascal alatt meg lehetne oldani? (Lazarust sem szeretnék használni). Ha ASCII kódjuk szerint adnám meg az ékezetes betűket, akkor sem működnének. Ha megoldható rendkívül egyszerűen Lazarus alatt, akkor megpróbálkoznék vele, bár Lazarus-t sem használtam még soha.
Ha a -WG+ paraméterrel fordítottam a programot, akkor - gondolom mivel grafikát nem tartalmaz - elindul ugyan, de csak a feladatkezelőben lehet látni és persze jól leterheli a rendszert, hiszen a háttérben fut és a végtelenségig várja a billentyűleütéseket, de ugye hiába...
Valaki képessé tudná nekem tenni ezt a programot, hogy normálisan fusson Windows alatt, vagy valamilyen példaprogramot tudna mutatni ami alapján át tudnám ezt alakítani? A legeslegegyszerűbb megoldás érdekelne, nem szeretnék grafikus tervezéssel foglalkozni, vak vagyok és sosem foglalkoztam ilyesmivel, csak tudom hogy van GTK meg QT meg hasonlók, de a legegyszerűbb példaprogram aminek forráskódját olvastam is elég bonyolult volt... Egyszerű megoldás létezik?
Uses CRT; {WinCRT-t nem használhatom, mert a Readkey stb nem működne}
Var
Ch : Char;
Begin
ClrScr;
WriteLn('Kilépés: Enter gomb.');
Repeat
ch := ReadKey;
Case ch of
'a' : WriteLn('a');
'b' : WriteLn('b');
'c' : WriteLn('c');
'á' : WriteLn('á');
'Á' : WriteLn('Á');
'é' : WriteLn('é');
'É' : WriteLn('É');
'í' : WriteLn('í');
'Í' : WriteLn('Í');
'ö' : WriteLn('ö');
'Ö' : WriteLn('Ö');
'ő' : WriteLn('ő');
'Ő' : WriteLn('Ő');
'ű' : WriteLn('ű');
'Ű' : WriteLn('Ű');
'ó' : WriteLn('ó');
'Ó' : WriteLn('Ó');
'ú' : WriteLn('ú');
'Ú' : WriteLn('Ú');
End;
Until(ch = #13);
End.
A kódos változat most működik (kódokkal megadva az ékezeteket), egy másik gépen, Windows XP alatt próbáltam délelőtt és ott nem működött, itt most Windows 7 32 bit van.
Jegyzettömbben írtam a programot, mert a Free Pascal beépített környezetét nem akarta nekem támogatni a beszélőprogram, ami felolvassa a képernyő tartalmát, szóval jegyzettömbbel elmenteni és meghívni az fpc.exe-t egyszerűbb volt.
Éppen azon gondolkodtam, hogy mi válthatta ki a számomra arrogáns választ, mert én nem éreztem úgy, hogy tudálékosan beszéltem volna.
Szia.
Konzolos alkalmazást ablakos alkalmazássá átirni nem egyszerű dolog.
Erre egyetlen egy módszert ismerek ami az egyszerű programoknál működhet :
A Borland Pascal for Windows (BP7-ben) le lehet forditani az egyszerűbb konzolos alkalmazásokat egyszerüen csak a crt unitot át kell irni wincrt-re és kész is a dolog (Biztos lesz olyan alakmazás aminél nem fog működik - és a létrejött windowzos ablak is egy egyszerű ablak lesz).
Innen letöltheted az általad irt programot (exe és pas a zip-ben) : [link]
Sok sikert.
Üdv.
Köszönöm szépen a válaszokat.
Itt (Free Pascal 2.6.4 alatt a WinCRT használatától nemhogy nem lesz ablakos a program, de valahogy a readkey sem akar működni. :-) Most már hogy működik konzolban is a kódokkal a program, azért jobb a helyzet.
A Wincrt-ről meg egy megjegyzés:
"The wincrt unit provides some auxiliary routines for use with the graph unit, namely keyboard support. It has no connection with the crt unit, nor with the Turbo-Pascal for Windows WinCrt unit. As such, it should not be used by end users. Refer to the crt unit "
Ez a Free Pascal helpjéből van idézve.
Régen (értsd: Borland Pascal alatt, ami még Win3.X-re készült) a WinCRT unit arra szolgált, hogy a CRT-hez hasonló funkciókat ellásson, de egy Windows-stílusú ablakban. Tulajdonképpen ugyanúgy "parancssori" alkalmazás volt, csak mivel a Win3.1-ben nem volt Windows parancssor (csak DOS), ezért a sima konzolos programokat ez a WinCRT egy Windows-stílusú szöveges ablakban jelenítette meg. (Remélem, érthetően fogalmaztam. Aki dolgozott vele, tudja, miről van szó. ;-) Én még XP alatt is ezt preferáltam, ha nem volt szükség GUI-ra, ugyanis sokkal pofásabb, mint az a fekete parancssor.)
Viszont Free Pascal-ban a WinCRT teljesen másra való. Arra, hogy ha a graph unitot használod, akkor megkönnyítse a billentyűzetkezelést.
Még valamikor, a Win95/98 idején tényleg úgy volt.
Az XP Jegyzettömbje már képes volt Unicode/UTF-8 kódolásokat is kezelni.
Az ANSI egyébként a Jegyzettömb terminológiájában a telepített Windows kódlapját - ami jelen esetben 1250 - jelenti.
Ha szerkesztés közben állítod a Notepad++-ban, persze, hogy nem látsz változást, mert az már van annyira intelligens program, hogy átalakítsa a begépelt szöveget automatikusan a megadott (új) kódlapnak megfelelően.
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!