Runtime error 100

0

Otrzymalem zadanie, ktore polega na pobieraniu ciagu znakow z jednego pliku i wpisywaniu wysegregowanych zdan w drugim pliku. W pliku wyjsciowym powinny sie znaleŹĆ zdania, ktore rozpoczynaja sie od liczby. Np. ola 4las dom 3nassd23 wiec w pliku wyjsciowym powinno sie znaleŹĆ 4las 3nassd23. Napisalem program, ktory wykonuje to zadanie, jednak po wykonaniu wyskakuje runtime error 100. Co on oznacza ? Bardzo prosze o pomoc. Oto kod :

program asdf;

var 
  f, g : file of char;
  wprow, wyprow : string;

procedure pliki;
begin 
      write ('Plik wej:  ');
      readln (wprow);
      assign(f, wprow);
      {$I-} 
	reset(f);
	{$I+}
	if IOResult <> 0 then
	rewrite(f);
      write ('Plik wyj:  ');
      readln (wyprow);
      assign (g, wyprow);
      rewrite(g);
end;

function segre : string;
var
i: longint;
c, d : char;
begin
  for i := 0 to pred(FileSize(f)) do
    begin
      Seek(f, i);
      read(f, c);
      if c = #32 then
        begin
        read(f, c);
          if (c >= #48) AND ( c <= #57) then
             begin
                while (c <> #32) or (eof(f)) do
                    begin
                    d :=c;
                      write(g, d);
                      read (f, c);
                    end;
                c := #32;
                write (g, c);
             end;
         end;
     end;
end;

begin
pliki;
segre;
close(f);
close(g);
end.

0

runtime error 100

Jest to błąd odczytu z dysku.

0

100 Disk read error
An error occurred when reading from disk. Typically when you try to read past the end of a file.

0

Nie mam pod ręką Pascala, ale imho błąd tkwi w pętli:

for i := 0 to pred(FileSize(f)) do
begin
Seek(f, i);
read(f, c);
if c = #32 then
begin
read(f, c);
if (c >= #48) AND ( c <= #57) then
begin
while (c <> #32) or (eof(f)) do
begin
d :=c;
write(g, d);
read (f, c);
end;
c := #32;
write (g, c);
end;
end;
end;

Zgadnij, co i skąd się będzie odczytywało, gdy pętla dobije przedostatniego i ostatniego bajtu pliku :)</b></b>

1 użytkowników online, w tym zalogowanych: 0, gości: 1