AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE Fremdkomponente unter Delphi 10 Sydney
Thema durchsuchen
Ansicht
Themen-Optionen

Fremdkomponente unter Delphi 10 Sydney

Ein Thema von Delbor · begonnen am 2. Aug 2020 · letzter Beitrag vom 6. Aug 2020
Antwort Antwort
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#1

Fremdkomponente unter Delphi 10 Sydney

  Alt 2. Aug 2020, 15:53
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:
roasepdfsuite.jpg
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:
packages.jpg

Gruss
Delbor
Miniaturansicht angehängter Grafiken
projectoptionen-troasepdfsuite.jpg  
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#2

AW: Fremdkomponente unter Delphi 10 Sydney

  Alt 2. Aug 2020, 18:48
Delphi-Referenz durchsuchenRegisterComponents
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Fremdkomponente unter Delphi 10 Sydney

  Alt 2. Aug 2020, 20:35
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
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch

Geändert von Delbor ( 2. Aug 2020 um 21:03 Uhr) Grund: Vervollständigt: im Source-Verzeichnis [COLOR="Red"]des Originals[/COLOR]
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#4

AW: Fremdkomponente unter Delphi 10 Sydney

  Alt 2. Aug 2020, 21:03
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 2. Aug 2020 um 21:09 Uhr)
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Fremdkomponente unter Delphi 10 Sydney

  Alt 2. Aug 2020, 22:40
Hi Himitsu
procedure Register; im Interface gibt es auch?
Ja, ist vorhanden.

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
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#6

AW: Fremdkomponente unter Delphi 10 Sydney

  Alt 2. Aug 2020, 23:23
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Fremdkomponente unter Delphi 10 Sydney

  Alt 4. Aug 2020, 19:55
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:
start-parameter.jpg
Hier sollte das Delphi 10.4 installiert worden sein,
Beim Start:
startendes-delphi.jpg
Dateieigenschaften:
bds-exefile.jpg
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:
bds-suche-1.jpg

Gruss
Delbor
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch

Geändert von Delbor ( 4. Aug 2020 um 23:25 Uhr)
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
647 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Fremdkomponente unter Delphi 10 Sydney

  Alt 5. Aug 2020, 14:04
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).

Geändert von Rolf Frei ( 5. Aug 2020 um 14:09 Uhr)
  Mit Zitat antworten Zitat
Delbor

Registriert seit: 8. Okt 2006
Ort: St.Gallen/Schweiz
1.186 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Fremdkomponente unter Delphi 10 Sydney

  Alt 6. Aug 2020, 13:10
Hi zusammen

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
Roger
Man muss und kann nicht alles wissen - man muss nur wissen, wo es steht.
Frei nach Albert Einstein
http://roase.ch
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:14 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