En extension à this question, je suppose que je vais mieux montrer ce que j'ai jusqu'à présent. Ce que j'essaie de faire est de créer une extension Firefox avec Delphi, qui fonctionnera avec les versions futures de Firefox qui utiliseront une structure NSModule exportée, et non plus une fonction NSGetModule.Portage NSModule mozilla à Delphi
Les principales questions que je me bats avec pour le moment est:
- est le code ci-dessous correct? Je peux me tromper avec le fonctionnement des pointeurs et des tableaux d'enregistrements.
- Comment déboguer cela? Si je le construis et qu'il fonctionne alors je suis sûr que ça marchera, mais dans le débogage de ma bibliothèque, je peux seulement vérifier si mon code init fait son travail. (Et semble maintenant, Firefox 3.6 ne pas prendre mon contrat
@mozilla.org/network/protocol;1?name=xxm
)
Le code que je suis en train de port est ici: http://mxr.mozilla.org/mozilla-central/source/xpcom/components/Module.h
type
TConstructorProcPtr=function(aOuter:nsISupports;const aIID:TGUID;var aResult:pointer):nsresult;
TLoadFuncPrt=function:nsresult;
TUnloadFuncPrt=procedure;
TCIDEntry=record
cid:TGUID;
service:boolean;
getFactoryProc:pointer;//TGetFactoryProcPtr;
constructorProc:TConstructorProcPtr;
end;
TContractIDEntry=record
contractid:PChar;
cid:TGUID;//PGUID?
end;
TCategoryEntry=record
category,entry,value:PChar;
end;
TXPCOMModule=packed record
kVersion:integer;//=1;
mVersion:cardinal;//kModuleVersion
mCIDs:^TCIDEntry;//pointer to first in array, last should be nil
mContractIDs:^TContractIDEntry;//pointer to first in array, last should be nil
mCategoryEntries:^TCategoryEntry;//pointer to first in array, last should be nil
getFactoryProcPtr:pointer;//TGetFactoryProcPtr;
loadProc:TLoadFuncPrt;
unloadProd:TUnloadFuncPrt;
end;
Je n'ai aucune idée de ce qu'est votre deuxième question. Comme vous le savez, Stack Overflow fonctionne mieux lorsque vous ne posez qu'une seule question à la fois. Pourriez-vous préciser comment votre question de débogage est plus liée à votre question de traduction C++? –
Les deux questions sont très étroitement liées. J'ai mis quelques données exportées de mon projet, mais je suppose qu'il y a du code de Firefox qui consomme ce code, et je suppose que je pourrais théoriquement passer par FireFox pendant qu'il utilise mes données NSModule. Chose est je n'ai aucune idée comment configurer un environnement qui peut charger la source firefox, et exécuter un débogueur avec elle. (J'ai grandi avec Delphi, il s'agit d'un forfait) –