Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi .txt Datei aus .zip öffnen zum auslesen (https://www.delphipraxis.net/150827-txt-datei-aus-zip-oeffnen-zum-auslesen.html)

dumper 28. Apr 2010 12:41


.txt Datei aus .zip öffnen zum auslesen
 
Hallo nochmal ;)

Ich will den Inhalt einer .txt Datei, die mit den Buchstaben LOG_ beginnt aus einem .zip-Archiv auslesen.

Meine Kenntnisse sind noch Recht beschränkt deshalb suche ich hier Hilfe. Ich habe mir Delphizip besorgt..

die Methode ExtractFileToStream(Filename) hilft mir nicht weiter, weil ich ja nicht den ganzen Namen weiss..

wäre dankebar für hilfe

hoika 28. Apr 2010 13:05

Re: .txt Datei aus .zip öffnen zum auslesen
 
Hallo,

die Liste der Dateien in der Zip sollte sich mit deiner Komponente
auch auslesen können.

Schau dir mal

1

an.

Delphi-Quellcode:
for I:=1 to ZipMaster1.Count do
begin
  with ZipDirEntry(ZipMaster1.ZipContents[I-1]^) do
  begin
     SortGrid1.Cells[0,I] := FileName; //Dateiname
  end;
end;

Heiko

DeddyH 28. Apr 2010 13:32

Re: .txt Datei aus .zip öffnen zum auslesen
 
Und zum Dateinamen: Du könntest die Liste durchgehen und mit Delphi-Referenz durchsuchenAnsiStartsText prüfen, ob der aktuelle Dateiname mit "LOG_" beginnt.

dumper 28. Apr 2010 14:09

Re: .txt Datei aus .zip öffnen zum auslesen
 
Delphi-Quellcode:
 
...
try
   begin
   ZipMaster1 := TZipMaster.Create(nil);
   Zipmaster1.ZipFilename:=FileStr;
   for I:=1 to ZipMaster1.Count do
    begin
      with ZipDirEntry(ZipMaster1.ZipContents[I-1]^) do
      begin
        TempStr := copy(Filename,1,4);
        if TempStr = 'LOG_' then
        begin
          ZipFileStr := Filename;
        end;
      end;
    end;
    ZipData := ZipMaster1.ExtractFileToStream(ZipFileStr);
    ZipData.Position := 0;
    ZipData.SaveToFile(ExtractFilePath(ParamStr(0))+'temp.txt');
    memo1.Lines.LoadFromFile(ExtractFilePath(ParamStr(0))+'temp.txt');
    DeleteFile(ExtractFilePath(ParamStr(0))+'temp.txt');
    TempStr := memo1.Text;
    AnfangInt := pos('Link: ',TempStr);
    AnfangInt := AnfangInt + 6;
    TempStr := copy(TempStr,AnfangInt,length(TempStr));
    EndeInt := pos ('#$D#$A',TempStr); // #$D#$A Zeilenumbruch ..... EndeInt ergibt immer 0 .. #$D#$A wird iwie ignoriert
    Edit1.Text := copy(TempStr,1,EndeInt);
   end;
   finally
     ZipMaster1.Free;
   end;
end;

1. aktuellste Datei in einem Ornder suchen (nur .zips)
2. LOG_*unbekannt*.txt im XXX.zip ermitteln
3. Abspeichern und in ein Memo laden
4. Einem String übergeben
5. Substring Anfang mit Hilfe von pos finden
6. Ende bis zum Zeilenumbruch it Hilfe von pos finden... aber es wird einfach ingoriert.. weiss einer Rat?


neuen topic wär jetzt dafür etwas übertrieben
thx 4 answer

DeddyH 28. Apr 2010 14:26

Re: .txt Datei aus .zip öffnen zum auslesen
 
Dann müsste ja "#$D#$A" in der Datei stehen, das wird es aber bestimmt nicht. Versuch es mal so:
Delphi-Quellcode:
EndeInt := pos (sLineBreak,TempStr);

dumper 28. Apr 2010 14:28

Re: .txt Datei aus .zip öffnen zum auslesen
 
jop genau steht halt nicht drin..

hab jetzt ne andere lösung..
hab #$D#$A durch 'test123' ersetzt.. das hat pos dann wieder gefunden

*edit
deine lösung geht auch! thx

himitsu 28. Apr 2010 14:41

Re: .txt Datei aus .zip öffnen zum auslesen
 
Zitat:

Zitat von dumper
hab #$D#$A durch 'test123' ersetzt.. das hat pos dann wieder gefunden

Das geht?
Wo es doch angeblich nicht drin steht. :zwinker:

PS:
'#$D#$A' <> #$D#$A
und
#$D#$A = sLineBreak

Andreas Schilling 20. Jun 2013 15:30

AW: .txt Datei aus .zip öffnen zum auslesen
 
Da ich jetzt auch einmal mit Zipdateien arbeiten wollte und auch erfolgreich die Komponenten installiert habe konnte ich schon einfache Sachen wie entzippen machen. Wenn ich aber eine bestimmte Datei aus der Zipdatei rausfischen will wie hier im Beispiel wird ZipDirEntry angemeckert das Delphi nicht kennt. Woran kann das liegen?

Gruß Andreas

DeddyH 20. Jun 2013 15:34

AW: .txt Datei aus .zip öffnen zum auslesen
 
Dann ist ZipDirEntry anscheinend in einer Unit deklariert, die nicht in Deiner uses-Klausel enthalten ist.

Andreas Schilling 21. Jun 2013 08:12

AW: .txt Datei aus .zip öffnen zum auslesen
 
Das war mir in etwa schon klar. Stelle ich die Frage mal anders: als ich das Wort "ZipDirEntry" über den Explorer im Quelltext der Komponente gesucht habe wurde mir kein Ergebnis geliefert. Scheint es bei dieser Komponente also nicht zu geben. Stellt sich eine neue Frage: Gibt es mehrere Komponenten die Zipmaster heißen aber von unterschiedlichen Quellen kommen? Oder hat die aktuelle Version 1.9.1.19 von DelphiZip das einfach nur nicht mehr drinnen? Vieleicht arbeitet ja jemand mit den Komponenten und kann Hinweise geben. Oder jemand kennt eine andere Komponente mit der man folgendes machen kann:
Dateien zippen und mit Passwort verschlüsseln
Nach Auswahl der Zipdatei Inhalt auslesen können ohne extra Passwortabfrage - das mit dem Passwort wäre schön wenn es ginge muß aber nicht sein
einzelne Dateien aus der Zipdatei nacheinander in unterschiedliche Ordner entzippen können

Gruß Andreas


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:13 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz