Bonsoir,

Après avoir passé vainement un peu de temps avec 'mon ami Google', je viens à vous avec mon problème.

C'est en voulant afficher le nom d'un fichier contenu dans un fichier zip que je cale.

Voici la procédure de test du problème


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
 
 
// ajout dans la clause uses de   System.Zip,
 
// la procédure appelée via un bouton :
 
procedure TForm1.BtnFilesInfosClick(Sender: TObject);
var
	Zip     : TZipFile;	
  Infos_Fichier : system.Zip.TZipHeader;
 
  Nom_de_Fichier_String     : string;
  Nom_de_Fichier_ANSIString : ANSIString;
	j : integer;
begin
  Zip := TZipFile.Create;
  Zip.Open('D:\fic.zip', zmread);
  Infos_Fichier := Zip.FileInfo[0];  // le fichier pointé se nomme é.txt
 
	Nom_de_Fichier_String := '';
  for j := 0 to Infos_Fichier.FileNameLength - 1 do
    Nom_de_Fichier_String := Nom_de_Fichier_String + Char(Infos_Fichier.FileName[j]);
  ShowMessage(Nom_de_Fichier_String);  // résultat affiché :  '.txt'
 
	Nom_de_Fichier_ANSIString := '';
  for j := 0 to Infos_Fichier.FileNameLength - 1 do
    Nom_de_Fichier_ANSIString := Nom_de_Fichier_ANSIString + ANSIChar(Infos_Fichier.FileName[j]);
  ShowMessage(Nom_de_Fichier_ANSIString);  // résultat affiché : ',.txt'
 
{
 
En exécutant en mode pas à pas cette procédure je vois que Infos_Fichier.FileName
contient en décimal les valeurs : 130, 46, 116, 120, 116 (ou en hexadécimal : 82, 2E, 74, 78, 74) 
 
J'ai remarqué que dans la table ascii étendu le caractère 'é' est codé (en hexadécimal) 82.
 
Comment afficher correctement ce caractère accentué?
 
}
 
end;
Merci de bien vouloir m'aider.

Jean-Jacques.