ich schreibe gerade ein Tool um Dbf-Dateien zu erstellen bzw. zu ändern. Das erstellen ist kein Problem. NUr mir jetzt aufgefallen, wenn ich die Datei wieder einlese und mir die Felder anzeigen lasse, dann werden einige Feldgrößen nicht korrekt angezeigt. Insbesonders ein Numerisches Feld, welches ursprünglich mit Size=11 und Precision=4 angelegt wurde, wird beim wieder einlesen mit 8 und 4 angegeben. Wenn ich mir jedoch das Dbf-File Im Hexeditor ansehe, ist dort die Feldgröße korrekt mit 11 (0x0b) angegeben.
Das Einlesen erfolgt so:
Code: Alles auswählen
DBA.Close;
DBA.TableName:=aName;
DBA.Open;
grdEdtFields.RowCount:=1;
for i:=0 to DBA.FieldDefs.Count-1 do begin
grdEdtFields.RowCount:=grdEdtFields.RowCount+1;
y := grdEdtFields.RowCount-1;
FFld := DBA.Fields[i].FieldName;
FTyp := DBA.Fields[i].DataType;
FSize := DBA.Fields[i].DataSize;
FPrec := DBA.FieldDefs.Items[i].Precision;
if ((FPrec < 0) and (FSize > 0)) then begin
FSize := FSize + FPrec;
FPrec := 0;
end;
with grdEdtFields do begin
//Felddaten ins Grid eintragen
Cells[0,y] := IntToStr(i+1);
Cells[1,y] := FFld;
Cells[2,y] := TranslateTyp(FTyp);
Cells[3,y] := IntToStr(FSize);
Cells[4,y] := IntToStr(FPrec);
Cells[5,y] := '';
end;
txtRecSize.Text := IntToStr(CalcRecSize);
end;
DBA.Close;
Hat jemand eine Idee was da falsch läuft?
Gruß
Halvar