Spaltennamen über Index (dBase) [gelöst]

Für Fragen von Einsteigern und Programmieranfängern...

Spaltennamen über Index (dBase) [gelöst]

Beitragvon and4more » 23. Apr 2017, 16:58 Spaltennamen über Index (dBase) [gelöst]

Hallo liebes Forum, habe folgendes Problem:
Ich möchte aus einer dBase-Datenbank die Namen der Spalten über deren numerischen Index auslesen, also etwa wie folgender Pseudocode:
Code: Alles auswählen
 
for i:=0 To DB.FieldCount-1 do begin
  StringList.Add(DB.FieldByIndex[i])   //soll den Spaltennamen über den Index angeben
 


...nur gibt es eine Funktion wie FieldByIndex leider nicht oder ich kann sie nur nicht finden. Weiß jemand eine Lösung?
Zuletzt geändert von and4more am 23. Apr 2017, 17:42, insgesamt 1-mal geändert.
Lazarus 1.6.4 32-Bit + 64-Bit, Windows 10 64-Bit, Manjaro Linux 64-Bit
and4more
 
Beiträge: 207
Registriert: 15. Nov 2012, 19:13
OS, Lazarus, FPC: Windows 10, Manjaro Linux, Lazarus 1.6.4 (32/64 Bit) | 
CPU-Target: 32 Bit / 64 Bit
Nach oben

Beitragvon wp_xyz » 23. Apr 2017, 17:18 Re: Spaltennamen über Index (dBase)

Wenn bei dir DB ein TDataset-Abkömmling ist, also etwa TDbf, dann kannst du DB.Fields[i] aufrufen.
wp_xyz
 
Beiträge: 2188
Registriert: 8. Apr 2011, 08:01

Beitragvon and4more » 23. Apr 2017, 17:35 Re: Spaltennamen über Index (dBase)

...funktioniert bei mir irgendwie anders als erhofft.
'SLSpaltenNamen.Add(DB.Fields[i])' zeigt mir bei leider als Fehlermeldung beim compilieren: 'Got "TField" , exspected "AnsiString",
Bei 'SLSpaltenNamen.Add(DB.Fields[i].Text)' und 'SLSpaltenNamen.Add(DB.Fields[i].AsString)' den Inhalt der Felder des ersten Datensatzes(?!?).
Ich hätte aber gerne die Bezeichnungen der einzelnen Spalten erhalten, also quasi die Spaltenüberschriften.

Sinn der ganzen Geschichte ist, eine Liste zu erstellen, die mir alle Spaltennamen sichert, um dann später entweder einzelne Spalten hinzuzufügen oder zu löschen, was dann in der Stringlist geschehen soll anhand derer dann die Datenbank neu erzeugt werden soll.
Lazarus 1.6.4 32-Bit + 64-Bit, Windows 10 64-Bit, Manjaro Linux 64-Bit
and4more
 
Beiträge: 207
Registriert: 15. Nov 2012, 19:13
OS, Lazarus, FPC: Windows 10, Manjaro Linux, Lazarus 1.6.4 (32/64 Bit) | 
CPU-Target: 32 Bit / 64 Bit
Nach oben

Beitragvon and4more » 23. Apr 2017, 17:41 Re: Spaltennamen über Index (dBase)

...hab's grade rausgefunden, richtig muss es heißen:

Code: Alles auswählen
 
SLSpaltenNamen.Add(DB.Fields[i].FieldName);
 


Vielen Dank für den "Schubs".
Lazarus 1.6.4 32-Bit + 64-Bit, Windows 10 64-Bit, Manjaro Linux 64-Bit
and4more
 
Beiträge: 207
Registriert: 15. Nov 2012, 19:13
OS, Lazarus, FPC: Windows 10, Manjaro Linux, Lazarus 1.6.4 (32/64 Bit) | 
CPU-Target: 32 Bit / 64 Bit
Nach oben

• Themenende •

Zurück zu Einsteigerfragen



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

porpoises-institution
accuracy-worried