Thema: Delphi .dbf BDE

Einzelnen Beitrag anzeigen

Andy U

Registriert seit: 14. Jun 2006
17 Beiträge
 
#1

.dbf BDE

  Alt 19. Jun 2006, 14:01
Datenbank: BDE • Zugriff über: Aus Delphi direkt
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.
  Mit Zitat antworten Zitat