(Gast)
n/a Beiträge
|
E/A Fehler bei EoF
28. Jan 2007, 21: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.
|
|
Zitat
|