m0nstar
Goto Top

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):

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.

Content-ID: 145774

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

Ausgedruckt am: 22.11.2024 um 17:11 Uhr

TsukiSan
TsukiSan 28.06.2010 um 10:49:06 Uhr
Goto Top
Hallo m0nstar

hier ein Beispiel, was deinem Vorhaben nahe kommt:
Eingabe = Split(inputbox("Bitte Text eingeben und durch '#' trennen"),"#")  
for i = 0 to Ubound(Eingabe)
	msgbox Eingabe(i)
next


Gruss
Tsuki
m0nstar
m0nstar 28.06.2010 um 10:55:02 Uhr
Goto Top
Hi Tsuki,

danke schonmal, wie kann ich den jetzt sagen das die erste eingabe = strID sein soll, die zweite = strName und dritte = strLetter...

Bin da net so fitt face-smile

Gruß,
m0nstar
TsukiSan
TsukiSan 28.06.2010 um 10:59:29 Uhr
Goto Top
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:
Eingabe = Split(inputbox("Bitte Daten eingeben in folgender Reihenfolge: ID Name Letter und durch '#' trennen"),"#")  
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
m0nstar
m0nstar 28.06.2010 um 11:03:21 Uhr
Goto Top
Hi Tsuki,

problem ist ich wollte die 3 Werte noch weiter im Script verarbeiten...finde es nur blöd drei Abfragen zu machen, da es einfach schnell gehen soll face-smile

Gruß,
m0nstar

Edit: dieseyer ruft die eingaben ja auch irgendwie am ende wieder auf mit txt1,2,3,4,5 aber durch dem sein script blick ich net ganz^^
TsukiSan
TsukiSan 28.06.2010 um 11:12:20 Uhr
Goto Top
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
123#Name#Letter
hast du in deinem Array "Eingabe" ein Maximum (Ubound) von 2
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
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  
zum Beispiel abfangen.
Du kannst auch Eingabelängen in Form von
If Len(Eingabe(2) > 1 then 'blablabla  
ü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
m0nstar
m0nstar 28.06.2010 um 11:22:24 Uhr
Goto Top
Hi Tsuki,

also ich will die ID, den Namen und einen LaufwerkLetter einlesen (wo das Profil des Users liegt) und das ganze in einer txt speichern (kann ich)

ID ist immer numeric und name sollte nicht beschränkt sein und das letzte ist halt nur ein Buchstabe face-smile und mach dir keine Sorgen die Anwender werden es immer richtig eingeben (das will ich garnicht überprüfen)

Wäre das so richtig?:

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(0), Eingabe(1), Eingabe(2))
next
If Not Isnumeric Eingabe(0) then
     wscript.quit
End if
If Len(Eingabe(2) > 1 then
     wscript.quit
End if
TsukiSan
TsukiSan 28.06.2010 um 11:27:56 Uhr
Goto Top
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
for i = 0 to Ubound(Eingabe(0), Eingabe(1), Eingabe(2))
next
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.
for i = 0 to Ubound(Eingabe)
next
auf die einzelnen Daten greifst du so zu als Beispiel
MeineVariable = Eingabe(0)
MeineVariable1 = Eingabe(1)
'etc.  


Gruss
Tsuki
m0nstar
m0nstar 28.06.2010 um 11:36:35 Uhr
Goto Top
Hallo Tsuki,

danke schonmal für deine Gedultklappt soweit ganz gut ausser die überprüfung:

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 Not Isnumeric Eingabe(0) Then  
'     wscript.quit  
'End if  
'If Len(Eingabe(2) > 1 then  
'     wscript.quit  
'End if  

msgbox Eingabe(0)
msgbox Eingabe(1)
msgbox Eingabe(2)

Wenn ich die Kommentar Zeichen weg mache kommt in der 7. Zeile wird ein Then Anweisung erwartet, aber die ist doch da?!

Gruß,
m0nstar

Edit2:

HABE ES HINBEKOMMEN!!! face-big-smile danke dir
TsukiSan
TsukiSan 28.06.2010 um 11:42:01 Uhr
Goto Top
Mea Culpa!

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]
m0nstar
m0nstar 28.06.2010 um 11:43:02 Uhr
Goto Top
Hi Tsuki,

jop habs übersehenhabs dann auch hinbekommen face-big-smile danke dir nun klappt es... perfekt face-smile

Gruss,
m0nstar

Edit: Häckchen ist da...Grandiose hilfe fürn blindes huhn wie mich
TsukiSan
TsukiSan 28.06.2010 um 11:44:24 Uhr
Goto Top
Hallo m0nstar,

wenn alle Klarheiten face-wink beseitigt sind, dann mach doch bitte ein kleines grünes Häkchen oben neben den Beitrag.
Das freut Biber und Co. face-wink

Gruss
Tsuki

[Edit]
Häkchen ist ja da. Ich war zu langsam!
[/Edit]