Page 1 sur 1
[Résolu]Problème lors de la création d'un fichier resident
Publié : dim. 11/févr./2018 21:09
par boddhi
Bonjour à tous,
J'ai besoin d'aide concernant la création de fichiers resident.
Voilà, je souhaite réactualiser un vieux développement de 2010 (réalisé sous PB4.51 x86) pour lequel j'avais créé, à l'époque, un fichier resident à l'aide de tailbite.
Cet outil n'étant plus supporté pour les récentes versions de PB, j'ai tenté de le faire via le compilateur (sous PB 5.60 x64) avec une ligne de commande, selon les directives de l'aide, ainsi rédigée :
Aucun souci lors de la création.
En revanche, après déplacement du fichier dans le répertoire UserLibraries, lors du redémarrage du compilateur, le message suivant apparaît :
Code : Tout sélectionner
La bibliothèque PureBasic 'FichierResidentCible' est trop ancienne et n'est plus gérée par PureBasic 5.20 ou au-dessus
Je précise que le fichier source ne contient que des constantes et des structures.
J'ai essayé à tout hasard avec l'option /UNICODE. Même résultat !!!
Malgré mes recherches sur les forums, je n'ai pas trouvé d'info sur un éventuel problème de ce type.
Quelqu'un aurait-il un début d'explication ?
Merci d'avance pour votre aide et votre avis éclairé...
Re: Problème lors de la création d'un fichier resident (.res
Publié : dim. 11/févr./2018 21:23
par falsam
L'occasion de tester MLF
http://www.purebasic.fr/french/viewtopi ... =3&t=16953
Coche uniquement l'option resident.
Re: Problème lors de la création d'un fichier resident (.res
Publié : dim. 11/févr./2018 21:49
par boddhi
Bonsoir Falsam,

J'ai passé l'AM à tester ton développement, à lire tous les posts à son sujet (je profite par ailleurs de l'occasion pour te féliciter et te remercier, ainsi que tous ceux qui y ont concouru

) pour cet outil.
Hélas, le resident n'est pas créé quand bien même la case Resident est cochée !??
J'en profite aussi pour te signaler un petit souci que je rencontre avec ton utilitaire : Les libellés d'aide ne sont pas correctement repris pour chaque ProcedureDLL. Chaque ProcedureDLL se voit affecter le libellé d'aide de la dernière ProcedureDLL. Pourtant, comme le source DESC les reprend conformément au code source (hormis un souci avec les caractères accentués => Pb avec UNICODE ??)
Ci-dessous, le source DESC obtenu :
ASM
0
OBJ
9
; 9 Dependancies
String
Memory
Math
FileSystem
File
Object
SimpleList
Date
Array
; Your help file
HelpFileName
; Procedure summary
; ProcedureDLL.b EXIFSetDate(Fichier.s, Type.b, Date.l)
EXIFSetDate, String, Byte, Long, (Fichier.s , Type.b , Date.l) - Modifie la ou les dates EXIF d'une image JPEG
Byte | StdCall | Unicode
; ProcedureDLL.b EXIFSetText(Fichier.s, Type.b, Chaine.s)
EXIFSetText, String, Byte, String, (Fichier.s , Type.b , Chaine.s) - Modifie certaines informations textes d'une image JPEG
Byte | StdCall | Unicode
; ProcedureDLL.i EXIFRead(Fichier.s, *EXIF.EXIF)
EXIFRead, String, Quad, (Fichier.s , *EXIF.EXIF) - Fournit des informations sur la biblioth�que EXIFRead
Long | StdCall | Unicode
; ProcedureDLL.s EXIFReadVersion()
EXIFReadVersion, () - Fournit des informations sur la biblioth�que EXIFRead
String | StdCall | Unicode
Re: Problème lors de la création d'un fichier resident (.res
Publié : dim. 11/févr./2018 21:53
par falsam
Quel version du compilateur utilises tu ?
Re: Problème lors de la création d'un fichier resident (.res
Publié : dim. 11/févr./2018 21:59
par boddhi
Pb 5.60 x64 (j'ai repris mon code sous cette version et n'ai pas encore pris le temps d'installer la 5.61) et la version 1.51 beta de ton utilitaire...
Re: Problème lors de la création d'un fichier resident (.res
Publié : dim. 11/févr./2018 22:36
par Zorro
tu peux essayer EPB , mon editeur
qui propose de faire un resident
http://michel.dobro.free.fr/STLINE/down ... on/29-epb/
Faire F8 au premier lancement pour specifier le chemin vers les compilos (32 et 64 bits )
des fois on sait jamais, peut etre que ça va marcher ... ?

Re: Problème lors de la création d'un fichier resident (.res
Publié : dim. 11/févr./2018 23:04
par boddhi
Merci Zorro, cela fonctionne !
Peux-tu me dire quelle est la syntaxe de ta ligne de commande qui aboutit à la création du fichier .res ?
Re: Problème lors de la création d'un fichier resident (.res
Publié : dim. 11/févr./2018 23:13
par boddhi
@falsam

Je n'ai peut-être pas bien compris comment fonctionne le processus de création des fichiers resident avec ton utilitaire...
Re: Problème lors de la création d'un fichier resident (.res
Publié : lun. 12/févr./2018 0:25
par falsam
Les accents tu peux résoudre je pense facilement le souci.
- Ouvre ton source.
- Menu Fichier -> Format du fichier -> Encodage UTF8
Je n'avais pas fait attention mais effectivement sur une de mes bibliothèque utilisateur j'ai une inversion de libellé d'aide !!
Et pour finir : J'ai supprimé un de mes résidents pour voir si j'arrivais à le recréer et effectivement .... BUG !!
Re: Problème lors de la création d'un fichier resident (.res
Publié : lun. 12/févr./2018 0:26
par falsam
Petit code pour créer un résident.
Code : Tout sélectionner
Define CompilPB.s = #PB_Compiler_Home + "Compilers\pbcompiler.exe "
Define CompilFlag = #PB_Program_Open | #PB_Program_Read | #PB_Program_Hide
Define PBFileName.s, RSFileName.s, Compiler
PBFileName.s = OpenFileRequester("Selectionner un fichier ...", "", "PureBasic file | *.pb;*.pbi", 0)
If PBFileName
RSFileName = #PB_Compiler_Home + "Residents\" + RemoveString(GetFilePart(PBFileName), "." + GetExtensionPart(PBFileName)) + ".res"
Debug RSFileName
Compiler = RunProgram(CompilPB, #DQUOTE$ + PBFileName + #DQUOTE$ + " /RESIDENT " + #DQUOTE$ + RSFileName + #DQUOTE$, "", CompilFlag)
If Compiler
While ProgramRunning(Compiler)
If AvailableProgramOutput(Compiler)
Debug ReadProgramString(Compiler)
EndIf
Wend
CloseProgram(Compiler)
EndIf
EndIf
A compiler ou exécuter avec l'option admin cochée dans les paramétrés de compilation.
Re: Problème lors de la création d'un fichier resident (.res
Publié : lun. 12/févr./2018 0:50
par boddhi
falsam a écrit :Petit code pour créer un résident.
Dans l'intervalle, j'ai finalement réussi à créer mon fichier resident (merci tout de même

).
Je ne comprends néanmoins pas l'usage de l'option /IGNORERESIDENT explicitée dans l'aide PB (l'option /CREATERESIDENT également citée n'existe pas par ailleurs).
Je pensais qu'elle permettait de ne pas tenir compte des déclarations (constantes, structures, etc...) d'un fichier .res déjà existant et l'écraser par une nouvelle version mais que nenni, j'obtiens systématiquement une 'syntax error on line 1' => ????
Donc pour le moment (et pour les newbies comme moi que cela pourrait interesser

), je compile avec un
en prenant bien soin de supprimer manuellement le "FichierCibleRES.res" si déjà préexistant dans le répertoire 'Residents'
Re: Problème lors de la création d'un fichier resident (.res
Publié : lun. 12/févr./2018 1:09
par boddhi
Pour information, j'ai eu un étrange bug mais hélas comme j'ai chargé tour à tour le code source de ma lib et dans EPB de Zorro et dans MLF de Falsam, que je ne m'en suis pas aperçu tout de suite, je ne saurai donc dire d'où il vient ni comment le reproduire...
A un moment, mes ProcedureDLL (et uniquement celles-ci, pas les Procedure) - qui commencent toutes par EXIF (EXIFRead, EXIFSetDate,...) - ont vu leur nom totalement ou partiellement remplacé par des noms d'autres instructions PB commençant par EXP, et uniquement pour la longueur du nom des miennes.
Par exemple, EXIFReadVersion (15 caractères) par EXPlorerListGad, EXIFSetDate par EXPortJSONe, etc...
Et cela par deux fois.