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

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

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

Message 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
Dernière modification par Kwai chang caine le mer. 14/mai/2008 17:51, modifié 1 fois.
Fanator
Messages : 20
Inscription : jeu. 19/avr./2007 8:14

Message 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.


@+
poshu
Messages : 1138
Inscription : sam. 31/juil./2004 22:32

Message 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?
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message 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:
poshu
Messages : 1138
Inscription : sam. 31/juil./2004 22:32

Message 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.
cha0s
Messages : 681
Inscription : sam. 05/mars/2005 16:09

Message par cha0s »

peut être que tu doit retourner quelque chose.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message 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
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

t'as des exemples en c ou d'autres langages ?
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

Code : Tout sélectionner

ProcedureDLL.L Essai(*NomFichier) 

  Protected TailleFichier.L

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

EndProcedure
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message 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
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message 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
Anonyme

Message par Anonyme »

ProcedureCDLL() ?
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message 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....
Fanator
Messages : 20
Inscription : jeu. 19/avr./2007 8:14

Message 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 :?:
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message 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
Répondre