Hallo,
ich möchte mit TDbf in einem (vorerst) Kommandozeilenprogramm alle Datensätze via WriteLn ausgeben.
Mein Code:
{$MODE OBJFPC}
Program project1;
uses Dbf, db, Dbf_Common;
var
MyDbf: TDbf;
i : integer;
begin
MyDbf := TDbf.Create(nil);
try
{ benutzen Sie relative Pfade}
MyDbf.FilePath := '.\';
MyDbf.TableLevel := 7;
MyDbf.Exclusive := True;
MyDbf.TableName := 'top1465.dbf';
MyDbf.Open;
WriteLn('Datensätze: ',mydbf.ExactRecordCount);
WriteLn('ENTER drücken...');
ReadLn;
for i := 0 to MyDbf.Fields.Count - 1 do begin
WriteLn(MyDbf.Fields);
end;
ReadLn;
MyDbf.Close;
finally
MyDbf.Free;
end;
end.
Das klappt aber nicht ("Can't read or write variables of this type").
Bitte Hilfe!
Anfängerfrage zu TDBF
Re: Anfängerfrage zu TDBF
Zunächst mal: Wenn du vor den Quellcode ein [ code=laz] und anschließend ein [ /code] schreibst, dann wird der Code entsprechend der Pascal-Syntax formatiert. Damit tut man sich als jemand, der deinen Code nicht kennt, leichter, ihn zu verstehen. Das Leerzeichen nach der öffnenden Klammer aber bitte weglassen - ich muss das hier verwenden, sonst formatiert die Forumsoftware den hier eingeschlossenen Text fälschlicherweise als Code.
Zu deiner Frage: Wenn du jetzt noch schreiben würdest, in welcher Zeile der Fehler auftritt, würde man sich nochmals leichter tun. So muss man nur vermuten... Ich denke, es hapert in der Zeile
denn MyDbfFields ist eine Klasse, die man nicht einfach per WriteLn ausgeben kann. Du musst schon angeben, welche Eigenschaft der Klasse gemeint ist - in diesem Fall wahrscheinlich der Dateninhalt des Feldes als String. Also:
Zu deiner Frage: Wenn du jetzt noch schreiben würdest, in welcher Zeile der Fehler auftritt, würde man sich nochmals leichter tun. So muss man nur vermuten... Ich denke, es hapert in der Zeile
Code: Alles auswählen
WriteLn(MyDbf.Fields[i]);
Code: Alles auswählen
WriteLn(MyDbf.Fields[i].AsString);
-
- Beiträge: 351
- Registriert: Mi 25. Nov 2015, 17:06
- OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
- CPU-Target: i386 + x86_64
- Wohnort: in der Nähe von Stuttgart
- Kontaktdaten:
Re: Anfängerfrage zu TDBF
Ist zwar nicht Hauptthema des Threads, aber es geht:wp_xyz hat geschrieben:Das Leerzeichen nach der öffnenden Klammer aber bitte weglassen - ich muss das hier verwenden, sonst formatiert die Forumsoftware den hier eingeschlossenen Text fälschlicherweise als Code.
Code: Alles auswählen
Code: Alles auswählen
InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Re: Anfängerfrage zu TDBF
Danke. Gut zu wissen.
Re: Anfängerfrage zu TDBF
Danke - genau das war's!wp_xyz hat geschrieben:Zunächst mal: Wenn du vor den Quellcode ein [ code=laz] und anschließend ein [ /code] schreibst, dann wird der Code entsprechend der Pascal-Syntax formatiert. Damit tut man sich als jemand, der deinen Code nicht kennt, leichter, ihn zu verstehen. Das Leerzeichen nach der öffnenden Klammer aber bitte weglassen - ich muss das hier verwenden, sonst formatiert die Forumsoftware den hier eingeschlossenen Text fälschlicherweise als Code.
Zu deiner Frage: Wenn du jetzt noch schreiben würdest, in welcher Zeile der Fehler auftritt, würde man sich nochmals leichter tun. So muss man nur vermuten... Ich denke, es hapert in der Zeile
denn MyDbfFields ist eine Klasse, die man nicht einfach per WriteLn ausgeben kann. Du musst schon angeben, welche Eigenschaft der Klasse gemeint ist - in diesem Fall wahrscheinlich der Dateninhalt des Feldes als String. Also:Code: Alles auswählen
WriteLn(MyDbf.Fields[i]);
Code: Alles auswählen
WriteLn(MyDbf.Fields[i].AsString);