PureBasic

Forums PureBasic
Nous sommes le Ven 18/Oct/2019 2:26

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 6 messages ] 
Auteur Message
 Sujet du message: LinkedList dans TailBite : Marche pas
MessagePosté: Dim 21/Mar/2004 15:17 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 24/Jan/2004 14:54
Messages: 3731
Je suis en train d'essayer de faire une lib avec TailBite, et j'ai une LinkedList dedans.
Le problème, c'est que cette liste n'est pas visible depuis le programme, et que ça m'affiche une erreur.
Pourtant, les LinkedList sont bien Globales, si je ne me trompes pas! :?

J'ai essayé de la mettre en dehors des procédures, dans la première, dans une procédre à part, dans une procédure _Init, j'ai toujours le même problème, j'ai ce message :
Code:
---------------------------
jaPBe - Erreur du compilateur !
---------------------------
Line 38: Menu() is not a function, an array, or a linked list
---------------------------
OK   
---------------------------


Pour les procedures Init, j'ai mis ça:

Code:
ProcedureDLL TestLang_Init()
  NewList Menu.s()
EndProcedure

ProcedureDLL TestLang_End()
  ClearList(Menu())
EndProcedure

Ce que je voudrais faire, c'est une lib qui permette de créer des menus "à la volée", comme dans mon dernier exemple, pour fair des programmes multi-langue.

Si quelqu'un pouvait me dire comment créer une LinkedList dans une lib pour qu'elle soit utilisable dans le programme, ça m'arrangerait bien!

Chris :)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: Lun 22/Mar/2004 15:04 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 22/Jan/2004 14:31
Messages: 3518
Localisation: Sourans
Salut Chris,


Effectivement, les listes chainées sont Globales mais dans le cas de librairies, il faut comprendre que c'est quelque chose d'hermétique qui a bien des variables globales mais qui ne sont connues que de la librairie elle-même. On peut y avoir accès en assembleur dans le code PB qui utilise la librairie, c'est ce que je fais lorsque je met au point une librairie lors des essais 'réels' pour vérifier l'état des valeurs dans la liste chainée.

Mais sinon, ça ne marchera pas à moins que quelque chose m'échappe :roll:


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: Lun 22/Mar/2004 15:27 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 24/Jan/2004 14:54
Messages: 3731
Je pense à un truc :idea:

Et si, par exemple, je fais une LinkedList avec une structure dans la librairie.

Je dois pouvoir acceder à cette structure depuis l'extérieur, et donc, l'associer à une autre LinkedList

Je me trompes??

Chris :)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: Lun 22/Mar/2004 15:34 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 22/Jan/2004 14:31
Messages: 3518
Localisation: Sourans
T'as pas un pt'it exemple, mais je ne crois pas car les variables déclarés dans la librairies en PB ne portent plus du tout le même nom avec le fichier assembleur générée, raison pourlaquelle ont peut y avoir accès en assembleur avec leur nouvelle dénomination sachant que liste chainée est gérée par PB avec 2 variables globales de type long qui sont totalement inconnues de l'utilisateur PB.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: Lun 22/Mar/2004 15:40 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 24/Jan/2004 14:54
Messages: 3731
Je vais essayer de faire un exemple, et je poste dès que c'est fait

Chris :)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: Lun 22/Mar/2004 16:17 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 24/Jan/2004 14:54
Messages: 3731
Bon, j'ai trouvé une astuce qui a l'air de fonctionner, mais pas avec une LinkedList. :(

Je fais une structure, avec un nombre maxi de valeurs par paramètres.

Voila le code, ce sera plus simple.

Code de la lib:

Code:
Structure MONTEST
  NbEntrees.b
  Octet.b[100]
  Mot.w[100]
  Long.l[100]
  Chaine.s[100]
EndStructure
Global Test.MONTEST

ProcedureDLL MaProc()
  For i = 0 To 10
    Test\NbEntrees = i
    Test\Octet[i] = i
    Test\Mot[i] = 256 + i
    Test\Long[i] = i * 32768
    Test\Chaine[i] = Chr(i + 65)
  Next
  ProcedureReturn @Test
EndProcedure


Et voilà le code pour récupérer les valeurs de la structure dans le programme:
Code:
Structure MONTEST
  NbEntrees.b
  Octet.b[100]
  Mot.w[100]
  Long.l[100]
  Chaine.s[100]
EndStructure

*Retour.MONTEST = MaProc()

Debug *Retour\NbEntrees

For i = 0 To *Retour\NbEntrees
  Debug *Retour\Octet[i]
  Debug *Retour\Mot[i]
  Debug *Retour\Long[i]
  Debug *Retour\Chaine[i]
  Debug "==================="
Next


Bon, c'est pas vraiment ce que je voulais, mais, comme dit le proverbe, "Faute de grive, on mange des merles"

Chris )


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 6 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  
cron

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye