![]() |
TFileStream: Textdatei auslesen
hi,
ich möchte aus einer datei meine 15zeichen langen strings auslesen, ich habe mir gedacht das ich es mit einer while schleife mache, nur wie? ich dachte an "while bytesread = 15 do...". Das würde aber heissen das ich das "Read" von TFileStream VOR der schleife schreiben müsste... aber da das read wiederrum nicht in der schleife ist kann damit auch nur 1 durchgang funktionieren oder? ich hatte das bis jetzt ca so und weiss nich weiter:
Delphi-Quellcode:
procedure TBL.Load(const AFileName: string);
var Fs: TFileStream; BytesRead: Integer; Buffer: array[1..15] of Char; begin Fs := TFileStream.Create(AFileName, fmOpenRead + fmShareDenyNone); try BytesRead := Fs.Read(Buffer, Length(Buffer)); while BytesRead = 15 do... // hm.... finally Fs.Free; end; end; |
Re: TFileStream: Textdatei auslesen
Moin,
wie wär's mit
Delphi-Quellcode:
MfG
while Fs.Read(Buffer, Length(Buffer)) = 15 do
// hat geklappt... Stevie |
Re: TFileStream: Textdatei auslesen
Hallo,
versuch es mal wie folgt:
Delphi-Quellcode:
procedure TBL.Load(const AFileName: string);
var Fs: TFileStream; BytesRead: Integer; Buffer: array[1..15] of Char; begin Fs := TFileStream.Create(AFileName, fmOpenRead + fmShareDenyNone); try While Fs.Position<=Fs.Size do begin BytesRead := Fs.Read(Buffer, Length(Buffer)); // Hier geht's dann weiter end; // While Fs.Position<=Fs.Size do finally Fs.Free; end; end; |
Re: TFileStream: Textdatei auslesen
Zitat:
|
Re: TFileStream: Textdatei auslesen
Zitat:
|
Re: TFileStream: Textdatei auslesen
danke euch zwei ;)
btw:
Delphi-Quellcode:
procedure TBL.Load(const AFileName: string);
var Fs: TFileStream; BytesRead: Integer; Buffer: array[1..15] of Char; begin Fs := TFileStream.Create(AFileName, fmOpenRead + fmShareDenyNone); try While Fs.Position<=Fs.Size do begin BytesRead := Fs.Read(Buffer, Length(Buffer)); // Hier geht's dann weiter end; // While Fs.Position<=Fs.Size do finally Fs.Free; end; end; ^^^^ dann brauch ich die variable "BytesRead" aber nicht oder? |
Re: TFileStream: Textdatei auslesen
Es sei denn, du hast wirklich noch nen Rest, und willst den wissen...
|
Re: TFileStream: Textdatei auslesen
Zitat:
Ich würde es sicherheitshalber prüfen bevor ich die Bytes verarbeitete |
Re: TFileStream: Textdatei auslesen
Das ist nicht sehr günstig ständig Position und Größe abzufragen und zu vergleiche. Besser wäre:
Delphi-Quellcode:
procedure TBL.Load(const AFileName: string);
var Fs: TFileStream; BytesRead: Integer; Buffer: array[1..15] of Char; begin Fs := TFileStream.Create(AFileName, fmOpenRead + fmShareDenyNone); try repeat BytesRead := Fs.Read(Buffer, Length(Buffer)); // Hier geht's dann weiter until BytesRead < sizeof(Buffer); finally Fs.Free; end; end; |
Re: TFileStream: Textdatei auslesen
Zitat:
|
Re: TFileStream: Textdatei auslesen
Und noch was: Verknüpf die Flags besser mit or anstatt mir einem +. Das ist eine logische oder Verknüpfung, keine Addition.
|
Re: TFileStream: Textdatei auslesen
so hab alles übernommen, danke luckie.
Noch eine Frage: sollte ich nicht lieber eine while schleife statt repeat nehmen? Ich meine ich muss doch bevor ich mit dem buffer arbeite prüfen ob auch wirklich 15 zeichen eingelesen wurden oder? |
Re: TFileStream: Textdatei auslesen
Hm. :gruebel: Wie willst du denn bei einer while-Schleife BytesRead initialisieren? Ich würde es so lassen und einfach nur vor dem Verarbeiten gucken, ob genug im Buffer steht mit lstrlen.
|
Re: TFileStream: Textdatei auslesen
moin luckie,
wenn du das sagst dann werd ichs auch so lassen ;) ich dachte dabei nur an:
Delphi-Quellcode:
somit würde ich ja direkt prüfen ob ich die richtige länge erhalten haben bevor ich den inhalt der schleife ausführe und die variable BytesRead bräuchte ich nichtmehr, oder?
while Fs.Read(..., ...) = 15 do...
|
Re: TFileStream: Textdatei auslesen
Das wäre natürlich auch eine Möglichkeit.
|
Re: TFileStream: Textdatei auslesen
besten dank.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:41 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