Page 1 sur 1
Evolution de codes source obsolètes
Publié : lun. 16/juin/2008 19:03
par Danydoc
Bonjour,
Je découvre PureBasic en devant modifier du code (datant de 2004 et que je n'ai pas écrit) et me heurte à un problème de compatibilité ascendante après chargement de la version 4.20.
Il s'agit de certaines variables purebasic ( comme #PB_EventGadget, ou #PB_EventCloseWindow ) et de fonctions ( comme EventGadgetID() )
Je me trouve donc un peu perdu et aimerais trouver de l'aide auprès de développeurs ayant connu ces fonctions et variables obsolètes.
Merci à qui me sortira de cet embarras.
Cordialement,
Danydoc
Publié : lun. 16/juin/2008 19:08
par Backup
tu peux utiliser un prg qui s'appelleriot
PBSourceConverter
il va pouvoir te convertir la plupart des codes en code version 4.00
vas voir ici :
http://www.purearea.net/pb/showcase/show.php?id=334
Publié : lun. 16/juin/2008 19:10
par Octavius
Tu devrais poster ton code pour qu'on puisse t'aider.
L'historique est aussi d'une aide précieuse pour mettre à jour un ancien code, chaque fois qu'une ancienne fonction est changée ou supprimée la nouvelle fonction correspondante est indiquée.
Publié : lun. 16/juin/2008 19:12
par comtois
Bonne suggestion Dobro , je n'y pensais plus à celui là.
Sinon tu peux aussi ouvrir ton fichier aide , et dans la page historique, tu vas à cette date
8 Mai 2006 : Version 4.00
Tu trouveras cette phrase
Comme PureBasic 4 est une mise à jour très conséquente aussi bien en terme de nouveautés que de changements, un document résumant toutes les modifications effectuées sur les bibliothèques depuis la dernière version stable est disponible ici.
Tu n'auras plus qu'à cliquer sur le mot ici pour avoir le détail des changements entre la version 3.94 et les versions 4.x
Publié : mar. 17/juin/2008 6:25
par Stefou
Les nouvelles constantes :
#PB_Event_CloseWindow
#PB_Event_Gadget
La nouvelle fonction
EventGadget()
Si tu installe JaPbe, ces "mots" là sont complété automatiquement. C'est plus facile pour retrouver les nouveau mots !
Bon courage
Evolution de codes source obsolètes
Publié : mar. 17/juin/2008 16:00
par Danydoc
Merci Dobro pour ce conseil de conversion : ça marche !
Merci à Comtois pour cet accès aux modifs du 8 mai06 ; mais je n'y ai pas trouvé ce que je cherchais sur le traitement des chaines de caractères.
Merci à Octavius pour cette proposition d'aide par envoi du code pour correction. C'est un peu ce qui me tente maintenant que je tourne en rond dans ma recherche.
Merci enfin à Stefou pour son conseil, immédiatement appliqué, d'install de JapBe.
Voici la section de code dont le comportement a changé :
NoLigne.l = 0 : Ligne.s = ""
Repeat
NoLigne = NoLigne +1
Ligne = Ligne + ReadString(0) +Chr(13) + Chr(10)
MessageRequester("Lecture Message : ", "ligne :" + Str(NoLigne) + " " + Ligne, #PB_MessageRequester_Ok) ; mode debug
Until NoLigne = 10
SetGadgetText(#Texte_10x32, Ligne)
CloseFile(0)
Le fichier texte lu est toujours composé de 10 lignes de 32 caractères.
La version précédente les affiche correctement dans la fenêtre nommée "#Texte_10x32"
La version actuelle n'affiche plus que la première ligne.
Pourtant MessageRequester montre bien une concaténation des lignes lues.
Tout se passe comme si qqe chose était changée dans la définition d'une chaine...
Bonne fin de journée à ts 4
Bien cordialement,
Danydoc
Publié : mar. 17/juin/2008 16:13
par comtois
C'est un StringGadget ton #Texte_10x32 ?
Si c'est le cas , remplace le par un editorGadget()
Publié : mar. 17/juin/2008 17:36
par Danydoc
comtois a écrit :
C'est un StringGadget ton #Texte_10x32 ?
Si c'est le cas , remplace le par un editorGadget()
#Texte_10x32 est effectivement un StringGadget !
Listé dans une section "Enumération", ses paramètres sont définis au sein d'une Procédure. Son remplacement par EditorGadget (dans lequel j'ai mis l'option de lecture seule) supprime le problème et l'exécutable retrouve le comportement connu de l'ancien code.
C'est une chance qu'aucune option de StringGadget n'ait été utilisée par #Texte_10x32, car ce remplacement n'aurait pas été envisageable.
Merci bien, Comtois, pour cette solution.
Votre compétence me permet d'espérer une explication, car d'autres applis ont été développées par la même personne et j'aurai sans nul doute le même problème ailleurs.
Bonne soirée et merci encore.
Cordialement,
Danydoc.
Publié : mar. 17/juin/2008 17:45
par comtois
L'explication se trouve là où je te l'avais indiqué précédemment
Dans la page historique tu verras ce changement entre la version 3.94 et les versions supérieures :
- Supprimé: #PB_String_MultiLine
En clair, à chaque fois que tu verras un StringGadget() utilisant cette possibilité ,tu pourras le remplacer par un EditorGadget()
Evolution de codes source obsolètes
Publié : mar. 17/juin/2008 22:04
par Danydoc
Bonsoir Comtois,
Je n'ai pas trouvé en première lecture "#PB_String_MultiLine" dans les suppressions entrainées par le passage à la version 4.20
J'ai donc fait un copier-coller de tout l'historique dans Word pour y faire une recherche exhaustive... qui n'a rien donné comme résultat.
D'où peut venir cette contradiction?
Cordialement,
Danydoc.
Publié : mar. 17/juin/2008 22:27
par comtois
toujours au même endroit !
Cherche ce passage dans l'historique, et tu cliques sur le mot 'ici'
8 Mai 2006 : Version 4.00
Comme PureBasic 4 est une mise à jour très conséquente aussi bien en terme de nouveautés que de changements, un document résumant toutes les modifications effectuées sur les bibliothèques depuis la dernière version stable est disponible ici.
Evolution de codes source obsolètes
Publié : mer. 18/juin/2008 9:48
par Danydoc
[quote="comtois"]toujours au même endroit !
Cherche ce passage dans l'historique, et tu cliques sur le mot 'ici'
[quote]8 Mai 2006 : Version 4.00
Bonjour Comtois,
Merci, j'ai bien trouvé dans la liste des modifications la suppression de #PB_String_MultiLine. C'est sans doute le type pris par ma variable #PB_Texte_10x32 avec les ascii 13 et 10 qui l'affectent.
Je pense que dans les autres codes où figure StringGadget(), je n'aurai pas nécessairement besoin de faire son remplacement par EditorGadget().
Merci à vous tous pour votre aide, plus encore pour votre côté "pédagogie" que votre côté "assistance".
Bien cordialement,
Danydoc