aivilon
Goto Top

Unterstützung bei Inputbox inkl. If-Schleifen

Hallo Zusammen

Mein Problem ist folgendes:
Ich möchte mittels einer Inputbox einen Pfad abfragen. Wenn kein Wert eingetragen wird, und trotzdem ok gedrückt wird, soll mittels einer Messagebox (vbokonly) mittgeteilt werden, dass ein gültiger wert eingetragen werden muss. mit betätigen von ok soll sich die Inputbox wiederholen (Refresh?).
Wenn Ein Wert eingetragen wird, sollte mittels (dazu habe ich eine funktionierende funktion) exist abfrage ermittelt werden ob der Pfad vorhanden ist. Wenn nicht wird wiederum per messagebox (vbokonly) mittgeteilt, dass der pfad nicht existiert, und auch hier wird die inputbox wiederholt.
Mit einem klick auf Cancel wird per Msgbox (vbokcancel) mitgeteilt, dass hiermit das Programm beendet wird. Bei klick auf Ok geschieht dies auch. Mit einem klick auf cancel wird die inputbox wiederholt.

Ich bring das einfach nicht hin. Bisjetzt hab ich folgendes:
            If FileOrDirExists(Appdata & "\.minecraft\bin\") = True Then  
                dir = New System.IO.DirectoryInfo(Appdata & "\.minecraft\bin\")  
            ElseIf FileOrDirExists(Appdata & "\.minecraft\bin\") = False Then  
                strPfad = InputBox("Bitte Pfad zur Minecraft.jar Datei angeben: ", "Pfad eingeben")   'Bis hier funktioniert alles  
                If strPfad = " " Then  
                    strMsg = MsgBox("Bitte einen Pfad eingeben!", "Kein Pfad", vbOKOnly)  
                    Me.Refresh()
                ElseIf strPfad = "" Then  
                    strMsg = MsgBox("Hiermit wird MC Startup Helper beendet!", "Beenden", vbOKCancel)  
                    If MsgBoxResult.Ok Then
                        End
                    ElseIf MsgBoxResult.Cancel Then
                        Me.Refresh()
                    End If
                End If
            End If

Kann mir wer helfen?

Grüsse aivilon

Content-ID: 184572

Url: https://administrator.de/contentid/184572

Ausgedruckt am: 18.11.2024 um 03:11 Uhr

SlainteMhath
SlainteMhath 07.05.2012 um 12:59:07 Uhr
Goto Top
Moin,

aus dem Kopf und ohne Gewähr:
do while true
  strPfad=inputbox(....)
  if strPfad="" then  
    if msgbox("hiermit wird.... beendet",vbOkCancel)=MsgBoxResult.Ok then Exit Do  
  else
    if strPfad=" " then   
      Msgbox("Bitte gültigen Pfad....")  
    else
      'Wenn Pfad Existiert, dann Exit Do, sonst Msgbox("Pfad existiert nicht")  
    End If
  End if
loop

lg,
Slainte

/EDIT: Typos korrigiert.
emeriks
emeriks 07.05.2012 um 13:04:31 Uhr
Goto Top
Hi,

versuch mal so:

If FileOrDirExists(Appdata & "\.minecraft\bin\") Then   
    dir = New System.IO.DirectoryInfo(Appdata & "\.minecraft\bin\")   
Else 
    strMsg = ""  
    do
        strMsg = MsgBox("Bitte einen Pfad eingeben!", strMsg , vbOKOnly)   
        if strMsg.Trim <> "" then  
            'es wurde etwas eingegeben  
            If not FileOrDirExists(strMsg.Trim) then
                'Pfad existiert nicht  
                msgbox("Der Pfad """ & strMsg & """ exitiert nicht oder kein Zugriff!", vbExclamation, "Fehler!")  
            else            
                'Pfad existiert  
                exit do
            end if
        end if
    loop
end if

mfg
MRX
aivilon
aivilon 07.05.2012 um 13:46:07 Uhr
Goto Top
Zitat von @SlainteMhath:
Moin,

aus dem Kopf und ohne Gewähr:
> do while true
>   strPfad=inputbox(....)
>   if strPfad="" then  
>     if msgbox("hiermit wird.... beendet",vbOkCancel)=MsgBoxResult.Ok then Exit Do  
>   else
>     if strPfad=" " then   
>       Msgbox("Bitte gültigen Pfad....")  
>     else
>       'Wenn Pfad Existiert, dann Exit Do, sonst Msgbox("Pfad existiert nicht")  
>     End If
>   End if
> loop
> 

lg,
Slainte

/EDIT: Typos korrigiert.

OK das kommt dem Ganzen schon näher. Nur:
Wenn ich beim Hinweis zum Beenden auf OK klicke, wird nur die Messagebox weggeklickt. Hier sollte sich jedoch das ganze Programm beenden.

Des weiteren hab ich noch das Problem, dass wenn ich ohne eine Eingabe auf OK klicke ebenfalls der Hinweis zum Beenden erscheint.

Und aus irgend einem Grund erscheint das Fenster auf einer total merkwürdigen Position (ca. +0, +500) ?! face-confused

        Do While True
            strPfad = InputBox("Bitte Pfad zur Minecraft.jar eingeben!", "Pfad eingeben", strMsg, vbOKOnly)  
            If strPfad <= " " Then  
                If MsgBox("hiermit wird MC Startup Helper beendet", vbOKCancel) = MsgBoxResult.Ok Then Exit Do  
            Else
                If strPfad < " " Then  
                    MsgBox("Bitte einen Pfad eingeben!", vbExclamation, "Bitte Pfad eingeben!")  
                Else
                    If FileOrDirExists(strMsg) = False Then
                        'Pfad existiert nicht  
                        MsgBox("Der Pfad """ & strMsg & """ exitiert nicht! Bitte korrekten Pfad eingeben", vbExclamation, "Fehler!")  
                    Else
                        'Pfad existiert  
                        Exit Do
                    End If
                End If
            End If
        Loop
#Edit: aktuellen Code hinzugefügt
aivilon
aivilon 07.05.2012 um 14:37:42 Uhr
Goto Top
#Falsch kommentiert....
aivilon
aivilon 07.05.2012 um 14:43:03 Uhr
Goto Top
So ich habs jetzt fast hingekriegt. Bis auf das Ganze mit dem Abbrechen und danach Beenden. Wenn ich jetzt auf Abbrechen drücke, kommt die MessageBox "Bitte Pfad eingeben".
Hier der aktuellste Code:

        If FileOrDirExists(Appdata & "\.minecraft\bin\") Then  
            dir = New System.IO.DirectoryInfo(Appdata & "\.minecraft\bin\")  
        Else
            strMsg = ""  
            Do
                strMsg = InputBox("Bitte Pfad zur Minecraft.jar eingeben!", "Pfad eingeben", "", vbOKOnly)  
                If System.Runtime.InteropServices.Marshal.StringToBSTR(strMsg) = 0 Then
                    If MsgBox("hiermit wird MC Startup Helper beendet", vbOKCancel) = MsgBoxResult.Ok Then Exit Do  
                ElseIf strMsg = vbNullString Then
                    MsgBox("Bitte einen Pfad eingeben!", vbExclamation, "Bitte Pfad eingeben!")  
                Else
                    If FileOrDirExists(strMsg) = False Then
                        'Pfad existiert nicht  
                        MsgBox("Der Pfad """ & strMsg & """ exitiert nicht! Bitte korrekten Pfad eingeben", vbExclamation, "Fehler!")  
                    Else
                        'Pfad existiert  
                        dir = New System.IO.DirectoryInfo(strMsg)
                        Exit Do
                    End If
                End If
            Loop
        End If