Input mit mehreren Eingaben
Komme leider zz nicht weiter, vllt. kann mir ja jemand helfen.
Hallo,
ich versuche ein VBScript zu basteln, was es mir ermöglicht wenn ich es via cmd aufrufe in der DOS Box ein Input zu machen mit mehreren Arrays.
Zum Beispiel: [ID]#[Name]#[letter]
Soll dann so aussehen: 234#dieter#G
#= um das ganze zu trennen.
Ich weiß wie ich eine Inputbox mache, dass ist nicht das Problem, aber leider weiß ich nicht wie ich in eine Inputbox mehrere eingaben machen kann und diese dann später wieder getrennt ausgeben kann.
Desweiteren weiß ich das dieseyer ein Beispiel hat aber leider verstehe ich den mittleren Teil nicht ganz (http://dieseyer.de/scr/2-5mal-input.vbs):
Danke schonmal fürs helfen.
Hallo,
ich versuche ein VBScript zu basteln, was es mir ermöglicht wenn ich es via cmd aufrufe in der DOS Box ein Input zu machen mit mehreren Arrays.
Zum Beispiel: [ID]#[Name]#[letter]
Soll dann so aussehen: 234#dieter#G
#= um das ganze zu trennen.
Ich weiß wie ich eine Inputbox mache, dass ist nicht das Problem, aber leider weiß ich nicht wie ich in eine Inputbox mehrere eingaben machen kann und diese dann später wieder getrennt ausgeben kann.
Desweiteren weiß ich das dieseyer ein Beispiel hat aber leider verstehe ich den mittleren Teil nicht ganz (http://dieseyer.de/scr/2-5mal-input.vbs):
Eingabe=InputBox (VbCRLF&Txt&VbCRLF,Titel,Eingabe)
If Eingabe="" then WScript.Quit
If not (Right(Eingabe,1)=Sym) then Eingabe=Eingabe&Sym ' Falls Symbol rechts vergessen!
If Left(Eingabe,1)=Sym then Eingabe=Mid(Eingabe,2) ' Falls Symbol links!
Eingabe1=Eingabe
Laenge=Len(Eingabe1)
' Die Eingabenfolge wird gemäß den " # " in Abschnitte zerlegt
' und die Teile als Variablen " Txti " definiert
Zahl1=0
i=1
Do until Rechts=Sym
Links=Left(Eingabe1,i)
Rechts=Right(Links,1)
i=i+1
Zahl1=Zahl1 +1 ' Zahl1 ist Länge der 1. Sequenz mit dem " # "
Loop
Txt1=Left(Links,Zahl1 -1)
Eingabe2=Right(Eingabe1,Laenge-Zahl1) ' Neufestlegung
If Eingabe2="" then Ende
Zahl2=0
i=1
Do until Rechts2=Sym
Links2=Left(Eingabe2,i)
Rechts2=Right(Links2,1)
i=i+1
Zahl2=Zahl2 +1
Loop
Txt2=Left(Links2,Zahl2 -1)
Eingabe3=Right(Eingabe2,Laenge-Zahl1-Zahl2)
If Eingabe3="" then Ende
Zahl3=0
i=1
Do until Rechts3=Sym
Links3=Left(Eingabe3,i)
Rechts3=Right(Links3,1)
i=i+1
Zahl3=Zahl3 +1
Loop
Txt3=Left(Links3,Zahl3 -1)
Eingabe4=Right(Eingabe3,Laenge-Zahl1-Zahl2-Zahl3)
If Eingabe4="" then Ende
Zahl4=0
i=1
Do until Rechts4=Sym
Links4=Left(Eingabe4,i)
Rechts4=Right(Links4,1)
i=i+1
Zahl4=Zahl4 +1
Loop
Txt4=Left(Links4,Zahl4 -1)
Eingabe5=Right(Eingabe4,Laenge-Zahl1-Zahl2-Zahl3-Zahl4)
If Eingabe5="" then Ende
Zahl5=0
i=1
Do until Rechts5=Sym
Links5=Left(Eingabe5,i)
Rechts5=Right(Links5,1)
i=i+1
Zahl5=Zahl5 +1
Loop
Txt5=Left(Links5,Zahl5 -1)
Ende ' Sub - Aufruf
WScript.Quit
Danke schonmal fürs helfen.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 145774
Url: https://administrator.de/contentid/145774
Ausgedruckt am: 22.11.2024 um 17:11 Uhr
11 Kommentare
Neuester Kommentar
Hallo m0nstar,
bei dieser Art von Inputbox gibt es leider keine Möglichkeit, den Benutzer so hingehend zu überwachen, dass er alles in der richtigen Reihenfolge auch eingibt.
du könntest das nur als Hinweis angeben in Form von:
Aber wie gesagt, der Mann oder die Frau, die die Daten eingeben, müssen sich an die Reihenfolge halten.
Das "Nullte"-Array kann noch mit "Isnumeric" abgefangen werden, aber bei den anderen....
Gruss
Tsuki
bei dieser Art von Inputbox gibt es leider keine Möglichkeit, den Benutzer so hingehend zu überwachen, dass er alles in der richtigen Reihenfolge auch eingibt.
du könntest das nur als Hinweis angeben in Form von:
Eingabe = Split(inputbox("Bitte Daten eingeben in folgender Reihenfolge: ID Name Letter und durch '#' trennen"),"#")
Das "Nullte"-Array kann noch mit "Isnumeric" abgefangen werden, aber bei den anderen....
Gruss
Tsuki
Hallo m0nstar,
ohne mir das Beispiel von dieseyer anzuschauen.
Was möchtest du denn genau machen?
Bleiben wir mal bei deiner Frage und deinem Beispiel:
Durch das Splitten der Eingabe, in welcher eigentlich 3 Daten stehen sollten nämlich
jetzt müßte immer in
Eingabe(0) eine Nummer
Eingabe(1) ein Name und
Eingabe(2) ein "Letter"
stehen.
So kannst du auf diese Daten dann später auch in deinem Programm ganz easy zugreifen.
Nur wenn der, der die Eingabe macht zum Beispiel
Wenn in einem Array nur Zahlen stehen dürfen könntest du es mit
zum Beispiel abfangen.
Du kannst auch Eingabelängen in Form von
überwachen. Aber wie gesagt, du musst dann genau wissen, was an welcher Stelle der Eingabe genau "erwartet" wird.
Gruss
Tsuki
Ps.: nur grob, was dieseyer da treibt: Er splittet die Eingabedaten auf seine Art und Weise. Mehr nicht und dann schreibt er sie nicht in ein Array
ohne mir das Beispiel von dieseyer anzuschauen.
Was möchtest du denn genau machen?
Bleiben wir mal bei deiner Frage und deinem Beispiel:
Durch das Splitten der Eingabe, in welcher eigentlich 3 Daten stehen sollten nämlich
123#Name#Letter
hast du in deinem Array "Eingabe" ein Maximum (Ubound) von 2jetzt müßte immer in
Eingabe(0) eine Nummer
Eingabe(1) ein Name und
Eingabe(2) ein "Letter"
stehen.
So kannst du auf diese Daten dann später auch in deinem Programm ganz easy zugreifen.
Nur wenn der, der die Eingabe macht zum Beispiel
Name#123#F
eingibt, ist das schwierig für dich nachzuvollziehen. Dann geht es ohne vorherige Prüfung der gesamten Eingabe nicht.Wenn in einem Array nur Zahlen stehen dürfen könntest du es mit
If Not Isnumeric Eingabe(0) then 'blablabla
Du kannst auch Eingabelängen in Form von
If Len(Eingabe(2) > 1 then 'blablabla
Gruss
Tsuki
Ps.: nur grob, was dieseyer da treibt: Er splittet die Eingabedaten auf seine Art und Weise. Mehr nicht und dann schreibt er sie nicht in ein Array
Hallo m0nster,
wenn alles immer richtig eingegeben wird, wird's einfacher im Form von weniger Programmcode
dein Code ist bis auf 2 Kleinigkeiten soweit ok.
1) dieses
hatte ich nur zum Testen angegeben, damit du sehen kannst, was in den einzelnen Arrays drinnen stehen würde
2)wenn du das in dieser For-Schleife so läßt, gibt es Fehlermeldungen!
bitte nur so verwenden.
auf die einzelnen Daten greifst du so zu als Beispiel
Gruss
Tsuki
wenn alles immer richtig eingegeben wird, wird's einfacher im Form von weniger Programmcode
dein Code ist bis auf 2 Kleinigkeiten soweit ok.
1) dieses
for i = 0 to Ubound(Eingabe(0), Eingabe(1), Eingabe(2))
next
2)wenn du das in dieser For-Schleife so läßt, gibt es Fehlermeldungen!
bitte nur so verwenden.
for i = 0 to Ubound(Eingabe)
next
MeineVariable = Eingabe(0)
MeineVariable1 = Eingabe(1)
'etc.
Gruss
Tsuki
Mea Culpa!
so wird'n Schuh draus:
In Zeile 10 hatte auch noch die Klammer gefehlt!
Gruss
Tsuki
[Edit]
Super, dass es geklappt hat! Nichts zu danken!
[/Edit]
so wird'n Schuh draus:
option explicit
Dim Eingabe, i
Eingabe = Split(inputbox("Bitte Daten eingeben in folgender Reihenfolge: ID Name Letter und durch '#' trennen"),"#")
for i = 0 to Ubound(Eingabe)
next
If Isnumeric(Eingabe(0)) = False Then
wscript.quit
End if
If Len(Eingabe(2)) > 1 then
wscript.quit
End if
msgbox Eingabe(0)
msgbox Eingabe(1)
msgbox Eingabe(2)
In Zeile 10 hatte auch noch die Klammer gefehlt!
Gruss
Tsuki
[Edit]
Super, dass es geklappt hat! Nichts zu danken!
[/Edit]