Bug in Komponente beheben (Komponente neu compilieren)



  • Hallo in die Runde,

    ich versuche mich gerade an den VCL Styles. Dabei ist mir aufgefallen, dass einige Komponenten die StyleElements Eigenschaft einfach ignorieren. Konkret geht's u.a. um ne Raize Komponente, die ich mir mal über GetIt installiert hatte. Die .pas Datei mit dem fehlerhaften Code hab ich auch gefunden und modifiziert, doch wie krieg ich die neue Version jetzt richtig eingebunden?
    Versucht hatte ich jetzt einfach die .pas Datei in nen C++ Projekt zu importieren, dort einmal zu complieren, sodass ich ne .hpp und .dcu Datei kriege. Die beiden hab ich dann ausgetauscht an dem Ort, wo ich die originalen hpp/dcu Dateien gefunden hab. Funktioniert aber nicht, es wird trotzdem der alte Code angewendet.

    Kennt sich da jmd aus und kann mir auf die Sprünge helfen oder geht das gar nicht? Bei diesem Package System steig ich noch nicht so richtig durch...



  • Die Delphi Komponenten bestehen aus .bpl Dateien (im Grund sind das DLLs). Du musst also die Raize Komponenten neu übersetzen und die entsprechenden .bpl Dateien ersetzen.
    Oft bestehen Komponentensammlungen aus zwei Teilen: den Laufzeitkomponenten, die nur für die Programmausführung gebraucht werden (tragen manchmal den Präfix 'vcl') und den Design-Time-Komponenten (enthalten die Editoren für den Object Inspector zur Design-Time).



  • ah ja ok, danke schonmal für den Hinweis! Ja es gibt da ne BPL für die Laufzeit und eine für die Design-Time. Laufzeit würde mir da ja wohl reichen, hab ja nur die Paint-Methode leicht abgeändert. Das Problem ist jetzt, dass zwar in der dpk Datei drin steht, welche Units da alle drin sind im Package und da scheinen auch diverse Optionen gesetzt zu sein, aber das Delphi-Package kann ich mitm C++ Builder nicht öffnen (auch wenn er es in der Typenliste anbietet). Aber anders kann ich doch keine bpl Files generieren, wenn ich das richtig verstanden habe, oder?



  • Es gibt den Projekttyp "Package" (oder so ähnlich), da fällt nach dem Übersetzen eine .bpl Datei raus. Du musst jetzt nur noch schauen, wo die BPL Dateien der original Raize Komponenten liegen und die durch deine ersetzen.
    Oder du deinstallierst die Originalkomponenten und installierst deine eigenen. Hab grad keine IDE zur Hand, aber es gibt iwo eine Übersicht der installierten Packages (iwo Hauptmenü -> Packages), da kann man sehen, welche Packages installiert sind und wo die zugehörige BPL Datei liegt.



  • Soweit so gut. Die Original BPLs hab ich (auch gleich mal gesichert). Ich hab nun ein neues C++ Package-Projekt angelegt, dort alle .pas Dateien importiert, in den Settings die Dinge aus dem dpk eingestellt, doch beim Versuch zu compilieren kommt jetzt ne Meldung, die ich nicht genau interpretieren kann. Da heißt es:

    Bevor dieses Package compiliert werden kann, müssen folgende Änderungen vorgenommen werden. 
    Wählen Sie OK, um diese Änderungen zu übernehmen und fortzufahren:
    
    RzPanel, RzRadGrp, [...] entfernen. 
    Es wurden die Units RzPanel, RzRadGrp [...] im benötigten Package RaizeComponentsVcl gefunden.
    

    Heißt das , dass diese Komponenten deinstalliert und dann mit meiner neuen Version überschrieben werden oder will der meine Units aus dem Package streichen und mit den Original-Files verlinken? Aber dann wären meine Korrekturen ja nicht mit drin. Die Hilfe sagt dazu nur: "Fügt Ihrem Package die erforderlichen Units hinzu. Dies geschieht, da das Package eine oder mehrere Units verwendet, die in einem anderen Package gefunden wurden." Also vermute ich eher der verlinkt das mit der "alten" Version. Kann der mir nicht einfach ein bpl raus rechnen? Er soll damit ja gar nichts tun 😄

    Ich hatte noch gesehen, dass der Entwickler sogar ein Script beigelegt hat zum neu Compilieren. Aber da hab ich mich zu früh gefreut, denn die Community Edition unterstützt anscheinend keinen Aufruf aus der Kommandozeile. 😕

    Vllt sollt ich die einfach als andere Komponente deklarieren und separat installieren, damit der keine Namensprobleme hat, aber eigtl ist's ja nur nen Bugfix und keine neue Komponente. Nur ich will mir auch nicht alles zerschießen 🙈 und verstehen würd ichs auch gerne...


Log in to reply