Break für if?

Anfängerfragen zum Programmieren mit PureBasic.
SebastianJu2
Beiträge: 180
Registriert: 24.09.2010 10:39

Break für if?

Beitrag von SebastianJu2 »

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?
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Break für if?

Beitrag von Kiffi »

SebastianJu2 hat geschrieben:Ich finde nicht heraus wie man eine if-Schleife verlassen kann.
http://if-schleife.de/
SebastianJu2 hat geschrieben:... oder auch ständig nachfolgenden Code in ifs einschließen aber sicherlich ist das nicht die beste Lösung oder?
die einzige, die mir bekannt ist.

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²
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Break für if?

Beitrag von STARGÅTE »

Vermutlich meinst du sowas:

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
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
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
Benutzeravatar
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?

Beitrag von ts-soft »

SebastianJu2 hat geschrieben:auch ständig nachfolgenden Code in ifs einschließen aber sicherlich ist das nicht die beste Lösung oder?
Da kann man sich mit If Not behelfen.
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.
Bild
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Break für if?

Beitrag von Kiffi »

STARGÅTE hat geschrieben:eine "Fake"-Schleife.
Fuchsig! :allright:

Grüße ... Kiffi
a²+b²=mc²
SebastianJu2
Beiträge: 180
Registriert: 24.09.2010 10:39

Re: Break für if?

Beitrag von SebastianJu2 »

if-Abfragen... soso... :)

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
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...
SebastianJu2
Beiträge: 180
Registriert: 24.09.2010 10:39

Re: Break für if?

Beitrag von SebastianJu2 »

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
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Break für if?

Beitrag von Kiffi »

hier hätte ich noch eine Variante:

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
Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
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?

Beitrag von ts-soft »

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.
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.
Bild
SebastianJu2
Beiträge: 180
Registriert: 24.09.2010 10:39

Re: Break für if?

Beitrag von SebastianJu2 »

@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.
Antworten