![]() |
Fremdkomponente unter Delphi 10 Sydney
Liste der Anhänge anzeigen (Anzahl: 3)
Hi zusammen
Erstmal: ich versuche, eine Fremdkomponente, die ich unter Delphi Tokio und Rio verwendet hatte, unter Sydney neu zu compilieren, was aber bislang immer fehlgeschlagen ist. Als erstes hab ich mir ein Package erzeugt: Anhang 52872 Egal, was ich mache: das Package wird erzeugt und der Liste unter Komponente=>Packages installieren angezeigt und angehakt, dessen Inhalt erscheint aber nicht unter Komponenten und also auch nicht in der Palette: Anhang 52874 Gruss Delbor |
AW: Fremdkomponente unter Delphi 10 Sydney
|
AW: Fremdkomponente unter Delphi 10 Sydney
Hi himitsu
Danke für deine Antwort! Genau daran habe ich auch länger gedacht - das von mir verwendete Package heisst deutlich anders als das Original, und desshalb hatte ich den Verdacht, dass die Komponenten gar nicht registriert werden. Und genau das scheint ja der Fall zu sein. Die Registerprocdure ist in der Unit 'Pdfium.pas' so deklariert/Implementiert :
Delphi-Quellcode:
Ich ging erst davon aus, dass der erste Parameter das Package angeben würde, für das die Komponente registriert werden soll. Dagegen spricht allerdings nicht nur die Help, sondern auch TFileSearcher von DeddyH, den ich in einem Package TFileSearchSydney compiliert und gerade eben getestet habe.
procedure Register;
begin RegisterComponents('PDFium', [TPdf, TPdfView]); RegisterPropertyEditor(TypeInfo(string), TPdf, 'FileName', TFileNameProperty); end; Damit ist die Frage offen, wesshalb die erwarteten Komponenten in dem Package nicht vorhanden sind. Was mir auffällt: im Source-Verzeichnis des Originals befinden sich ausser den '*.pas'-Dateien auch die *.DCU'-Files. Gruss Delbor |
AW: Fremdkomponente unter Delphi 10 Sydney
Delphi-Quellcode:
im Interface gibt es auch?
procedure Register;
Du könntest natürlich auch anfangen die IDE und dein Package zu debuggen, aber für den Anfang reicht auch je ein ShowMessage in Register und in Initialization. Der erste Parameter ist einfach nur irgendein "Name" Caption, welcher die Gruppe in Komponentenliste angeibt. Die DCUs helfen dir eh nichts, da die ja vom Compiler abhängen und nur in der einen Version funktionieren. Aber es sind sowieso nur die Kompilate der PAS. |
AW: Fremdkomponente unter Delphi 10 Sydney
Hi Himitsu
Zitat:
Zitat:
Über compilieren und anderes von Packages hab ich einiges gefunden, habe bislang aber nichts über Komponenten debuggen gesucht. Gruss Delbor |
AW: Fremdkomponente unter Delphi 10 Sydney
Zitat:
Aber egal von welcher Unit (Hauptdache die ist in dem Package) kannst die als "Wurde Package geladen"-Message benutzen. Und in Register die MessageBox sagt dir "Package wurde geladen und die Registrierung ausgeführt" Wenn das "Register fehlt" dann kann nichs werden und wenn die Initialisation fehlt, dann wurde "dieses" Package nicht geladen. z.B. wenn irgendwo alte Units/DCUs oder Packages gefunden werden (Suchpfade) und dann nicht das geladen wird, was du willst. DLLs und Packages kann man ja nicht direkt ausführen, und braucht dafür eine Anwendung wo es drin läuft. Entweder man startet diese Anwendung, oder man hat grade den Quellcode der DLL/BPL auf und sagt womit das passieren soll. Menü > Start > Parameter... > Debugger > Hostanwendung Da kann man auch die IDE selbst angeben. > C:\Program Files (x86)\Embarcadero\Studio\21.0\bin\bds.exe Somit wird Delphi nochmal gestartet und diese Instanz lässt sich dann debuggen ... z.B. das Create seiner Klasse, wenn man die auf eine Form pappt oder hier über einen Haltepunkt z.B. im Register. |
AW: Fremdkomponente unter Delphi 10 Sydney
Liste der Anhänge anzeigen (Anzahl: 4)
Hi zusammen
Sorry, wenn ich mich erst jetzt melde. Ich hab jetzt mal versucht, Delphi Sydney als Hostanwendung für das Package zu starten. Je nach Sichtweise ist das aber total schief gegangen oder auch nicht. Festlegen der Hostanwendung: Anhang 52881 Hier sollte das Delphi 10.4 installiert worden sein, Beim Start: Anhang 52880 Dateieigenschaften: Anhang 52882 Resultat: Delphi verabschiedet sich komplett ins Nirwana. Gruss Delbor PS: Sieht ganz danach aus, als wär das (die beiden BDS.Exe-Dateien) das Problem: Anhang 52883 Gruss Delbor |
AW: Fremdkomponente unter Delphi 10 Sydney
Du machst das alles viel zu kompliziert. Hast du denn die Sourcen von der alten Version? Wenn ja mach dir Kopien der Packages Sourcen und passe das dann für Sydney an. Die Originalsourcen werden schon soweit stimmen, damit sie fürt mehrere Delphiversionen passen und nur die Nummern angpasst werden müssen. Also bei den Required, die Packages mit Nummern auf die Version von Sydney stellen.
Ich habe das mal in einem andereren Thread noch etwas genauer beschrieben, wie man da eine alte Version auf eine neue Delphi Version hochhebt: ![]() Bitte beachte da auch noch die Folgenachrichten, da es da noch weitere Hinweise gibt (DCP Suchpfad, etc). |
AW: Fremdkomponente unter Delphi 10 Sydney
Hi zusammen
Zitat:
Ich hab nun mal versucht, deinen Vorschlag umzusetzen. Dazu hab ich das bestehende Package geöffnet und in einem neuen Ordner abgespeichert. Der Quelltext des Packages:
Delphi-Quellcode:
Wenn ich das jetzt richtig sehe, muss ich nun die oben aufgeführten Pas-Dateien nochmal hinzufügen (und die jetzt hinzugefügten entfernen), diesmal allerdings direkt aus dem Source-Verzeichnis. Danach sollte ich das Package kompilieren und installlieren können. Hab ich das soweit richtig verstanden?
package PDFiumP;
{Diverse Compileranweisungen hab ich mal zwecks platzersparnis gelöscht} requires vcl, designide; contains PDFium in '..\Delphi103\PDFium.pas', PDFiumE in '..\Delphi103\PDFiumE.pas', FPdfDataAvail in '..\Delphi103\FPdfDataAvail.pas', FPdfDoc in '..\Delphi103\FPdfDoc.pas', FPdfEdit in '..\Delphi103\FPdfEdit.pas', FPdfExt in '..\Delphi103\FPdfExt.pas', FPdfFlatten in '..\Delphi103\FPdfFlatten.pas', FPdfFormFill in '..\Delphi103\FPdfFormFill.pas', FPdfFWLEvent in '..\Delphi103\FPdfFWLEvent.pas', FPdfPpo in '..\Delphi103\FPdfPpo.pas', FPdfProgressive in '..\Delphi103\FPdfProgressive.pas', FPdfSave in '..\Delphi103\FPdfSave.pas', FPdfSearchEx in '..\Delphi103\FPdfSearchEx.pas', FPdfStructTree in '..\Delphi103\FPdfStructTree.pas', FPdfSysFontInfo in '..\Delphi103\FPdfSysFontInfo.pas', FPdfText in '..\Delphi103\FPdfText.pas', FPdfTransformPage in '..\Delphi103\FPdfTransformPage.pas', FPdfView in '..\Delphi103\FPdfView.pas'; end. Gruss Delbor |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:48 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz