AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

FileOpen und EOF

Ein Thema von Pseudemys Nelsoni · begonnen am 23. Jun 2004 · letzter Beitrag vom 16. Jul 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#1

FileOpen und EOF

  Alt 23. Jun 2004, 16:40
Moin

Delphi-Quellcode:
...

          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;
...
Weiss jemand wieso hier EOF nicht funktioniert? Fehler ist "Inkompatible Typen"
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: FileOpen und EOF

  Alt 23. Jun 2004, 16:50
EOF ist eine Pascal-Routine, die eine Psscal-File erwartet.
OpenFile ist aber eine WinAPI-Funktion, die ein Windows-Handle erzeugt.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#3

Re: FileOpen und EOF

  Alt 23. Jun 2004, 16:56
Danke.

Welche anternative hab ich da denn? gibt ja sicher eine, oder?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: FileOpen und EOF

  Alt 23. Jun 2004, 17:13
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.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#5

Re: FileOpen und EOF

  Alt 23. Jun 2004, 17:29
hm, das hört sich schwer an...
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Kernel32.DLL
(Gast)

n/a Beiträge
 
#6

Re: FileOpen und EOF

  Alt 23. Jun 2004, 20:11
Du könntest mit FileSeek den Dateizeiger an das Ende der Datei setzen.

FileSeek(hFile,0,2); Den Wert speicherst du dann in einer Variablen.
Wenn der Dateizeiger im Verlauf deines Programmes dann diesen Wert hat, solltest du am Ende der Datei angelangt sein.

(Könnte funzen...)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: FileOpen und EOF

  Alt 24. Jun 2004, 11:22
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#8

Re: FileOpen und EOF

  Alt 24. Jun 2004, 15:18
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
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Kernel32.DLL
(Gast)

n/a Beiträge
 
#9

Re: FileOpen und EOF

  Alt 24. Jun 2004, 17:02


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:
Die Prozedur Readln liest eine Textzeile aus einer Datei.

Unit

System

Kategorie

Textdateien

procedure Readln([ var F: Text; ] V1 [, V2, ...,Vn ]);

Beschreibung

Readln liest eine Textzeile aus der angegebenen Datei und setzt den Dateizeiger in die nächste Zeile.

Durch den Aufruf Readln(F) ohne Parameter wird der Dateizeiger an den Anfang der nächsten Zeile gesetzt. Ist keine nachfolgende Zeile vorhanden, wird er auf das Dateiende gesetzt.

Wird eine Anwendung als Konsolenanwendung compiliert (mit der Option Anwendung für Textbildschirm in der Registerkarte Linker des Dialogfeldes Projektoptionen oder dem Parameter -cc für den Kommandozeilen-Compiler), werden die Dateien Input und Output automatisch mit dem Konsolenfenster der Anwendung verbunden. Bei grafisch orientierten Anwendungen führt jeder Versuch, aus Input zu lesen oder in Output zu schreiben, zu einem E/A-Fehler.

Hinweis

Mit dem Compiler-Schalter {$I+} können Laufzeitfehler durch Exceptions behandelt werden. Wird {$I–} verwendet, muß explizit mit IOResult auf E/A-Fehler geprüft werden.
Dann kannst du das Ergebnis mit dem String vergleichen, wobei natürlich auch die Länge der Zeile und des Strings eine Rolle spielt.

Bei allen anderen Dateiarten macht das Lesen Zeile für Zeile ja irgendwie keinen Sinn.
  Mit Zitat antworten Zitat
Benutzerbild von p0w3r5tr34m3r
p0w3r5tr34m3r

Registriert seit: 18. Aug 2003
Ort: Monheim am Rhein
153 Beiträge
 
RAD-Studio 2009 Pro
 
#10

Re: FileOpen und EOF

  Alt 24. Jun 2004, 17:56
also wenn um jede zeile auslesen zu können machste einfach so:

Delphi-Quellcode:
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;
Zum aufrufen:

SeekInFile('C:\Bla.txt','Delphi-Praxis'); MfG Powerstreamer

P.S.:
Supermatch is aus der SuperMsk.pas (found @ www.torry.net)
Florian Cülter
ich bin ein notorischer alles-klein-schreiber!

der 100. Beitrag nach 3 Jahren 25 Wochen und einem Tag
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz