Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Procedure vereinfachen. (https://www.delphipraxis.net/30497-procedure-vereinfachen.html)

ferby 25. Sep 2004 17:37


Procedure vereinfachen.
 
Hallo,

Ich habe jetzt ein Programm bald vertig und versuche einige Teile zu verkürzen/vereinfachen.

Z.B: diese TRadioGroup:

Delphi-Quellcode:
procedure TForm1.levelladenmenueClick(Sender: TObject);
begin
  case levelladenmenue.itemindex of
    0: begin
          level:=1;
          spieltimer.enabled:=true;
          levelladenmenue.Visible:=false;
          hauptlabel1.caption:='';
          status:='ladelevel';
        end;

    1: begin
          if levelladenmenue.Items[1]<>'<Level noch nicht verfügbar>' then
          begin
            level:=2;
            spieltimer.enabled:=true;
            levelladenmenue.Visible:=false;
            hauptlabel1.caption:='';
            status:='ladelevel';
          end;
        end;

    2: begin
          if levelladenmenue.Items[2]<>'<Level noch nicht verfügbar>' then
          begin
            level:=3;
            spieltimer.enabled:=true;
            levelladenmenue.Visible:=false;
            hauptlabel1.caption:='';
            status:='ladelevel';
          end;
        end;

    3: begin
          if levelladenmenue.Items[3]<>'<Level noch nicht verfügbar>' then
          begin
            level:=4;
            spieltimer.enabled:=true;
            levelladenmenue.Visible:=false;
            hauptlabel1.caption:='';
            status:='ladelevel';
          end;
        end;

    4: begin
          if levelladenmenue.Items[4]<>'<Level noch nicht verfügbar>' then
          begin
            level:=5;
            spieltimer.enabled:=true;
            levelladenmenue.Visible:=false;
            hauptlabel1.caption:='';
            status:='ladelevel';
          end;
        end;
  end;
end;

Ich habe mehrere Sachen versucht um dieses Procedure zu vereinfachen aber jedesmal stoße ich an ein anderes Problemm.
Wisst ihr eine vereinfachung die 100% das selbe macht wie meine Version?

[edit=Luckie]Delphi-Tags. Mfg, Luckie[/edit]

Luckie 25. Sep 2004 17:42

Re: Procedure vereinfachen.
 
Die Stelle
Delphi-Quellcode:
spieltimer.enabled:=true;
levelladenmenue.Visible:=false;
hauptlabel1.caption:='';
status:='ladelevel';
ist doch überall gleich, warum ist die in der case-Anweisung drinnne?

Dann: Mach dir doch eine Prozedur:

Delphi-Quellcode:
procedure TForm1.LoadLevel(Index: Integer);
begin
  level := Index;
  spieltimer.enabled := true;
  levelladenmenue.Visible := false;
  hauptlabel1.caption := '';
  status := 'ladelevel';
end;

procedure TForm1.ButtonOnClick(Sender: TObject);
begin
  if levelladenmenue.Items[levelademenu.ItemIndex] <>
    '<Level noch nicht verfügbar>' then
    LoadLevel(levellademenue.ItemIndex);
end;
Ungetestet und ohne detailierte Infos würde ich es so machen.

Gruber_Hans_12345 25. Sep 2004 17:43

Re: Procedure vereinfachen.
 
Delphi-Quellcode:
procedure TForm1.levelladenmenueClick(Sender: TObject);
var levelOK : Boolean;
begin
  levelOK := levelladenmenue.itemindex = 0;
  if levelladenmenue.itemindex > 0 then
    levelOK := levelladenmenue.Items[levelladenmenue.itemindex]<>'<Level noch nicht verfügbar>' ;
  if levelOK then begin
          level:=levelladenmenue.itemindex+1;
          spieltimer.enabled:=true;
          levelladenmenue.Visible:=false;
          hauptlabel1.caption:='';
          status:='ladelevel';
        end;
end;
sollte eigentlich funktionieren

ferby 25. Sep 2004 17:48

Re: Procedure vereinfachen.
 
Hallo

Zu Luckie:

Es könnte sein das if levelladenmenue.Items[4]<>'<Level noch nicht verfügbar>' (nicht) zutrifft, deshalb steht es in jeder case anweisung.



Zu Gruber_Hans_12345:

Werde ich mal ausprobieren.

Luckie 25. Sep 2004 17:50

Re: Procedure vereinfachen.
 
Ich habe es gerade noch etwas vereinfacht. ;)

ferby 25. Sep 2004 17:50

Re: Procedure vereinfachen.
 
Hallo,

funktioniert, danke!

Luckie 25. Sep 2004 17:51

Re: Procedure vereinfachen.
 
Zitat:

Zitat von ferby
funktioniert, danke!

Welche Version meinst du jetzt?

ferby 25. Sep 2004 17:54

Re: Procedure vereinfachen.
 
Hallo,

die von Gruber_Hans_12345 habe ich gemeint, deine geht aber auch :lol:
danke!


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:05 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 by Thomas Breitkreuz