1 € unterstützen? So geht das *: |
Step 07 - Arrays & RecordsAuthor: Nicolai B. Arrays:Ein Array ist eine statische Liste, welche Werte eines vorbestimmten Types enthalten kann. Das ganze stellt man sich am besten so vor: Man hat eine Straße (=Array) mit gleichen Häusern (=Typ), aber anderen Familien (=Werte) und natürlich anderen Hausnumern. Die Hausnummern bilden die Indizes, über welche man auf die Werte zugreifen kann. Der Index eines Arrays beginnt normalerweise bei "0" und wird in eckigen Klammer dargestellt: myarray[0]; Name des arrays ; Index des Arrays ; Einem Array wird ein Wert, wie bei einer Variable, zugewiesen. Ein statisches Array ist ein Array mit einer bestimmten Größe. Es wird wie folgt deklariert: var myArray : Array[0..4] of Interger ; Name des Arrays ; Größe des Arrays ; Typ des Arrays Die Größe kann bei diesem Beispiel während der Laufzeit nicht verändert werden. myArray[0]:=0; myArray[1]:=0; myArray[2]:=0; myArray[3]:=0; myArray[4]:=0; Dynamische Arrays werden wie die statischen Arrays nur ohne die Größenangabe deklartiert: var myArray : Array of Interger ; Name des Arrays ; Typ des Arrays Die Größe eines dynamischen Array kann man während der Laufzeit ändern: SetLength( myarray , 10 ); Name des Arrays ; Neue größe des Arrays ; Initialisiert wird das dynamische genauso wie das statische Array. Beispiele siehe später bei Step 11 (For-Schleife)
Records:
Records sind eine Art Verbund von mehreren Elementen. procedure TMainForm.BtnDemoClick(Sender:TObject); type TAdresse = record Vorname: String; Nachname: String; Strasse: String; Hausnmr: Integer; Ort: String; PLZ: String; end; // of Record var tmpAdr : TAdresse; AdressenArray : Array[0..4] of TAdresse; // Beinhaltet insgesammt 5 Adressen! begin // Initialisierung des Adressen-Arrays AdressenArray[0].Vorname:='Klaus'; AdressenArray[0].Nachname:='Walter'; // ... AdressenArray[4].Ort:='Klaustal'; AdressenArray[4].PLZ:=54321; end;
Die "Typdeklaration" besteht aus dem Schlüsselwort "type" und anschließend fast genauso, wie wir es bei der Variablendeklaration kennengelernt haben.
Nun haben wir den Typus "Record" bereits kennengelernt.
Hier eine fortgeschrittene Demo, was man mit dem "Type" Record schönes machen kann:
// das hier in den Interface-Bereich direkt bei type type TICQNmbr = record Nick : String[10]; // die Zahl in den Eckigen Klammern gibt die Name : String[10]; // maximale Größe des "Strings" an! Surname : String[12]; UIN : Integer; end; T4ICQContacts = Array[0..3] of TICQNmbr; // das hier in den privat-Abschnit des TMainForms ICQNmr : T4ICQContacts; // das hier in die Click-Procedure des Buttons, // der die Eingaben übernehmen soll: begin ICQNmr[0].Nick:=EdNick1.Text; ICQNmr[0].Name:=EdName1.Text; // ... copy & paste ;-) ICQNmr[3].Surname:=EdSurname4.Text; ICQNmr[3].UIN:=StrToInt(EdUIN4.Text); end; // das hier in die Click-Procedure des Buttons, // der die geladene Eingaben anzeigen soll: begin EdNick1.Text:=ICQNmr[0].Nick; EdName1.Text:=ICQNmr[0].Name; // ... copy & paste ;-) EdSurname4.Text:=ICQNmr[3].Surname; EdUIN4.Text:=IntToStr(ICQNmr[3].UIN); end; // das hier in die Click-Procedure des Buttons, // der alles speichern soll: var f : file of T4ICQContacts; begin AssignFile(f,'C:\demofile.dat'); // Achtung: Vistanutzer nehmen bitte am einfachsten das Programmverzeichnis als Speicherort: // AssignFile(f, ExtractFilePath(Application.Exename) + 'demofile.dat'); // ExtractFilePath(Application.Exename) extrahiert, wie der name schon sagt, den Pfad des Programmes ReWrite(f); Write(f,ICQNmr); CloseFile(f); end; // das hier in die Click-Procedure des Buttons, // der alles laden soll: var f : file of T4ICQContacts; begin AssignFile(f,'C:\demofile.dat'); // Achtung: Vistanutzer nehmen wieder das Programmverzeichnis als Speicherort: // AssignFile(f, ExtractFilePath(Application.Exename) + 'demofile.dat'); ReSet(f); Read(f,ICQNmr); CloseFile(f); end; Kommentar des Webmasters: Das Kommentarmodul dieser Seite wurde deaktiviert. Daher sendet bitte alle Fragen, Anregungen oder Probleme mit dem Kapitel-Namen im Betreff (bzw. zu welchem Thema es sich handelt) an folgende Mailadresse: |
||
|
|||
www.delphi-lernen.de www.lazarus-lernen.de |
© 2006-2021 by Marco Hetzel , last modified 21.10.2020, 15:56 |
||
|