Autor |
Beitrag |
arminho
      
Beiträge: 59
|
Verfasst: Fr 08.05.09 13:01
Hallo Leute, ich hab hier eben was programmiert, ist für meinen Geschmack aber bisschen zu lang. Ich bin mir sicher dass es dafür eine bessere und kürzere Lösung gibt. Vielleicht kann sich jemand von euch Experten das mal anschauen und mir einen Tipp geben, danke
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69:
| procedure TForm2.FormCreate(Sender: TObject); var x: integer; y: integer; z: integer; begin x:= 0; y:= 0; z:= 0; if PositionHeimSpieler1.Caption = 'Tor' then GesamtstaerkeHeimTor.caption := inttostr(+ strtoint(StaerkeHeimSpieler1.caption)) else showmessage ('FEHLER !!! HeimSpieler1 hat eine ungültige Position!');
if PositionHeimSpieler2.Caption = 'Def' then x:= x + (strtoint(StaerkeHeimSpieler2.caption)) else if PositionHeimSpieler2.Caption = 'Mit' then y:= y + (strtoint(StaerkeHeimSpieler2.caption)) else if PositionHeimSpieler2.Caption = 'Ang' then z:= z + (strtoint (StaerkeHeimSpieler2.caption)) else showmessage ('FEHLER !!! HeimSpieler2 hat eine ungültige Position!');
if PositionHeimSpieler3.Caption = 'Def' then x:= x + (strtoint(StaerkeHeimSpieler3.caption)) else if PositionHeimSpieler3.Caption = 'Mit' then y:= y + (strtoint(StaerkeHeimSpieler3.caption)) else if PositionHeimSpieler3.Caption = 'Ang' then z:= z + (strtoint (StaerkeHeimSpieler3.caption)) else showmessage ('FEHLER !!! HeimSpieler3 hat eine ungültige Position!');
if PositionHeimSpieler4.Caption = 'Def' then x:= x + (strtoint(StaerkeHeimSpieler4.caption)) else if PositionHeimSpieler4.Caption = 'Mit' then y:= y + (strtoint(StaerkeHeimSpieler4.caption)) else if PositionHeimSpieler4.Caption = 'Ang' then z:= z + (strtoint (StaerkeHeimSpieler4.caption)) else showmessage ('FEHLER !!! HeimSpieler4 hat eine ungültige Position!');
if PositionHeimSpieler5.Caption = 'Def' then x:= x + (strtoint(StaerkeHeimSpieler5.caption)) else if PositionHeimSpieler5.Caption = 'Mit' then y:= y + (strtoint(StaerkeHeimSpieler5.caption)) else if PositionHeimSpieler5.Caption = 'Ang' then z:= z + (strtoint (StaerkeHeimSpieler5.caption)) else showmessage ('FEHLER !!! HeimSpieler5 hat eine ungültige Position!');
if PositionHeimSpieler6.Caption = 'Def' then x:= x + (strtoint(StaerkeHeimSpieler6.caption)) else if PositionHeimSpieler6.Caption = 'Mit' then y:= y + (strtoint(StaerkeHeimSpieler6.caption)) else if PositionHeimSpieler6.Caption = 'Ang' then z:= z + (strtoint (StaerkeHeimSpieler6.caption)) else showmessage ('FEHLER !!! HeimSpieler6 hat eine ungültige Position!');
if PositionHeimSpieler7.Caption = 'Def' then x:= x + (strtoint(StaerkeHeimSpieler7.caption)) else if PositionHeimSpieler7.Caption = 'Mit' then y:= y + (strtoint(StaerkeHeimSpieler7.caption)) else if PositionHeimSpieler7.Caption = 'Ang' then z:= z + (strtoint (StaerkeHeimSpieler7.caption)) else showmessage ('FEHLER !!! HeimSpieler7 hat eine ungültige Position!');
if PositionHeimSpieler8.Caption = 'Def' then x:= x + (strtoint(StaerkeHeimSpieler8.caption)) else if PositionHeimSpieler8.Caption = 'Mit' then y:= y + (strtoint(StaerkeHeimSpieler8.caption)) else if PositionHeimSpieler8.Caption = 'Ang' then z:= z + (strtoint (StaerkeHeimSpieler8.caption)) else showmessage ('FEHLER !!! HeimSpieler8 hat eine ungültige Position!');
if PositionHeimSpieler9.Caption = 'Def' then x:= x + (strtoint(StaerkeHeimSpieler9.caption)) else if PositionHeimSpieler9.Caption = 'Mit' then y:= y + (strtoint(StaerkeHeimSpieler9.caption)) else if PositionHeimSpieler9.Caption = 'Ang' then z:= z + (strtoint (StaerkeHeimSpieler9.caption)) else showmessage ('FEHLER !!! HeimSpieler9 hat eine ungültige Position!');
if PositionHeimSpieler10.Caption = 'Def' then x:= x + (strtoint(StaerkeHeimSpieler10.caption)) else if PositionHeimSpieler10.Caption = 'Mit' then y:= y + (strtoint(StaerkeHeimSpieler10.caption)) else if PositionHeimSpieler10.Caption = 'Ang' then z:= z + (strtoint (StaerkeHeimSpieler10.caption)) else showmessage ('FEHLER !!! HeimSpieler10 hat eine ungültige Position!');
if PositionHeimSpieler11.Caption = 'Def' then x:= x + (strtoint(StaerkeHeimSpieler11.caption)) else if PositionHeimSpieler11.Caption = 'Mit' then y:= y + (strtoint(StaerkeHeimSpieler11.caption)) else if PositionHeimSpieler11.Caption = 'Ang' then z:= z + (strtoint (StaerkeHeimSpieler11.caption)) else showmessage ('FEHLER !!! HeimSpieler11 hat eine ungültige Position!');
GesamtstaerkeHeimDef.caption := inttostr(x); GesamtstaerkeHeimMit.caption := inttostr(y); GesamtstaerkeHeimAng.caption := inttostr(z); end; end. |
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Fr 08.05.09 13:16
Lagere deine Abfragen, soweit das der grundlegend gleiche Ablauf isst, in eine eigene Funktion aus und übergebe einfach deine Variablen:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44:
| procedure TForm2.FormCreate(Sender: TObject);
procedure ManagePosition(Spieler: String; position:String; Staerke: Integer; var x,y,z: Integer); begin if Position = 'Def' then Inc(x, Staerke) else if Position = 'Mit' then Inc(y, Staerke) else if Position = 'Ang' then Inc(z, Staerke) else showmessage ('FEHLER !!! ' + Spieler + ' hat eine ungültige Position!'); end;
var x: integer; y: integer; z: integer; begin x:= 0; y:= 0; z:= 0;
if PositionHeimSpieler1.Caption = 'Tor' then GesamtstaerkeHeimTor.caption := inttostr(strtoint(StaerkeHeimSpieler1.caption)) else showmessage ('FEHLER !!! HeimSpieler1 hat eine ungültige Position!');
ManagePosition('Spieler 2', PositionHeimSpieler2.Caption, strtoint(StaerkeHeimSpieler2.caption), x, y, z); ManagePosition('Spieler 3', PositionHeimSpieler3.Caption, strtoint(StaerkeHeimSpieler3.caption), x, y, z); ManagePosition('Spieler 4', PositionHeimSpieler4.Caption, strtoint(StaerkeHeimSpieler4.caption), x, y, z); ManagePosition('Spieler 5', PositionHeimSpieler5.Caption, strtoint(StaerkeHeimSpieler5.caption), x, y, z); ManagePosition('Spieler 6', PositionHeimSpieler6.Caption, strtoint(StaerkeHeimSpieler6.caption), x, y, z); ManagePosition('Spieler 7', PositionHeimSpieler7.Caption, strtoint(StaerkeHeimSpieler7.caption), x, y, z); ManagePosition('Spieler 8', PositionHeimSpieler8.Caption, strtoint(StaerkeHeimSpieler8.caption), x, y, z); ManagePosition('Spieler 9', PositionHeimSpieler9.Caption, strtoint(StaerkeHeimSpieler9.caption), x, y, z); ManagePosition('Spieler 10', PositionHeimSpieler10.Caption, strtoint(StaerkeHeimSpieler10.caption), x, y, z); ManagePosition('Spieler 11', PositionHeimSpieler10.Caption, strtoint(StaerkeHeimSpieler11.caption), x, y, z);
GesamtstaerkeHeimDef.caption := inttostr(x); GesamtstaerkeHeimMit.caption := inttostr(y); GesamtstaerkeHeimAng.caption := inttostr(z); end; |
Für den Rest gibt es FindComponent 
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
arminho 
      
Beiträge: 59
|
Verfasst: Fr 08.05.09 14:24
Vielen Dank für die schnelle Lösung.
Aber was meinst du mit : "Für den Rest gibt es FindComponent  " ?
Welcher Rest? sorry wenn ich blöd frage, verstehe es aber grad nicht ^^
|
|
Regan
      
Beiträge: 2157
Erhaltene Danke: 72
Java (Eclipse), Python (Sublimetext 3)
|
Verfasst: Fr 08.05.09 14:33
Delphi-Quelltext 30: 31: 32: 33: 34: 35: 36: 37: 38: 39:
| { ... } ManagePosition('Spieler 2', PositionHeimSpieler2.Caption, strtoint(StaerkeHeimSpieler2.caption), x, y, z); ManagePosition('Spieler 3', PositionHeimSpieler3.Caption, strtoint(StaerkeHeimSpieler3.caption), x, y, z); ManagePosition('Spieler 4', PositionHeimSpieler4.Caption, strtoint(StaerkeHeimSpieler4.caption), x, y, z); ManagePosition('Spieler 5', PositionHeimSpieler5.Caption, strtoint(StaerkeHeimSpieler5.caption), x, y, z); ManagePosition('Spieler 6', PositionHeimSpieler6.Caption, strtoint(StaerkeHeimSpieler6.caption), x, y, z); ManagePosition('Spieler 7', PositionHeimSpieler7.Caption, strtoint(StaerkeHeimSpieler7.caption), x, y, z); ManagePosition('Spieler 8', PositionHeimSpieler8.Caption, strtoint(StaerkeHeimSpieler8.caption), x, y, z); ManagePosition('Spieler 9', PositionHeimSpieler9.Caption, strtoint(StaerkeHeimSpieler9.caption), x, y, z); ManagePosition('Spieler 10', PositionHeimSpieler10.Caption, strtoint(StaerkeHeimSpieler10.caption), x, y, z); ManagePosition('Spieler 11', PositionHeimSpieler10.Caption, strtoint(StaerkeHeimSpieler11.caption), x, y, z); |
Kann man vereinfach zu:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| For i:=2 to 11 do ManagePosition( 'Spieler '+IntToStr(i), TLabel(FindComponent('PositionHeimSpieler'+IntToStr(i))).Caption, StrToInt(TLabel(FindComponent('PositionHeimSpieler'+IntToStr(i))).Caption), x, y, z); |
Ungetestet.
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Fr 08.05.09 14:45
Genau, wobei man FindComponent für diesen Fall mit einem Array cachen kann, wodurch man gegenüber dem Ausprogrammieren nur unwesentlich Performance einbüßt.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Fr 08.05.09 16:49
BenBE hat folgendes geschrieben : | Genau, wobei man FindComponent für diesen Fall mit einem Array cachen kann, wodurch man gegenüber dem Ausprogrammieren nur unwesentlich Performance einbüßt. |
Bevor du jetzt fragst, arminho:
Deklariere ein array[0..9] of TLabel (wenn deine PositionHeimSpielerX Labels sind) als Feld deines Formulars. Im OnCreate füllst du es per FindComponent:
Delphi-Quelltext 1: 2:
| for i:= 0 to 9 do PositionHeimSpielerArray[i] := FindComponent('PositionHeimSpieler'+IntToStr(i+2)); |
Jetzt kannst du das Array verwenden, um darauf zuzugreifen. Dafür kannst du einfach Regans Code abwandeln - und fertig 
|
|
|