Konzol alkalmazások Delphi

Egy egyszerű konzol programot

Majd mentse a fájlt a kiterjesztés .dpr - ebben az esetben conprg.dpr. Továbbá azt lehet betölteni Delphi (File | Open) és elkezd hozzá kódot.
Megjegyzés: Ha fut a fenti programot, akkor azonnal befejeződik, mert nincs üzemi kódot.

Már a kezdet kezdetén, akkor lehetséges, hogy adjunk egy sort readln:

Látni fogja, egy üres szövegdoboz, amely lezárja, ha megnyomja az Enter billentyűt.

Mint korábban említettük, akkor szinte bármilyen Win32 API függvény egy konzol alkalmazás. Ez az alkalmazás nagyon kényelmes az a tény, hogy a felhasználói felület nem kell gondolkodni, és az információ megjelenítésére használatát csak pár funkciók írása / writeln. Alkalmazási példák konzolos alkalmazások nagy sokaság, és ez másfajta hasznosság, és a vizsgálati programok tesztelésére API függvények, stb Nem fogunk merülni példát, hogyan kell használni bizonyos API, és beszélni csak a konzol API (konzol API).

Konzolos API (konzol API)

A Microsoft olyan funkciót, amelyek nagyon hasznosak létrehozásakor konzolos alkalmazások. Már a kezdet kezdetén azt fogja mondani, hogy van legalább két olyan jellemző (fogantyú). amelyek össze vannak kötve a konzolt. Egy bemeneti és egy kimeneti. Az alábbiakban két kis funkciók, amelyek azt mutatják, hogy hogyan lehet megszerezni ezeket a jellemzőket.

Csakúgy, akkor jobb, hogy saját funkciókat, mint az egyszerű műveletek, mint a helymeghatározás a kurzor, törölje a képernyőt és megjelenítése / elrejtése kurzor (mint API vigasztalják őket egy kicsit nehézkes és zavaró). Itt van, hogyan néznek ki:

Ahogy te is észrevetted, használtuk a négy funkció konzol API: GetStdHandle. SetConsoleCursorPosition. FillConsoleOutputCharacter. SetConsoleCursorInfo. Néha ez lehet a probléma méretének meghatározásakor a konzolt függőlegesen és vízszintesen. Ehhez fogunk létrehozni a két változó: MaxX és maxy írja Szó:

// --------------------------------------
// inicializálása globális változók
// --------------------------------------
eljárás Init;
kezdődik
// Kap egy fogantyú a kimeneti (output)
ConHandle: = GetConOutputHandle;
// A maximális mérete az ablak
Coord: = GetLargestConsoleWindowSize (ConHandle);
MaxX: = Coord.X;
MaxY: = Coord.Y;
végén;

Azt is, hogy az „üzenet hurok” (üzenet hurok) - azok számára, akik csak most kezdik programozni Delphi - üzenet hurok kell tenni, ha az alkalmazás létrehozásakor tiszta API - szükség van legalább három elemből áll: WinMain, üzenet hurok és ablak proc.

Az alábbiakban egy kód „üzenet hurok”:

SetConsoleCtrlHandler (@ConProc, False);
CLS;
//
// "Event hurok"
//
Tovább: = true;
Míg Folytatás do
kezdődik
ReadConsoleInput (GetConInputHandle, IBuff, 1, IEvent);
Case IBuff.EventType a
KEY_EVENT. kezdődik
// Ellenőrizze az ESC gombot, és lépjen ki a programból
If ((IBuff.KeyEvent.bKeyDown = igaz), és
(IBuff.KeyEvent.wVirtualKeyCode = VK_ESCAPE)) Aztán
Tovább: = false;
Vége;
_MOUSE_EVENT. kezdődik
A IBuff.MouseEvent.dwMousePosition do
StatusLine (Format (, [X, Y]) '..');
Vége;
végén;
vég

Azt is hozzá a „eseménykezelő” és a lehallgatott ilyen hivatkozások, mint a Ctrl + C és Ctrl + szünet:

// ------------------------------------------------ -----
// felvezető konzol események
// ------------------------------------------------ -----
funkció ConProc (CtrlType. DWord). bool; stdcall; messzire;
var
S. string;
kezdődik
esetében CtrlType a
CTRL_C_EVENT. S: = 'CTRL_C_EVENT';
CTRL_BREAK_EVENT. S: = 'CTRL_BREAK_EVENT';
CTRL_CLOSE_EVENT. S: = 'CTRL_CLOSE_EVENT';
CTRL_LOGOFF_EVENT. S: = 'CTRL_LOGOFF_EVENT';
CTRL_SHUTDOWN_EVENT. S: = 'CTRL_SHUTDOWN_EVENT';
más
S: = 'UNKNOWN_EVENT';
végén;
MessageBox (0, PChar (S + 'észlelt'), 'Win32 konzol', MB_OK);
Eredmény: = true;
végén;

Hogy mindezt működés közben, csináltam egy kis demonstrációs program, mely rutinok, a fenti, valamint néhány egyéb jellemzőit. A következő a teljes forráskódját az alkalmazás. Enjoy!

Kapcsolódó cikkek