Code vereinfachen

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
cRo
Beiträge: 11
Registriert: Di 17. Sep 2013, 15:33

Code vereinfachen

Beitrag von cRo »

Hallo zusammen,

es geht um folgenden Code:

Code: Alles auswählen

 
If k =2 THEN
           BEGIN
              StringGrid1.Cells[1,1]:=inttostr(Ergebnis_RG1);
              StringGrid1.Cells[2,1]:=inttostr(Ergebnis_RG2);
              StringGrid1.Cells[3,1]:=inttostr(Ergebnis_RG3);
              StringGrid1.Cells[4,1]:=inttostr(Ergebnis_RG4);
              StringGrid1.Cells[5,1]:=inttostr(Ergebnis_RG5);
           end;
 
  If k=3  THEN
          BEGIN
              StringGrid1.Cells[1,2]:=inttostr(Ergebnis_RG1);
              StringGrid1.Cells[2,2]:=inttostr(Ergebnis_RG2);
              StringGrid1.Cells[3,2]:=inttostr(Ergebnis_RG3);
              StringGrid1.Cells[4,2]:=inttostr(Ergebnis_RG4);
              StringGrid1.Cells[5,2]:=inttostr(Ergebnis_RG5);
          end;
 
   If k=4 THEN
          BEGIN
              StringGrid1.Cells[1,3]:=inttostr(Ergebnis_RG1);
              StringGrid1.Cells[2,3]:=inttostr(Ergebnis_RG2);
              StringGrid1.Cells[3,3]:=inttostr(Ergebnis_RG3);
              StringGrid1.Cells[4,3]:=inttostr(Ergebnis_RG4);
              StringGrid1.Cells[5,3]:=inttostr(Ergebnis_RG5);
          end;
 
Da k ziemlich groß werden kann (weiß aber im Vorfeld noch nicht den genauen Wert), wäre es ein ziemlicher Aufwand das so durch zuziehen. Die ganze Sache schreit auch förmlich durch Schleifen vereinfacht zu werden, aber ich komme einfach nicht drauf. Für Hilfe wäre ich sehr dankbar.

Viele Grüße
cRo

Benutzeravatar
theo
Beiträge: 10873
Registriert: Mo 11. Sep 2006, 19:01

Re: Code vereinfachen

Beitrag von theo »

Code: Alles auswählen

StringGrid1.Cells[1,k-1]:=inttostr(Ergebnis_RG1)
StringGrid1.Cells[2,k-1]:=inttostr(Ergebnis_RG2);
etc..

cRo
Beiträge: 11
Registriert: Di 17. Sep 2013, 15:33

Re: Code vereinfachen

Beitrag von cRo »

Aber dann müsste ich ja trotzdem für alle Fälle von k den Block in den Quelltext schreiben. Ich hatte jetzt schon einmal folgende Idee:

Ich habe die jeweiligen Ergebnisse anstatt in die einzelnen Variablen in ein Array gepackt und dann eine For-Schleife verwendet:

Code: Alles auswählen

 
If k=2 then
     For j:=1 to 5 DO
        StringGrid1.cells[j,k-1]:=inttostr(Ergebnis_RG[j,1]);
 
If k=3 then
     For j:=1 to 5 DO
         StringGrid1.cells[j,k-1]:=inttostr(Ergebnis_RG[j,1]);
 
usw...
Das funktioniert auch so weit. Als letztes würde ich jetzt gerne noch, dass sich diese Schleife an den jeweiligen k Wert anpasst, damit ich nicht 200 oder 300 mal den jeweiligen if-Teil einfügen muss. Ich sollte noch dazu sagen, dass k beim Programmaufruf feststeht und sich auch nicht ändert. Nur bei einem neuen Programmaufruf wird sich k ändern. Ich hoffe, dass das einigermaßen nachvollziehbar ist.

Benutzeravatar
theo
Beiträge: 10873
Registriert: Mo 11. Sep 2006, 19:01

Re: Code vereinfachen

Beitrag von theo »

Denk nochmal nach. Die if sind total überflüssig, der Code macht ja immer das gleiche.

cRo
Beiträge: 11
Registriert: Di 17. Sep 2013, 15:33

Re: Code vereinfachen

Beitrag von cRo »

Du hast ja vollkommen recht, mit dieser Schleife ist das Problem ja schon vollständig gelöst. Ich glaube ich sitze heute schon zu lange davor =). Vielen Dank für deine Hilfe.

Antworten