PB erreur système sur dll unrar avec RARReadHeader
Stagiaire WDF
Inscrit:
05/07/2003 18:06
De Lyon (69)
Post(s): 28
Bonjour,

Mon objectif est de faire un composant permettant de décompresser des archives rar.
J'ai récupéré quelques ressources en vb interressantes sur le sujet.

Mais malheureusement, je reste toujours bloqué sur un problème système lorsque j'appelle la fonction "RARReadHeader".

Je suppose que le problème est situé au niveau de la déclaration des membres "ArcName" et "FileName" du type "RARHeaderData", par contre je ne sais pas comment résoudre ce problème.

Peut être que quelqu'un ayant plus d'expérience sur l'incorporation d'appels de dll avec des types complexes dans WD saura m'aider à comprendre ce problème ou à me fournir une piste.

L'objectif final de mon composant étant de fournir des fonctions de décompression pour rar,zip,cab et ace.

Vous trouverez en fin de messages les codes utilisés ainsi que la copie de l'erreur système.

Merci d'avance.

------------------------------------------------------------
//Code de la fonction principale:
FONCTION ExtraitRAR(sFichier est une chaîne, sOutDir est une chaîne, sPwd est une chaîne)
//CREATION : 20060910 15021673
//VARIABLES
bRes est un booléen
OpArch est RAROpenArchiveData
HeadRAR est RARHeaderData
HandleRAR est un entier sur 8 octets
HeaderLine est un entier sur 8 octets
exeUNRAR est un entier sur 8 octets
//CODE
bRes = Faux
OpArch:ArcName = sFichier
OpArch:CmtBuf = Répète(" ",16384)
OpArch:CmtBufSize = 16384
OpArch:OpenMode = 1
HandleRAR = _RAROpenArchive(&OpArch)
SI OpArch:OpenResult <> 0 ALORS RENVOYER bRes
SI sPwd <> "" ALORS _RARSetPassword( HandleRAR, sPwd)
bRes = Vrai
HeaderLine = _RARReadHeader(HandleRAR, &HeadRAR)
TANTQUE (HeaderLine <> 0)
Multitâche(-1)
HeaderLine = _RARReadHeader(HandleRAR, &HeadRAR)
FIN
//
_RARCloseArchive(HandleRAR)
RENVOYER bRes

//Code de la fonction Header en WD10
FONCTION PRIVÉ _RARReadHeader(HandleRAR, HeadRAR)
RENVOYER AppelDLL32("UnRAR.dll","RARReadHeader",HandleRAR, HeadRAR)
//Private Declare Function RARReadHeader Lib "UnRAR.dll" (ByVal hArcData As Long, ByRef HeaderData As RARHeaderData) As Long
//Ma déclaration en WD10
RARHeaderData est une structure
ArcName est une chaîne ASCIIZ sur 260
FileName est une chaîne ASCIIZ sur 260
nFlags est un entier sur 8 octets
nPackSize est un entier sur 8 octets
nUnpSize est un entier sur 8 octets
nHostOS est un entier sur 8 octets
nFileCRC est un entier sur 8 octets
nFileTime est un entier sur 8 octets
nUnpVer est un entier sur 8 octets
nMethod est un entier sur 8 octets
nFileAttr est un entier sur 8 octets
CmtBuf est une chaîne
nCmtBufSize est un entier sur 8 octets
nCmtSize est un entier sur 8 octets
nCmtState est un entier sur 8 octets
FIN

//Déclaration VB
Private Type RARHeaderData
ArcName As String * 260
FileName As String * 260
flags As Long
PackSize As Long
UnpSize As Long
HostOS As Long
FileCRC As Long
FileTime As Long
UnpVer As Long
Method As Long
FileAttr As Long
CmtBuf As String
CmtBufSize As Long
CmtSize As Long
CmtState As Long
End Type

//Déclaration doc de Unrar
====================================================================
int PASCAL RARReadHeader(HANDLE hArcData,
struct RARHeaderData *HeaderData)
====================================================================
Description
~~~~~~~~~~~
Read header of file in archive.
Parameters
~~~~~~~~~~
hArcData
This parameter should contain the archive handle obtained from the RAROpenArchive function call.
HeaderData
It should point to RARHeaderData structure:
struct RARHeaderData
{
char ArcName[260];
char FileName[260];
UINT Flags;
UINT PackSize;
UINT UnpSize;
UINT HostOS;
UINT FileCRC;
UINT FileTime;
UINT UnpVer;
UINT Method;
UINT FileAttr;
char *CmtBuf;
UINT CmtBufSize;
UINT CmtSize;
UINT CmtState;
};

//Erreur système
Erreur à la ligne 19 du traitement Procédure globale _RARReadHeader.
Vous avez appelé la fonction AppelDLL32.
Une erreur système inattendue est survenue.
Si cet incident se produit de manière systématique lorsque vous exécutez les mêmes manipulations, il est conseillé de transmettre au Support Technique Gratuit :
- une description des circonstances de l'incident
- les lignes de code, une fenêtre ou un projet permettant de reproduire le problème
- les informations techniques suivantes
Détails techniques :

Module : UnRAR.dll
Adresse de base : 01210000
Erreur système : Access violation (GPF)
EIP = 01213147
OS : Windows XP ou .NET Service Pack 2(5.1.2600)

Informations techniques

Projet : XtrACT

Dump de l'erreur du module <WD100VM.DLL> <10.01Bs>.

- Appel WL :
Traitement de <PG_XtrACT_RAR._RARReadHeader>, ligne <19>, thread <0>
Fonction <AppelDLL32>, n° de syntaxe <0>

- Niveau : erreur fatale (EL_FATAL)

- Code erreur : 1020

- Code erreur WD55 : 0

- Pas de code d'erreur système

- Pas de message d'erreur système

- Que s'est-il passé ?
Une erreur système inattendue est survenue.
Si cet incident se produit de manière systématique lorsque vous exécutez les mêmes manipulations, il est conseillé de transmettre au Support Technique Gratuit :
- une description des circonstances de l'incident
- les lignes de code, une fenêtre ou un projet permettant de reproduire le problème
- les informations techniques suivantes

Détails techniques :

Module : UnRAR.dll
Adresse de base : 01210000
Erreur système : Access violation (GPF)
EIP = 01213147
OS : Windows XP ou .NET Service Pack 2(5.1.2600)

- Infos de debug :
Registres :

EIP = 01213147 EBP = 0013EC3C
EAX = 00000000 EBX = 0000502C
ECX = FFFFFFFF EDX = 0013DBB0
ESI = 0000502C EDI = 0000502C

Pile des appels :

[UnRAR.dll (01210000)] 01213147

Fonction (0,18)

- Infos attachées :
EIT_DATEHEURE : 10/09/2006 16:43:41
EIT_PILEWL :
Procédure globale _RARReadHeader (PG_XtrACT_RAR._RARReadHeader), ligne 19
Procédure globale ExtraitRAR (PG_XtrACT_RAR.ExtraitRAR), ligne 35
Clic sur BTN_Test_RAR (FEN_Test.BTN_Test_RAR), ligne 3

- Identifiant dans le .err : 1020

Contribution le : 10/09/2006 17:04
_________________
@++
Créer un fichier PDF de la contribution Imprimer


Re: PB erreur système sur dll unrar avec RARReadHeader
Stagiaire WDF
Inscrit:
05/07/2003 18:06
De Lyon (69)
Post(s): 28
heu...

aucune idée ??

merci

Contribution le : 12/09/2006 19:04
_________________
@++
Créer un fichier PDF de la contribution Imprimer


Re: PB erreur système sur dll unrar avec RARReadHeader
Animateur WDF
Inscrit:
19/01/2004 13:48
De www.sigmasys.fr
Post(s): 988
Bonjour,

Pour infos : un Long en VB est un entier sur 4 octets en WinDev (Normalement un UINT est un entier sans signe sur 2 octets).
De plus, CmtBuf est un entier (car c'est un pointeur sur une chaine)

Bon dév.,

Totof

Contribution le : 12/09/2006 19:22

Edité par Totof sur 12/9/2006 19:50:50
_________________
[ Totof(Christophe LOGEL) réalise des développements spécifiques WinDev (Mon annonce wdforge), http://www.sigmasys.fr]
Créer un fichier PDF de la contribution Imprimer


Re: PB erreur système sur dll unrar avec RARReadHeader
Stagiaire WDF
Inscrit:
05/10/2005 12:32
De LA VARENNE SAINT HILAIRE
Post(s): 20
Je travail sur un projet similaire, plus précisement une classe de décompression intitulée Unrar utilisant la dll. Pour l'instant j'arrive à utiliser l'API pour lire l'en-tête et décompresser les fichiers contenu dans l'archive. J'avance doucement mais surement (pas bcp de tps, je travail sur un autre projet en ce moment), je proposerais cette ressource dès qu'elle sera finalisée.

Contribution le : 13/09/2006 13:34
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2