Autor Beitrag
kathrin2807
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Sa 08.02.03 18:00 
Hallo

Wie kann ich die Struktur einer dbase-Tabelle auslesen. Ich möchte die Informationen in eine INI-Datei schreiben. Bei den Zeichen und Datumsfeldern klappt es. Nur bei den numerischen Feldern nicht. Wie kriege ich raus wieviele Stellen und Nachkommastellen das Feld hat ?

Danke im Voraus
:)
smiegel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 992
Erhaltene Danke: 1

WIN 7
D7 Prof., C#, RAD XE Prof.
BeitragVerfasst: So 09.02.03 09:49 
Hallo,

schau Dir einmal die Eigenschaften DataType und DataSize von TField an. In der Delphi-Hilfe findest Du dann das gesuchte.

Tipp: TFloatField.Precision

_________________
Gruß Smiegel
Ich weiß, daß ich nichts weiß, aber ich weiß mehr als die, die nicht wissen, daß sie nichts wissen. (Sokrates)
Lake
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 78


D6 prof., Delphi 10.2 Tokyo
BeitragVerfasst: So 09.02.03 10:38 
Hallo vielleicht kannst Du das brauchen. Den nachfolgenden Code habe ich mal im Netz gefunden, weiss leider nicht mehr wo.
Aus dem DataSet kannst du dann aus "Name" den Feldnamen aus "Units1" die Grösse und aus "Units2" die Nachkommastellen für die einzelnen Felder auslesen.

ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
uses BDE;

type
  TFelderListe = class(TDBDataSet)
  private
    FTableName: string;
  protected
    function CreateHandle: HDBICur; override;
    function GetRecordCount: LongInt; override;
  public
    property TableName: string read FTableName write FTableName;
  end;

{ TFelderListe }

function TFelderListe.CreateHandle: HDBICur;
var
  STableName        : array[0..255] of Char;
begin
  AnsiToNative(DBLocale, FTableName, STableName, SizeOf(STableName));
  Check(DbiOpenFieldList(DBHandle, STableName, nil, false, result));
end;

function TFelderListe.GetRecordCount: LongInt;
begin
  check(dbiGetRecordCount(handle, result));
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  fl                : TFelderListe;
begin
  fl := TFelderListe.Create(self);
  fl.TableName := 'xxx.dbf';
  fl.Active := true;
  DataSource1.DataSet := FL;
end;


mfg
Lake