Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Fremdkomponente unter Delphi 10 Sydney (https://www.delphipraxis.net/205114-fremdkomponente-unter-delphi-10-sydney.html)

Delbor 2. Aug 2020 14:53

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

himitsu 2. Aug 2020 17:48

AW: Fremdkomponente unter Delphi 10 Sydney
 
Delphi-Referenz durchsuchenRegisterComponents

Delbor 2. Aug 2020 19:35

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:
procedure Register;
begin
  RegisterComponents('PDFium', [TPdf, TPdfView]);
  RegisterPropertyEditor(TypeInfo(string), TPdf, 'FileName', TFileNameProperty);
end;
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.

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

himitsu 2. Aug 2020 20:03

AW: Fremdkomponente unter Delphi 10 Sydney
 
Delphi-Quellcode:
procedure Register;
im Interface gibt es auch?

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.

Delbor 2. Aug 2020 21:40

AW: Fremdkomponente unter Delphi 10 Sydney
 
Hi Himitsu
Zitat:

Zitat von himitsu (Beitrag 1471022)
Delphi-Quellcode:
procedure Register;
im Interface gibt es auch?

Ja, ist vorhanden.

Zitat:

Zitat von himitsu (Beitrag 1471022)
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.

Showmessage? Wie den? Zum Beispiel? Initialisation von was? Des Package?

Über compilieren und anderes von Packages hab ich einiges gefunden, habe bislang aber nichts über Komponenten debuggen gesucht.

Gruss
Delbor

himitsu 2. Aug 2020 22:23

AW: Fremdkomponente unter Delphi 10 Sydney
 
Zitat:

Showmessage? Wie den? Zum Beispiel? Initialisation von was? Des Package?
Bei Packages hast du die Main-Prozedur nicht, wie in der DPR von EXE oder DLL.
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.

Delbor 4. Aug 2020 18:55

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

Rolf Frei 5. Aug 2020 13:04

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:
https://www.delphipraxis.net/1466256-post17.html

Bitte beachte da auch noch die Folgenachrichten, da es da noch weitere Hinweise gibt (DCP Suchpfad, etc).

Delbor 6. Aug 2020 12:10

AW: Fremdkomponente unter Delphi 10 Sydney
 
Hi zusammen

Zitat:

Zitat von Rolf Frei (Beitrag 1471224)
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.

Ich bin nicht sicher, ob ich dich wirklich vrstanden habe. Deine Vorgehensweise scheint mir mit dem im Delphi-Wicki empfohlenen Weg nichts gemein zu haben. Sofern ich diesen richtig verstanden habe, geht der folgendermassen (sofern die Sourcen dabei sind):
  • Definieren und erstellen eines neuen Packages
  • Hinzufügen zur Enthält-Klausel der zu dem Package gehörenden Units(*.pas;)
  • Compilieren und
  • Installieren des neuen Packages

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:
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.
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?


Gruss
Delbor


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz