![]() |
Procedure beenden
hi
allso ich würde gerne ein procedure beenden wenn ein if parment zutrifft so in der art:
Delphi-Quellcode:
weiß jemand wie der befehl ist? mit break gehts net und mit end auch net :(procedure x; if y = 0 then ...; if y = 1 then <hier der endbefehl>; if y = 2 then ...; danke in voraus mfg vip11 edit: sufu schon benutzt |
Re: Procedure beenden
Hallo,
das ist ganz einfach, verwende den Befehl "exit". |
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 ;)
|
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:
aber sobalt ich über die buttenposition gehe springt die über alle positionenn und geht wieder runter
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. |
Re: Procedure beenden
Zitat:
Delphi-Quellcode:
pos wird auf 2 gesetzt. Das exit wird deshalb nicht ausgeführt.
if pos = 1 then pos := 2;
if pos = 1 then exit; |
Re: Procedure beenden
Delphi-Quellcode:
so sollte es auch besser aussehen...
if pos = 1 then
begin button1.Top := 120; button1.Left := 8; pos := 2; exit; end; [Edit] Tippfehler^^ [/Edit] |
Re: Procedure beenden
Zitat:
Delphi-Quellcode:
(Wie Dax bereits sagte)
case pos of
1:begin button1.Top := 120; button1.Left := 8; pos := 2; exit; end; 2:begin //usw.. |
Re: Procedure beenden
Zitat:
|
Re: Procedure beenden
Danke an alle hab mir sehr geholfen :) super forum
mfg vip11 |
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.
|
Re: Procedure beenden
selbst mit IFs wäre kein EXIT nötig, wenn man das ELSE verwenden würde :angel:
|
Re: Procedure beenden
auch bei "case" wäre kein exit notwendig:
Delphi-Quellcode:
case pos of
1:begin button1.Top := 120; button1.Left := 8; pos := 2; end; 2:begin //usw.. |
Re: Procedure beenden
Zitat:
Delphi-Quellcode:
Gruß oki
case Pos of
4 : begin ... end; ... 1 : begin ... end; 5 : begin ... end; end; |
Re: Procedure beenden
Zitat:
Zitat:
|
Re: Procedure beenden
wozu denn das weiterzählen selber übernehmen?
Delphi-Quellcode:
oder in "länger" (für 1 bis 5)
case Pos of
0 : begin button1.Top := 120; button1.Left := 8; end; 1 : begin ... end; ... 4 : begin ... end; end; Pos := (Pos + 1) mod 5; procedure TForm1.FormCreate(Sender: TObject); begin pos := 0; end;
Delphi-Quellcode:
oder
case Pos of
.. end; Inc(Pos); if Pos > 5 then Pos := 1;
Delphi-Quellcode:
oder
case Pos of
.. end; if Pos < 4 then Inc(Pos) else Pos := 1; oder oder ... |
Re: Procedure beenden
Zitat:
Nee, klar, bei case ist das unerheblich. Nur bei den if-Anweisungen würde es einem ohne Exit auf die Füße fallen, außer man macht es so, wie es himitzu vorgeschlagen hat. Gruß oki |
Re: Procedure beenden
Exit ist unnötig.
|
Re: Procedure beenden
Zitat:
Gruß oki |
Re: Procedure beenden
Zitat:
|
Re: Procedure beenden
Also ich hab mich jetzt für die case variante entschieden da es von der geschwindigkeit ausreicht und auch schön übersichtlich ist.
Eigentlich war das Prog nur als kleine übung gedacht, da sieht man mal wieder wie schnell man sowas verlernt :oops: aber läuft jetzt alles :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:48 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-2025 by Thomas Breitkreuz