Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Procedure beenden (https://www.delphipraxis.net/134313-procedure-beenden.html)

vip11 19. Mai 2009 19:17


Procedure beenden
 
hi
allso ich würde gerne ein procedure beenden wenn ein if parment zutrifft
so in der art:

Delphi-Quellcode:

procedure x;
if y = 0 then ...;
if y = 1 then <hier der endbefehl>;
if y = 2 then ...;
weiß jemand wie der befehl ist? mit break gehts net und mit end auch net :(
danke in voraus

mfg vip11

edit: sufu schon benutzt

Helmi 19. Mai 2009 19:19

Re: Procedure beenden
 
Hallo,

das ist ganz einfach, verwende den Befehl "exit".

Dax 19. Mai 2009 19:21

Re: Procedure beenden
 
Das ist aber schlechter Stil. Im Beispielfall wäre ein case-Konstrukt dafür viel besser geeignet, würde weniger Vergleiche machen und das selbe tun - und in vielen anderen Fällen lässt sich ein exit ähnlich auflösen. Was natürlich nicht heißt, dass es generell nutzlos wäre ;)

vip11 19. Mai 2009 19:22

Re: Procedure beenden
 
ok thx dan weiß ich nicht was ich falsch gemacht hab:
ich will nen kleines prog machen wo der butten einem wegspringt und hab den quelltext:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Label1: TLabel;
    procedure Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  pos : integer;

implementation

{$R *.dfm}

procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
//1->2//
if pos = 1 then button1.Top := 120;
if pos = 1 then button1.Left := 8;
if pos = 1 then pos := 2;
if pos = 1 then exit;
//2->3//
if pos = 2 then button1.Top := 120;
if pos = 2 then button1.Left := 152;
if pos = 2 then pos := 3;
if pos = 2 then exit;
//3->4//
if pos = 3 then button1.Top := 137;
if pos = 3 then button1.Left := 152;
if pos = 3 then pos := 4;
if pos = 3 then exit;
//4->5//
if pos = 4 then button1.Top := 64;
if pos = 4 then button1.Left := 8;
if pos = 4 then pos := 5;
if pos = 4 then exit;
//5->1//
if pos = 5 then button1.Top := 176;
if pos = 5 then button1.Left := 8;
if pos = 5 then pos := 1;
if pos = 5 then exit;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
pos := 1;
end;

end.
aber sobalt ich über die buttenposition gehe springt die über alle positionenn und geht wieder runter

mjustin 19. Mai 2009 19:25

Re: Procedure beenden
 
Zitat:

Zitat von vip11
ok thx dan weiß ich nicht was ich falsch gemacht hab

Delphi-Quellcode:
if pos = 1 then pos := 2;
if pos = 1 then exit;
pos wird auf 2 gesetzt. Das exit wird deshalb nicht ausgeführt.

Forlan 19. Mai 2009 19:28

Re: Procedure beenden
 
Delphi-Quellcode:
if pos = 1 then
begin
  button1.Top := 120;
  button1.Left := 8;
  pos := 2;
  exit;
end;
so sollte es auch besser aussehen...

[Edit] Tippfehler^^ [/Edit]

Fussball-Robby 19. Mai 2009 19:33

Re: Procedure beenden
 
Zitat:

Zitat von Forlan
Delphi-Quellcode:
if pos = 1 then
begin
  button1.Top := 120;
  button1.Left := 8;
  pos := 2;
  exit;
end;
so sollte es auch besser aussehen...[/Edit]

Und noch besser:
Delphi-Quellcode:
case pos of
  1:begin
      button1.Top := 120;
      button1.Left := 8;
      pos := 2;
      exit;
    end;
  2:begin
      //usw..
(Wie Dax bereits sagte)

Forlan 19. Mai 2009 19:34

Re: Procedure beenden
 
Zitat:

Zitat von Fussball-Robby
Und noch besser:
Delphi-Quellcode:
case pos of
  1:begin
      button1.Top := 120;
      button1.Left := 8;
      pos := 2;
      exit;
    end;
  2:begin
      //usw..
(Wie Dax bereits sagte)

Wenn wir jetzt so anfangen, dann ist es auch besser wenn er andere Bezeichner verwendet anstatt Button1 etc. :stupid:

vip11 19. Mai 2009 19:37

Re: Procedure beenden
 
Danke an alle hab mir sehr geholfen :) super forum

mfg vip11

SirThornberry 19. Mai 2009 20:06

Re: Procedure beenden
 
hmm, ein case bei 5 Werten ist grenzwertig. Lohnt sich das in Sachen geschwindigkeit da wirklich schon? Denn ein Case ist nicht immer schneller.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:49 Uhr.
Seite 1 von 2  1 2      

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