4D v16.3

Zweidimensionale Arrays

Home

 
4D v16.3
Zweidimensionale Arrays

Zweidimensionale Arrays  


 

 

Jeder Befehl zum Erstellen von Arrays kann ein- oder zweidimensionale Arrays erstellen bzw. in der Größe anpassen. Beispiel:

 ARRAY TEXT(atTopics;100;50) ` Erstellt ein Array vom Typ Text mit 100 Reihen in 50 Spalten

Zweidimensionale Arrays sind Objekte der Programmiersprache; von daher lassen sie sich weder anzeigen noch ausdrucken.

Im oben angezeigten Beispiel gilt:

  • atTopics ist ein zweidimensionales Array
  • atTopics{8}{5} ist das 5. Element (5. Spalte...) der 8. Reihe
  • atTopics{20} ist die 20. Reihe und selbst ein eindimenisonales Array
  • Size of array(atTopics) gibt 100 zurück, das ist die Anzahl der Reihen
  • Size of array(atTopics{17}) gibt 50 zurück, das ist die Anzahl der Spalten für die 17. Reihe

Folgendes Beispiel speichert für jedes Datenfeld jeder Tabelle einen Zeiger in einem zweidimensionalen Array:

 C_LONGINT($vlLastTable;$vlLastField)
 C_LONGINT($vlFieldNumber)
  `Erstelle zu Beginn soviele leere Reihen wie Tabellen vorhanden sind
 $vlLastTable:=Get last table number
 ARRAY POINTER(<>apFields;$vlLastTable;0) `2D Array mit X Zeilen und Null Spalten
  `Für jede Tabelle
 For($vlTable;1;$vlLastTable)
    If(Is table number valid($vlTable))
       $vlLastField:=Get last field number($vlTable)
  ` Setze den Wert der Elemente
       $vlColumnNumber:=0
       For($vlField;1;$vlLastField)
          If(Is field number valid($vlTable;$vlField))
             $vlColumnNumber:=$vlColumnNumber+1
  `Füge eine Spalte in einer Zeile der Tabelle in Bearbeitung ein.
             INSERT IN ARRAY(<>apFields{$vlTable};$vlColumnNumber;1)
  `Weise die "Zelle" mit dem Zeiger zu
             <>apFields{$vlTable}{$vlColumnNumber}:=Field($vlTable;$vlField)
          End if
       End for
    End if
 End for

Unter der Voraussetzung, dass dieses zweidimensionale Array initialisiert wurde, erhalten Sie nun die Zeiger auf die Datenfelder für eine bestimmte Tabelle:

  ` Erhalte Zeiger auf die Datenfelder für die gerade angezeigte Tabelle:
 COPY ARRAY(◊apFields{Table(Current form table)};$apTheFieldsIamWorkingOn)
  ` Initialisiere Datenfelder vom Typ Boolean und Datum
 For($vlElem;1;Size of array($apTheFieldsIamWorkingOn))
    Case of
       :(Type($apTheFieldsIamWorkingOn{$vlElem}->)=Is date)
          $apTheFieldsIamWorkingOn{$vlElem}->:=Current date
       :(Type($apTheFieldsIamWorkingOn{$vlElem}->)=Is Boolean)
          $apTheFieldsIamWorkingOn{$vlElem}->:=True
    End case
 End for

Hinweis: Wie Sie in diesem Beispiel sehen, können Reihen in zweidimensionalen Arrays dieselbe oder verschiedene Größen haben.



Siehe auch 

Einführung in Arrays

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Arrays

 
GESCHICHTE 

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v16)
4D Programmiersprache ( 4D v16.1)
4D Programmiersprache ( 4D v16.2)
4D Programmiersprache ( 4D v16.3)