AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Then-Zweig setzt aus

Ein Thema von Mosi17 · begonnen am 20. Apr 2007 · letzter Beitrag vom 21. Apr 2007
Antwort Antwort
Mosi17

Registriert seit: 17. Apr 2007
10 Beiträge
 
#1

Then-Zweig setzt aus

  Alt 20. Apr 2007, 17:42
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?
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Then-Zweig setzt aus

  Alt 20. Apr 2007, 17:44
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.
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Then-Zweig setzt aus

  Alt 20. Apr 2007, 17:48
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.
Also mir fällt nur das fehlende end am Schluss auf
Was jetzt aber nciht heißt, dass man den Code nicht lesbarer formatieren könnte
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Then-Zweig setzt aus

  Alt 20. Apr 2007, 17:50
Wenn schon die fehlenden ends... es sind zwei die am Ende fehlen, aber wohl vergessen wurden in den Beitrag zu kopieren.
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Then-Zweig setzt aus

  Alt 20. Apr 2007, 18:07
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
Klaus
  Mit Zitat antworten Zitat
Mosi17

Registriert seit: 17. Apr 2007
10 Beiträge
 
#6

Re: Then-Zweig setzt aus

  Alt 21. Apr 2007, 11:45
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!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:23 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz