Pascal: fájolvasásnál dinamikus tömböt nem lehet pufferként felhasználni?
Alábbi kód nem akar működni:
program dinamikus_olvasas;
var
data : array of byte;
f, f2 : file of byte;
mennyi,nr,nw:longint;
begin
assign(f,paramstr(1));
reset(f);
assign(f2,paramstr(2));
rewrite(f2);
mennyi:=91000;
setlength(data,mennyi);
repeat
blockread(f,data,mennyi,nr);
blockwrite(f2,data,nr,nw);
until nr=0;
close(f);
close(f2);
end.
Runtime error 998.
Feltételezem a blockread produkálja a hibát.
Elvileg ez most ugyanúgy viselkedik mint egy statikus tömb vagy én csinálok valamit rosszul? Nem tudom miért nem tetszik neki.
Elvileg ez a hibakód amit visszaad az "ismeretlen hiba" kódja.
Mivel dinamikus a tömb ezért mind a beolvasásnál mind a kiírásnál meg kell adni az első elemét valahogy így:
program dinamikus_olvasas;
var
data : array of byte;
f, f2 : file of byte;
mennyi,nr,nw:longint;
begin
assign(f,paramstr(1));
reset(f);
assign(f2,paramstr(2));
rewrite(f2);
mennyi:=91000;
setlength(data,mennyi);
repeat
blockread(f,data[0],mennyi,nr);
blockwrite(f2,data[0],nr,nw);
until nr=0;
close(f);
close(f2);
end.
Köszönöm a választ.
Valóban, így működik.
Előző válaszolón csodálkoztam, hogy a setlength-et nem vette észre a kódban...
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!