pbe de tableau et textes dans une DLL...

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
freddix
Messages : 101
Inscription : dim. 08/févr./2004 19:37

pbe de tableau et textes dans une DLL...

Message par freddix »

Bon...

toujours des petits soucis avec ma DLL ...

J'ai une structure et son tableau :

Code : Tout sélectionner

Structure Entity_Type
  Name.s : Object.s : Image.s : Script.s
  Transparence.l : Scaling.f : HideBlack.l : NoLights.l : LightNing.l : CastShadow.l : AutoY.l : AdjustY.l
  Type.l : Format.l : Id.l : PhysicID.l : Active.l : MinLevel.l : Slot.l : Duration.l : Use.l : Cumulate.l
  Bonus1.l : Value1.l : Bonus2.l : Value2.l : Bonus3.l : Value3.l : Bonus4.l : Value4.l
  Force.l : Constitution.l : Intelligence.l : Vivacite.l : Dexterite.l : Charisme.l : Money.l
 EndStructure
Dim MEntity.Entity_Type( 256 ) 
Je définit une de ses composantes par une fonction de ma DLL ... et je l'affiche pour bien vérifier qu'elle ait été modifiée !
par exemple :

Code : Tout sélectionner

ProcedureCDLL SetName()
  MEntity( 1 )\Name = "Test"
  Temp$ = MEntity( 1 )\Name
  MessageRequester("Temporar Data NAME", Temp$ ) 
 EndProcedure
Jusque la, tout va bien, mon Requester me dit "Test" . Parfait
Maintenant, je crée une autre fonction dans ma DLL pour lire cette donnée.

Code : Tout sélectionner

ProcedureCDLL ShowName()
  Temp$ = MEntity( 1 )\Name
  MessageRequester("Temporar Data NAME", Temp$ ) 
 EndProcedure
Et bien la, surprise, il n'affiche plus rien !
pour lui c vide ...
Ce problème est peut-être consécutif à l'autre problème que j'ai avec ma DLL ( voir section bugs ) ... je ne sais pas . . .
Avatar de l’utilisateur
Crystal Noir
Messages : 892
Inscription : mar. 27/janv./2004 10:07

Message par Crystal Noir »

euh je sais pas du tout comment tu as agencé ca , mais dans ton premier bout de code, bien sur que ca marche, car tu viens juste d'entrer ta variable name.

Code : Tout sélectionner

MEntity( 1 )\Name = "Test"
Par contre quand tu appelles ton second code, est ce que auparavant tu n'aurais pas oublié de faire un set de ta variable Name ? (le truc tout con quoi). C'est à dire que tu vires ton requester de ta procédure Setname.

Puis tu appelles Setname et juste après Showname. et voit si ca marche.

Fais ce test par ex :

Code : Tout sélectionner

déclaration procedure
ProcedureCDLL SetName(nom.s,casetab.w) 
  MEntity( casetab )\Name = nom
EndProcedure

ProcedureCDLL ShowName(casetab.w) 
  Temp$ = MEntity( casetab )\Name 
  MessageRequester("Temporar Data NAME", Temp$ ) 
 EndProcedure 
et après dans ta boucle principale :

Code : Tout sélectionner

Setname("Test",1)
Showname(1)
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Ton code me semble correct.

Soit comme tu dis un prob dans la Dll, soit ton appel se fait avant de mettre une valeur dans le tableau (je ne pense pas que tu ai oublié de le remplir avant).

Essaye de retourner l'adresse du premier élément du tableau lorsque tu met une valeur et lorsque tu la lis. On doit avoir les mêmes valeurs.
Répondre