Delphi-PRAXiS

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

DeddyH 21. Jun 2013 08:48

AW: .txt Datei aus .zip öffnen zum auslesen
 
Ich weiß nicht, ob alle geforderten Features enthalten sind, aber Du könntest Dir Abbrevia einmal anschauen.

Andreas Schilling 21. Jun 2013 09:47

AW: .txt Datei aus .zip öffnen zum auslesen
 
Danke für den Tip. Habe die Komponenten erst einmal erfolgreich unter D2007 installiert und werde in den nächsten Tagen probieren.

Gruß Andreas

Andreas Schilling 24. Jun 2013 06:16

AW: .txt Datei aus .zip öffnen zum auslesen
 
Habe die Komponenten jetzt ausprobiert. Es werden alle Anforderungen erfüllt. Es gibt ein Viewkomponente welche mir einfach den Inhalt der ZIP-Datei anzeigt ohne das das ich mich im Quelltext großartig darum kümmern muß. Mit Passwort verschlüsselte Dateien sind auch kein Problem und man kann die Elemente in der ZIP-Datei einzeln durchgehen und jede woanders hin entpacken. Und wie es aussieht auch kostenlos. Oder gibt es irgend welche Einschränkungen die ich übersehen habe?

Gruß Andreas

DeddyH 24. Jun 2013 07:02

AW: .txt Datei aus .zip öffnen zum auslesen
 
Von Einschränkungen ist mir nichts bekannt. Die Komponenten von TurboPower genossen früher einen guten Ruf, trotzdem ging die Firma pleite. Am Ende haben sie dann alles als OpenSource veröffentlicht, und andere haben dann die Weiterentwicklung übernommen.

Andreas Schilling 25. Jun 2013 06:05

AW: .txt Datei aus .zip öffnen zum auslesen
 
Professionell sieht das auch alles aus und so umfangreich. Da bekommt man gleich noch mehr Ideen was man alles damit machen ...

Gruß Andreas


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:00 Uhr.

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