![]() |
FileOpen und EOF
Moin :o
Delphi-Quellcode:
Weiss jemand wieso hier EOF nicht funktioniert? Fehler ist "Inkompatible Typen"
...
hFile := OpenFile(buf, ofs, OF_READWRITE); if hFile <> 0 then begin while not EOF(hFile) do begin messagebox(0, 'hi', 'hi', 0); end; end; end; ... |
Re: FileOpen und EOF
EOF ist eine Pascal-Routine, die eine Psscal-File erwartet.
OpenFile ist aber eine WinAPI-Funktion, die ein Windows-Handle erzeugt. |
Re: FileOpen und EOF
Danke.
Welche anternative hab ich da denn? gibt ja sicher eine, oder? |
Re: FileOpen und EOF
Pascal-Files öffnest du mit AssignFile und anschließendem Reset, Rewrite oder Append.
Bei den API-Funktionen ist mir kein EOF bekannt, sollte aber über einen Vergleich der Position des FilePointers und der Größe der Datei zu bewerkstelligen sein. |
Re: FileOpen und EOF
hm, das hört sich schwer an...
|
Re: FileOpen und EOF
Du könntest mit FileSeek den Dateizeiger an das Ende der Datei setzen.
Delphi-Quellcode:
Den Wert speicherst du dann in einer Variablen.
FileSeek(hFile,0,2);
Wenn der Dateizeiger im Verlauf deines Programmes dann diesen Wert hat, solltest du am Ende der Datei angelangt sein. :wink: (Könnte funzen...) |
Re: FileOpen und EOF
Was machst du denn in der Schleife? Wenn du alles lesen willst, dann nimm doch eine Routine zum Lesen ReadFile oder so, les immer Blöcke von 1024 oder so (K)Bytes ein und wenn dann weniger gelesen wird, bist du am Ende der Datei.
|
Re: FileOpen und EOF
hallo luckie,
daran hatte ich auch schon gedacht, aber ich möchte ja nicht char by char (also 1024 mit einmal) auslesen sondern zeile für zeile, wie könnte ich das anstellen? Im grunde habe ich einen string in meinem prog, ich moechte nun in einer datei prüfen ob dieser string mit irgendeiner zeile übereinstimmt |
Re: FileOpen und EOF
:wiejetzt:
Ich denke mal, das du Textdateien Zeile für Zeile lesen willst. Und für Textdateien zum lesen einer ganzen Zeile gibbet den Befehl: Aus der Borland Delphi 5 Pro Hilfe: Zitat:
Bei allen anderen Dateiarten macht das Lesen Zeile für Zeile ja irgendwie keinen Sinn. |
Re: FileOpen und EOF
also wenn um jede zeile auslesen zu können machste einfach so:
Delphi-Quellcode:
Zum aufrufen:
function SeekInFile(sFile: string; sString: string): string;
var f: File; s: string; found: boolean; begin found := false; assignfile(f,sFile); Reset(f); while not EOF(f) do begin readln(f,s); if SuperMatch(s,'*@{'+sString+'}@*') then found := true; else found := false; end; closefile(f); if found then ShowMessage('Found') else ShowMessage('Your Searchstring was not found :P'); end;
Delphi-Quellcode:
MfG Powerstreamer
SeekInFile('C:\Bla.txt','Delphi-Praxis');
P.S.: Supermatch is aus der SuperMsk.pas (found @ ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:59 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