EndOfFile herausfiltern

Hallo zusammen,
ich habe ein kleines Problem beim Einlesen einer Datei. Mitten (!) in der Daten kann sich eine EndOfFile-Zeichen verstecken und damit ist ein Einlesen unmöglich (soweit ich das beurteilen kann).
Kann man irgendwie prüfen, ob sich nach dem EOF-Zeichen noch weiterer Text befindet, bzw. dieses Zeichen herausfiltern?

hallo

ich hab noch nie von einem end of file zeichen gehört. was ist denn das für ein zeichen?

gruss

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

  1. gibts kein EOF-Zeichen
  2. wenn es das gäbe bestimmt nicht mitten inner Datei

Poste mal Deine Einlese-Routine…

Alex

Hi!

Bei älteren Datenbanken weiss ich, daß es durchaus dort ein EOF-Zeichen gab, aber wir sein ja net mehr im Mittelalter und heutzutage dürfte es das net mehr geben ;o)))

Basic erkennt das Ende der Datei schlcihtweg daran das nichts mehr kommt ;o))

Gruß

Bernd

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi Alex,

  1. gibts kein EOF-Zeichen
  2. wenn es das gäbe bestimmt nicht mitten inner Datei

Natürlich gibt es ein EOF-Zeichen, und das kann auch mitten in einer Datei sein. Probier’s mal mit folgendem Code:

Sub Speichern()
Dim d%

d = FreeFile
Open „C:\daten\test.txt“ For Output As d
Print #d, „Zeile1“
Print #d, „Zeile2“
Print #d, Chr(&H1A)
Print #d, „Zeile3“
Close d
End Sub

Sub Lesen()
Dim temp$, d%
d = FreeFile
Open „c:\daten\test.txt“ For Input As d
Do Until EOF(d)
Line Input #d, temp
Debug.Print temp
Loop
Close d
End Sub

Wenn du jetzt Test.txt mit dem Editor ankuckst, geht’s bis Zeile 3. Wenn du’s mit VB auslesen lässt, nur bis Zeile 2. Wenn ich aber den Print Befehl mit dem Chr(&h1A) weglasse, geht’s auch hier bis Zeile 3.

Gruß
Daniel

Hallo,

versuche mal die Datei nicht for Input sondern for Binary zu öffnen. Damit liest VB jeden Mist ein. Das tatsächliche Dateiende kannst du dann z.B. über einen Errorhandler abfangen, da VB ja einen Fehler beim einlesen hinterm Dateiende liefert.

Gruß
Daniel

Danke! Auf binäres Einlesen bin ich gar nicht gekommen. Ich werde es mal probieren. Der Fehler der beim input-Einlesen kam, war 62 - also Einlesen nach Dateiende.

PS: Ich weiss mittlerweile, woher das EOF-Zeichen kommt. In dem speziellen Fall wurde über die Windows-Zwischenablage eine Datei aus einem 16 Bit DOS-Programm eingelesen… und zwar mit dem letzten Zeichen :frowning: