Mi lehet a hiba ebben a programban?
program nevsor;
var
t: array[1..10] of string;
i, j, k:byte;
csere:string;
F:file of string;
begin
for i:=1 to 10 do
begin
write('Kerem a(z) ',i,'. nevet: ');
readln(t[i]);
end;
for j:=10 downto 2 do
for k:=1 to j-1 do
begin
if t[k]>t[k+1] then
begin
csere:=t[k];
t[k]:=t[k+1];
t[k+1]:=csere;
end;
end;
writeln;
Assign(F,'C:\Users\Tommy\Desktop\nevek.dat');
rewrite(F);
for i:=1 to 10 do
begin
write(F,i,'.: ');
writeln(F,t[i]);
end;
close(F);
writeln('Rendezve.');
readln;
end.
nem akar lefutni, write(F,i,'.: ');
writeln(F,t[i]); -nél hibát jelez, azt írja "error: Type mismatch
Error: Can't use readln or writeln on typed file
Fatal: There were 2 errors compiling module, stopping"
Szia.
Igaza van.
A Filét Stringnek deklaráltad (Tipusos file, bele akarod iratni "i" értékét : write(F,i,'.: '); ahol i nem string), és Text-ként szeretnéd használni.
A feladat alapján kell eldönteni, hogy melyik a helyes megoldás :
1. Ezt a sort : F:file of string; kicseréled ilyenre :
F: text ; (vagy textfile nem tudom már melyk a jó)
2. Megpróbálod "i" belerakni egy strinngbe és úgy kiiratni : str (i,csere); write (F,csere);.
De a 2. megoldás esetén a fájl tipusos lesz, ha megnyitod egy szövegszerkesztővel a fájlt még speciális karaktekeret is fogsz benne találni (A pascalban a stringek hosszát a string 0 karaktere adja, és ez a karakter is ki lesz irva a fájlba)
Szerintem az 1. megoldással próbálkozz, a textfilével.
Sok sikert.
Üdv.
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!