Array-Felder

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Felder - Index

Array-Felder bestehen aus mehreren Feldern desselben Typs. Die Feldtypen können skalar (z.B. Float oder String) oder nichtskalar sein (ADT). Array-Felder, die weitere Arrays enthalten, sind nicht zulässig. Die Eigenschaft SparseArrays einer TDataSet-Komponente bestimmt, ob für jedes Element im Array-Feld ein eindeutiges Data.DB.TField-Objekt erstellt wird.

Es gibt verschiedene Möglichkeiten, auf die Daten von Array-Feldern zuzugreifen. Sofern Sie keine persistenten Felder verwenden, müssen Sie der Eigenschaft ObjectView der Datenmenge den Wert True zuweisen, um auf die Elemente eines Array-Feldes zugreifen zu können.

Persistente Felder verwenden

Sie können den einzelnen Array-Elementen persistente Felder zuordnen. Betrachten Sie beispielsweise das folgende Array-Feld namens TelNos_Array, das ein sechs Elemente umfassendes Array mit Strings ist. Die folgenden persistenten Felder, die für die Tabellenkomponente Customer erstellt wurden, repräsentieren das Feld TelNos_Array und dessen sechs Elemente:



 CustomerTelNos_Array: TArrayField;
 CustomerTelNos_Array0: TStringField;
 CustomerTelNos_Array1: TStringField;
 CustomerTelNos_Array2: TStringField;
 CustomerTelNos_Array3: TStringField;
 CustomerTelNos_Array4: TStringField;
 CustomerTelNos_Array5: TStringField;



 CustomerTELNOS_ARRAY: TArrayField;
 CustomerTELNOS_ARRAY0: TStringField;
 CustomerTELNOS_ARRAY1: TStringField;
 CustomerTELNOS_ARRAY2: TStringField;
 CustomerTELNOS_ARRAY3: TStringField;
 CustomerTELNOS_ARRAY4: TStringField;
 CustomerTELNOS_ARRAY5: TStringField;



Nachdem diese persistenten Felder gegeben sind, kann mit der folgenden Anweisung einem Eingabefeld namens TelEdit der Wert eines Array-Elements zugewiesen werden.



 TelEdit.Text := CustomerTelNos_Array0.AsString;



 TelEdit->Text = CustomerTELNOS_ARRAY0->AsString;



Die Eigenschaft FieldValues des Array-Feldes verwenden

Der Zugriff auf den Wert eines untergeordneten Feldes kann auch über die Eigenschaft FieldValues der Datenmenge erfolgen. Da diese Eigenschaft einen Variant-Wert entgegennimmt und zurückgibt, können mit ihr Felder jedes Typs verarbeitet und konvertiert werden. Beispiel:



 TelEdit.Text := TArrayField(Customer.FieldByName('TelNos_Array')).FieldValues[1];



 TelEdit->Text = ((TArrayField*)Customer->FieldByName("TelNos_Array"))->FieldValues[1];



Da FieldValues die Standardeigenschaft von TArrayField-Komponenten ist, muss der Eigenschaftsname nicht angegeben werden:



 TelEdit.Text := TArrayField(Customer.FieldByName('TelNos_Array'))[1];



Die Eigenschaft Fields des Array-Feldes verwenden

Mit der Eigenschaft Fields von TArrayField-Komponenten können Sie auf einzelne untergeordnete Felder zugreifen. Das nachfolgende Beispiel veranschaulicht dies. Hier werden alle Elemente des Array-Feldes OrderDates, die nicht Null sind, in ein Listenfeld eingetragen:



 for I := 0 to OrderDates.Size - 1 do
 begin
   if not OrderDates.Fields[I].IsNull then
     OrderDateListBox.Items.Add(OrderDates[I]);
 end;



 for (int i = 0; i < OrderDates->Size; ++i)
   if (!OrderDates->Fields->Fields[i]->IsNull)
     OrderDateListBox->Items->Add(OrderDates->Fields->Fields[i]->AsString);



Siehe auch