Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Then-Zweig setzt aus (https://www.delphipraxis.net/90620-then-zweig-setzt-aus.html)

Mosi17 20. Apr 2007 16:42


Then-Zweig setzt aus
 
Ich habe diese Prozedur geschrieben:
Delphi-Quellcode:
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;
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?

GuenterS 20. Apr 2007 16:44

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.

leddl 20. Apr 2007 16:48

Re: Then-Zweig setzt aus
 
Zitat:

Zitat von GuenterS
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.

:gruebel: Also mir fällt nur das fehlende end am Schluss auf :gruebel:
Was jetzt aber nciht heißt, dass man den Code nicht lesbarer formatieren könnte :zwinker:

GuenterS 20. Apr 2007 16:50

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.

Klaus01 20. Apr 2007 17:07

Re: Then-Zweig setzt aus
 
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

Mosi17 21. Apr 2007 10:45

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