Break für if?
-
- Beiträge: 180
- Registriert: 24.09.2010 10:39
Break für if?
Ich finde nicht heraus wie man eine if-Schleife verlassen kann. Break funktioniert ja nicht. Eine Sprungmarke wäre eine Lösung oder auch ständig nachfolgenden Code in ifs einschließen aber sicherlich ist das nicht die beste Lösung oder?
Re: Break für if?
http://if-schleife.de/SebastianJu2 hat geschrieben:Ich finde nicht heraus wie man eine if-Schleife verlassen kann.
die einzige, die mir bekannt ist.SebastianJu2 hat geschrieben:... oder auch ständig nachfolgenden Code in ifs einschließen aber sicherlich ist das nicht die beste Lösung oder?
Bei geschickter Anordnung Deiner Abfragen muss das auch nicht unübersichtlich sein.
Im Zweifelsfall kannst Du Deinen Code auch mal hier posten.
Grüße ... Kiffi
a²+b²=mc²
Re: Break für if?
Vermutlich meinst du sowas:
eine "Fake"-Schleife. so kannst du jederzeit die restlichen Ifs umgehen oder ganz einfach normal am ende rausspringen,
ohne die Ifs verschachteln zu müssen
Code: Alles auswählen
; Code
Repeat
; Code
If Not A
Break
EndIf
; Code
If Not B
Break
EndIf
; Code
If Not C
Break
EndIf
; Code
Until #True
; Code
ohne die Ifs verschachteln zu müssen
Zuletzt geändert von STARGÅTE am 15.02.2011 15:56, insgesamt 1-mal geändert.
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
- 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: Break für if?
Da kann man sich mit If Not behelfen.SebastianJu2 hat geschrieben:auch ständig nachfolgenden Code in ifs einschließen aber sicherlich ist das nicht die beste Lösung oder?
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.

-
- Beiträge: 180
- Registriert: 24.09.2010 10:39
Re: Break für if?
if-Abfragen... soso... 
Hier mein vorläufiger Code:
In der umfassenden if-Abfrage soll dann auch wie der Handlename schon sagt die Aktion starten. Vorher muss ich ja testen ob alle Eingabedaten korrekt sind. Und da fände ich gut wenn ich auf diese Variable stoprun verzichten könnte. Ein einfaches break wie für die Schleifen würde das Ganze übersichtlicher machen denke ich.
Aber wenn es das nicht gibt muss das wohl so funktionieren...
@Stargate und ts-soft
Klingt nach Möglichkeiten... muss mal drüber nachdenken...

Hier mein vorläufiger Code:
Code: Alles auswählen
If EventGadget() = StartButtonHandle
stoprun.l=0
If FileSize(GetGadgetText(SourceStringHandle)) = -1 Msg("Sourcefile doesnt exist",1) : SetGadgetText(SourceStringHandle,"") : stoprun=1 : EndIf
If FileSize(GetGadgetText(SourceStringHandle)) = -2 Msg("Sourcefile cant be a directory",1) : SetGadgetText(SourceStringHandle,"") : stoprun=1 : EndIf
If FileSize(GetGadgetText(TargetStringHandle)) = -2 Msg("Targetfile cant be a directory",1) : SetGadgetText(TargetStringHandle,"") : stoprun=1 : EndIf
If FileSize(GetGadgetText(TargetStringHandle)) = -2 Msg("Targetfile cant be a directory",1) : SetGadgetText(TargetStringHandle,"") : stoprun=1 : EndIf
EndIf
Aber wenn es das nicht gibt muss das wohl so funktionieren...
@Stargate und ts-soft
Klingt nach Möglichkeiten... muss mal drüber nachdenken...
-
- Beiträge: 180
- Registriert: 24.09.2010 10:39
Re: Break für if?
Ich hab jetzt die repeat-Variante genommen. Die erscheint mir am übersichtlichsten zu sein... danke!
Code: Alles auswählen
If EventGadget() = StartButtonHandle
Repeat
If FileSize(GetGadgetText(SourceStringHandle)) = -1 Msg("Sourcefile doesnt exist",1) : SetGadgetText(SourceStringHandle,"") : Break : EndIf
If FileSize(GetGadgetText(SourceStringHandle)) = -2 Msg("Sourcefile cant be a directory",1) : SetGadgetText(SourceStringHandle,"") : Break : EndIf
If FileSize(GetGadgetText(TargetStringHandle)) = -2 Msg("Targetfile cant be a directory",1) : SetGadgetText(TargetStringHandle,"") : Break : EndIf
Until #True
EndIf
Re: Break für if?
hier hätte ich noch eine Variante:
Grüße ... Kiffi
Code: Alles auswählen
If EventGadget() = StartButtonHandle
Select #True
Case FileSize(GetGadgetText(SourceStringHandle)) = -1
Msg("Sourcefile doesnt exist",1)
SetGadgetText(SourceStringHandle,"")
Case FileSize(GetGadgetText(SourceStringHandle)) = -2
Msg("Sourcefile cant be a directory",1)
SetGadgetText(SourceStringHandle,"")
Case FileSize(GetGadgetText(TargetStringHandle)) = -2
Msg("Targetfile cant be a directory",1)
SetGadgetText(TargetStringHandle,"")
EndSelect
EndIf
a²+b²=mc²
- 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: Break für if?
Wenn Du einen OpenFileRequester, bzw. einen SaveFileRequester nimmst, kann das garnicht vorkommen.
Ist also vollkommen unnötig. Lediglich ein Leerstring bei abbrechen wäre möglich, der ist aber kein
Fehler, sondern eher das gewünschte des Benutzers, also kannst Du Dir alle diese nervigen Meldungen
sparen.
Ist also vollkommen unnötig. Lediglich ein Leerstring bei abbrechen wäre möglich, der ist aber kein
Fehler, sondern eher das gewünschte des Benutzers, also kannst Du Dir alle diese nervigen Meldungen
sparen.
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.

-
- Beiträge: 180
- Registriert: 24.09.2010 10:39
Re: Break für if?
@Kifi
An ein Select hatte ich auch schon gedacht nur spart man damit nicht wirklich etwas weil die abzufragenden Werte immer ins case geschrieben werden müssen. Und ein break würde nichts nützen da ich ja ansonsten die restlichen Aktionen in die Selectschleife schreiben müsste.
@ts-soft
Ich nutze zwar einen OpenFileRequeste aber ich speichere die URLs dann in einem Stringgadget. Und dieses lasse ich offen für Editierungen weil ich denke das sollte man ermöglichen. Und der User könnte dann natürlich auch reichlich Müll reinschreiben.
Sind ja eigentlich nur 4 Abfragen. Source muss existieren und kein Verzeichnis sein und Target darf nicht -2, also Verzeichnis sein und wenn es >=0 ist dann gibt es die Datei schon und es sollte nachgefragt werden ob sie überschrieben werden soll.
An ein Select hatte ich auch schon gedacht nur spart man damit nicht wirklich etwas weil die abzufragenden Werte immer ins case geschrieben werden müssen. Und ein break würde nichts nützen da ich ja ansonsten die restlichen Aktionen in die Selectschleife schreiben müsste.
@ts-soft
Ich nutze zwar einen OpenFileRequeste aber ich speichere die URLs dann in einem Stringgadget. Und dieses lasse ich offen für Editierungen weil ich denke das sollte man ermöglichen. Und der User könnte dann natürlich auch reichlich Müll reinschreiben.
Sind ja eigentlich nur 4 Abfragen. Source muss existieren und kein Verzeichnis sein und Target darf nicht -2, also Verzeichnis sein und wenn es >=0 ist dann gibt es die Datei schon und es sollte nachgefragt werden ob sie überschrieben werden soll.