PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zip datei binär einlesen


Gizm0
06.09.2002, 22:13
Hoi,

wie kann ich eine Zip datei von 2mb Grösse

in eine Variable einlesen

Mit Arrays oder so ich muss sich aber später wieder zusammensetzen können

Danke schonmal

Gizm0


fabian ackle
06.09.2002, 22:16
versuchs mal mit
Open "datei.zip" For Binary As #1 vieleicht hilft dir das weiter

greetz

fabian

Gizm0
07.09.2002, 11:13
Hoi,

jo das gleiche mache ich auch aber das Problem ist das eine 2mb grosse Zip datei nicht in einen String passt :(

Danke nochmal

Gizm0

Shooter
25.09.2002, 16:38
Ich verstehe nicht ganz, welchen Sinn das überhaupt haben soll. Hintergrundinfos?

DarkTemplar
29.09.2002, 13:16
Hi!!

Also erst einmal würde ich mich Shooter anschließen und fragen, was für einen Sinn das haben soll, eine ganze Datei einzulesen, aber wenn du unbedingt möchtest habe ich vielleicht eine Möglichkeit, die dich diesem Ziel näher bringt:

Bekanntlich kann ein String ja die Größe von 64 kb annehmen (mußte auch erst nachscheuen *g*). Du müßtest dann also nur eine for Schleife schreiben, die beinhaltet, dass nach rund 64000 Zeichen in die nächste Variable des Arrays geschrieben wird. Ich stelle mir das wie folgt vor:


Private Sub Ausleseroutine(Dateiname as String)
Dim Dateiinhalt() As String * 65535
Dim Dateilänge as Long
Dim Durchläufe as Integer
Dim i As Long
Dim ZuLesendeZeichen As Long

Dateilänge = FileLen(Dateiname)

Durchläufe = Int(Dateilänge/65535 + 0.5)
If Durchläufe > 1 Then ZuLesendeZeichen = 65535
Redim Dateiinhalt(Durchläufe)

Open Dateiname For Binary As #1

For i= 1 to Durchläufe
Dateiinhalt(i) = Input(ZuLesendeZeichen,#1)
If i = durchläufe - 1 then _
ZuLesendeZeichen = Dateilänge - Loc(1)
Next i


Das müßte eigentlich funktionieren, bloß wäre mir das nicht nur eindeutig zu viel Aufwand sondern auch etwas Rechen- bzw. Arbeitsspeicheraufwändig. Ich würde an deiner Stelle überlegen, ob es nicht auch ginge, nur bestimmte Abschnitte der Datei einzulesen und zu verändern.

Bye,
DarkTemplar

Shooter
29.09.2002, 19:33
Das Problem ist, dass irgendwann der Stapelspeicher voll ist. In C++ würd ich das daher auf dem freien Speicher anlegen (mit new oder malloc), aber in Visual Basic :( ...

DarkTemplar
03.10.2002, 21:02
Ich würde versuchen das Problem im Allgemeinen zu umgehen, denn aus meiner Sicht gibt es keinen vernünftigen Grund den Speicher mit 2 MB vollzuhauen anstatt das dynamisch zu machen und immer nur einen (oder ein paar wenige) Teil(e) der Datei zur Bearbeitung einzulesen.

Bye,
DarkTemplar

Shooter
04.10.2002, 15:13
Abgesehen davon dass es eh keinen Sinn zu haben scheint. Wenn schon kann man die Datei doch auch direkt bearbeiten. Man muss ja nicht alles in den Speicher laden, wie DarkTemplar schon gesagt hat.