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

Frage Entwicklung VB for Applications

Mitglied: abeisema

abeisema (Level 1) - Jetzt verbinden

05.10.2012, aktualisiert 22:21 Uhr, 2264 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
Apple

IOS 11.2.1 stopft HomeKit-Remote-Lücke

Tipp von BassFishFox vor 13 StundenApple

Das Update für iPhone, iPad und Apple TV soll die Fernsteuerung von Smart-Home-Geräten wieder in vollem Umfang ermöglichen. Apple ...

Windows 10

Windows 10 v1709 EN murkst bei den Regionseinstellungen

Tipp von DerWoWusste vor 18 StundenWindows 10

Dieser kurze Tipp richtet sich an den kleinen Personenkreis, der Win10 v1709 EN-US frisch installiert und dabei die englische ...

Webbrowser

Kein Ton bei Firefox Quantum über RDP

Tipp von Moddry vor 18 StundenWebbrowser

Hallo Kollegen! Hatte das Problem, dass der neue Firefox bei mir auf der Kiste keinen Ton hat, wenn ich ...

Internet

EU-DSGVO: WHOIS soll weniger Informationen liefern

Information von sabines vor 1 TagInternet4 Kommentare

Wegen der europäische Datenschutzgrundverordnung stehen die Prozesse um die Registrierung von Domains auf dem Prüfstand. Sollte die Forderungen umgesetzt ...

Heiß diskutierte Inhalte
Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server18 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Windows XP
Windows XP Aktivieren geht nicht
Frage von tetikmiroWindows XP13 Kommentare

Hallo Ich habe einen Windows XP mit einen vCenter Converter umgezogen auf eine ESXI. Soweit funktioniert dies auch ohne ...

Blogs
Immer wiederkehrende PHP Fehlermeldung bei Wordpress UTF-8 - ASCII
gelöst Frage von vcdweltBlogs11 Kommentare

Hi, seit einiger Zeit wird mein error_log meines Wordpress Blogs mit immer der gleichen Fehlermeldung überschwemmt. 14-Dec-2017 08:18:05 UTC ...

Switche und Hubs
Redundante L2 LWL Leitung über 2 Standorte - Spanning Tree - HP Equipment
gelöst Frage von ResolvSwitche und Hubs10 Kommentare

Hallo, ich stehe vor der Herausforderung eine Redundante L2 LWL Leitung über 2 Standorte herzustellen. Grundsätzliches Switching Know How ...