butterblume
Goto Top

For Next Anweisung

VBScript

Hallo zusammen, ich bin immer noch an dem Verschlüsselungs-Script.
Ich brauche eine For-Schlaufe. Mit "len" habe ich die Anzahl Zeichen von .txt Datei bekommen.
Das wäre Variable "laenge".
Jetzt wie kann ich diese "laenge" in dir For-Schlaufe verknüpfen? Etwa:
for 1 to laennge?
In dieser Anweisung soll folgendes passieren.
Und das für jede einzelne Zeichen.
Am Schluss sind alle Zeichen verschlüsselt.
SchreibeInDatei funktioniert nicht wirklich. Datei bleibt leer.

strSchreiben = Chr ( CByte ( AscB (strLesen) ) Xor CByte (AscB (strSchluessel) ) )

Function SchreibeInDatei
   Const ForReading = 1, ForWriting = 2, ForAppending = 8
   Dim fso, f
   Set fso = CreateObject("Scripting.FileSystemObject")  
   Set f = fso.OpenTextFile(strZieldatei, ForAppending, True)
   f.Write (strSchreiben) 
End Function

Danke für die Hilfe.

Content-Key: 89543

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

Printed on: April 26, 2024 at 00:04 o'clock

Member: Asmodeus
Asmodeus Jun 10, 2008 at 14:42:22 (UTC)
Goto Top
Hallo Butterblume,

hab mir noch einmal deinen Quelltext angesehen. Du willst also aus einer bestehenden Quelldatei einen Text lesen, den mit xor mit dem schlüssel verknüpfen und in eine bestehende Zieldatei schreiben, richtig?

Dann versuchs mal etwa so:


for i=1 to 'Länge des gelesenen Textstrings
strLesen = file.read (i)
strSchreiben = mid(strLesen,i,1) xor strSchluessel
'zeichen in textdatei schreiben
'etwa so: (zieldatei.write (strSchreiben))
next

Vielleicht solltest du auch vorher fso für die Quelldatei so belassen und ein fso2 für die Zieldaeti definieren.
Member: bastla
bastla Jun 10, 2008 at 16:41:51 (UTC)
Goto Top
Hallo Butterblume!

Es wäre vielleicht sinnvoller, im "alten" Thread fortzusetzen, oder zumindest den gesamten aktuellen Stand Deines Scripts zu posten.
Die Schleife ist tatsächlich mit
For i = 1 to laenge
einzuleiten.

Hinsichtlich des Schreibens:
Wenn Du tatsächlich jedes Zeichen sofort schreiben willst (anstatt den verschlüsselten Text zuerst in einer Variablen zu erstellen), solltest Du die Datei bereits vor der Schleife (zum Schreiben) öffnen, in der Schleife jeweils nur Deine obige Zeile 8 verwenden und nach der Schleife die Datei wieder schließen - eine eigene Function scheint mir übertrieben.

Sollten Du (oder Dein Ausbilder) auf die "Function" bestehen, dann würde ich
  • diese eher als "Sub" (da sie eigentlich ja keinen Rückgabewert liefert) titulieren,
  • die Festlegung der Konstanten und die Erzeugung des "fso"-Objekts an den Anfang des Scripts stellen (einmal genügt, da in VBS alle Konstanten/Variablen global sind),
  • die Datei nach dem Schreiben wieder schließen, und vor allem
  • diesen Programmteil (egal, ob als "Sub" oder als "Function") auch aufrufen!

Das könnte daher so aussehen:
Const ForReading = 1, ForWriting = 2, ForAppending = 8 
Dim fso, f 
Set fso = CreateObject("Scripting.FileSystemObject")   

...
For i = 1 to laenge
    ...
    SchreibeInDatei
Next
...

Sub SchreibeInDatei 
Set f = fso.OpenTextFile(strZieldatei, ForAppending, True) 
f.Write strSchreiben
f.Close
End Sub
Grüße
bastla
Member: Butterblume
Butterblume Jun 11, 2008 at 12:27:46 (UTC)
Goto Top
Danke Leuts, For/Next Anweisung funktioniert super.