TPluginHeader = packed record
Caption: array[0..MaxShortStr] of Char;
Version: array[0..MaxShortStr] of Char;
PluginType: Integer;
Author: array[0..MaxShortStr] of Char;
Comment: array[0..MaxLongStr] of Char;
Reserved: array[0..MaxLongStr] of Char; // non utilisé
Flags: Integer; // pour l'activation du menu
end;
Pour Comment et reserved il faut utiliser MaxLongStr, ça marche tant qu'on dépasse pas mais je préfère MaxLongStr quand même.
La référence est l'unité Delphi V 1.4
D'accord de toute façon ca ne marche pas dans les 2 cas en gros quand je trace j'ai :
DllEntryPoint
RegisterPluginLanguage (ajouté pour tester)
RegisterPluginHeader
et puis plus rien!!! Normalement c'est quelle fonction qui devraient être appelée? Et surtout quel tests sont effectués qui font que le plugin n'est pas chargé??!?
Oki c'est bon j'ai compris d'ou venait le problème en fait C++Builder m'avait ajouté :
#pragma pack(push,1)
et
#pragma pack(pop)
que j'avais supprimé en fait c'est la traduction de la directive package de Delphi
Bon je vais laisser ca comme ca pour le moment...
Par contre je suis pas sur que ca soit le meilleur choix pour la compatibilité...
Je pense qu'il serait pas mal de supprimer la directive package et de changer la valeur des constantes MaxShortStr de 64 à 63 et MaxLongStr de 256 à 255 pour ne pas avoir de problèmes...
Dernière modification par Benjamin le 31 mars 2004 20:32, modifié 1 fois.
En théorie tu peux virer su tu supprime le "+ 1", je vais peut être le faire en Delphi aussi pour éviter ces pb mais ça oblige à recompiler tous les plugins donc à voir...J'avais pas pensé à ça au moment ou je l'ai fait !
tu peux remplacer sans pb par "char FileName[MaxShortStr + 1]" car il n'y a pas d'echange à ce niveau avec PhotoFiltre. Il faut juste modifier la boucle avec EnumImage
Un avis? :
-Les structures doivent etre alignées sur 32 bits. Certains compilateurs aligne les data sur 8 bits par défaut (dans Borland C.5 c'est dans Project Options=>32-Bits compiler=>Processor=>Data Alignment=>Double Word(4-bytes).
-On peut pas supprimer le "+1" a la fin de [MaxShortStr], je l'ai fait, j'ai eu des problemes bien penibles du genre "un coup ca marche,un coup ca marche plus!"
-Je pense que string et un pointeur (char*) sur une chaine initialisée et terminée par le classique zéro, sinon je ne vois pas comment ca pourais marcher.
Bon courage & A+
oui je suis d'accord d'ailleurs par defaut Delphi le fait pour les record sauf si l'on spécifie l'option package ce qui est la cas pour le moment
Pour éviter ca j'ai proposé de réduire MaxShortStr et MaxLongStr de 1 ce qui ferait qu'en ajoutant le 0 de fin chaine et quelque soit l'alignement du compilateur il n'y aurait pas de problème... Mais cela oblige à recompiler tous les plugins existant...
En effet, ca ferais un alignement nickel, et je pense que quelque soit la decision, il vaut mieux la prendre pendant que le nombre de plugins existant est résonable!
Ca reste ch...t pour les utilisateurs, surtout s'ils n'ont pas l'adsl !
Cela dit, ca marche comme ca, alors.......... ?
Juste une question Benjamin, Quelle version de CBuilder utilise tu ?
A+
Je ne comprends pas grand chose à votre conversation mais en ce qui concerne ceci :
«alignement nickel, et je pense que quelque soit la decision, il vaut mieux la prendre pendant que le nombre de plugins existant est résonable!
Ca reste ch...t pour les utilisateurs, surtout s'ils n'ont pas l'adsl ! »
Personnellement j'ai un modem 56k et je viens tout juste de télécharger PhotoFiltre et tout les greffons. A peu près 15 minutes. C'est pas la fin du monde!
Cependant je rendrais les nouveaux greffons disponibles en même temps que la 5.7. Pas avant.
Aussi mettre une note explicative dans les news expliquant le pourquoi de ces modifs.