✔ 最佳答案
你的主要問題係出在讀txt檔度:
這是你原本的程式:
if level = 1 then
for i := 1 to 20 do
assign(inf,'d:\123.txt');
reset(inf);
while not eof(inf) do
begin
readln(inf,q[i]);
writeln(q[i]);
end;
close(inf);
因為你for i:=1 to 20 do, 已經表明你要由第一行讀到第20行, 加左個while反而會更唔妥, 另外有在for...do下面沒加begin end;, 會使assign.....被執行了20次, 之後先執行一次reset(inf)
結果i循環已經完了, 到了while時, i一直都是20, 所以你只是不斷將資料讀入q[20]中, 而q[1]--q[19]根本沒讀入內容, 所以佢地的值都會比較隨機
而你有一個錯覺以為資料已經讀入到陣列中, 因為你以為果句Writeln(q[i]), 每次都印出你想要的字, 但其實佢每次只係將資料讀入q[20], 之後印出q[20], 不斷重複呢個動作, 你只係睇到20次不同的q[20], q[1]--q[19]一直都冇資料。
應該改為:
if level = 1 then
begin
assign(inf,'d:\123.txt');
reset(inf);
for i:=1 to 20 do
begin
readln(inf,q[i]);
writeln(q[i]);
end;
close(inf);
end;
解決你的問題之後, 其實你條程式下面的內容仍有不少邏輯上的錯, 但因我唔知你想做乜, 所以冇繼續跟進下去。但讀txt的問題已經幫你找到。
2007-04-14 17:26:53 補充:
樓下果位, 要改就改得徹底d, Var 果度仍然保持20個都冇用, 同埋佢成條程式所有地方都用緊20, 要改晒做變量先得。我幫佢用for, 只係為左令佢成條程式唔駛改變太多, 包括程式碼和思路, 使佢容易明白。仲有, 我比佢o既解答, 重點係令佢知道自己錯在哪裡, 至於佢要固定20個, 定係可變個數, 完全好睇佢自己o既思路, 如果改變左佢o既思路, 由固定20個, 變為任意個, 對初學者來講, 分分鐘佢唔識點樣寫落去。