Tömbök a Delphi, Delphi, Delphi komponens Delphi forrás

Tömbök a Delphi

Array - egy adatstruktúra, amely egy sor változó azonos típusú, amelynek egy közös neve. A tömbök hasznos tárolására homogén jellegű információt, mint például a táblázatok és listák.







Akkor meg kell, kattintson ide:

Tömbök a Delphi, Delphi, Delphi komponens Delphi forrás

Név: [nizhniy_indeks..verhniy_indeks] típusú

  • neve - a neve a tömb;
  • array - Delphi nyelv kulcsszó. azt jelzi, hogy be a nevét a neve a tömbben;
  • nizhniy_indeks és verhniy_indeks - egész konstansokat a tartományt definiáló a tömb index, és, implicit módon, az elemek száma (méret) a tömb;
  • típusú - a típusa a tömb elemeinek.


indulat: array [1..31] valós;

koef: array [0..2] egész szám;
név: array [1..30] string [25];


const
BT = 15; // a csapatok számát
Sn = 25; // korlátozzák a hossza a parancs neve
var
csapat: array [1 BT] string [SN];

Annak érdekében, hogy a program használja egy sor elemet, akkor meg kell határozni a tömb nevét és a cikkszám (index), ehhez az index szögletes zárójelben. Az állandó vagy egy kifejezés a típusú egész szám lehet használni, mint egy index, például:


csapat [1]: = „1 Zenith;

d: = koef [L] * koef [l] - 4 * koef [2] * koef [1];
ShowMessage (név [n + 1]);
indulat: = StrToFloat (Editl szöveget.);

Név: array [nizhniy_indeks. verhniy_indeks] típusú = (lista);

ahol a lista - vesszővel elválasztott értékek a tömb elemeinek.


egy: ​​array [lO] A integer = (0. 0. 0. 0. 0. 0. 0. 0. 0. 0);
Csapat: array [1..5] String [10] = ( 'Zenith' Dynamo Spartak 'rotor' CAS”....);

Ha megpróbálja elindítani a helyi tömb fordító hibaüzenetet ad: Nem lokális változókat inicializálni (lokális változók nem lehet inicializálni). Helyi tömb lehet inicializálni csak futási időben, például az alábbiak szerint:

i: = 1-től 10 csinál egy: = 0;

Tipikus műveletek, ha dolgozik, tömbök:

  • tömb kimenet;
  • input tömb;
  • keresés a maximális vagy minimális a tömb elem;
  • keres egy előre meghatározott tömbelem;
  • Tömbök rendezése.

Nyomtató tömb

Megkötése útján a tömb utal, hogy a kimeneti a képernyőn (a dialógus) értékeket a tömb elemeinek.

Ha a program megjeleníteni kívánt értékeket az összes elem a tömb, akkor célszerű használni utasítást, míg a kézi változó számláló lehet használni, mint egy eleme a tömb index.

Példaként, ábrán. 5.1 alkalmazás kap egy párbeszédablak, amely azt mutatja, az előkészítési folyamat és kimeneti értékek a tömb elemeinek a kulcsszó mezőbe. A program megjeleníti a számozott listát labdarúgó csapat. Meg kell jegyezni, hogy a lista csapatok nézett igazán, mint egy lista, ingatlan Label1.AutoSize kell rendelni a False érték (a tulajdonságot True Label1.Autosize és látom, hogy a program működni fog). A szöveg a program listán látható.

Lista. Inicializálás és kimeneti tömb

02. interfész
03. A Windows, az Üzenetek, SysOtils, Változatok, osztályok, grafika, vezérlők, Forms, párbeszédablakok, StdCtrls;
04. típus
05. TForml = osztály (TForm)
06. Buttonl: TButton;
07. Label1: TLabel;
08. eljárás ButtonlClick (Sender: TObject);
09. privát
10.
11. nyilvános
12.
13. end;
14. var
15. Form1: TForm1;
16. végrehajtás
17.
18. const
19. NT = 5;
20. var
21. csapat: array [1 NT] string [10] = ( 'Zenit1' 1. Dynamo 'Rotor1' Spartacus', 'CAS');
22. eljárás TForml. ButtonlClick (Sender: TObject);
23. var
24. st: string; // parancsok listáját
25. i: integer; // indexe a tömb elem száma
26. kezdődik
27. A formáció // lista látható formájában
28. i: = l NT do st: = st + IntToStr (i) + '' + csapat + # 13;
29. // nyomtatási listára
30. Label1. Caption: = st;
31. végén;
32. végén.

input tömb

Az input tömb értjük folyamat, mely során a felhasználó (vagy egy fájl), míg az értékeket a tömb elemeinek egy programot,

„Head-on” megoldás a problémára az input tömb - minden tömb létrehozása szövegmezőbe elem. Azonban, ha azt szeretnénk, hogy adjon meg egy kellően nagy tömb, ez a megoldás elfogadhatatlan. Képzeld el, az alakja, például egy tíz-szerkesztő mezőt!

Nyilvánvaló, hogy a sorszámokat kényelmesen alkalmazhatók az A táblázat, ahol minden szám található egy külön cellában. Az alábbiakban vesszük két változata a szervezet az input tömb StringGrid és Memo alkatrészeket.

Az input tömb értjük megszerzésének folyamatát a felhasználó (vagy a Fájl menü), míg az értékek a tömb elemeit a program, „Head-on” megoldás a problémára az input tömb - minden tömb elem létrehozásához mezőbe. Azonban, ha azt szeretnénk, hogy adjon meg egy kellően nagy tömb, ez a megoldás elfogadhatatlan. Képzeld el, az alakja, például egy tíz-szerkesztő mezőt! Nyilvánvaló, hogy a sorszámokat kényelmesen alkalmazhatók az A táblázat, ahol minden szám található egy külön cellában. Az alábbiakban vesszük két változata a szervezet az input tömb StringGrid és Memo alkatrészeket.







Használata StringGrid alkatrész

Belépni egy sor hasznos StringGrid komponenst. Icon StringGrid komponens a Additiona l lapon (ábra. 5.2).

strinqGrid komponens egy táblázatot, amelynek a sejtek tartalmaznak egy karakterlánc.

Példaként egy komponens a bemeneti stringGrid tömb, úgy egy programot, amely kiszámítja a számtani középértéke az elemek a tömb. Program párbeszédablak ábrán látható. 5.3. stringGrid komponens lehet belépni a tömb, és alkatrészek Label1 Label2 - megjelenítéséhez magyarázó szöveget és a számítás eredményeként Buttoni - indítására a számítási folyamat.

Tömbök a Delphi, Delphi, Delphi komponens Delphi forrás

StringGrid komponenst formájában adjuk hozzá, pontosan ugyanaz, mint a többi komponens. Miután az így alakul ki kell elvégezni a beállítást a táblázat szerint. 5.2. Az értékek a szélesség és magasság tulajdonságokat kell használni az egeret, hogy állítsa be úgy, hogy a méret a komponens azonos volt vonal méretben.

A szöveg a program listán látható.

Ingatlan értékének StringGrid1 alkatrész

Lista. Bevitele és feldolgozása egy sor egészek


01. egység getar_;
02. interfész
03. felhasználások
04. A Windows, az Üzenetek, SysUtils, Változatok, osztályok, grafika, vezérlők,
05. Forms, Dialogs, rácsok, StdCtrls;
06. típus
07. TForml = osztály (TForm]
08. Labell: TLabel;
09. StringGridl; TStringGrid;
10. Buttonl: TButton;
11. Label2: TLabel;
12. eljárás ButtorilClicMSender: TObject];
13. privát
14.
15. nyilvános
16.
17. végén;
18. var
19. Forml: TForml;
20. végrehajtás
21.
22. eljárás TForml. ButtonlClick (Sender: TObject);
23. var
24. a. array [1..5] egész szám; // tömb
25. suntrn: integer; // elemek összege
26. sr: real; // számtani átlaga
27. i: integer / // Index
28. kezdődik
29. A bemeneti tömb //
30. // úgy vélik, hogy ha a cella üres, a megfelelő
31. A tömbelem // s értéke nulla
32. i: = 1-től 5 Do
33. Ha a length (StringGridl. A sejteket [i-l, 0]] 0
34., majd a: = StrToInt (StringGridl sejteket [i- 1 0).)
35. mást egy: = 0;
36. // array
37. summ: = 0;
38. i: = 1-től 5 Do
39. summ: = summ + egy;
40. sr. = Summ / 5;
41. // nyomtatási eredmények
42. Label2. Caption: = 'összege elemek:' + IntToStr (summl + # 13 + „számtani átlag:„+ FloatToStr (SR);
43. végén; végén.

A tárgyalás után fut a program van egy vágy, hogy módosítsa a tömb input folyamat. Tehát, nem lenne jó, ha a kurzor automatikusan a következő cellája felé, például egy gomb megnyomásával. Ezt meg lehet tenni az eseményhez # 111; nkeypress. Ugyanakkor eljárás feladata a szűrés adattáblák egy sejtbe lehet határozni. A mi esetünkben ez szükséges ahhoz, hogy a sejt csak bemenő számokat.

Szöveg eseményhez # 111; nkeypress lista mutatja 5.3. Megjegyzés: a Col tulajdonsága, hogy miközben a program tartalmaz egy táblázatot oszlop számát, ahol a kurzor található. Ez a funkció is használható, hogy a kurzort a kívánt táblázatcellába. Ugyanakkor szem előtt tartani, hogy az oszlop a táblázatban, de mivel a vonalak számozása nullától.

Listing 5.3. Az eljárást az esemény kezelésére # 111; nkeypress


eljárás TForml. StringGridlKeyPress (Sender: TObject; var Key, Char);
kezdődik
ügy kulcsa
# 8 '0'. '9'. ; // számok és a legfontosabb
# 13 // a kulcs
ha StringGridl. Col majd StringGridl. Col: = StringGridl. Col + 1;
mást kulcs: = Chr (O); // többi karakter nem engedélyezettek
végén;
végén;

Ha azt szeretnénk, hogy vezessenek be egy sor lebegőpontos számok (a: array [. Május 1] valós), a rendezvény eljárás # 111; nkeypress kissé bonyolult, így amellett, hogy a számok megengedett karakterek elválasztó karaktert (vessző vagy pont - attól függ, hogy a Windows beállítások) és a mínusz ... Annak érdekében, hogy egy program barát tekintetében a felhasználó kérheti trükk helyettesítő helytelen behelyezés határoló igaz felhasználó. Határozza meg, mely elválasztó karaktert engedélyezett a jelenlegi beállítás Windows, akkor vegye fel a kapcsolatot egy globális változót Tizedesjel. Listing 5.4 mutatja a szöveg beviteli modul alkalmazását és feldolgozásának egy sor tört számok. Az eljárást az esemény kezelésére # 111; nkeypress biztosítja bemenet a táblázat cella csak megengedett, ha a felvétel egy frakcionális szimbólumok száma.

Listing 5.4. Bevitele és feldolgozása a tömb a tört számok

01. egység getar_l;
02. interfész
03. felhasználások
04. A Windows, az Üzenetek, SysUtils, Változatok, osztályok, grafika, kontrollok,
05. Forms, Dialogs, rácsok, StdCtrls;
06. típus
07. TForml - osztály (TFora)
08. Labell: TLabel;
09. StringGridl: TStringGrid;
10. Buttonl: TButton;
11. Label2: TLabel;
12. eljárás ButtonlClick (Sender: TObject);
13. eljárás StringGridlKeyPress (Sender: TObject; var Key: Char);
14. privát
15.
16. nyilvános
17.
18. végén;
19. var
20. Forml: TForml;
21. végrehajtás
22.
23. eljárás TForml. ButtonlClick (Sender: TObject);
24. var
25. a. array [1..5] valós; // tömb
26. summ: real, - // elemek összege
27. sr: real; // számtani átlaga
28. i: integer; // index
29. kezdődik
30. // input tömb
31. // úgy vélik, hogy ha a cella üres, a megfelelő
32. A tömbelem // s értéke nulla
33. i: = I csinálni 5
34. ha LengtMStringGridl. A sejteket [i- 1. 0]) 0
35., mint a [i): = StrToFloat [StringGridl. A sejteket [i- 1. 0]]
36. mást egy: = 0;
37. // array
38. summ: = 0;
39. i: = 1-től 5 Do
40. summ: = summ + egy;
41. sr: = summ / 5;
42. // nyomtatási eredmények
43. Label2. Caption: =
44. 'Az összeg:' + FloatToStr (summ) + # 13 +
45. 'A számtani középértéke:' + FloatToStr (SR);
46. ​​végén;
47. // funkció viszi be a cella csak érvényes karaktereket
48. eljárás TForml. StringGridlKeyPress (Sender: TObject; var Key: Char);
49. kezdődik
50. eset kulcsa
51. # 8 '0'. '9'. ; // számok és
52. # 13 // a kulcs
53. ha StringGridl. Col 54. Ezután StringGridl. Col: = StringGridl. Col + 1;
55.”. ”. ”. ”. // a tizedes rész száma
56. kezdődik
57. Ha a kulcs DecimalSeparator majd
58. Kulcs: = decimális elválasztó; // cserélje ki a szeparátor
59. // érvényes
60. Ha Pos (StringGridl. Cells [StringGridl. Col, 0].
61. DecimalSeparator) a ről
62. majd Kulcs: = Chr (O); // második bemeneti tilalmat
63. // határoló
64. végén;
65. '-'. // mínusz csak akkor léphetnek „az első karakter,
66. // t. E. Ha a cella üres
67. Ha a length (StringGridl. Cells [5tringGridl. Col, 0]) körülbelül
68. majd Kulcs: = Chr (O);
69. mást // más szimbólumokat betiltották
70. gomb: = Chr [0);
71. végén; végén; végén.

Segítség a projekt! Küld erről az oldalról:




Kapcsolódó cikkek