Bonjour,
J'ai une fonction à utiliser pour compresser un fichier dans un format particulier. La seule chose que j'ai c'est une dll avec les entêtes des fonctions C++.
Voici la fonction C++ que je souhaite utiliser:
Dans la mini doc fournie avec, j'ai juste la description de cette fonction:
Code : Sélectionner tout - Visualiser dans une fenêtre à part unsigned long compress(void* source, void* dest, unsigned long size)
- void* source = correspond aux données à compresser
- void* dest = buffer pour les données compressées
- unsigned long size = taille des données à compresser
- la fonction retourne la taille des données une fois compressées
Donc pour utiliser la dll, j'ai ajouté cette ligne avant l'implémentation:
Mais le problème ensuite est que je sais pas comment utiliser la fonction Je suis pas très bon lorsqu'il s'agit d'utiliser des pointeurs ou des flux...
Code : Sélectionner tout - Visualiser dans une fenêtre à part function compress(source : Pointer; dest : Pointer; taille : Longword) : Longword; stdcall; external 'comp.dll';
J'ai essayé ceci mais ça ne fonctionne pas, l'application plante avec une erreur "Access Violation at address xxxx"
Si quelqu'un a une idée... car je sais pas quoi faire de plus, je suis bloqué dessus depuis plusieurs heures. Merci d'avance
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 procedure TForm1.Button1Click(Sender: TObject); var tailleFichierSource : cardinal; streamSource : Tfilestream; streamDestination : TfileStream; begin //fichier à compresser streamSource := Tfilestream.create('D:\test.dat', fmOpenRead or fmShareExclusive); //destination ; le fichier test_c.dat est déja créé mais est vide streamDestination := Tfilestream.create('D:\test_c.dat', fmOpenWrite or fmShareDenyWrite); //récupère la taille du fichier à compresser tailleFichierSource := streamSource.size; try //appel de la fonction compress(streamSource,streamDestination,tailleFichierSource); finally //ferme les fichiers streamDestination.Free; streamSource.Free; end; end;
Partager