AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Wie ermittelt man welche Komponenten in einem Package sind?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie ermittelt man welche Komponenten in einem Package sind?

Ein Thema von MaBuSE · begonnen am 21. Apr 2005 · letzter Beitrag vom 25. Apr 2005
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.840 Beiträge
 
Delphi 10 Seattle Enterprise
 
#21

Re: Wie ermittelt man welche Komponenten in einem Package si

  Alt 25. Apr 2005, 13:23
Zitat von negaH:
Vergiss es, das was du vorhast kann nicht funktionieren. Du versucht die Packages der Delphi IDE zu laden, diese können aber nur innerhalb vom Delphi selber geladen und benutzt werden.
So langsam habe ich auch das Gefühl, dass das nicht klappt.

Zitat von negaH:
Erkläre mal was du überhaupt vor hast, denn so wie ich das sehe läuft es auf einen Verstoß gegen die Lizenzbestimmungen hinaus.
Nein, ich will nicht gegen die Lizenzbestimmungen verstoßen.

[OffTopic, nur zur Erklärung, nicht zur Diskussion]
[edit]...(Erklärung entfernt, da OT)[/edit]
Deshalb möchte ich vorher durch ein kleines Testprogramm alle einzubindenden Package untersuchen ob "doppelte" Komponenten enthalten sind dann kann man vor dem Kompilieren schon darauf reagieren.
(Diese Funktionalität soll auch noch zu Diagnosezwecken beim Delphi Start laufen, ...)

Da dieses Testprogramm nur auf dem Buildserver läuft (auf dem auch eine vollständige Lizenz des Delphi installiert ist) besteht keine Lizenzverletzung.
[/OffTopic]

Liebe Grüße
MaBuSE
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.840 Beiträge
 
Delphi 10 Seattle Enterprise
 
#22

Re: Wie ermittelt man welche Komponenten in einem Package si

  Alt 25. Apr 2005, 13:49
Zitat von negaH:
Vergiss es, das was du vorhast kann nicht funktionieren. Du versucht die Packages der Delphi IDE zu laden, diese können aber nur innerhalb vom Delphi selber geladen und benutzt werden.
AAAARRRG

Ich habe gerade bemerkt warum dass nicht geht.

Lieber Hagen, Du hast Recht.
In den DesigntimePackages (dcl*.bpl) sind natürlich keine Komponenten definiert.
Die sind ja in den RuntimePackages. Die benötigten Runtimepackages bekomme ich ja mit meiner Methode raus, ich muss also alle RuntimePackages durchlaufen um "doppelte" Komponenten zu finden.

Da zu lade ich alle DesigntimePackages und merke mir welche Packages benötigt werden.
Dann schaue ich alle (diese benötigten) RuntimePackage duch und wenn eine Komponente doppelt vorkommt, weiss ich ja welche 2 RuntimePackage davon betroffen sind und kann daraus schliessen, weche DesigntimePackage dafür verantwortlich sind.

Vielen Dank, wenn ich das mal soweit "fertig" habe, werde ich es hier aud Anfrage veröffentlichen.
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.840 Beiträge
 
Delphi 10 Seattle Enterprise
 
#23

Re: Wie ermittelt man welche Komponenten in einem Package si

  Alt 25. Apr 2005, 14:03
Anmerkungen und Links zu deisem Thema:
Ich kann zwar kein Chinesisch, aber hier (GoogleCache) wird gezeigt, die man durch Zuweisen der Classes.RegisterComponentsPro mit einer eigenen Prozedur an diese Informationen kommt. Das ist die gleiche Idee, die ich auch schon letzte Woche hatte, nur die Funktioniert bei mir nicht. Es tritt trotzdem der Fehler auf. (Meine Prozedur wird nicht ausgeführt.)

Folgende Artikel beschäftigen sich auch mit Packages zur Laufzeit:
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#24

Re: Wie ermittelt man welche Komponenten in einem Package si

  Alt 25. Apr 2005, 17:21
Zitat:
In den DesigntimePackages (dcl*.bpl) sind natürlich keine Komponenten definiert.
Die sind ja in den RuntimePackages. Die benötigten Runtimepackages bekomme ich ja mit meiner Methode raus, ich muss also alle RuntimePackages durchlaufen um "doppelte" Komponenten zu finden.
Richtig, mal abgesehen von den nötigen Designtime Komponenten wie Property Editoren usw. Diese benötigen aber immer auch die Funktionen der IDE oder genauer gesagt der ominösen Proxies.dcu

Die für dich relevanten Klassen sollten alle in Runtime Packages enthalten sein, aber das ist eben bei so manchen Libraries nicht der Fall. Die Methode mit dem Finden doppelter Komponten steckt in ähnlicher Form schon un der Funktion LoadPackage() drinnen. Diese benutzt aber nicht die Komponenten sondern die UNIT Listen die in der Resourcen der Packages eingelinkt werden. Vorteil dabei ist das man beim Zugriff auf solche Packages um diese Resource zu laden diese DLL nicht komplett laden braucht. Sprich man lädt sie nur als Resourcen-DLL, lädt die UNIT-Resource, und vergleicht deren Inhalt mit den UNITs der anderen Packages. In einem Projekt ist ein UNIT-Name packagebezogen immer eineindeutig. Eventuell könnte dies deine Überprüfung enorm erleichtern. Schau dir dazu mal den Source von SysUtils.CheckForDuplicateUnits().InternalUnitChec k() genauer an.

Ich habe aber noch nicht ganz den Sinn der Übung verstanden, wie ihr eure Projekte verwaltet, ist aber auch nicht so wichtig.

Gruß hagen
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#25

Re: Wie ermittelt man welche Komponenten in einem Package si

  Alt 25. Apr 2005, 17:24
Achso, sich an den Klassen/Komponenten als Vergleichskriterium festzuklammern kann nach hinten losgehen. Denn es ist schon erlaubt das man in verschiedenen Units einen Klassennamen mehrmals benutzen darf, und dies kommt sogar manchmal vor. Aber ein UNIT-Name muß eben innerhalb der geladenen Packages eineindeutig sein.

Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

Registriert seit: 23. Sep 2002
Ort: Frankfurt am Main (in der Nähe)
1.840 Beiträge
 
Delphi 10 Seattle Enterprise
 
#26

Re: Wie ermittelt man welche Komponenten in einem Package si

  Alt 25. Apr 2005, 17:29
Zitat von negaH:
Achso, sich an den Klassen/Komponenten als Vergleichskriterium festzuklammern kann nach hinten losgehen. Denn es ist schon erlaubt das man in verschiedenen Units einen Klassennamen mehrmals benutzen darf, und dies kommt sogar manchmal vor. Aber ein UNIT-Name muß eben innerhalb der geladenen Packages eineindeutig sein.
Stimmt, Du hast Recht. Ich brauche ja nur auf Unit Ebene zu schauen

Danke an Alle für die ausführliche Hilfe.
Das Wissen kann ich trotzdem sehr gut gebrauchen
(, und der Eine oder Andere vieleicht auch)
(°¿°) MaBuSE - proud to be a DP member
(°¿°) MaBuSE - proud to be a "Rüsselmops" ;-)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 23:13 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