For i = 0 to ... Problem

Ich habe eine For-Schleife in meinem Programm:

For i = o to LenOfFile

Nexti

In meinem Fall ist LenOfFile = 400000. Dabei hänget sich der Computer auf. Ist das normal? Kann ich da was machen???

Hi!

Das dürfte weniger an der For-Schleife liegen, sondern an dem, was in der For-Schleife passiert.

Bei mir läuft jedenfalls ein For mit 400000 Durchläufen innerhalb von Millisekunden durch (mit drei einfachen Rechenoperationen).
Musst schon den Code in der For-Schleife posten.

Grüße
Heinrich

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Musst schon den Code in der For-Schleife posten.

Open FilePath For Binary As 2
For i = 1 To LenOfFile
Put #2, , by(Asc(Mid(File, i, 1)))
Next i
Close 2

Noch en par infos:

LenOfFile = 400000

Function by(value as Double) as Byte
by = value
End Function

hi,

als was hast du denn i deklariert?

MFG Alex

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

als was hast du denn i deklariert?

Option Explicit
Dim i As Double
Dim LenOfFile As Double
Dim FilePath As String
Dim File as String

Sub Main()
File = „…“ ’ 400000 Zeichen
LenOfFIle = Len(File)
FilePath = „C:\test.txt“
Export()
End Sub

Sub Export()
Open FilePath For Binary As 1
For i = 1 To LenOfFile
Put #1, , by(Asc(Mid(File, i, 1)))
Next i
Close 1
End Sub

Function by(value As Double) As Byte
by = value
End Function

Hallo Frank,

in der Zeile

Open FilePath For Binary As 1

erweitere sie mal auf

 Open FilePath For Binary As 1 len=1

desweiteren sehe ich nicht wo du das File öffnest aus dem du die Daten ausgelsen hast. Somit schreibst du nur binaer die Daten die in der Zeichenfolge „File“ liegen in die Datei text.txt.
Ich stelle mir nun die Frage, wie du die 400000 Zeichen in den String bekommst. Alleine eine zuweisung an den String in einer For Schleife dauert schon sehr lange.
Kann es sein das schon da der Fehler liegt?
Wenn ich mal deinen Code etwas modifiziere und eine zuweisung von

 file = space(400000)

mache und somit dem String 400000 Leerzeichen zuweise und dann deine gepostete Routine ausführe so funktioniert sie anstaendig und reibungslos.

Also schaue mal wie du dem String „File“ die 400000 Zeichen zuweisst oder poste mal explicit diesen Abschnitt.

MFG Alex

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Also den Abschnitt will ich nicht so hier schreicben, aber da liegt nicht der Fehler.

Aber was bringt denn „len=1“ wel die Datei soll ja nicht 1 lang sein.

Gruß
esel

Stimmt, schusselfehler von mir *schaem* dann ersetze die 1 durch die länge der gesamten eingabe.
Ansonsten funktioniert der Code einwandfrei.
am besten wird es wohl sein wenn du dein progg mal im step by step modus laufen laesst und schaust wo da der fehler liegt.
Ggbfls. schreibe mal in die erste folgendes.

Bsp.

Private Sub .....
on error goto fehler
 -\> deine Anweisungen
 exit sub
fehler:
 msgbox err.description
 resume next
end sub

so siehst du ob ein auftretender Fehler dein Problem verursacht.
Desweiteren, hast du Timer laufen?
das das Problem vielleicht dadurch stammt?

VLG Alex

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]