Autor Beitrag
arminho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 59



BeitragVerfasst: 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 :)

ausblenden volle Höhe Delphi-Quelltext
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;
// Die Staerken der Spieler werden zunächst an die Variablen x,y und z übergeben und dann in die entsprechenden Labels geladen
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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: 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:

ausblenden volle Höhe Delphi-Quelltext
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;

  // Die Staerken der Spieler werden zunächst an die Variablen x,y und z übergeben und dann in die entsprechenden Labels geladen
  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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 59



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 2157
Erhaltene Danke: 72


Java (Eclipse), Python (Sublimetext 3)
BeitragVerfasst: Fr 08.05.09 14:33 
ausblenden 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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Fr 08.05.09 16:49 
user profile iconBenBE hat folgendes geschrieben Zum zitierten Posting springen:
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, user profile iconarminho:

Deklariere ein array[0..9of TLabel (wenn deine PositionHeimSpielerX Labels sind) als Feld deines Formulars. Im OnCreate füllst du es per FindComponent:

ausblenden 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 user profile iconRegans Code abwandeln - und fertig :D