![]() |
Then-Zweig setzt aus
Ich habe diese Prozedur geschrieben:
Delphi-Quellcode:
Nun zu meinem Problem: Das klappt nicht so wie ich mir das denke :-) Irgendwie scheint der then-Zweig nicht zu klappen, denn wenn ich dann das array in das stringgrid übertrage bleibt letzteres leer. Allerdings nur wenn ich den Else-zweig im Programm lass. Sobald ich den herausnehm, klappt der Then-Zweig wunderbar. Vielleicht weiß einer woran das liegt, denn ein "richtiger" Fehler kann es ja nicht sein, oder?
procedure TForm1.bt_startClick(Sender: TObject);
var zahl,i,j:integer; datei:textfile; gesp:tfeld; h:string; begin zahl:=strtoint(ed_nummer.text); [...] if zahl=0 then begin zahl:=random(5); for i:=1 to 9*zahl do begin readln(datei); end; try for i:=1 to 9 do begin readln(datei,h); for j:=1 to 9 do gesp[i,j]:=strtoint(h[j]); end; finally closefile(datei); end; end else begin zahl:=strtoint(ed_nummer.Text)-1; for i:=1 to 9*zahl do begin readln(datei); end; try for i:=1 to 9 do begin readln(datei,h); for j:=1 to 9 do gesp[i,j]:=strtoint(h[j]); end; finally closefile(datei); end; |
Re: Then-Zweig setzt aus
Wenn Du deinen Code mal lesbar formatieren würdest, würde Dir auffallen dass da einige Begin's fehlen (oder auch nicht), lesbar ist jedenfalls anders.
Hast Du schon versucht, das mal zu debuggen? Ich mein wenn du das Zeile für Zeile durchgehst, könntest ja sehen warum oder was schief lauft. |
Re: Then-Zweig setzt aus
Zitat:
Was jetzt aber nciht heißt, dass man den Code nicht lesbarer formatieren könnte :zwinker: |
Re: Then-Zweig setzt aus
Wenn schon die fehlenden ends... es sind zwei die am Ende fehlen, aber wohl vergessen wurden in den Beitrag zu kopieren.
|
Re: Then-Zweig setzt aus
Habe Deinen Code einmal etwas umgebaut, zumindest den then Zweig.
Hoffe es is einigermaßen verständlich.
Delphi-Quellcode:
Nun, ich habe den ganzen else Zweig weggelassen, weil
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 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 |
Re: Then-Zweig setzt aus
So hab einfach 2x If-Then statt If-Then-Else genommen klappt wunderbar.
Hab auch meinen Code so gelassen, sorry Klaus für die Mühe aber hab bei dir ni so richtig reingesehen und wir müssen das unserem Info-Lehrer dann noch erklären können :-) trotzdem danke! :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz