Hallo
folgendes Problem:
ich möchte aus einer Record-Liste eine .dbf-Datei erstellen. Das ganze muss nach Vorgabe mit
BDE laufen. Bisher gibt es folgenden Code, der wohl schon mal (Win16) funktioniert hat.
Folgendes ist bekannt:
list_begin : ist der Zeiger auf eine Liste der Daten, die aus der Datei gelesen wurden
FileName : Zieldateiname
Delphi-Quellcode:
...
type
log_struc = ^struc;
struc = record
id : integer; { Nr. des Datensatzes }
Datum : string[10]; { Datum des Aufzeichnens }
Std, Min, Sek : byte; { Zeit der Aufzeichnung }
...
km : real48;
...
Prev : log_struc; { der Vorgänger Pointer }
Next : log_struc; { und der Nachfolger }
end;
Table1 : TTable
listBegin
...
procedure NewDb;
var
p : log_struc; { interne Struktur der Aufzeichnungsdaten }
begin
with Table1 do
begin
Active := False;
DatabaseName := 'MyNewAlias'; // einen Alias vergeben
TableName := FileName; // und hier den echten Namen zuordnen
TableType := ttDBase; // Datentyp ist DBase
{ Nun werden falls vorhanden sämtliche Felder entfernt und dann neu
definiert, mit Typ und Größe, hier wurde sich an das TAL Format gehalten }
with FieldDefs do
begin
Clear;
Add('Datum', ftString, 10, false);
Add('Std', ftInteger, 0, false);
Add('Min', ftInteger, 0, false);
Add('Sek', ftInteger, 0, false);
...
Add('km', ftfloat, 0, false);
...
Add('Text', ftString, 10, false);
end;
CreateTable; // das wars und nun erzeugen
end;
{ Datenbankstruktur ist damit definiert, nun können Daten eingetragen werden }
p := list_begin; { auf den Anfang unserer Aufzeichnungdatenliste }
Table1.Active := True; // Tabelle aktivieren
while p <> nil do // Nun durch die ganze Liste gehen
begin
Table1.Append; // und Datensätze anhängen
...
Table1.FieldByName('km').AsFloat := p^.km;
Table1.FieldByName('Std').AsInteger := p^.std;
Table1.FieldByName('Min').AsInteger := p^.min;
Table1.FieldByName('Sek').AsInteger := p^.sek;
Table1.FieldByName('Datum').AsString := p^.datum;
...
Table1.FieldByName('Text').AsString := p^.Text;
p := p^.next; // auf nächsten Listenelement zeigen
end;
Table1.Post; // Datensätze in Datenbank schreiben
Table1.close; // Tabelle löschen
intro.konvstat.visible := False; // Gauge verschwindet wieder
end;
Ergebnis: .dbf-Datei, Inhalt: Müll......
Exel zeigt irgendwelchen Schrott an,
BDE-Datenbankoberfläche sagt gleich, dass sie das gar nicht erst öffnet.
Alle Tips die ich so gefunden haben liefen auf "nimm lieber...anstatt
BDE" aber vielleicht kann mir doch jemand was sagen.