Aber das ist doch popeleinfach...
Delphi-Quellcode:
While not MyTextFile.Eof do begin
MyTable.Append;
While GetNextField(MyTextFile, sFieldName, sFieldContents) do
MyTable[sFieldName].AsString := sFieldContents
MyTable.Post;
End;
Die Funktion 'GetNextField' liest die nächste nicht-leere Zeile vom MyTextFile ein und liefert TRUE, wenn es sich um einen Feldinhalt handelt (und dann in 'sFieldName' den Feldnamen und in 'sFieldContents' den Inhalt), oder FALSE sonst.
Das Langsame hier ist:
MyTable[sFieldName].AsString := sFieldContents
Das bekommt man mit einer kleinen Hashmap wesentlich schneller hin. Diese Map liefert zum Feldnamen den Feldindex, sodaß man dann direkt in die entsprechende Spalte schreiben kann.
Selbst wenn das Einlesen 30 min dauert, ist das immer noch kürzer, als umständlich nach einer performanten Lösung zu suchen. Was hast Du davon, wenn Du in 5 Tagen eine solche implementiert hast?
[edit]... Wenn die Tabelle noch nicht existiert bzw. die Gesamtmenge der Feldnamen noch nicht bekannt ist, würde ich die Datei einmal durchscannen, um alle Feldnamen zu erhalten. Damit wird dann die Tabelle erzeugt bzw. ggf. erweitert. Im laufenden Betrieb geht das nicht so einfach.
Du kannst aber auch komplett auf ein TDataset verzichten und nur mit
SQL arbeiten. Dazu müsste man aber wissen, ob
Access auch DDL kennt, also CREATE / ALTER TABLE, um ggf neue Feldnamen an die Tabelle anzubepseln. [/edit]