Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst VBS randomize Problem

Mitglied: abeisema

abeisema (Level 1) - Jetzt verbinden

05.10.2012, aktualisiert 22:21 Uhr, 2270 Aufrufe, 6 Kommentare

Hallo, VBS ist ja möglicherweise nicht mehr State of the Art, hilft mir aber trotzdem. Das unten beschriebene Script erzeugt mir eine Datei mit variabler Zeilenanzahl, bestehend aus 2 Zahlenblöcken. So weit,so gut, der linke Bereich tut auch das was er soll, aber in den rechten schleichen sich Kommata ein. Was mache ich falsch.

01.
Option Explicit 
02.
Const ForReading = 1 
03.
Const ForWriting = 2 
04.
DIM Shell,FSO,File,Zeile 
05.
DIM i,Lesen,Line,Lines 
06.
DIM Eingabe,Eingabe1,Eingabe2 
07.
 
08.
Set Shell=CreateObject("WScript.Shell") 
09.
Set FSO = CreateObject("Scripting.FileSystemObject") 
10.
Set Lesen = FSO.OpenTextFile("c:\Temp\PrepaidImport.txt", ForReading, True) 
11.
Eingabe = InputBox ("Hier Namen eingeben", "Anbieter eingeben") 
12.
Eingabe1 = InputBox ("Hier Wert eingeben", "Wertangabe") 
13.
Eingabe2 = InputBox ("Hier Menge angeben","Mengenangabe") 
14.
 
15.
Set Lesen = FSO.OpenTextFile("c:\Temp\PrepaidImport.txt", ForWriting, True) 
16.
 
17.
Generate_Head 
18.
 
19.
i = 0 
20.
For i = 1 to Eingabe2 
21.
i = i 
22.
'Randomize 
23.
Zeile = "01708" & CStr(int((99999 - 23456 + 1) * RND + 23456)) & vbTab & "99" & CStr(int(999999999999999 - 23456 - 1) * RND - 23456) 
24.
Zeile = Zeile '& vbNewLine 
25.
Lesen.WriteLine Zeile 
26.
Next 
27.
 
28.
Set Lesen = FSO.OpenTextFile("c:\Temp\PrepaidImport.txt", ForReading, True) 
29.
'MsgBox SchreibeInDatei 
30.
 
31.
Function Generate_Head 
32.
Dim Line1,Line2,Line3,Line4,Line5,Line6,Line7 
33.
Line1 = "*Customer:" & "Telekom" 'Eingabe   'Name per InputBox, alternate fixed input  
34.
Line2 = "*date-generated:" & Now 'AktuellesDatum/Zeit 
35.
Line3 = "*date-valid-until:" & dateserial(2015-1,12-2,22-11)  
36.
Line4 = "*Logo:DOMINO50-OrdNum:001" 'fixed input 
37.
Line5 = "*batchnummer:1708"      'or InputBox 
38.
Line6 = "*value:" & "50" 'Eingabe1	 'or fixed input 
39.
Line7 = "*quantity:" & Eingabe2  'or fixed input 
40.
Eingabe = Line1 & vbNewLine & _ 
41.
Line2 & vbNewLine & _ 
42.
Line3 & vbNewLine & _ 
43.
Line4 & vbNewLine & _ 
44.
Line5 & vbNewLine & _ 
45.
Line6 & vbNewLine & _ 
46.
Line7 & vbNewLine 
47.
Lesen.WriteLine Eingabe 
48.
End Function 
49.
 
50.
Function SchreibeInDatei 
51.
SchreibeInDatei = Lesen.ReadAll 
52.
End Function 
53.
 
54.
Function AktuellesDatum 
55.
   ' FormatDateTime formatiert das Datum als langes Datumsformat. 
56.
   AktuellesDatum = FormatDateTime(Date, 2) 
57.
End Function 
58.
Lesen.close 
59.
WScript.quit
Der resultierende rechte Zahlenblock MUSS 17 Zeichen beinhalten und sollte in der Ausgabedatei so aussehen:
-Links- -rechts-
0170836622 99290290474861398
0170889964 99733959436375954
0170829462 99101430773709211

statt dessen steht dort, wenn oben CStr(int(99999999999999999 ...
als Ausgabe:

0170889127 1,38709664318077E+16

oder, wenn ich die Zahlenreihe verkürze und einen Teil wie oben, mit "99" dazwischenhänge
0170890159 9956236863111516,3

Wie bekomme ich die Kommata da weg. Was mache ich falsch?
Mitglied: Dani
05.10.2012 um 20:34 Uhr
Moin,
ich bin grad nicht sicher, aber gibts in VBS auch Datentypen. Denn dann würde ich als Typ für "Zeile" -> "Currency" versuchen.


Grüße,
Dani
Bitte warten ..
Mitglied: bastla
05.10.2012, aktualisiert um 22:00 Uhr
@ Dani
In VBS sind alle Variablen vom Typ "Variant" und können auch nicht anders deklariert werden (und außerdem wäre für "Zeile" hier nur "String" angebracht ) ...
Mit der folgenden Zeile sollte "Zeile" dann eher passen (obwohl damit natürlich auch keine 17 Stellen für den rechten Block garantiert sind):
Zeile = "01708" & Int((99999 - 23456 + 1) * RND + 23456) & vbTab & "99" & Int((999999999999999 - 23456 + 1) * RND + 23456)
"CStr()" ist unnötig, aber "Int()" muss natürlich auch bei der zweiten Berechnung auf das Ergebnis (zumindest der Multiplikation) angewendet werden, damit es keine Dezimalstellen geben kann.

Eine Subtraktion von 23456 nach der Multiplikation könnte zu negativen Ergebnissen führen (und war vermutlich auch nicht so gemeint, daher von mir korrigiert) ...
Eine sicher 17-stellige Kombination aus den Ziffern 0 bis 9 unter Verwendung der Pseudo-Random-Funktion in VBS ließe sich so erhalten:
01.
Rechts = "" 
02.
For i = 1 To 17 
03.
    Rechts = Rechts & Int(Rnd * 10) 
04.
Next
Um eine führende Null auszuschließen, kann natürlich die erste Stelle mit
Rechts = Int(Rnd * 9) + 1
vorbelegt und dann noch um 16 weitere Stellen nach obigem Muster ergänzt werden.

Grüße
bastla
Bitte warten ..
Mitglied: Dani
05.10.2012 um 21:58 Uhr
@bastla
Arr, hab ich das mit VB verwechselt? Sorry für die Fehlinfo.


Grüße,
Dani
Bitte warten ..
Mitglied: abeisema
06.10.2012 um 22:06 Uhr
Hallo bastla,

vielen Dank für die schnelle Hilfe.

gruss
Andreas
Bitte warten ..
Mitglied: Biber
07.10.2012, aktualisiert um 00:59 Uhr
[OT]

Moin bastla,

Zitat von bastla:
01.
Rechts = "" 
02.
 For i = 1 To 17 
03.
     Rechts = Rechts & Int(Rnd * 10) 
04.
 Next
Um eine führende Null auszuschließen, kann natürlich die erste Stelle mit
Rechts = Int(Rnd * 9) + 1
vorbelegt und dann noch um 16 weitere Stellen nach obigem Muster ergänzt werden.

Ja, das Ergebnis geht in die richtige Richtung...
Aber mit dem "Links" und "Rechts" solltest du noch mal überdenken
Lass es uns lieber neutral formulieren.
01.
strDigits = Int(Rnd * 9) + 1 
02.
For i = 1 To 16 
03.
    strDigits = strDigits & Int(Rnd * 10) 
04.
next
Sorry, aber die selbstdokumentierende Zeile "Rechts = Rechts & Int(Rnd * 10)" konnte ich nicht so stehen lassen.

Grüße
Biber
[/OT]
Bitte warten ..
Mitglied: bastla
07.10.2012 um 10:09 Uhr
[OT] Hallo Biber!

Hast ja recht - das war zu stark verkürzt; eigentlich hätte die Variable besser "RechterZahlenblock" (oder vielleicht "RechterTeilDerZeileNachDemTab" ) heißen sollen ...

Grüße
bastla
[/OT]
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
VBS Problem mit Objekten
gelöst Frage von MarethyuBatch & Shell2 Kommentare

Hallo liebes Forum, Diese Frage stelle ich auf die Gefahr hin ausgelacht zu werden, aber ich bin Neuling in ...

Batch & Shell

VBS Script in eine Textdatei ausgeben (VBS mit Batch zusammenführen)

gelöst Frage von Luuke257Batch & Shell5 Kommentare

Hallo zusammen! Vorweg, ich bin absoluter neuling im Scripten, ich habe mir das alles nur so zusammengebastelt und versuche ...

VB for Applications

VBS DateAdd Funktion Problem bei Uhrzeit 00:00:00

gelöst Frage von derhoeppiVB for Applications1 Kommentar

Hallo, ich habe folgendes Problem mit der Funktion. Ich lese aus der Registry einen Datumswert mit Uhrzeit aus. Die ...

Entwicklung

Chat via VBS

Frage von Questionmark93Entwicklung

Hey Community, wollte mal Fragen ob jmd auf die Schnelle ein VBS Skript hat das als "Chat" genutzt werden ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 1 TagWindows 105 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 1 TagAdministrator.de Feedback18 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 2 TagenHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 3 TagenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Windows Server
Standortvernetzung zu einem Strato VServer (Windows)
Frage von matzefratze81Windows Server10 Kommentare

Moin, ich komme aus einem Enterprise-Umfeld und habe den Fehler gemacht, dass ich mich auf ein kleines Unternehmen eingelassen ...

Grafikkarten & Monitore
4k EIZO Monitor, Fernseher und Splitter
Frage von LerxxeyGrafikkarten & Monitore9 Kommentare

Hallo Zusammen, vielleicht könnt ihr mir bei einem Problem helfen wo ich einfach nicht mehr weiterkomme Und zwar haben ...

TK-Netze & Geräte
Fax im Betrieb
Frage von gansa28TK-Netze & Geräte6 Kommentare

Hallo zusammen, Endlich wurden meine Gebete Erhört und der Rechner meines Bekannten dem ich etwas unter die Arme greife, ...

Windows Server
HyperV Failover Cluster Konzeption und Aufbau
Frage von snowboard86Windows Server5 Kommentare

Hallo liebe KollegInnen, Ich habe eine Frage zu Hyper V Failover-Clusters. Wir sind ein mittelständisches Handelsunternehmen und haben aktuell ...