In Erweiterung zu this Frage, ich denke, ich werde am besten zeigen, was ich bisher habe. Was ich versuche, ist eine Firefox-Erweiterung mit Delphi zu erstellen, die mit den Firefox-Versionen der Zukunft funktioniert, die eine exportierte NSModule-Struktur und nicht mehr eine NSGetModule-Funktion verwenden.Portierung Mozillas NSModule nach Delphi
Haupt Fragen, die ich mit für den Moment bin zu kämpfen ist:
- Ist der folgende Code korrekt? Ich mag mich irren, wie die Zeiger und Arrays von Datensätzen funktionieren.
- Wie debuggen Sie das? Wenn ich es erstelle und es läuft, dann bin ich mir sicher, dass es funktioniert, aber beim Debuggen meiner Bibliothek kann ich nur überprüfen, ob mein Init-Code seine Aufgabe erfüllt. (Und jetzt, Firefox 3.6 scheint nicht meinen
@mozilla.org/network/protocol;1?name=xxm
Vertrag abholen)
Der Code, den ich in dem Hafen bin versucht, hier ist: 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;
Ich habe keine Ahnung, worum es bei Ihrer zweiten Frage geht. Wie Sie wissen, funktioniert Stack Overflow am besten, wenn Sie nur eine Frage gleichzeitig stellen. Könnten Sie bitte erläutern, wie Ihre Debugging-Frage mehr mit Ihrer C++ - Übersetzungsfrage zusammenhängt? –
Die beiden Fragen sind sehr eng miteinander verwandt. Ich habe einige exportierte Daten aus meinem Projekt hochgeladen, aber ich nehme an, dass es Firefox-Code gibt, der diesen Code verbraucht, und ich nehme an, dass ich theoretisch durch FireFox gehen könnte, während er meine NSModule-Daten verwendet. Die Sache ist, ich habe keine Ahnung, wie man eine Umgebung aufbaut, die die Firefox-Quelle laden und einen Debugger damit ausführen kann. (Ich bin mit Delphi aufgewachsen, da ist ein Paket) –