Bonjour à tous,
Je cherche à lire un fichier zippé et crypté (7Zip, mode ZipCrypto).
De nombreux sites et forums donnent des exemples pour crypter un fichier mais peu pour le décryptage.
Mes recherches m'ont amené à https://www.uweraabe.de/Blog/2017/03...rd-encryption/

En utilisant l'unité fournie et mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 
procedure TForm1.Button1Click(Sender: TObject);
var
  myZipFile:           TEncryptedZipFile;
  DecompressionStream: TStream;
  zh:                  TZipHeader;
  nIdx:                integer;
  sComponent:          string;
begin
  Memo1.Clear;
  myZipFile := nil;
 
  if TZipFile.IsValid(sFileName) then
  begin
    try
      myZipFile := TEncryptedZipFile.Create(sPassword);
      DecompressionStream := TStream.Create;
      myZipFile.Open(sFileName, zmRead);
 
      // Recherche des fichiers
      for nIdx := 0 to myZipFile.FileCount - 1 do
      begin
        sComponent := myZipFile.FileNames[nIdx];
        Memo1.Lines.Add(sComponent);
 
        myZipFile.Read(sComponent, DecompressionStream, zh);
        Memo1.Lines.Add(intToStr(DecompressionStream.size));
        Memo1.Lines.Add(intToStr(zh.UncompressedSize));
        Memo1.Lines.Add(intToStr(zh.CompressedSize));
 
        if DecompressionStream.size > 0 then
        begin
          DecompressionStream.Seek(soFromBeginning, 0);
          Memo1.Lines.LoadFromStream(DecompressionStream);
        end;
 
      end;
      myZipFile.Close;
    finally
 
      myZipFile.Free;
      DecompressionStream.Free;
    end;
  end;
end;
Le nom du fichier est bien trouvé, le tZipHeader me retourne bien un nombre d'octets décompressés et compressés cohérents, mais Memo1.Lines.LoadFromStream(DecompressionStream); me retourne systématiquement le défaut "DataError".
Suis-je en erreur sur la lecture du fichier, le décryptage (j'ai moi même crypté le fichier, donc pas de doute sur le Password) ou sur le transfert du tStream vers le tMemo ?
Merci pour votre aide.
Belle journée à tous.