aplicații de console din Delfi

Un program simplu consola

Apoi, salvați fișierul cu extensia .dpr - în acest caz conprg.dpr. În plus, acesta poate fi încărcat în Delphi (File | Open) și începe adăugarea de cod.
Notă: Dacă executați programul de mai sus-menționat, se va termina imediat, pentru că nu există nici un cod de lucru.

Pentru început, este posibil să se adauge o readln linie:

Veți vedea o casetă de text necompletat, care se închide dacă apăsați pe tasta Enter.

Așa cum am menționat mai devreme, puteți utiliza aproape orice funcție Win32 API dintr-o aplicație consolă. Această aplicație este foarte convenabil de faptul că interfața cu utilizatorul nu poate să se gândească, și pentru a afișa utilizarea de informații doar câteva funcții scriere / writeln. Exemple de aplicații de aplicații consolă o mare mulțime: și acest alt fel de utilitate, și programele de testare pentru testarea funcțiilor API, etc. Nu ne vom scufunda în exemple de modul de utilizare a API specifice, și va vorbi doar despre API-ul consola (Console API).

Cantilever API (API Console)

Microsoft oferă un set de funcții care sunt foarte utile atunci când crearea de aplicații consolă. Pentru început, voi spune că există cel puțin doi descriptori (mânere). care sunt conectate la fereastra consolei. Unul pentru intrare și una pentru ieșire. Mai jos sunt două caracteristici mici, care arată modul de a obține acești descriptori.

De asemenea, este mai bine pentru a crea propriile funcții pentru astfel de operații simple, precum poziționarea cursorului, șterge ecranul și afișarea / ascunderea cursorului (la fel ca în API-le consoleze un pic mai greu de mânuit și confuz). Iată cum arata:

După cum ați observat, am folosit patru funcții consola API: GetStdHandle. SetConsoleCursorPosition. FillConsoleOutputCharacter. SetConsoleCursorInfo. Uneori poate fi problema determinării dimensiunii ferestrei consolă verticală și pe orizontală. Pentru a face acest lucru, vom crea două variabile: MaxX și Maxy, tipul de cuvânt:

// --------------------------------------
// Inițializare variabile globale
// --------------------------------------
Procedura Init;
începe
// Ia un mâner la ieșire (de ieșire)
ConHandle: = GetConOutputHandle;
// obține dimensiunea maximă a ferestrei
Coord: = GetLargestConsoleWindowSize (ConHandle);
MaxX: = Coord.X;
Maxy: = Coord.Y;
se încheie;

Putem face chiar și o „buclă de mesaj“ (bucla mesaj) - pentru cei care sunt doar incepand de a programa în Delphi - bucla de mesaj ar trebui să se facă atunci când aplicația este creată în API pur - nevoia de cel puțin trei elemente: WinMain, bucla de mesaje și fereastra proc.

Mai jos este un cod de „buclă de mesaj“:

SetConsoleCtrlHandler (@ConProc, False);
cls;
//
// „bucla eveniment“
//
Continuare: = true;
În timp ce Continuă face
începe
ReadConsoleInput (GetConInputHandle, IBuff, 1, IEvent);
Cauza IBuff.EventType de
KEY_EVENT. începe
// Verificați tasta ESC și a ieși din programul
Dacă ((IBuff.KeyEvent.bKeyDown = true) ȘI
(IBuff.KeyEvent.wVirtualKeyCode = VK_ESCAPE)) Apoi
Continuă: = false;
End;
_MOUSE_EVENT. începe
Cu IBuff.MouseEvent.dwMousePosition do
StatusLine (Format (, [X, Y]) '..');
End;
se încheie;
capăt

Puteți adăuga, de asemenea, un „tratare a evenimentului“ și intercepta astfel de comenzi rapide, cum ar fi Ctrl + C și Ctrl + Break:

// ------------------------------------------------ -----
// evenimente consola manipulant
// ------------------------------------------------ -----
Funcția ConProc (CtrlType. DWord). bool; stdcall; departe;
var
S. String;
începe
caz de CtrlType
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';
altfel
S: = 'UNKNOWN_EVENT';
se încheie;
MessageBox (0, PChar (S + 'detectat'), 'Win32 Console', MB_OK);
Rezultat: = true;
se încheie;

Pentru a vedea toate acestea în acțiune, am făcut un mic program demonstrativ, care are rutine, de mai sus, precum și alte caracteristici. Următoarele este complet codul sursă pentru această aplicație. Bucurați-vă!

articole similare