Hallo,
ich habe ein kleines Tool geschrieben. Wenn ein User OK klickt, wird geprüft, ob alle Felder ausgefüllt wurden:
If GetGadgetText(#String_1)=""
MessageRequester("blabla","")
endif
So, nun wird die Schleife logischerweise weiter ausgeführt, ich will diese aber unterbrechen, dass der User die Möglichkeit hat noch etwas einzugeben. Mit Break hab ich es auch versucht, dann beendet aber die Software ganz. Wie kann ich das realisieren?
Danke
Daniel
Schleife vorzeitig beenden
Re: Schleife vorzeitig beenden
Wäre nett wenn du "die Schleife", von der du Sprichst auch mit postest (zumindest teilweise) und bitte in Code-Tags
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: Schleife vorzeitig beenden
ok
Danke schonmal
Code: Alles auswählen
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
End
Case #PB_Event_Gadget
If EventGadget() = #Button_0
; Jetzt folgt die gemeinte Schleife
[b] If GetGadgetText(#String_7) Or GetGadgetText(#String_17) Or GetGadgetText(#String_27)=""
MessageRequester("No Mail-Address","You need to enter a Mail Address at least!")
Break
EndIf[/b]
; und der rest
EndIf
EndSelect
ForEver
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Schleife vorzeitig beenden
Ich denke mal, es geht um eine If Schleife 

PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Schleife vorzeitig beenden
@Schlaubi:
Was willst du denn bezwecken?
Wenn du nach dem MessageRequester() auf OK klickst, wird doch der Code normal weiter ausgeführt ohne das Break, und der User kann seine Eingabe korrigieren.
Ansonsten gibt es noch das Continue, es veranlasst die Schleife, wieder am Anfang zu beginnen. So verhindest du das bei keiner richtigen Eingabe, alle Fehler angezeigt werden, sondern nur der erste.
Was willst du denn bezwecken?
Wenn du nach dem MessageRequester() auf OK klickst, wird doch der Code normal weiter ausgeführt ohne das Break, und der User kann seine Eingabe korrigieren.
Ansonsten gibt es noch das Continue, es veranlasst die Schleife, wieder am Anfang zu beginnen. So verhindest du das bei keiner richtigen Eingabe, alle Fehler angezeigt werden, sondern nur der erste.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: Schleife vorzeitig beenden
Hi, danke
mit Continue konnte ich es realisieren, dass der User seine Eingabe nun noch ändern kann.
Danke
mit Continue konnte ich es realisieren, dass der User seine Eingabe nun noch ändern kann.
Danke
Re: Schleife vorzeitig beenden
Anmerkung:
Du prüfst hier nicht, ob String_7 oder String_17 oder String_27 leer sind, sondern
ob String_7 nicht leer oder String_17 nicht leer oder String_27 leer ist.
wenn dem so ist, dann solltest Du Deinen Code wie folgt abändern.
Grüße ... Kiffi
P.S.: In Deinem eigenen Interesse solltest Du Deine Gadget-Bezeichnungen
aussagekräftiger gestalten. Wenn Du nach längerer Zeit mal Deinen Code
bearbeiten solltest, dann wirst Du auch nicht auf Anhieb wissen, was #String_7
ist. Besser wäre hier sowas wie #txtMailAdresse (zum Beispiel).
P.P.S.: Das mit dem Continue scheint mir auch ne Krücke zu sein. Das kann man
sauberer programmieren.
das wird wohl nicht so funktionieren, wie Du Dir das meines Erachtens vorstellst.Schlaubi hat geschrieben:Code: Alles auswählen
If GetGadgetText(#String_7) Or GetGadgetText(#String_17) Or GetGadgetText(#String_27)=""
Du prüfst hier nicht, ob String_7 oder String_17 oder String_27 leer sind, sondern
ob String_7 nicht leer oder String_17 nicht leer oder String_27 leer ist.
wenn dem so ist, dann solltest Du Deinen Code wie folgt abändern.
Code: Alles auswählen
If GetGadgetText(#String_7) = "" Or GetGadgetText(#String_17) = "" Or GetGadgetText(#String_27)=""
P.S.: In Deinem eigenen Interesse solltest Du Deine Gadget-Bezeichnungen
aussagekräftiger gestalten. Wenn Du nach längerer Zeit mal Deinen Code
bearbeiten solltest, dann wirst Du auch nicht auf Anhieb wissen, was #String_7
ist. Besser wäre hier sowas wie #txtMailAdresse (zum Beispiel).
P.P.S.: Das mit dem Continue scheint mir auch ne Krücke zu sein. Das kann man
sauberer programmieren.
a²+b²=mc²