Entwickler-Ecke

Sonstiges (Delphi) - TShellTreeView etc. nur in einer einzigen Delphi-Version?


galagher - Di 18.10.16 19:48
Titel: TShellTreeView etc. nur in einer einzigen Delphi-Version?
Hallo!

Ich konnte diese Komponenten erfolgreich unter Delphi 10.1 installieren, in Delphi XE2 waren sie ebenfalls installiert. Dort verursachten sie beim Versuch, sie auf die Form zu ziehen, zunächst Fehler (habe mir die Fehlermeldungen leider nicht kopiert), nach einem Neustart von XE2 sind sie nun weg und lassen sich auch nicht mehr installieren:

Bei dclshlctrls150.bpl kommt: Zugriffsverletzung bei Adresse 1ABB8799. Lesen von Adresse 00000010.
Bei vclshlctrls150.bpl kommt: Package ...\Bpl\vclshlctrls150.bpl kann nicht installiert werden, da es kein Entwurfszeit-Package ist.

Neukompilieren der dpk's nützt nichts.
Gibt es da eine Lösung oder kann man diese Komponenten prinzipiell nur in einer Delphi-Version benutzen?


jaenicke - Di 18.10.16 19:59

Die kann man auch in mehreren nutzen, aber du musst das Lib-Suffix für jede Delphiversion anders setzen. Am besten für Delphi 10.1 (wo diese Komponenten nicht mehr in den Samples dabei sind) einfach den Ordner mit den Komponenten aus den Samples von XE2 woanders hin kopieren und dort das Lib-Suffix in den Projekteinstellungen umstellen.

Alternativ kannst du ein eigenes Package erstellen und dort die Units hinzufügen. Diese sind nämlich in der VCL integriert als Unit Vcl.Shell.Ctrls usw.

Hintergrund:
Das Lib-Suffix sagt aus wie die erstellte BPL heißt. Wenn dieses bei beiden Delphiversionen gleich ist, heißen die BPLs auch gleich. Da beide BPL-Ausgabepfade im Systempfad drin sind, finden so beide Delphiversionen die gleiche BPL (die, die als erste im Pfad liegt). Das funktioniert natürlich nicht.


galagher - Di 18.10.16 20:31

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Die kann man auch in mehreren nutzen, aber du musst das Lib-Suffix für jede Delphiversion anders setzen.
Wie genau mache ich das? :gruebel:

//Edit: In den dpk-Files statt {$LIBSUFFIX '150'} zB. {$LIBSUFFIX '149'} schreiben oder so?


galagher - Di 18.10.16 21:38

user profile icongalagher hat folgendes geschrieben Zum zitierten Posting springen:
//Edit: In den dpk-Files statt {$LIBSUFFIX '150'} zB. {$LIBSUFFIX '149'} schreiben oder so?
Ja, genau so! Ich habe die Suffixe einfach zu 'XE2' geändert, habe nun zwei Dateien: dclshlctrlsXE2.bpl und vclshlctrlsXE.bpl (diese Datei heisst tatsächlich so!)
Warum hier nicht auch XE2, sondern XE, weiss ich nicht! Änder ich beide Suffixe zu 'XE', heissen die Dateien dclshlctrlsXE.bpl und vclshlctrlsX.bpl!

Wie auch immer, ich habe jetzt die ShellCtrls-Komponenten wieder!