![]() |
erster Datensatz aus record lesen
Hi,
eine gaanz dumme Frage: Wie kann ich den ersten Datensatz eines Records auslesen? Es ist folgendermaßen aufgebaut:
Delphi-Quellcode:
Ich habe immer mit seek geuscht. Und zwar so:
type TRechnung = record
RDatum:String[20]; Name1,Name2,Name3,Str,Ort:String[200]; end;
Delphi-Quellcode:
Doch immer kommt eine Fehlermeldung. Meistens "Versuch hinter dem Dateiende zu lesen". Ist ja auch klar. Doch wie mache ich das richtig? Habe ich keine ID...
seek(rdatei, filesize(rdatei));
seek(rdatei, filesize(rdatei)-1); seek(rdatei, 0); seek(rdatei, 1); |
Re: erster Datensatz aus record lesen
Probiers mal so:
Delphi-Quellcode:
und dann einfach einen datensatz lesen.
seek(rdatei, filesize(rdatei)-SizeOf(TRechnung));
PS: Hat es einen Grund, dass für das Datum RDatum ein String verwendet wird und nicht TDate bzw. TDateTime? (Ich gehe mal davon aus, dass in RDatum sowas wie 21.03.2005 (und evtl. noch die Uhrzeit) gespeichert werden soll) MfG Binärbaum |
Re: erster Datensatz aus record lesen
HI,
ja es hat einen Grund. Ich war zu faul eine TDateTime-Komponente auf die Form zu legen und beim Speichern immer DateToStr einzugeben... ICh werde es mal testen.. mom... |
Re: erster Datensatz aus record lesen
Delphi-Quellcode:
sry..
E/A-Fehler 131. Prozess wurde angehalten
|
Re: erster Datensatz aus record lesen
Ach nee, das wird wohl nichts, es sollte so heißen:
Delphi-Quellcode:
(Und dann einen Datensatz lesen)
seek(rdatei, 0);
Der andere Code war für das Lesen des letzten Datensatzes, da hab ich wohl was verwechselt. Das kommt halt davon, wenn man spät abends noch vorm PC sitzt :stupid: MfG Binärbaum |
Re: erster Datensatz aus record lesen
Hm.
Hatte ich schonmal probiert. Stimmt aber auch nicht. ABer mal eine Frage der Logik... Wenn nur ein Datensatz vorhanden ist, ist dann nicht der erste auch der letzte und umgekehrt?? |
Re: erster Datensatz aus record lesen
Zitat:
Mal eine andere Frage: wie speicherst bzw. liest du eigentlich den Record in der Datei? Vielleicht liegt ja da der Fehler. :gruebel: Ansonsten schau mal in der OH nach, was
Code:
bedeutet.
E/A-Fehler 131
|
Re: erster Datensatz aus record lesen
Ich lese folgendermaßen aus:
Delphi-Quellcode:
Habe die Datei vorher natuürlich assigned...
seek(rdatei, 0);
read(rdatei, rdata); Label11.Caption:=rdata.Name1; Label12.Caption:=rdata.Name2; Label13.Caption:=rdata.Name3; Label14.Caption:=rdata.Str; Label15.Caption:=rdata.Ort; |
Re: erster Datensatz aus record lesen
Verwende zum Lesen lieber ReadLn statt Read (Read war schon zu TP-Zeiten manchmal etwas problematisch):
Delphi-Quellcode:
Das sollte so auch funktionieren, wenn die Datei leer ist.
var rdata: TRechnung;
rdatei: text; //oder TextFile ... AssignFile(rdatei, 'C:\daten.dat'); Reset(rdatei);//entspricht quasi Seek(rdatei, 0); if Eof(rdatei) then rdata.RDatum:= '' else ReadLn(rdatei, rdata.RDatum); if Eof(rdatei) then rdata.Name1:= '' else ReadLn(rdatei, rdata.Name1); if Eof(rdatei) then rdata.Name2:= '' else ReadLn(rdatei, rdata.Name2); if Eof(rdatei) then rdata.Name3:= '' else ReadLn(rdatei, rdata.Name3); if Eof(rdatei) then rdata.Str:= '' else ReadLn(rdatei, rdata.Str); if Eof(rdatei) then rdata.Ort:= '' else ReadLn(rdatei, rdata.Ort); CloseFile(rdatei); Die Funktion Eof überprüft, ob das Dateiende der angegebenen Datei erreicht ist, und falls das der Fall ist, wird True zurückgegeben, sonst False. MfG Binärbaum |
Re: erster Datensatz aus record lesen
Naja,
diese Dateien, die ich in dieser Funktion auslese sind niemals leer und haben auch immer nur einen Datensatz... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz