Jump to content

Delphi code reversenegeneering


mague

Recommended Posts

Hallo,

 

ich versuche gerade anhand der Sourcen von myprograms.dll die plugin Programmierung zu zerpfluecken. Ziel ist es das Ganze in eine andere Sprache umzusetzen um vom kommerziellen Delphi loszukommen.

 

Wie eine DLL funktioniert ist mir inzwischen klar. Naechster Schritt ist also die Initialisierung des plugin.

 

function InitPlugin2: IDVBViewerPlugin; stdcall; {export;}
begin
 if myplug = nil then
myplug := TBasePlugin.Create;
 result := myplug;
end;

 

Ich habe mal mit TBasePlugin angefangen und mich durch die einzelnen sourcen durchgehangelt. Object-hell sozusagen :D *seufz* Frueher war ja wirklich alles besser :)

 

UPlugin.pas:	TBasePlugin = class(TBaseOSDSetupPlugin)

uplugininterfaces.pas:  TBaseOSDSetupPlugin = class(TBaseOSDPlugin, iPlugin)

uplugininterfaces.pas:  TBaseOSDPlugin = class(TBaseDVBViewerPlugin, iOSDPlugin)

uplugininterfaces.pas:  TBaseDVBViewerPlugin = class(TObject, IDVBViewerPlugin)

TObject ?

 

Es endet bei TObject. Ich gehe davon aus diese ist im VCL definiert ?! Gibt es dazu mehr Informationen ? Gerne auch Links um zu verstehen was TObject ist. Wenn ich von TObject nicht wegkomme bin ich auf FreePascal begrenzt, wuerde mir aber gerne noch die Option auf andere Sprachen erhalten.

 

Auch konnte ich bei den interfaces einige Definitionen nicht finden.

Ahh.. ich sehe Delphi nimmts mit der Gross-kleinschreibung nicht so genau ;) iPlugin und IPlugin ist wohl das selbe....

 

Muss ich sonst noch was wissen ?

Edited by mague
Link to comment

TObject ist nicht Zwingend Notwendig und ist quasi die "Mutter aller Klassen", definiert ist sie in Delphi und Freepascal in der System.pas. Eigentlich braucht es nur die Interfaces da diese für die Ansteuerung zwingend vorrausgesetzt werden.

 

Christian

Link to comment

Danke erstmal.

 

Jetzt habe ich 3+ Stunden Delphi nach FreePascal manuell angepasst. Das ist dann schon frustrierend wenn man dann merkt das FreePascal kein TListView.ItemIndex kann BangHead.gif Und die error Liste des Parsers ist noch lang :)

 

Jetzt suche ich erstmal den kuerzesten/einfachsten Weg ein plugin zu registrieren. Am besten einen Eintrag in ein OSD Menue schreiben. Da kann ich die GUI units erstmal beiseite lassen.

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...