Thema: Delphi E/A Fehler bei EoF

Einzelnen Beitrag anzeigen

fwsp
(Gast)

n/a Beiträge
 
#1

E/A Fehler bei EoF

  Alt 28. Jan 2007, 20:51
Hallo,

ich möchte eine Datei mit while not eof durchgehen. doch leider tritt in zeile 52 ein fehler auf. kann mir jemand sagen, was ich falsch mache?

danke.

Code:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt PT_HUE_11_1.exe ist eine Exception der Klasse EInOutError aufgetreten. Meldung: 'E/A-Fehler 103'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK  Hilfe  
---------------------------
Delphi-Quellcode:
program PT_HUE_11_1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
  Satz = record
    Name: string[20];
    Zensur: Integer;
  end;

var
  MyFile: File of Satz;
  SingleSatz: Satz;
  MarkCount: array[1..6] of Integer;
  Durchschnitt: Real;
  i: Integer;


procedure CreateFile;
var
  Saetze: array[0..30] of Satz;
  i: Integer;
begin
  randomize;
  for i := 0 to 30 do
  begin
    Saetze[i].Name := 'Name' + IntToStr(i);
    Saetze[i].Zensur := Random(5) + 1;
  end;

  Assign(MyFile, 'Kla.dat');
  Rewrite(MyFile);
  for i := 0 to 30 do
  begin
    Write(MyFile, Saetze[i]);
  end;
  CloseFile(MyFile);
end;

begin
 //CreateFile;

  for i := 1 to 6 do
  begin
    MarkCount[i] := 0;
  end;

  AssignFile(MyFile, 'Kla.dat');
  while not EoF(MyFile) do //hier tritt der fehler auf!
  begin
    Read(MyFile, SingleSatz);
    case SingleSatz.Zensur of
      1: MarkCount[1] := MarkCount[1] + 1;
      2: MarkCount[2] := MarkCount[2] + 1;
      3: MarkCount[3] := MarkCount[3] + 1;
      4: MarkCount[4] := MarkCount[4] + 1;
      5: MarkCount[5] := MarkCount[5] + 1;
    end;
    MarkCount[6] := MarkCount[6];
  end;
  CloseFile(MyFile);
  Durchschnitt := (MarkCount[1] * 1 + MarkCount[2] * 2 + MarkCount[3] * 3 +
                  MarkCount[4] * 4 + MarkCount[5] * 5) / MarkCount[6];

  Writeln('Eins: ', MarkCount[1], ' mal');
  Writeln('Zwei: ', MarkCount[2], ' mal');
  Writeln('Drei: ', MarkCount[3], ' mal');
  Writeln('Vier: ', MarkCount[4], ' mal');
  Writeln('Fuenf: ', MarkCount[5], ' mal');
  Writeln;
  Writeln('Durchschnittsnote: ', FloatToStr(Durchschnitt));
  Readln;
end.
  Mit Zitat antworten Zitat