Button mehrere Befehle behandeln
-
Hallo zusammen,
folgendes: Ich klicke einen Button an, in dem folgendes ablaufen soll:
1. soll geschaut werden, ob ein Gerät vorhanden ist (welches spielt hier keine Rolle). Wenn jedoch kein Gerät angeschlossen ist kommt Fehlermeldung AWenn ein Gerät angeschlossen ist geht es weiter zu 2.
2. soll eine Datenpipeline aufgebaut werden. Schlägt dies fehl, kommt Fehlermeldung B
Wenn nicht, 3.
3. Datenübertragung, schlägt dies fehl, folgt Fehlermeldung C
ENDE
Wenn nun kein Gerät angeschlossen ist und ich den Button klicke kommen nun alle Fehlermeldungen A B und C. Kommen soll aber nur A. Das ganze läuft in if, else is, else Zweigen ab. Wie kann ich nun verhindern, dass, wenn Fehlermeldung A gekommen es, das Programm nicht weiter in die anderen else Zweige läuft? Könnte es mit exit funktionieren?
Danke für eure Hilfe
lg,
blitzgeist
-
Hallo,
du könntest entweder den if / else if / else - Zweig umbauen ( Quasi verschachteln), oder alles in Funktionen auslagern.
// Das ganze mal in Pseudocode (if) Wenn Gerät vorhanden dann { (if) Wenn Datenstrom aufgebaut werden konnte dann { (if) Wenn Daten gesendet wurden dann { ShowMessage("geht"); } } } (else) Wenn Gerät nicht vorhanden dann { ShowMessage("Kein Gerät vorhanden"); }mfg, Micha
-
Hallo
Wenn ich z.B. einen Button anklicke und in dem eine Funktion aufgerufen wird, diese Funktion keinen Rückgabewert hat und in dieser Funktion Memo1->Lines->Add("...") aufruft, findet er das Memo nicht. Klar ist wohl lokal, aber wie kann ich es realisieren, das Memo in der Funktion aufgerunfen wir? muss ich da lokal in dieser Funktion ein Memo1 anlegen? Wenn ja, wie, weil, es gibt ja eigendlich schon Memo1
/Edit : sorry ungewolltes Editiren anstatt Neuer Beitrag
-
Wieso exit ?
Wenn es an einer Stelle wirklich nicht mehr in der ButtonClick Methode weitergehen soll, ist return immer eine gute Möglichkeit zum Aussteigen.
Ansonsten kommmt man natürlich mit einer richtig kontruierten if else Schleife eigentlich auch immer klar.
-
blitzgeist schrieb:
Danke für die schnelle Antwor

ICh denke ich werde es mit Verschachtelung versuchen. Aber noch eine Frage: Wenn ich z.B. einen Button anklicke und in dem eine Funktion aufgerufen wird, diese Funktion keinen Rückgabewert hat und in dieser Funktion Memo1->Lines->Add("...") aufruft, findet er das Memo nicht. Klar ist wohl lokal, aber wie kann ich es realisieren, das Memo in der Funktion aufgerunfen wir? muss ich da lokal in dieser Funktion ein Memo1 anlegen? Wenn ja, wie, weil, es gibt ja eigendlich schon Memo1lg
blitzgeisthallo,
Gib den Parent/Owner mit an ... Form1->Memo1->Lines->Add("...");
mfg, Micha!
-
Hallo
Aber noch eine Frage:
Ein Thema ein Thread, ein Thread ein Thema. Bitte beim nächsten Mal einen neuen Thread aufmachen.
Wenn ich z.B. einen Button anklicke und in dem eine Funktion aufgerufen wird, diese Funktion keinen Rückgabewert hat und in dieser Funktion Memo1->Lines->Add("...") aufruft, findet er das Memo nicht. Klar ist wohl lokal, aber wie kann ich es realisieren, das Memo in der Funktion aufgerunfen wir? muss ich da lokal in dieser Funktion ein Memo1 anlegen? Wenn ja, wie, weil, es gibt ja eigendlich schon Memo1
Ich versteh dich so, das du eine eigene Funktion hast die ein Memo eines Forms verwenden soll. Da die Funktion aber kein Member des Forms ist kommt die Fehlermeldung das das Memo nicht bekannt ist.
Es gibt zwei Möglichkeiten : Entweder du setzt die Funktion als Membermehtode des Forms ein. Dazu must du die Funktion so verändern
void TForm1::MyFunc() { Memo1->Text = ...; }Und du must noch im Header des Forms die Definition der Methode hinzufügen
... private : void MyFunc(); public :Oder läßt die Funktion selbstständig und übergibst der Funktion das Memo als Pointer
void MyFunc(TMemo* Memo) { Memo->Text = ...; } // Aufruf aus einer Form-Methode heraus: MyFunc(Memo1);bis bald
akari
-
Alles klar, ein Thema ein Thread, werde ich beachten

Danke für die Antworten, werde es gleich ausprobieren.
-
Hallo
RandomAccess85 schrieb:
Gib den Parent/Owner mit an ... Form1->Memo1->Lines->Add("...");
Das halte ich für die schlechtere Lösung. Denn dadurch wird eine scheinbar selbstständige Funktion intern an eine konkrete Instanz eines Forms gebunden. Da ist es besser die Funktion zu einer Membermethode des Forms zu machen, und gleich richtig impliziet über this gehen.
bis bald
akari