Seite 1 von 2

Break für if?

Verfasst: 15.02.2011 15:47
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?

Re: Break für if?

Verfasst: 15.02.2011 15:51
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

Re: Break für if?

Verfasst: 15.02.2011 15:55
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

Re: Break für if?

Verfasst: 15.02.2011 15:55
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.

Re: Break für if?

Verfasst: 15.02.2011 15:57
von Kiffi
STARGÅTE hat geschrieben:eine "Fake"-Schleife.
Fuchsig! :allright:

Grüße ... Kiffi

Re: Break für if?

Verfasst: 15.02.2011 15:58
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...

Re: Break für if?

Verfasst: 15.02.2011 16:05
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

Re: Break für if?

Verfasst: 15.02.2011 16:12
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

Re: Break für if?

Verfasst: 15.02.2011 16:15
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.

Re: Break für if?

Verfasst: 15.02.2011 16:23
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.