Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Fehlerfreie Installation und Nutzung von Komponenten (https://www.delphipraxis.net/113397-fehlerfreie-installation-und-nutzung-von-komponenten.html)

matmok 7. Mai 2008 12:03


Fehlerfreie Installation und Nutzung von Komponenten
 
Die Möglichkeit Komponenten im CBuilder zu nutzen ermöglicht einfaches und schnelles Erstellen von Applikationen, also RAD. - Aber nur wenn alles fehlerfrei funktioniert. Und da sind wir schon beim Thema: Es sollte theoretisch so einfach sein: Komponente installieren, nutzen, fertig.
Doch in der Praxis tauchen Fragen und Probleme auf. Ich habe den Eindruck, dass es oft zu Zugriffsverletzungen in "rtl100.bpl" o.ä. kommt, wenn das aktuelle Projekt (falsch installierte) Komponenten enthält und wenn man diese Anwendung speichert oder kompiliert. Die Häufigkeit der Zugriffsverletzungen in "rtl100.bpl" steigt drastisch wenn eine Projektgruppe mehrere Komponenten enthält. Die IDE muß ja schon zur Design-Zeit eine Instanz einer visuellen Komponente erzeugen und die dabei enstehenden Fehlermeldungen sind nicht aussagekräftig und man kann nicht auf die fehlerhaft installierte Komponente schließen. Es könnte sein dass durch falsche Suchpfade bpl und lib nicht zusammen passen oder sogar von unterschiedlichen Versionen sind. Die Fehlerwahrscheinlichkeit nimmt zu je mehr Drittanbieterkomponenten man hat. Komponenten mit eigener Installationsroutine hinterlassen auch nach der Deinstallation Eintrage im Registry-key von BDS, z.B. Jedi. Außerdem lassen sie einem oft keine Wahl wohin die Dateien kopiert werden, $BDSPROJECTSDIR, System32, oder {Komponentenname}\Lib\C6 o.ä.. Es ensteht also ein uneinheitliches Durcheinander.

Meine Fragen sind deshalb:
- Welche Bedingungen müssen erfüllt sein damit eine Komponente fehlerfrei funktioniert?
- Welche Dateien müssen Wo abgelegt sein (bpl, bpi, lib, h, hpp, res, dcu, ...)?
- Welche Registry Einträge müssen gesetzt sein (z.B. um in der Komponentenliste sichtbar zu sein)?
- Welche Pfade müssen eingestellt sein (in der IDE, der Registry, dem Default Projekt und der Anwendung die die Komponenten nutzt)?
- Was macht die IDE beim installieren von Komponenten automatisch und um was muss ich mich kümmern?
- Auf was muss ich achten wenn ich Komponenten gleichzeitug im CB6 und im RAD Studio2007 nutzen möchte?
- Unterschiedliche Handhabung von visuellen und nichtvisuellen Komponenten?
- Was fehlt wenn die Komponente funktioniert, aber nicht in der Komponentenleiste sichtbar ist?
- Wie bzw. was von der Komponente nutzt die IDE während der Designtime und was wird letztendlich zur fertigen exe gelinkt?
- Wie deinstalliere ich eine Komponente so dass KEINE Rückstände in Registry, CBuilder und Dateien vorhanden sind?
- Welche Projektoptionen müssen Delphikomponenten haben wenn man sie für den CBuilder nutzt?
- Ist es eine gute Idee alle Komponenten auf einem Netzwerk zu installieren wenn mehrere Entwickler sie nutzen?

- Gibt es eine art "Checkliste" oder ein Standard Prozedere für eine sorglose Komponentennutzung?

Wenn man zu diesem Thema im Internet sucht bekommt man den Eindruck, dass viele Entwickler mit dieser Thematik Probleme haben und sich einen anderen mechanismus wünschen. Ich glaube nicht dasss der Mechanismus schlecht ist, in meinem Fall liegt es eher am nichtwissen wie der Mechanismus arbeitet. Vielleicht kann mir jemand helfen das besser zu verstehen.

Vielen Dank,
Tobi

(Ich verwende u.a. TMS, LMD, SDL, DevEx unter CB6 und steige momentan auf RAD Studio 2007 um. Alle Anwendungen werden statisch gelinkt. Alles auf WinXP.)

MaBuSE 8. Mai 2008 14:12

Re: Fehlerfreie Installation und Nutzung von Komponenten
 
Hab ein wenig Geduld, ich werde alle Deine Fragen in ein paar Tagen ausführlich beantworten... ;-)

Ein paar schnelle Antworten geb ich Dir schon jetzt:

Zitat:

Zitat von matmok
- Welche Bedingungen müssen erfüllt sein damit eine Komponente fehlerfrei funktioniert?

Die Komponente muß fehlerfrei in ein Package kompiliert sein.
Das Package muß in Belphi eingebunden sein und
alle benötigten Dateien müssen vorhanden sein (*.bpl, *.dcp, *.dcu, optional wenn benötigt *.dfm, *.res, *.dcr, ...)

Zitat:

Zitat von matmok
- Welche Dateien müssen Wo abgelegt sein (bpl, bpi, lib, h, hpp, res, dcu, ...)?

*.dcp, *.dcu, *.dfm, *.res, *.obj, ... müssen im Bobliothekssuchpfad sein. (Delphi Menü -> Tools -> Optionen)
*.bpl muß im Systempfas stehen (Umgebungsveriable PATH z.B. in Eingabeaufforderung/Dos-Box zu sehen)

Zitat:

Zitat von matmok
- Welche Registry Einträge müssen gesetzt sein (z.B. um in der Komponentenliste sichtbar zu sein)?

Alle Änderungen sind in HKCU\Software\Borland\Delphi\Version bzw. HKCU\Software\Borland\BDS\Version

Am Beispiel Delphi 2007:
  • HKEY_CURRENT_USER\Software\Borland\BDS\5.0\Known Packages -> hier sind die zu ladenden Packages angegeben
  • HKEY_CURRENT_USER\Software\Borland\BDS\5.0\Disable d Packages -> Diese Package werden nicht geladen auch wenn sie oben eingetragen sind
  • HKEY_CURRENT_USER\Software\Borland\BDS\5.0\Library -> Suchpfade
    • Search Path -> hier Pfad zu den *.dcu, *.dcp, *.dfm , ... Dateien
    • Package Search Path -> hier Pfad zu den *.bpl Dateien
    • Browsing Path -> hier Pfad zu den Quelltextdateien (*.pas)
    • Debug DCU Path -> optional Pfad zu den *.dcu Dateien mit Debug Informationen (Mit ProjektOptionen -> Compiler -> Debug dcu verwenden wird zwischen "Debug DCU Path" und "Search Path" umgeschaltet.
  • HKEY_CURRENT_USER\Software\Borland\BDS\5.0\Experts -> hier können Experten (Wizzards) eingebunden werden (Manche werden auch als normales Package in known Packages eingebunden)

Zitat:

Zitat von matmok
- Welche Pfade müssen eingestellt sein (in der IDE, der Registry, dem Default Projekt und der Anwendung die die Komponenten nutzt)?

s.o.
zusätzlich sollte der Systempfad (PATH-Umgebungsvariable) auf alle Verzeichnisse zeigen, die benötigte *.bpl Dateien beinhalten (wichtig bei abhänigen Packages)

Zitat:

Zitat von matmok
- Was macht die IDE beim installieren von Komponenten automatisch und um was muss ich mich kümmern?

Bei Delphi 2007: Wenn HKEY_CURRENT_USER\Software\Borland\BDS\5.0\Globals \ForceEnvOptionsUpdate=1 ist, wird beim IDE Start die Datei %APPDATA%\Borland\BDS\5.0\EnvOptions.proj automatisch neu angelegt. Alternativ kannst du bei jeder Pfadänderung in der Registry in Tools -> Optionen -> Bibliothekspfade gehen und [OK] drücken. Dann wird die Datei auch neu erstellt.
Dies eDatei wird ab D2007 von msbuild.exe zum compilieren benötigt.

Zitat:

Zitat von matmok
- Auf was muss ich achten wenn ich Komponenten gleichzeitug im CB6 und im RAD Studio2007 nutzen möchte?

keine Ahnung, ich verwende kein CB6, aber bei Delphi ist es so:
Quelltext kann von verschiedenen Delphi Versionen kompiliert werden.
die Kompilate (*.dcu, ...) Dateien liegen in eigenen Verzeichnissen z.B. ...\D7\...\lib\*.dcu und ...\D2007\...\lib\*.dcu
In das jeweilige Delphi sollten nur die Verzeichnisse mit den entsprechenden Dateien im Suchpfad stehen.

Zitat:

Zitat von matmok
- Unterschiedliche Handhabung von visuellen und nichtvisuellen Komponenten?

nein

Zitat:

Zitat von matmok
- Was fehlt wenn die Komponente funktioniert, aber nicht in der Komponentenleiste sichtbar ist?

Eintrag ist in Pfaden vorhanden, aber eintrag in known packages fehlt

Zitat:

Zitat von matmok
- Wie bzw. was von der Komponente nutzt die IDE während der Designtime und was wird letztendlich zur fertigen exe gelinkt?

oft gibt es mehrere Packages pro Komponentensammlung. Einige sind DesigntimePackages einige RuntimePackages oder gemischte Packages, die beides können. Es gibt diverse Funktionen (Units) die nicht in eine Anwendung gelinkt werden können. (Komponenten Editoren, Property Editoren, Experten, ... - also Dinge die eine Änderung des Standardverhaltens der IDE hervorrufen)

Zitat:

Zitat von matmok
- Wie deinstalliere ich eine Komponente so dass KEINE Rückstände in Registry, CBuilder und Dateien vorhanden sind?

Entsprechende Einträge in der Registry löschen (s.o.) und Dateien löschen

Zitat:

Zitat von matmok
- Welche Projektoptionen müssen Delphikomponenten haben wenn man sie für den CBuilder nutzt?

keine Ahnung, wie gesagt ich arbeite nur mit Delphi ;-)

Zitat:

Zitat von matmok
- Ist es eine gute Idee alle Komponenten auf einem Netzwerk zu installieren wenn mehrere Entwickler sie nutzen?

Jein - Wir haben alle Komponenten in der Versionsverwaltung auf die wir quasi wie ein Netzlaufwerk zufreifen.
Wobei jeder Entwickler eine eigene Sicht auf die Dateien hat. Er kann also niemanden blockieren, weil Windows die Datei öffnet.
Aber: Der Zugriff ist natürlich viel langsamer als lokal.
Mit [dp]DelphiSpeedUp[dp] wirds aber erträglich

Zitat:

Zitat von matmok
- Gibt es eine art "Checkliste" oder ein Standard Prozedere für eine sorglose Komponentennutzung?

nein, aber obige Angaben sollten Dir schon mal helfen.

Ausführliches gibt es später (in ein paar Tagen)

Ich hoffe das hilft dir.

matmok 8. Mai 2008 15:12

Re: Fehlerfreie Installation und Nutzung von Komponenten
 
Vielen Dank für die schnelle und (jetzt schon) ausführliche Antwort! Kann den Rest kaum abwarten. So brauche ich mich in Zukunft nicht mehr auf mein gefährliches Halbwissen verlassen, sondern weiss Bescheid. Dann kann ich mich endlich wieder mehr auf die 'eigentlichen' Probleme, also auf das Programmieren selbst konzentrieren, statt mit der IDE zu kämpfen.

mfg,
Matmok


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:02 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 by Thomas Breitkreuz