képzés
Megszerzett tudás előző leckében elég kezdeni a tanulmány a bemeneti és kimeneti mechanizmusok. Az általános rendszer a program körülbelül a következő: a felhasználó beírja az adatok, a program beolvassa őket, teszi őket valamilyen műveletet, és eredményt. Leegyszerűsítve: input, feldolgozás és output. Mi már tudjuk? Adatbeviteli szükségünk van más elemek, mint például a szövegbeviteli mezőben (tSzerkesztés) vagy többvonalas -. TMemo, CheckBox vagy RadioButton paraméterek kiválasztására, stb használható kimeneti szöveges címke (TLabel). Most vizsgáljuk meg a programozás részét. Azt már tudjuk, hogyan állapítsa változók, hogy milyen típusú adatokat, és mik a típus (szám, vonósok, stb) Már csak azt, hogy megtudja, hogyan kell megkötni a vizuális elemeket a programkódot. A tárgyalt példák az előző leckéket, kértük a változók értékét manuálisan (a kód), de ez természetesen nem elfogadható sem a program. A program legyen az egyetemes és az adatok feldolgozására, amely továbbítja a felhasználó. Egyes funkciók a Delphi fogják használni bemeneti és kimeneti. Mi a szerepe, miért van szükség, és hogyan kell velük dolgozni, megbeszéltük az előző leckét. Nos, inkább az a pont?
Bevitele a példa tSzerkesztés
Szövegbeviteli mezőben (tSzerkesztés) - egyszerű és ugyanakkor könnyen kezelhető alkatrész adatbevitel. A területen tudjuk be a számot és a szöveget - nem ismer határokat. Tehát az első feladat -, hogy megtudja, mi a mezőbe írt. Ehhez meg kell fordulni a objektum tulajdonságait. A szöveg, amely a területen megfelel a Text tulajdonság. Ez nekik fogjuk használni. Próbáljuk számolja, hogy felveszik. Található az alak a területen is (tSzerkesztés) és a nyomógomb (TButton). Hozzon létre egy gombot kattintással felvezető és tegye a következőket: állapítsa meg egy változó típusú értéke, majd próbálja meg tedd az érték, amelyet a mezőbe írt.
eljárás TForm1.Button1Click (Sender: TObject);
var A: egész;
kezdődik
A: = Edit1.Text;
végén;
Kazaloos legalábbis, hogy így van - már bejelentett egy változó, és csak azt szeretném tudni, hogy mi a mezőbe írt. Próbáljuk futtatni (F9) - ez nem ilyen egyszerű! A fordító hibát jelez:
[Error] Unit1.pas: összeférhető típusok: 'Egész' és 'TCaption'
Itt azt írják, hogy az adattípusok Egész és TCaption nem egyezik egymással. TCaption - az ilyen típusú adatokat a Text tulajdonság tSzerkesztés. Ez a fajta „azt jelenti:” szöveget, vagyis minden karakter. Ez világosabbá válik? A területen, tudjuk be nem csak számokat, hanem betűket, vagy akár bármilyen jelét, ami a billentyűzeten (és valójában - tegye a karaktereket kód táblázat). Azonban a változó - számot! Kiderült, hogy szeretnénk a karakterek számát írva. Betegség! Igen, azt mondják, de mi lesz, hogy adja meg a számok, nem betűk. Igaz, de ha a fordító tud róla? Természetesen nem. És ez nem lesz lehetséges, hogy meggyőzze :-)
Adat típus hibás - gyakori hiba. Átalakítás egy adattípust másik gyakran van szükség. Példánk - egyértelmű megerősítést. Együttműködik a szám már beírt szöveget (ezt a szöveget) konvertálni egy számot.
Átváltása különböző módon. Ezek közül az egyik - a különleges funkciókat. Funkciók hogy az egyik több paraméter (érvek), amelyek közül az egyik változó vagy a átváltandó értéket. Függvény a néhány művelet, és visszaadja az értékét a kívánt típust.
Történő átalakítását az a szöveg (vonal) egy egész szám StrToInt () függvény. Név pontosan tükrözi a célja a funkciót. Mi jellemző egyetlen paramétert - a húr, és a kimenet egy szám. Ezért, hogy a példánkban a munka, meg kell írni ezt:
eljárás TForm1.Button1Click (Sender: TObject);
var A: egész;
kezdődik
A: = StrToInt (Edit1.Text);
végén;
Most a program futtatásához. Próbáljunk meg egy számot, majd nyomja meg a gombot - nincs válasz figyelhető meg. Igaz, ahogy olvashatjuk amellett, hogy a megadott szám nem lett programozva. És most megpróbálja bemutatni felesleges karaktert (azaz szám) - a „repülni” a hibaüzenet jelenik meg:
A jelentés megállapította, az a hiba okát: „»abc«- téves szám.” Hogyan kerüljük el ezeket az üzeneteket, hanem végezni tevékenységét, nézzük meg később.
Adatkimenetet példáját TLabel
Mielőtt befejezném, hadd proizvedom megadott szám bármely művelet. Például nézzük vozvedom száma a téren. Hogy ez megtörtént, akkor már tudja. Következtetés megvalósítható egy szöveges címke (TLabel). A címke szövege megfelel a Caption tulajdonság. Ebben az esetben a tetteink kell fordítani: Amikor mi tárolja a változó értéke a mezőbe írt, és a levezetése az értéket meg kell mozgatni, hogy a változó elem. Képaláírás TLabel is jellemezte az TCaption adatokat. azaz ezt a szöveget. Tehát meg kell tennie az ellenkezőjét átalakítás, azaz konvertálni a számot egy szövegből. Mi a neve a funkciója az ilyen átadást, akkor könnyen kitalálható - IntToStr (). A végleges változat a gomb felvezető:
eljárás TForm1.Button1Click (Sender: TObject);
var A: egész;
kezdődik
A: = StrToInt (Edit1.Text);
A: = térnél (A);
Label1.Caption: = IntToStr (A)
végén;
Elindítja a programot és próbálja meg:
Egy egyszerű input-output program készen áll.
Hol lehet tanulni a típusú ingatlan?
Függvény írásakor StrToInt () vonal a Text tulajdonság természetesen jelennek meg.
általánosítása a fenti
Megvizsgáltuk a mechanizmus IO példaként a feldolgozás. Ha a feldolgozás alá szöveget, alakítsa át a adattípusok nem kell. Hasonlóképpen, a bemeneti és kimeneti végzik gyakorlatilag bármilyen adatot, ami a legfontosabb - átalakítani egy típusú a másik.
Belépni egészek is van egy praktikus termék - TSpinEdit. Nem található a minták lapra. A megjelenés hasonló tSzerkesztés, itt is csak a két nyilakkal - az érték módosításához. Margók meghatározása tulajdonságait MINVALUE és MAXVALUE. és a tárolt érték az Érték tulajdon.
Munka valós számok
Meg kell említeni a tört számok, mert néha nem. Általában azok a bemeneti és kimeneti gyakorlatilag ugyanaz, mint a számok, csak StrToFloat () függvényt és FloatToStr (). Ez egyszerű. Van azonban egy probléma valós szám - a tizedes rész. Az a tény, hogy nincs bizonyosság, amit a karakter minősül elválasztó - időszakban vagy vessző. Melyik karaktert választott - ez attól függ az operációs rendszer beállításait (Windows ez a szimbólum meghatározott Vezérlőpult alatt Területi és nyelvi beállítások). Így, ha egy programot, hogy élesíteni a vessző, a rendszerekben, ahol a munkapont, semmi sem fog működni, és a hibák fordulnak elő az üzemeltetés során. Ugyanakkor, egy pont is lehet élesíteni a programot, mert ott lehet, és vessző. Szerencsére van megoldás. Van olyan változó, amely soha nem kell nyilvánítani, de meg lehet változtatni az értékét - egy változó DecimalSeparator. Megállapítást nyer, a SysUtils egység, és tárolja a karaktert kell tekinteni, mint egy elválasztó. Állítsa be a kívánt értéket csak egyszer - például, amikor a program elindul. Itt van, hogyan kell beállítani az elválasztó pont:
eljárás TForm1.FormCreate (Sender: TObject);
kezdődik
DecimalSeparator: = '' ;
végén;
Egyéb kivonási módszerekkel
Amellett, hogy termelés az objektumok (például TLabel) Néha kényelmes kimeneti adatok formájában kis egyedi ablakok. Erre a célra vannak szabványos parancsokat. Az előző leckében találkoztunk velük, de nem bontott őket részletesen.
1. Egy egyszerű üzenet doboz - ShowMessage ()
A legprimitívebb ablak tartalmazza a megadott szöveget, majd kattintson az OK gombra az ablak bezárásához. Ok ilyen adott ablakban ShowMessage () eljárás. paraméternek szöveges - és ez jelenik meg az ablakban. Módosítjuk a mini-programot TLabel eltávolítása és cseréje a kimeneti szöveg:
eljárás TForm1.Button1Click (Sender: TObject);
var A: egész;
kezdődik
A: = StrToInt (Edit1.Text);
A: = térnél (A);
ShowMessage (IntToStr (A));
végén;
Ebben az esetben azt látjuk, a következő:
Meg kell jegyezni, hogy míg az üzenet mezőbe van a képernyőn, a felület blokkolva van, és megáll a végrehajtásban további parancsokat. Csak miután a gombra kattintva a program, hogy folytassa munkáját.
2. A párbeszédablak - MessageDlg ()
Párbeszédpanelek - egy kifinomultabb típusú ablakok. Párbeszédpanelek gyakran használják a „dialógus” a felhasználó. Ha egy ablak már általunk használt - kérjük a felhasználót, hogy zárja be az ablakot igazán záráskor a program ablakát. Most vizsgáljuk meg a munkát az ilyen ablakok részletesen.
Létrehozása párbeszédpanelek MessageDlg () függvényt. Ez a funkció nem eljárás. A visszatérési érték egy gombot, amely a felhasználó kattintott. Mi jellemző 4 bemeneti paraméterek:
- Üzenet szövege (adattípus - karakterlánc);
- párbeszédpanelen írja (speciális típusú adatok - TMsgDlgType) - jelzi a ikonra az ablak és az ablak címét. Ez a paraméter az alábbi állandók:
- mtInformation - információs ablak (az ikon az ablakban - az „i” betűvel);
- mtConfirmation - doboz egy kérdés (ikon - vosprositelny jel);
- mtWarning - egy figyelmeztető ablakot (szimbólum - felkiáltójel);
- mtError - egy ablakot egy hibaüzenettel (ikon - kereszt vörös alapon);
- mtCustom - ablak nélkül egy ikont, és a cím - a nevét a futtatható fájl (minden egyéb a fejlécben fel a megfelelő típusú nevét párbeszéd - Információ Warning stb)
- Gombot. amely megjelenik az ablakban. Minden gomb megfelel egy határozott és állandó. A gombok vannak felsorolva, vesszővel elválasztva, és az egész „csomag” szegélyezik szögletes zárójelek (ami azt jelenti, a szögletes zárójelek - lásd később). Itt vannak a konstansok az összes rendelkezésre álló gombok: mbYes. mbNo. mbOK. mbCancel. mbAbort. mbRetry. mbIgnore. mbAll. mbNoToAll. mbYesToAll. mbHelp. Állandó név magáért beszél a gomb nevét.
- A negyedik paraméter jelzi az index részt a rendszer segítségével. megfelelő a párbeszéd. Általános szabály, hogy nem használt, és mindössze 0.
Mivel a visszaadott értékek a funkció mind ugyanazt a kulcsot állandó, azzal a különbséggel, hogy ahelyett, hogy „mb”, kezdenek „mr” (összehúzódás „modális” gomb és a „modális eredmény” -kal).
Mi változik a program, - akkor is, ha az eredmény ki az információs ablakban. Figyeljük meg, milyen szép ez az ablak néz:
eljárás TForm1.Button1Click (Sender: TObject);
var A: egész;
kezdődik
A: = StrToInt (Edit1.Text);
MessageDlg ( 'négyzet számok' + IntToStr (A) + 'egyenlő' + IntToStr (térnél (A)), mtInformation, [mbOK], 0);
végén;
Megjegyzés: A szöveg húrok lehet kombinálni, csak hozzá őket - „+” jel (lásd a fenti kódrészletet.). Sami sorok íródnak egyetlen idézetek.
És végül, próbálja meg használni a párbeszéd finomítani a felhasználó több információt. Például, ha negatív számot kérünk, hogy szükséges-e tér. Kód lesz körülbelül a következő:
eljárás TForm1.Button1Click (Sender: TObject);
var A: egész;
kezdődik
A: = StrToInt (Edit1.Text);
ha A <0 then
ha MessageDlg ( 'a szám negatív. emelje meg a tér?', mtConfirmation, [mbYes, mbNo], 0) = mrYes majd
MessageDlg ( 'négyzet számok' + IntToStr (A) + 'egyenlő' + IntToStr (térnél (A)), mtInformation, [mbOK], 0);
végén;
És az eredmény a következő lesz:
A megjelenése az ablakok minden fajta:
3. párbeszédablak MessageBox ()
C Funkciók használata MessageBox (), akkor is megjelenik a párbeszéd ablakban. A megjelenés ők gyakorlatilag megkülönböztethetetlen MessageDlg windows (). de lehetséges, hogy meghatározza és ablak címét. Ahhoz, hogy létrehoz a kódsor segítségével MessageBox () függvény Mester MessageBox programot. C Ennek segítségével gyorsan hozhat létre a kívánt párbeszédablak. MessageBox () A probléma az, hogy milyen típusú a párbeszéd és a gombok meg kissé szokatlan módon.
Keresztül belépő egy párbeszédablak
Különleges ablakok nem csak a kijelző, hanem a belépéshez. Egy példa egy ilyen ablak InputBox (). Funkció vezetünk három paraméter: az ablak címét szöveg, szöveg magyarázatok, és az értéket a mezőben, amikor a kijelző a képernyőn. A megadott karakterláncot a függvény egy értéket eredményez. például:
eljárás TForm1.Button2Click (Sender: TObject);
kezdődik
ha InputBox (. „Enigma” „ül nagyapja, száz kabátok, aki viselte levetkőzni -. A könnyek istállót ki.?” „”) = »hagyma«, majd
MessageDlg ( 'Right!', MtInformation [mbOk], 0)
más
MessageDlg (Nem is sejtette. ', MtWarning [mbOk], 0)
végén;
következtetés
Megnéztük, hogy a bemeneti és kimeneti adatok, valamint találkozott párbeszédpanelek. IO technikákat használnak szinte minden alkalmazás: azok, amelyek egy ablak felület, ez történik a vizuális tárgyak, valamint a konzolos alkalmazások - parancssoros módban.
házi feladat
Írja meg a program kéri a felhasználótól a három szám - a hossza az oldalán a háromszög. Ha megnyomja a gombot, a program kell számítani a háromszög területét ezekkel oldalán, és ha egy háromszög nem létezik, kiadja a megfelelő üzenetet.