Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Schleife mit else stoppen!!!??? (https://www.delphipraxis.net/17786-schleife-mit-else-stoppen.html)

Plague 9. Mär 2004 20:10


Schleife mit else stoppen!!!???
 
Hallo

ich möchte an einer Stelle (vor der else anweisung) einen Stopp (Abbruch) einbauen.
Delphi-Quellcode:
if Anweisung then
  showmessage('Text');
  S T O P P ! ! !
  else
  Anweisung;
end;
Was muss ich für den Stopp eingeben?

MfG
Thomas

himitsu 9. Mär 2004 20:13

Re: Schleife mit else stoppen!!!???
 
Kommt darauf an, was du abbrchen willst. aber versuch es mal mit Break;

DelphiDeveloper 9. Mär 2004 20:14

Re: Schleife mit else stoppen!!!???
 
wo ist die schleife?

aus schleifen springt man mit break, schau dir aber auch mal continue an

Plague 9. Mär 2004 20:19

Re: Schleife mit else stoppen!!!???
 
Ich will keine Pause, ich will die Schleife beenden...

Luckie 9. Mär 2004 20:21

Re: Schleife mit else stoppen!!!???
 
Und warum zeigst du uns dann Code einer Verzweigung? :roll:

Delphi-Quellcode:
for i := 0 to 9 do
begin
  Application.ProcessMessages;
  if bCancel = True then
    break;
  /// tu was
end;
bCancel ist eine globale Variable, die du mit einem Button oder was weiß ich setzten kannst.

Plague 9. Mär 2004 20:26

Re: Schleife mit else stoppen!!!???
 
Ich bin ein Trottel,

es ist keine schleife es ist eine If-Bedingung. Wie kann ich da die else Anweisung verhindern?

Luckie 9. Mär 2004 20:29

Re: Schleife mit else stoppen!!!???
 
In dem Anweisung wahr ist. Dann wird der else-Zweig auch nicht mehr durchlaufen.

Plague 9. Mär 2004 20:32

Re: Schleife mit else stoppen!!!???
 
Das habe ich mir auch immer so gedacht, aber leider ist das bei dem was ich da mache nicht so. Es wird dann die if Anweisung erfüllt aber auch die Anweisung nach der Else anweisung... Komisch, gell?

Luckie 9. Mär 2004 20:34

Re: Schleife mit else stoppen!!!???
 
Wie viele Anweisungen stehen denn nach der if-Zeile? Bei mehr als einer musst du die folgenden Anweisungen in einen begin - end-Block packen.

gekmihesg 9. Mär 2004 20:34

Re: Schleife mit else stoppen!!!???
 
Code:
wenn anweisung erfüllt dann //if anweisung then
   tue was                        //  showmessage('if');
wenn nicht erfüllt                //else
   tu was anderes                 //  showmessage('else');
wo is das problem?

Plague 9. Mär 2004 20:48

Re: Schleife mit else stoppen!!!???
 
Es ist in ein begin und end gepackt. Das ist irgendwie komisch. Was kann ich noch versuchen?

himitsu 9. Mär 2004 20:52

Re: Schleife mit else stoppen!!!???
 
Mal den Code zeigen? ;)

fkerber 9. Mär 2004 20:53

Re: Schleife mit else stoppen!!!???
 
Hi!

Häng vielleicht einfach mal das Projekt mit dem Fehler an, dann kann man ja mal schauen...


Ciao fkerber

Plague 9. Mär 2004 21:01

Re: Schleife mit else stoppen!!!???
 
Ok, das ist mein Code...

Delphi-Quellcode:
procedure TFrame5.Button1Click(Sender: TObject);
var
LI: TListItem;
q :string;
begin
if Combobox1.Text =('') then
   Showmessage('Bitte geben Sie einen Suchbegriff ein')
   else
Combobox1.AddItem(Combobox1.Text,nil);
Combobox1.Items.SaveToFile(ExtractFilePath(ParamStr(0))+'Protocoll.pnmd');
q:= '%' + Combobox1.Text + '%';
with ZReadOnlyQuery1 do
  begin
    close;
    SQL.Clear;
    SQL.Add('SELECT * FROM Addy WHERE');
    SQL.Add('Name LIKE :Name OR ');
    SQL.Add('Vorname LIKE :Vorname OR ');
    SQL.Add('Straße LIKE :Straße OR ');
    SQL.Add('PLZ LIKE :PLZ OR ');
    SQL.Add('Stadt LIKE :Stadt OR ');
    SQL.Add('e-Mail LIKE :e-Mail OR ');
    SQL.Add('Tel LIKE :Tel OR ');
    SQL.Add('Notiz LIKE :Notiz');
    ParamByName ('Name').AsString := q;
    ParamByName ('Vorname').AsString := q;
    ParamByName ('Straße').AsString := q;
    ParamByName ('PLZ').AsString := q;
    ParamByName ('Stadt').AsString := q;
    ParamByName ('e-Mail').AsString := q;
    ParamByName ('Tel').AsString := q;
    ParamByName ('Notiz').AsString := q;
    open;
    ListView1.Items.BeginUpdate;
    Listview1.Items.Clear;
    while not (EOF) do
    begin
      LI := Listview1.Items.Add;
      LI.ImageIndex := 0;
      LI.Caption := (FieldByName('ID').AsString);
      LI.SubItems.Add(FieldByName('Name').AsString);
      LI.SubItems.Add(FieldByName('Vorname').AsString);
      LI.SubItems.Add(FieldByName('Straße').AsString);
      LI.SubItems.Add(FieldByName('PLZ').AsString);
      LI.SubItems.Add(FieldByName('Stadt').AsString);
      LI.SubItems.Add(FieldByName('e-Mail').AsString);
      LI.SubItems.Add(FieldByName('Tel').AsString);
      LI.SubItems.Add(FieldByName('Notiz').AsString);
      Next;
    end;
    ListView1.Items.EndUpdate;
    close;
  end;
end;

gekmihesg 9. Mär 2004 21:04

Re: Schleife mit else stoppen!!!???
 
Delphi-Quellcode:
procedure TFrame5.Button1Click(Sender: TObject);
var
LI: TListItem;
q :string;
begin
if Combobox1.Text =('') then
   Showmessage('Bitte geben Sie einen Suchbegriff ein')
   else
[color=red]begin[/color]
Combobox1.AddItem(Combobox1.Text,nil);
Combobox1.Items.SaveToFile(ExtractFilePath(ParamStr(0))+'Protocoll.pnmd');
q:= '%' + Combobox1.Text + '%';
with ZReadOnlyQuery1 do
  begin
    close;
    SQL.Clear;
    SQL.Add('SELECT * FROM Addy WHERE');
    SQL.Add('Name LIKE :Name OR ');
    SQL.Add('Vorname LIKE :Vorname OR ');
    SQL.Add('Straße LIKE :Straße OR ');
    SQL.Add('PLZ LIKE :PLZ OR ');
    SQL.Add('Stadt LIKE :Stadt OR ');
    SQL.Add('e-Mail LIKE :e-Mail OR ');
    SQL.Add('Tel LIKE :Tel OR ');
    SQL.Add('Notiz LIKE :Notiz');
    ParamByName ('Name').AsString := q;
    ParamByName ('Vorname').AsString := q;
    ParamByName ('Straße').AsString := q;
    ParamByName ('PLZ').AsString := q;
    ParamByName ('Stadt').AsString := q;
    ParamByName ('e-Mail').AsString := q;
    ParamByName ('Tel').AsString := q;
    ParamByName ('Notiz').AsString := q;
    open;
    ListView1.Items.BeginUpdate;
    Listview1.Items.Clear;
    while not (EOF) do
    begin
      LI := Listview1.Items.Add;
      LI.ImageIndex := 0;
      LI.Caption := (FieldByName('ID').AsString);
      LI.SubItems.Add(FieldByName('Name').AsString);
      LI.SubItems.Add(FieldByName('Vorname').AsString);
      LI.SubItems.Add(FieldByName('Straße').AsString);
      LI.SubItems.Add(FieldByName('PLZ').AsString);
      LI.SubItems.Add(FieldByName('Stadt').AsString);
      LI.SubItems.Add(FieldByName('e-Mail').AsString);
      LI.SubItems.Add(FieldByName('Tel').AsString);
      LI.SubItems.Add(FieldByName('Notiz').AsString);
      Next;
    end;
    ListView1.Items.EndUpdate;
    close;
  end;
[color=red]end;[/color]
end;

himitsu 9. Mär 2004 21:05

Re: Schleife mit else stoppen!!!???
 
Bei dir war vorher nur "Combobox1.AddItem(Combobox1.Text,nil);" in der If-Anweisung drin, also kein Wunder, wenn der Rest ausgeführt wurde. ;)

Code:
procedure TFrame5.Button1Click(Sender: TObject);
var
LI: TListItem;
q :string;
begin
if Combobox1.Text =('') then
   Showmessage('Bitte geben Sie einen Suchbegriff ein')
   else [color=red]begin[/color]
Combobox1.AddItem(Combobox1.Text,nil);
Combobox1.Items.SaveToFile(ExtractFilePath(ParamStr(0))+'Protocoll.pnmd');
q:= '%' + Combobox1.Text + '%';
with ZReadOnlyQuery1 do
  begin
    close;
    SQL.Clear;
    SQL.Add('SELECT * FROM Addy WHERE');
    SQL.Add('Name LIKE :Name OR ');
    SQL.Add('Vorname LIKE :Vorname OR ');
    SQL.Add('Straße LIKE :Straße OR ');
    SQL.Add('PLZ LIKE :PLZ OR ');
    SQL.Add('Stadt LIKE :Stadt OR ');
    SQL.Add('e-Mail LIKE :e-Mail OR ');
    SQL.Add('Tel LIKE :Tel OR ');
    SQL.Add('Notiz LIKE :Notiz');
    ParamByName ('Name').AsString := q;
    ParamByName ('Vorname').AsString := q;
    ParamByName ('Straße').AsString := q;
    ParamByName ('PLZ').AsString := q;
    ParamByName ('Stadt').AsString := q;
    ParamByName ('e-Mail').AsString := q;
    ParamByName ('Tel').AsString := q;
    ParamByName ('Notiz').AsString := q;
    open;
    ListView1.Items.BeginUpdate;
    Listview1.Items.Clear;
    while not (EOF) do
    begin
      LI := Listview1.Items.Add;
      LI.ImageIndex := 0;
      LI.Caption := (FieldByName('ID').AsString);
      LI.SubItems.Add(FieldByName('Name').AsString);
      LI.SubItems.Add(FieldByName('Vorname').AsString);
      LI.SubItems.Add(FieldByName('Straße').AsString);
      LI.SubItems.Add(FieldByName('PLZ').AsString);
      LI.SubItems.Add(FieldByName('Stadt').AsString);
      LI.SubItems.Add(FieldByName('e-Mail').AsString);
      LI.SubItems.Add(FieldByName('Tel').AsString);
      LI.SubItems.Add(FieldByName('Notiz').AsString);
      Next;
    end;
    ListView1.Items.EndUpdate;
    close;
  end;
[color=red]end;[/color]
end;

Hier noch 'ne Möglichkeit.

Exit beendet die Prozedur und der nachfolgende Code wird auch nicht mehr ausgeführt

Code:
procedure TFrame5.Button1Click(Sender: TObject);
var
LI: TListItem;
q :string;
begin
if Combobox1.Text =('') then
   Showmessage('Bitte geben Sie einen Suchbegriff ein')
   else [color=red]exit;[/color]
Combobox1.AddItem(Combobox1.Text,nil);
Combobox1.Items.SaveToFile(ExtractFilePath(ParamStr(0))+'Protocoll.pnmd');
q:= '%' + Combobox1.Text + '%';
with ZReadOnlyQuery1 do
  begin
    close;
    SQL.Clear;
    SQL.Add('SELECT * FROM Addy WHERE');
    SQL.Add('Name LIKE :Name OR ');
    SQL.Add('Vorname LIKE :Vorname OR ');
    SQL.Add('Straße LIKE :Straße OR ');
    SQL.Add('PLZ LIKE :PLZ OR ');
    SQL.Add('Stadt LIKE :Stadt OR ');
    SQL.Add('e-Mail LIKE :e-Mail OR ');
    SQL.Add('Tel LIKE :Tel OR ');
    SQL.Add('Notiz LIKE :Notiz');
    ParamByName ('Name').AsString := q;
    ParamByName ('Vorname').AsString := q;
    ParamByName ('Straße').AsString := q;
    ParamByName ('PLZ').AsString := q;
    ParamByName ('Stadt').AsString := q;
    ParamByName ('e-Mail').AsString := q;
    ParamByName ('Tel').AsString := q;
    ParamByName ('Notiz').AsString := q;
    open;
    ListView1.Items.BeginUpdate;
    Listview1.Items.Clear;
    while not (EOF) do
    begin
      LI := Listview1.Items.Add;
      LI.ImageIndex := 0;
      LI.Caption := (FieldByName('ID').AsString);
      LI.SubItems.Add(FieldByName('Name').AsString);
      LI.SubItems.Add(FieldByName('Vorname').AsString);
      LI.SubItems.Add(FieldByName('Straße').AsString);
      LI.SubItems.Add(FieldByName('PLZ').AsString);
      LI.SubItems.Add(FieldByName('Stadt').AsString);
      LI.SubItems.Add(FieldByName('e-Mail').AsString);
      LI.SubItems.Add(FieldByName('Tel').AsString);
      LI.SubItems.Add(FieldByName('Notiz').AsString);
      Next;
    end;
    ListView1.Items.EndUpdate;
    close;
  end;
end;

Robert_G 9. Mär 2004 21:09

Re: Schleife mit else stoppen!!!???
 
Delphi-Quellcode:
if Combobox1.Text =('') then
  Showmessage('Bitte geben Sie einen Suchbegriff ein')
else
  Combobox1.AddItem(Combobox1.Text,nil);
// ab hier geht's mit dem restlichen Programm weiter...
Combobox1.Items.SaveToFile(ExtractFilePath(ParamStr(0))+'Protocoll.pnmd');
...
Du willst wahscheinlich das machen:
Delphi-Quellcode:
if Combobox1.Text =('') then
   Showmessage('Bitte geben Sie einen Suchbegriff ein')
else
Begin
  Combobox1.AddItem(Combobox1.Text,nil);
  Combobox1.Items.SaveToFile(ExtractFilePath(ParamStr(0))+'Protocoll.pnmd');
  ...
End;
Damit du mehrere Codezeilen im Else aufrufen kannst, musst du (, wie Luckie bereits geschrieben hat, :wink: ) deine Befehlen in einen Begin-End-Block packen.

Edit: Soviel zu redundanten Posts :mrgreen:

Plague 9. Mär 2004 21:19

Re: Schleife mit else stoppen!!!???
 
Danke, das war der richtige Tip!!!
:thuimb:

Luckie 9. Mär 2004 21:21

Re: Schleife mit else stoppen!!!???
 
Den habe ich dir aber schon auf Seite eins gegeben. :roll:

Plague 9. Mär 2004 21:34

Re: Schleife mit else stoppen!!!???
 
Sorry Luckie,

ich dachte du hast das auf ein begin nach der if-Anweisung bezogen...
Sorry... :(


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:36 Uhr.

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