Page 1 sur 2

FileSize dans une DLL PB = Erreur de retour VB [Résolu]

Publié : mer. 14/mai/2008 11:04
par Kwai chang caine
Bonjour à tous

J'ai un truc bizarre qui m'arrive encore.

Quand j'appelle une DLL PB avec VB et qu'il y a la fonction FileSize dedans, VB execute la DLL mais me repond "Convention d'appel de DLL incorrect", si je commente le FileSize, plus de message d'erreur de VBDAUBE 8O

Code : Tout sélectionner

ProcedureDLL Essai()

 If FileSize("c:\") <> -2 
 EndIf
 
EndProcedure
Vous reconnaitrez aisément que le code est on ne peux plus simple :D
Car un peu plus long, je comprend plus :lol:

Quelqu'un a t'il une idée sur cette affaire
Merci de votre aide.
Bonne journée

Publié : mer. 14/mai/2008 11:47
par Fanator
@ KCC
Dans aide PB :
Resultat = FileSize(NomFichier$)
Tu ne donne pas le nom du fichier...
S'il y a une autre explication je suis preneur.


@+

Publié : mer. 14/mai/2008 12:00
par poshu
en effet, ca semble le plus probable. Puis je poser une question? A quoi bon passer sous VB avec une DLL PB alors que tu as déjà PB?

Publié : mer. 14/mai/2008 12:17
par Kwai chang caine
@ KCC
Dans aide PB :
Resultat = FileSize(NomFichier$)
Tu ne donne pas le nom du fichier...
S'il y a une autre explication je suis preneur.
Bah je ne pense pas, car quand j'appelle la function a partir de pure tout gaze, pas d'erreur.
Mais quand j'apelle la meme fonction de VB, exactement celle que je vous ai mis, ça plante :?
Je retire le filesyze, ça remarche, donc c'est bien cette fonction qui envois une erreur a VB.
Je met bien le nom de fichier puisque j'ai mis "c:\" :roll:
Et avec PB ça retourne -2
Au fait, j'y pense ce serais pas le signe moins qui coincerait ??
A quoi bon passer sous VB avec une DLL PB alors que tu as déjà PB?
Bah, j'ai pas le choix, au boulot c'est VBA obligatoire :cry:

Moi je suis arrivé a imposer, VB6, c'est deja une revolution.
Et pour les petites applications, j'essais evidement de caser Pure le plus possible.

Mais tout ce petit monde doit tourner ensemble, je vous explique pas le bordel, et comment je me tire les cheveux entre VBA excel, Access, VB6 et Pure.

Parfois ils doivent avoir des modules communs, et les seuls modules communs qui existent sont les DLL standard que je peux créer en pure.
Le seul language que je sache "programmer" et qui fait des DLL standard c'est notre pure adoré.

Donc toutes les applis de n'importe quel language sont lancées par un prg pure, elle font toutes appel a une DLL pure ou dedans je met les fonctions que j'utilise le plus souvent.
ça marche du tonnere de dieu, sauf aujourd'hui avec le FileSyze :?

Et tu va rire ....mon reve c'est d'apprendre un peu le C, alors des que je saurais ecrire coucou c'est KCC en C, eh bah y'aura aussi des prg en C dans mon pack :oops:

Publié : mer. 14/mai/2008 13:52
par poshu
Je met bien le nom de fichier puisque j'ai mis "c:\" Rolling Eyes
ce n'est pas un fichier, mais un dossier.

Oki pour VB. Malheureusement, j'ai pas VB, et je peux pas tester pour t'aider.

Publié : mer. 14/mai/2008 14:37
par cha0s
peut être que tu doit retourner quelque chose.

Publié : mer. 14/mai/2008 15:23
par Kwai chang caine
Bah je vous ai mis un exemple simple, mais meme si je met le chemin d'un fichier qui existe, ça marche dans la DLL, et ça plante avec l'appel VB.

Je pense que FileSyze doit fouiller "quequepart" qui doit pas plaire à la DLL.

C'est pas grave, je vais attendre, peut etre qu'un as de la DLL, va trouver ça tout de suite, parce que les gestion DLL, c'est quand meme special.
Je vais poser la question chez lez les français d'en face, on sait jamais ...

Merci de votre aide

Publié : mer. 14/mai/2008 16:54
par Progi1984
t'as des exemples en c ou d'autres langages ?

Publié : mer. 14/mai/2008 16:56
par Ollivier

Code : Tout sélectionner

ProcedureDLL.L Essai(*NomFichier) 

  Protected TailleFichier.L

  TailleFichier = FileSize(PeekS(*NomFichier) ) 
  
  ProcedureReturn TailleFichier

EndProcedure

Publié : mer. 14/mai/2008 16:58
par Kwai chang caine
Bah non, tu sais bien que je suis une burne en prog depuis le temps que tu lis mes posts :oops:

Ce qui est fou, c'est que toutes les fonctions marchent et juste cette fonction filsesize de @#~é@ me renvois le message d'erreur.
C'est dingue non.

Je cherchais une autre fonction en API par exemple pour savoir si un fichier est present, mais j'ai pas trouvé, ce serait pour voir si c'est le fait de fouiner dans les fichiers qui plait pas à la DLL

Publié : mer. 14/mai/2008 17:04
par Kwai chang caine
Bonjour OLIVIER ça faisait longtemps ...

Merci pour ta procedure, mais j'ai meme pas besoin de retour, juste je demande de dire OK si le fichier existe sans ramener de valeur.

J'ai essayé de rajouter le L comme t'as mis mais c'est pareil :?

Code : Tout sélectionner

ProcedureDLL.l Essai()
 
  If FileSize("c:\BOOT.INI") <> -1
   MessageRequester("", "Ok")
  EndIf
 
EndProcedure
Le message box OK aparait bien, mais j'ai le message d'erreur à la fermeture quand je clique sur le bouton OK qui ferme le message box

Alors pourquoi ce bouffon de VB il recois ce message d'erreur

Publié : mer. 14/mai/2008 17:14
par Anonyme
ProcedureCDLL() ?

Publié : mer. 14/mai/2008 17:27
par Kwai chang caine
Cpl.Bator a écrit :ProcedureCDLL() ?
Kif kif bourricot :cry:

Mais je viens de m'appercevoir d'un truc de OUF.
Parce que KCC comme il est nul, en atendant vos geniales réponses, il met tous les mots dans tous les sens, jusqu'a qu'il y est plus l'erreur :lol:

Si je remplace

Code : Tout sélectionner

ProcedureDLL Essai() 
 If FileSize("c:\BOOT.INI") <> -1 
   MessageRequester("", "Ok") 
 endif 
EndProcedure  
Par

Code : Tout sélectionner

ProcedureDLL Essai() 
 Result = FileSize("c:\BOOT.INI") 
 If Result <> -1 
   MessageRequester("", "Ok") 
 endif 
EndProcedure  
Bah apparement ça marche 8O
J'y comprend couic ...

Alors la si c'est pas un bug de notre cher et tendre PB....

Publié : mer. 14/mai/2008 17:47
par Fanator
@KCC
Resultat = FileSize(NomFichier$)
Resultat donne la longueur du fichier en octets.
Tu as déjà vu un fichier de longueur négative :?:

Publié : mer. 14/mai/2008 17:49
par Kwai chang caine
Ou alors je n'est pas compris ce que tu as voulu me dire, mais quand filesize retourne -1 c'est que le fichier n'existe pas et -2 c'est que c'est pas un fichier mais un repertoire.
C'est pas moi qui le dit c'est l'aide PB :roll:

En tout cas maintenant ça marche.

On ne saura peut etre jamais encoire un des mysteres du monde de plus :lol:

Merci à tous