Habe Deinen Code einmal etwas umgebaut, zumindest den then Zweig.
Hoffe es is einigermaßen verständlich.
Delphi-Quellcode:
procedure TForm1.bt_startClick(Sender: TObject);
var zahl,i,j:integer; DateiName: TFileName; gesp:tfeld; h:string;
sl:TStringList;
begin
zahl:=strtoint(ed_nummer.text);
[...]
DateiName:=OpenDialog1.fileName;
sl := TstringList.create;
if zahl=0 then // wenn Zahl = 0 dann wird Zahl eine Zufallszahl
zahl:=random(5);
sl.loadFromFile(dateiName); // lädt die Datei in eine StringList
// sl.count > 0 , war die Datei nicht leer, sprich sind in der StringList Strings vorhanden
// sl.count <= 9*zahl+9 ; sind in der Datei/StringList geügend Einträge vorhanden
if ((sl.count > 0) and (sl.count <= 9*Zahl+9)) then
begin
for i:=(9*zahl+1) to (9*zahl+9) do // dies ersetzt Dein for i:=1 to 9
begin
h:=sl[i];
for j:=1 to 9 do
gesp[i,j]:=strtoint(h[j]);
end;
end;
sl.free;
end
Nun, ich habe den ganzen else Zweig weggelassen, weil
der Einzige Unterschied darin war ob zahl = 0 ist oder nicht.
Das habe ich mit einer einzigen If Abfrage am Anfang erschlagen.
Die Verarbeitung war bei Dir im then und else Zweig gleich.
Grüße
Klaus