AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi ZipForge: Textdatei entpacken und in Stringliste einlesen
Thema durchsuchen
Ansicht
Themen-Optionen

ZipForge: Textdatei entpacken und in Stringliste einlesen

Ein Thema von devidespe · begonnen am 1. Mär 2012 · letzter Beitrag vom 1. Mär 2012
Antwort Antwort
devidespe

Registriert seit: 7. Sep 2006
Ort: Berlin
434 Beiträge
 
Delphi 10.4 Sydney
 
#1

ZipForge: Textdatei entpacken und in Stringliste einlesen

  Alt 1. Mär 2012, 10:45
Hi,

ich möchte ZipForge verwenden, um eine Textdatei mit ca. 50000 Zeilen aus einer Zip-Datei im Arbeitsspeicher zu entpacken und in eine TStringList einzulesen. Leider kennt ZipForge nur die 4 Entpackfunktionen ExtractFiles, ExtractToBuffer, ExtractToStream und ExtractToString, wovon letztere nur die Angabe eines normalen Strings erlaubt. Das reicht für diese Datenmenge natürlich nicht aus.

Geschrieben habe ich eine entsprechende Testfunktion, wie das ursprünglich mit der StringListe geplant war. Leider funktioniert ExtractToString mit diesem Parameter nicht:

Delphi-Quellcode:
procedure TMainForm.bnStartClick(Sender: TObject);
var testliste : TStringList;
begin
  testliste:=TStringList.Create; {initialize Stringlist}
  with Archiver do
  begin
    FileName := 'zipfile.zip';
    Password := 'test';
    OpenArchive;
    ExtractToString('TextFileWithinZipFile.txt', testliste);
    CloseArchive;
  end;
  ProcessStringList(testliste); {internal function to proces the contents of the stringlist}

  testliste.Free; {deinitialize stringlist}
end;
Kennt jemand einen anderen Weg, die Textdatei in die StringListe einzulesen, ohne temporär eine Textdatei zu erstellen und diese wiederum einzulesen?

Danke für die Vorschläge.
Devid
57 65 72 20 6C 65 73 65 6E 20 6B 61 6E 6E 2C 20 69 73 74 20 6B 6C 61 72 20 69 6D 20 56 6F 72 74 65 69 6C 21
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.366 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: ZipForge: Textdatei entpacken und in Stringliste einlesen

  Alt 1. Mär 2012, 10:48
Hi,

warum verwendest DU nicht ExtractToStream? Das ganze dann in einen MemoryStream speichern und den dann über StringList.LoadFromStream in deine Stringlist bringen?
  Mit Zitat antworten Zitat
devidespe

Registriert seit: 7. Sep 2006
Ort: Berlin
434 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: ZipForge: Textdatei entpacken und in Stringliste einlesen

  Alt 1. Mär 2012, 11:52
Hmm, der Ansatz klingt gut und ich habe die Procedure umgeschrieben. Entweder arbeitet ExtractToStream nicht richtig, oder ich mache was falsch. Die Ergebnisse des Streams und damit auch der Stringliste sind nach dem Einlesen leer. Anbei noch einmal der aktuelle Code mit der Testdatei als Anhang.

Delphi-Quellcode:
procedure TMainForm.bnStartClick(Sender: TObject);
var testliste : TStringlist;
    memorystream : TStream;
begin
  MemoryStream:=TMemoryStream.Create;

  with Archiver do
  begin
    FileName := 'testdatei.zip';
    OpenArchive;
    ExtractToStream('testdatei.txt', MemoryStream);
    CloseArchive;
  end;

  testliste:=TStringList.Create; {initialize Stringlist}
  testliste.LoadFromStream(MemoryStream);
  MemoryStream.Free;

  ProcessStringList(testliste); {internal function to proces the contents of the stringlist}

  testliste.Free; {deinitialize stringlist}
end;
Vielleicht kann jemand den entscheidenden Tipp geben...
Angehängte Dateien
Dateityp: zip testdatei.zip (150 Bytes, 11x aufgerufen)
Devid
57 65 72 20 6C 65 73 65 6E 20 6B 61 6E 6E 2C 20 69 73 74 20 6B 6C 61 72 20 69 6D 20 56 6F 72 74 65 69 6C 21
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.013 Beiträge
 
Delphi 12 Athens
 
#4

AW: ZipForge: Textdatei entpacken und in Stringliste einlesen

  Alt 1. Mär 2012, 12:07
Delphi-Quellcode:
MemoryStream.Position := 0;
testliste.LoadFromStream(MemoryStream);
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
devidespe

Registriert seit: 7. Sep 2006
Ort: Berlin
434 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: ZipForge: Textdatei entpacken und in Stringliste einlesen

  Alt 1. Mär 2012, 12:29
Danke, das war die Lösung.
Devid
57 65 72 20 6C 65 73 65 6E 20 6B 61 6E 6E 2C 20 69 73 74 20 6B 6C 61 72 20 69 6D 20 56 6F 72 74 65 69 6C 21
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:22 Uhr.
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