Jeder Befehl zum Erstellen von Arrays kann ein- oder zweidimensionale Arrays erstellen bzw. in der Größe anpassen. Beispiel:
ARRAY TEXT(atTopics;100;50)
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)
$vlLastTable:=Get last table number
ARRAY POINTER(<>apFields;$vlLastTable;0)
For($vlTable;1;$vlLastTable)
If(Is table number valid($vlTable))
$vlLastField:=Get last field number($vlTable)
$vlColumnNumber:=0
For($vlField;1;$vlLastField)
If(Is field number valid($vlTable;$vlField))
$vlColumnNumber:=$vlColumnNumber+1
INSERT IN ARRAY(<>apFields{$vlTable};$vlColumnNumber;1)
<>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:
COPY ARRAY(◊apFields{Table(Current form table)};$apTheFieldsIamWorkingOn)
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.