Niouzes.org  

Précédent   Niouzes.org > Forum > Newsgroup microsoft.public.fr.* 1 Forum > Newsgroup microsoft.public.fr.vb
S'inscrire FAQ Membres Calendrier Recherche Messages du jour Marquer les forums comme lus



Réponse

 

LinkBack Outils de la discussion Modes d'affichage
  #1 (permalink)  
Vieux 21/07/2008, 10h02
LE TROLL
 
Messages: n/a
Par défaut N'arrive pas à supprimer 1 DLL ???

Bonjour,

Comprends pas...

Je supprime en sortant (unload), un tas de
fichiers dans le même répertoire
"kill "nomFic.ext"
Mais quand j'arrive sur la dll (zlib.dll) pour les
zip, il me dit:
"75 : Erreur dans le chemin d'accès" (n'importe
quoi !!!) ???
Si j'affiche (app.path & "\zlib.dll"), j'ai bien
le bon endroit ???

Y aurait-il une spécificité pour une dll ???

Et si jamais la dll était encore utilisée ???
Je n'y connais rien en dll, est-ce que ça ne
pourrait pas venir de là ???
Comment on décharge (stoppe l'appel) d'une DLL ???
Car je crois que c'est depuis un module de classe
qui n'est pas de moi, que la dll est utilisée ???

Je mets ci-dessous le module, j'y comprends pas
tout, peut être verrez-vous comment être certain
que la dll n'est plus utilisée, ou comment faire
pour avoir ce résultat ???

--
Merci beaucoup, au revoir et à bientôt )
------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm

-----------le code du dudule de classe---------


' module de classe zipExtractionClass : loto Net
csv
'
Option Explicit
Private fh As Long
Private Declare Function CopyMemory Lib
"kernel32" Alias "RtlMoveMemory" (dest As Any, src
As Any, ByVal length As Long) As Long
Private Declare Function lstrcpy Lib "kernel32"
Alias "lstrcpyA" (ByVal lpBuffer As String, ByVal
lpString As Long) As Long
Private Declare Function lstrlen Lib "kernel32"
Alias "lstrlenA" (ByVal lpString As Long) As Long
Private Declare Function ZLibVer Lib "zlib"
Alias "zlibVersion" () As Long
Private Declare Function UnCompress Lib
"zlib.dll" Alias "uncompress" (dest As Any,
destLen As Any, src As Any, ByVal srcLen As Long)
As Long
Private Declare Function lCRC32 Lib "zlib.dll"
Alias "crc32" (ByVal crc As Long, Buffer As Any,
ByVal length As Long) As Long

Public Enum eZipError
zeZLibNotInstalled = 1
zeNotZipFile = 2
zeNoOpenZipFile = 3
zeUnsupportedCompressionMethod = 4
zeChecksumError = 5
zeFileNotFound = 10
zeFileAlreadyExists = 11
zeCantRemoveFile = 12
zeCantCreateFolder = 13
End Enum

Private Type typCentralFileHeader
CentralFileHeaderSigniature As Long
VersionMadeBy As Integer
VersionNeededToExtract As Integer
GeneralPurposeBitFlag As Integer
CompressionMethod As Integer
LastModFileTime As Integer
LastModFileDate As Integer
CRC32 As Long
CompressedSize As Long
UnCompressedSize As Long
FileNameLength As Integer
ExtraFieldLength As Integer
FileCommentLength As Integer
DiskNumberStart As Integer
InternalFileAttributes As Integer
ExternalFileAttributes As Long
RelativeOffsetOfLocalHeader As Long
End Type

Private Type typCenteralDirEnd
EndOFCentralDirSignature As Long
NumberOfThisDisk As Integer
NumberOfDiskWithCentralDir As Integer
EntriesInTheCentralDirThisOnDisk As Integer
EntriesInTheCentralDir As Integer
SizeOfCentralDir As Long
OffSetOfCentralDir As Long
ZipFileCommentLength As Integer
End Type

Private Type typLocalFileHeader
LocalFileHeaderSignature As Long
VersionNeededToExtract As Integer
GeneralPurposeBitFlag As Integer
CompressionMethod As Integer
LastModFileTime As Integer
LastModFileDate As Integer
CRC32 As Long
CompressedSize As Long
UnCompressedSize As Long
FileNameLength As Integer
ExtraFieldLength As Integer
End Type

Private Const EndOFCentralDirSignature As Long =
&H6054B50
Private Const CentralFileHeaderSigniature As Long
= &H2014B50
Private Const LocalFileHeaderSignature As Long =
&H4034B50

Private CentralFileHeader As typCentralFileHeader
Private CentralDirEnd As typCenteralDirEnd

Private CentralDirEndPos As Long

Public Event Progress(Percent As Long, Cancel As
Boolean)
Public Event Status(Text As String)
Public Event ZipError(Number As eZipError,
Description As String)

Public Function OpenZip(ZipPath As String) As
Boolean

RaiseEvent Status("Opening Zip")
CloseZip

If Not FileExists(ZipPath) Then
RaiseEvent ZipError(zeFileNotFound, "The
file " & ZipPath & " doesn't exist")
Exit Function
End If

fh = FreeFile
Open ZipPath For Binary As #fh

CentralDirEndPos = GetCentralDirEndPos(fh)
If CentralDirEndPos > 0 Then
OpenZip = True
RaiseEvent Status("Zip Opened")
Else
RaiseEvent ZipError(zeNotZipFile, "The file
" & ZipPath & " is not a Zip file")
End If

End Function

Public Sub CloseZip()
If fh <> 0 Then
Close #fh
fh = 0
RaiseEvent Status("Zip Closed")
End If
CentralDirEndPos = 0
End Sub

Public Function Extract(FolderPath As String,
Optional PreservePath As Boolean, Optional
Overwrite As Boolean) As Boolean
Dim l As Long
Dim FileName As String
Dim FilePos As Long
Dim Cancel As Boolean

If Len(ZLibVersion) = 0 Then
Exit Function
End If

RaiseEvent Status("Extracting Files")

If CentralDirEndPos = 0 Then
RaiseEvent ZipError(zeNoOpenZipFile, "There
is no Zip File Open")
Exit Function
End If

If Not FolderExists(FolderPath) Then
If Not CreateFolder(FolderPath) Then
RaiseEvent ZipError(zeCantCreateFolder,
"Can't create the folder " & FolderPath)
Exit Function
End If
End If

If ReadCentralDirEnd(CentralDirEndPos) Then
Seek #fh, CentralDirEnd.OffSetOfCentralDir +
1
For l = 1 To
CentralDirEnd.EntriesInTheCentralDir
ReadCentralFileHeader FileName
If CentralFileHeader.UnCompressedSize > 0
Then
If PreservePath Then
CheckFolder FolderPath,
GetFilePath(FileName)
Else
FileName = GetFileName(FileName)
End If
RaiseEvent Status("Extracting ...\" &
FileName)
FilePos = Seek(fh)
If FileExists(FolderPath & "\" &
FileName) Then
If Overwrite Then
If RemoveFile(FolderPath & "\" &
FileName) Then
ExtractFile FolderPath & "\"
& FileName
Else
RaiseEvent
ZipError(zeCantRemoveFile, "Can't remove the file
" & FolderPath & "\" & FileName)
End If
Else
RaiseEvent
ZipError(zeFileAlreadyExists, "The file " &
FolderPath & "\" & FileName & " already exists")
End If
Else
ExtractFile FolderPath & "\" &
FileName
End If
Seek fh, FilePos
End If
DoEvents
RaiseEvent Progress((l /
CentralDirEnd.EntriesInTheCentralDir) * 100,
Cancel)
If Cancel Then
Exit Function
End If
Next
Extract = True
End If

RaiseEvent Status("Extraction Complete")

End Function

Private Function GetFileName(Path As String) As
String

Dim l As Long

l = InStrRev(Path, "\")
If l > 0 Then
GetFileName = Right$(Path, Len(Path) - l)
Else
GetFileName = Path
End If

End Function

Private Function GetFilePath(Path As String) As
String

Dim l As Long

l = InStrRev(Path, "\")
If l > 0 Then
GetFilePath = Left$(Path, l - 1)
End If

End Function

Private Sub CheckFolder(ByVal FolderPath As
String, CheckPath As String)

Dim s() As String
Dim v As Variant

s = Split(CheckPath, "\")
For Each v In s
FolderPath = FolderPath & "\" & v
If Not FolderExists(FolderPath) Then
MkDir FolderPath
End If
Next

End Sub

Private Sub ReadCentralFileHeader(FileName As
String)

Dim ExtraField As String
Dim Comment As String

Get #fh, , CentralFileHeader
If
CentralFileHeader.CentralFileHeaderSigniature =
CentralFileHeaderSigniature Then
FileName =
Space(CentralFileHeader.FileNameLength)
Get #fh, , FileName
FileName = Replace(FileName, "/", "\")
ExtraField =
Space(CentralFileHeader.ExtraFieldLength)
Get #fh, , ExtraField
Comment =
Space(CentralFileHeader.FileCommentLength)
Get #fh, , Comment
End If

End Sub

Private Function ReadCentralDirEnd(Position As
Long) As Boolean
' Dim l As Long
Dim ZipComment As String

Get #fh, Position, CentralDirEnd
ZipComment =
Space(CentralDirEnd.ZipFileCommentLength)
Get #fh, , ZipComment

ReadCentralDirEnd =
CentralDirEnd.NumberOfThisDisk =
CentralDirEnd.NumberOfDiskWithCentralDir

End Function

Private Function ExtractFile(Path As String) As
Boolean

Dim LocalFileHeader As typLocalFileHeader
Dim b() As Byte

Dim FileName As String
Dim ExtraField As String

Get #fh,
CentralFileHeader.RelativeOffsetOfLocalHeader + 1,
LocalFileHeader
If LocalFileHeader.LocalFileHeaderSignature =
LocalFileHeaderSignature Then
FileName =
Space(LocalFileHeader.FileNameLength)
Get #fh, , FileName
ExtraField =
Space(LocalFileHeader.ExtraFieldLength)
Get #fh, , ExtraField
ReDim b(LocalFileHeader.CompressedSize - 1)
Get #fh, , b
If CentralFileHeader.CompressionMethod = 0
Then 'No Compression
SaveFile Path, b
ElseIf CentralFileHeader.CompressionMethod =
8 Then 'Deflate Method
If UnCompressBytes(b,
LocalFileHeader.CompressedSize,
LocalFileHeader.UnCompressedSize,
LocalFileHeader.CRC32) Then
SaveFile Path, b
Else
RaiseEvent ZipError(zeChecksumError,
"Data checksum error in " & Path)
End If
Else
RaiseEvent
ZipError(zeUnsupportedCompressionMethod, "The
compression Method for " & FileName & " is
unsupported")
End If
End If

End Function

Private Function FileExists(Path) As Boolean
On Error Resume Next
FileExists = Not (Len(Dir$(Path, vbNormal)) = 0)
End Function

Private Function FolderExists(Path) As Boolean
FolderExists = Not (Len(Dir$(Path, vbDirectory))
= 0)
End Function

Private Function CreateFolder(Path As String) As
Boolean
On Error GoTo eh
MkDir Path
CreateFolder = True
eh:
End Function

Private Function RemoveFile(Path As String) As
Boolean

On Error GoTo eh

Kill Path
RemoveFile = True

eh:
End Function

Private Function GetCentralDirEndPos(fh As Long)
As Long

Dim Data() As Byte
Dim l As Long
Dim m As Long

ReDim Data(LOF(fh) - 1)
Get #fh, , Data

For l = UBound(Data) - 3 To LBound(Data)
Step -1
CopyMemory m, Data(l), 4
If m = EndOFCentralDirSignature Then
GetCentralDirEndPos = l + 1
Exit Function
End If
Next

End Function


Private Function UnCompressBytes(Buffer() As Byte,
CompressedSize As Long, UnCompressedSize As Long,
CRC32 As Long) As Boolean
Dim b() As Byte
Dim BufferSize As Long
Dim FileSize As Long
Dim crc As Long
Dim r As Long
ReDim b(UBound(Buffer) + 2)
'Zlib's Uncompress method expects the 2 byte
head that the Compress method adds
'so we put that on first. Luckily it's always
the same value.
b(0) = 120
b(1) = 156
CopyMemory b(2), Buffer(0), UBound(Buffer) + 1
FileSize = UBound(Buffer) + 3
BufferSize = CentralFileHeader.UnCompressedSize
* 1.01 + 12
ReDim Buffer(BufferSize - 1) As Byte
r = UnCompress(Buffer(0), BufferSize, b(0),
FileSize)
ReDim Preserve
Buffer(CentralFileHeader.UnCompressedSize - 1)
crc = lCRC32(0&, Buffer(0), UBound(Buffer) + 1)
If crc = CRC32 Then UnCompressBytes = True
End Function


Private Sub SaveFile(Path As String, Data() As
Byte)
Dim lfh As Long
lfh = FreeFile
Open Path For Binary As #lfh
Put #lfh, , Data
Close #lfh
End Sub

Private Function PointerToString(Pointer As Long)
As String
Dim l As Long
Dim s As String
l = lstrlen(Pointer)
s = Space(l)
l = lstrcpy(s, Pointer)
If l > 0 Then
PointerToString = s
End If
End Function

Public Property Get ZLibVersion() As String

On Error GoTo eh

ZLibVersion = PointerToString(ZLibVer)

Exit Property
eh:

RaiseEvent ZipError(zeZLibNotInstalled, "Zlib
is not installed")

End Property

Private Sub Class_Terminate()

CloseZip

End Sub


------------------------------------------------------------------------------------


Réponse avec citation
Alt Today
Advertising
Google Adsense
 
This advertising will not be shown
in this way to registered members.
Register your free account today
and become a member on
Niouzes.org
Standard Sponsored Links

  #2 (permalink)  
Vieux 21/07/2008, 11h00
Jean-marc
 
Messages: n/a
Par défaut Re: N'arrive pas à supprimer 1 DLL ???

LE TROLL wrote:
> Bonjour,


> Mais quand j'arrive sur la dll (zlib.dll) pour les
> zip, il me dit:
> "75 : Erreur dans le chemin d'accès" (n'importe
> quoi !!!) ???


La traduction est en effet très approximative.

Le vrai message d'erreur 75 c'est:
"Path/File access error"

Ce que l'on devrait traduire par:
"Erreur lors de l'accès au fichier"

Ce qui ne veux pas dire que le chemin est incorrect ou
que le fichier est absent, mais simplement qu'une
erreur s'est produite lors de l'accès au fichier pour
effectuer l'opération demandée.

A ne pas confondre avec l'erreur 76 : "Path not found"
(chemin non trouvé).

> Et si jamais la dll était encore utilisée ???


C'est certainement le cas.

> Je n'y connais rien en dll, est-ce que ça ne
> pourrait pas venir de là ???


Oui.

> Comment on décharge (stoppe l'appel) d'une DLL ???


En supprimant toute référence ou instanciation de cette
classe.

L'utilisation des classes n'est pas compliquée mais demande en
revanche de bien comprendre les implications sous-jacentes,
pour ne pas justement tomber dans ce genre de problèmes.

La doc de VB est très bien faite et de nombreux chapitres sont
consacrés aux classes et à leur usage.

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2***yahoo.fr




Réponse avec citation
  #3 (permalink)  
Vieux 21/07/2008, 12h00
LE TROLL
 
Messages: n/a
Par défaut Re: N'arrive pas à supprimer 1 DLL ???

Merci Jean-Marc, je vais voir avant si elle
accepte d'être changé de nom ???

Ben sinon, faut que je trouve comment arrêter
cette liaison (s'il y a)...

--
Merci beaucoup, au revoir et à bientôt )
------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"Jean-marc" <jm***nowhere.invalid> a écrit dans le
message de news:
48845e51$0$2870$ba620e4c***news.skynet.be...
| LE TROLL wrote:
| > Bonjour,
|
| > Mais quand j'arrive sur la dll (zlib.dll) pour
les
| > zip, il me dit:
| > "75 : Erreur dans le chemin d'accès"
(n'importe
| > quoi !!!) ???
|
| La traduction est en effet très approximative.
|
| Le vrai message d'erreur 75 c'est:
| "Path/File access error"
|
| Ce que l'on devrait traduire par:
| "Erreur lors de l'accès au fichier"
|
| Ce qui ne veux pas dire que le chemin est
incorrect ou
| que le fichier est absent, mais simplement
qu'une
| erreur s'est produite lors de l'accès au fichier
pour
| effectuer l'opération demandée.
|
| A ne pas confondre avec l'erreur 76 : "Path not
found"
| (chemin non trouvé).
|
| > Et si jamais la dll était encore utilisée ???
|
| C'est certainement le cas.
|
| > Je n'y connais rien en dll, est-ce que ça ne
| > pourrait pas venir de là ???
|
| Oui.
|
| > Comment on décharge (stoppe l'appel) d'une DLL
???
|
| En supprimant toute référence ou instanciation
de cette
| classe.
|
| L'utilisation des classes n'est pas compliquée
mais demande en
| revanche de bien comprendre les implications
sous-jacentes,
| pour ne pas justement tomber dans ce genre de
problèmes.
|
| La doc de VB est très bien faite et de nombreux
chapitres sont
| consacrés aux classes et à leur usage.
|
| --
| Jean-marc Noury (jean_marc_n2)
| Microsoft MVP - Visual Basic
| FAQ VB: http://faq.vb.free.fr/
| mailto: remove '_no_spam_' ;
_no_spam_jean_marc_n2***yahoo.fr
|
|
|
|


Réponse avec citation
  #4 (permalink)  
Vieux 21/07/2008, 22h42
LE TROLL
 
Messages: n/a
Par défaut Re: N'arrive pas à supprimer 1 DLL ???

Suite, suite, j'ai trouvé un truc:

set x = nothing

Le problème est que je ne sais pas comment tester
si déjà vide, car si je fais:

msgbox x

Ça plante car j'appelle le module... je présume
???

Et comme le module de classe est appelé dans une
procédure différente de celle de la fermeture
(unload):

sub y()
Dim x As classe
Set x = New classe
....
end sub

Ben ça ne marche pas non plus !

As-tu une idée, déjà savoir si elle est déchargée
???

--
Merci beaucoup, au revoir et à bientôt )
------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
"Jean-marc" <jm***nowhere.invalid> a écrit dans le
message de news:
48845e51$0$2870$ba620e4c***news.skynet.be...
| LE TROLL wrote:
| > Bonjour,
|
| > Mais quand j'arrive sur la dll (zlib.dll) pour
les
| > zip, il me dit:
| > "75 : Erreur dans le chemin d'accès"
(n'importe
| > quoi !!!) ???
|
| La traduction est en effet très approximative.
|
| Le vrai message d'erreur 75 c'est:
| "Path/File access error"
|
| Ce que l'on devrait traduire par:
| "Erreur lors de l'accès au fichier"
|
| Ce qui ne veux pas dire que le chemin est
incorrect ou
| que le fichier est absent, mais simplement
qu'une
| erreur s'est produite lors de l'accès au fichier
pour
| effectuer l'opération demandée.
|
| A ne pas confondre avec l'erreur 76 : "Path not
found"
| (chemin non trouvé).
|
| > Et si jamais la dll était encore utilisée ???
|
| C'est certainement le cas.
|
| > Je n'y connais rien en dll, est-ce que ça ne
| > pourrait pas venir de là ???
|
| Oui.
|
| > Comment on décharge (stoppe l'appel) d'une DLL
???
|
| En supprimant toute référence ou instanciation
de cette
| classe.
|
| L'utilisation des classes n'est pas compliquée
mais demande en
| revanche de bien comprendre les implications
sous-jacentes,
| pour ne pas justement tomber dans ce genre de
problèmes.
|
| La doc de VB est très bien faite et de nombreux
chapitres sont
| consacrés aux classes et à leur usage.
|
| --
| Jean-marc Noury (jean_marc_n2)
| Microsoft MVP - Visual Basic
| FAQ VB: http://faq.vb.free.fr/
| mailto: remove '_no_spam_' ;
_no_spam_jean_marc_n2***yahoo.fr
|
|
|
|


Réponse avec citation
 
Réponse
Tags: , ,



Outils de la discussion
Modes d'affichage

Règles de messages
Vous pouvez ouvrir de nouvelles discussions : nonoui
Vous pouvez envoyer des réponses : nonoui
Vous pouvez insérer des pièces jointes : nonoui
Vous pouvez modifier vos messages : nonoui

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Discussions similaires

Discussion Auteur Forum Réponses Dernier message
je n'arrive pas a supprimer mises à jour indésirables de windows kanak1951 Newsgroup microsoft.public.fr.windowsxp 0 12/03/2008 21h52
la grippe prévue n'arrive pas.............. trallala Newsgroup fr.soc.environnement 0 30/12/2007 19h10
je n'arrive pas à me deconnecter bilessi Newsgroup microsoft.public.fr.windows.live.messenger 0 15/12/2007 09h23
Je n'arrive plus à répondre Nibroc Newsgroup microsoft.public.fr.windowsxp.materiel 3 15/11/2007 12h53
Je n'arrive pas a poster ici joao Newsgroup fr.comp.normes.unicode 0 25/08/2004 23h27


Fuseau horaire GMT. Il est actuellement 23h51.

Italiano - German - English - Español


Édité par : vBulletin® version 3.6.8
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO 3.1.0 © 2007, Crawlability, Inc. Tous droits réservés.
Version française #13 par l'association vBulletin francophone


Politique - Droit - Philosophie - Football - Medicine - Française - Bricolage - Photo - Mac Os X - Divers - Physique - Jardinage
Mecanique - Moto - Photographie - Rail - Route - Aviation - Cinema - Linux - Psychanalyse - Finance - Enigmes - Rugby
Environnement - Histoire - Programmes TV - Education - Travail - Voyages - Windows - Immobilier - Cuisine
Windows XP - Excel - Word - Outlook - Access - Internet Explorer - Office - Vista

Page generated in 0,40072 seconds with 11 queries