Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - E2002: Dateityp ist hier nicht zulässig


baka0815 - Do 17.07.08 11:17
Titel: E2002: Dateityp ist hier nicht zulässig
Liebe Delphianer, ich habe hier folgenden Code vorliegen:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
function LiesZeile(Datei: TextFile): string;
var
  Zeile: string;
  Zeichen: Char;
begin
  Zeile := ''; Zeichen := ' ';

  while(Zeichen <> #13) and not EOF(Datei) do
  begin
    Read(Datei, Zeichen);
    if Zeichen = #0 then Zeichen := '0';
    if Zeichen <> #13 then Zeile := Zeile + Zeichen;
  end;
  if not EOF(Datei) then Read(Datei);

  Result := Zeile
end;

Das bringt mir den im Titel genannten Fehler. Wenn ich nun "TextFile" durch "PTextFile" (was ein Pointer auf TextFile ist) ersetze und "Datei" durch "Datei^" ersetze meckert er zumindest nicht mehr.
Wieso ist das so? Wird TextFile nicht "per reference" übergeben?

PS.: Bitte keine Diskussion über Sinn-/Unsinn des Codes bzw. Fehlerbehandlungen ;)


Boldar - Do 17.07.08 17:16

Welche Zeile tritt der Fehler genau auf??


Delete - Do 17.07.08 21:47

Öffnest du die Datei auch irgendwie mit AssignFile und Reset oder Rewrite?


baka0815 - Fr 18.07.08 13:45

Der Fehler ist ein Compile-Fehler, wird also direkt in der IDE angezeigt - zur Entwicklungs- und nicht zur Laufzeit.

Die Datei wird korrekt vorher geöffnet und auch korrekt geschlossen. Fehlerbehandlung ist außerhalb der Funktion.


SvenAbeln - Fr 18.07.08 14:10

Die Delphi Hilfe schägt zu diesem Fehler die folgende Lösung vor:


Delphi-Quelltext
1:
function LiesZeile(var Datei: TextFile): string;                    


(nicht getestet, sondern nur aus der Hilfe kopiert)