xsharp.eu • x# Zipfile lesen - Page 2
Page 2 of 2

x# Zipfile lesen

Posted: Fri Mar 03, 2023 1:55 pm
by FFF
Horst,
i hear you :-) und bin ganz der gleichen Meinung.

Jedenfalls, als Tipp: Ich habe Dein Beispiel in Xide geholt, compiliert, die Fehler angesehen.
(Xide hat in Tools/Preferences/Advanced zwei SLEs für die Hilfe, im ersten steht bei mir:
https://learn.microsoft.com/en-us/dotnet/api/%value%
im zweiten
http://www.google.com/?gws_rd=ssl#q=%value%)

Cursor auf "Zipfile" gesetzt, F1, Firefox öffnet mit sich auf
https://learn.microsoft.com/en-us/dotne ... ew=net-7.0
und erstmal etwas gelesen.
Unter Remarks ist das " you must add a reference to the System.IO.Compression.FileSystem assembly in your project." drin, deshalb hast Du ja auch die Dll referenziert. Das ist aber der NAME der Dll. Nur MS weiß, warum das mitnichten bedeuten muss, dass es innen drin einen Typ (grob: eine Klasse) gleichen Namens geben wird - in diesem Fall gibt es ihn nicht, ergo der Compilerfehler, beim "USING System.IO.Compression.FileSystem". Da das "using" ja nur eine Bequemlichkeit ist, um nicht im Code die Langnamen schreiben zu müssen, habe ich es erstmal auskommentiert, um zu sehen, was dann passiert.

Erst kriegst Du den Static-Fehler um die Ohren, aber der zweite Fehler ist schon, das er nicht implizit aus einem Ziparchive ein Zipfile machen kann. Daraufhin hab ich das einfach mal in der Deklaration umgedreht, schwupp, gings.

Nein, nicht wirklich befriedigend, aber was ist schon perfekt. Man hangelt sich halt so hin ;-)

x# Zipfile lesen

Posted: Fri Mar 03, 2023 4:06 pm
by Horst
Falls mal einer das brauchen kann.

Öffnet ein Zipfile und liest die einzelnen 'text' files in einen string.

Code: Select all

USING System
USING System.Text
USING System.IO
USING System.IO.Compression

FUNCTION Start( ) AS VOID
	LOCAL cZipFile := "ubs.zip"	AS STRING  
	LOCAL oArchive			AS ZipArchive 
	LOCAL entry			AS ZipArchiveEntry 
	LOCAL cBuffer		        AS STRING

	oArchive := ZipFile.OpenRead(WorkDir()+cZipFile)

	FOREACH entry IN oArchive:Entries
	   	Console.WriteLine(entry:Name)     
		cBuffer := System.IO.StreamReader{ entry:open (),System.Text.Encoding.UTF8}:ReadToEnd()
		Console.WriteLine(cBuffer)     
	NEXT	
	oArchive:Dispose()	

	RETURN