Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Indy:komponente tiddaytime kann nicht registriert werden (https://www.delphipraxis.net/213521-indy-komponente-tiddaytime-kann-nicht-registriert-werden.html)

thomaskroger 10. Aug 2023 21:09

Indy:komponente tiddaytime kann nicht registriert werden
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin,
nach einem fehlgeschlagenem Update von Delphi-XE6 auf die neuste Indy-Version (Runtime-Error bei dclIndyProtocols200) habe ich das alte System vom Backup wieder hergestellt.
Aber anstatt zu funktionieren, wirft die Aktivierung der "Indy10 Protokolle Entwurfzeit" einen Fehler, siehe Bild.
Komponente tiddaytime kann nicht registriert werden weil sie bereits von Package dclIndyProtocols200.bpl registriert wurde.

Es gibt nur ein "C:\Program Files (x86)\Embarcadero\Studio\14.0\bin\dclIndyProtocols 200.bpl", und kein Indy in "C:\Users\Public\Documents\Embarcadero\Studio\14.0 \Bpl".
Kein Bibliothekspfad auf Indy.
Suchpfad: $(BDS)\source\Property Editors\Indy10
einige Indy*.BPL in "C:\Program Files (x86)\Embarcadero\Studio\14.0\Redist"

Damit ist u.a. die Komponente IdHTTP nicht verfügbar.

Hat jemand eine Idee?
Thomas

himitsu 10. Aug 2023 21:48

AW: Indy:komponente tiddaytime kann nicht registriert werden
 
Redist sind die RuntimePackages, welche man seinem Programm zum Kunden mitgeben kann, wenn man mit Laufzeitpackages kompiliert hat.

Seh ich das richtig und da steht zwei mal der selbe BPL-Name in der Fehlermeldung?
PS: Strg+C funktioniert in vielen Dialogen und dann im Forum via Strg+V als Text. (als Text hätte ich die auch direkt gegenüberhalten können)

Die dclIndyProtocols200.bpl in unterschiedlichen Pfaden registiert?



Untendrunter steht der Pfad+Name der Registrierung.
In Hilfe > Info über ... > [Versionsinfo] siehst du, was wirklich von wo geladen wurde.

thomaskroger 11. Aug 2023 15:27

AW: Indy:komponente tiddaytime kann nicht registriert werden
 
Hallo himitsu,
vielen Dank für die Tipps. Es hat geholfen, das Problem zu lösen.

Ausgelöst durch ein Update auf die neuste Version:
https://github.com/IndySockets/Indy/wiki/Updating-Indy

Hier gab es dauerhaft Runtime-Errors bei der Installation dclIndyProtocols. Daher zurück zur alten Version.
Das Problem hat aber eine Wiederherstellung der „C:\Program Files (x86)\Embarcadero“ - Verzeichnisse aus einem BAK überlebt. Es muss also an der Registry liegen. Und tatsächlich hatte die vorherige, misslungene Installation einige Leichen hinterlassen:
Unter
Code:
[HKEY_CURRENT_USER\SOFTWARE\Embarcadero\BDS\14.0\Package Cache\dclIndyProtocols200.bpl\Components]
"Indy Clients|IdDayTime|System.Classes.TPersistent|TIdDayTime|0|95"="1"
"Indy-Clients|IdDayTime|System.Classes.TPersistent|TIdDayTime|0|95"="1"
usw.
waren einige Komponenten doppelt angelegt. Und die können eben nicht zwei Mal installiert werden.

Es ist also eine sehr gute Idee, vor einem Update von Indy folgende Registry-Schlüssel zu sichern:
Code:
HKEY_CURRENT_USER\SOFTWARE\Embarcadero
und natürlich ein Backup von
Code:
C:\Program Files (x86)\Embarcadero\
anzulegen.

Hier noch einige Hintergründe:
jap, da steht zwei mal der selbe BPL-Name in der Fehlermeldung.
Komponente TIdDayTime kann von Package dclindyprotocols200.bpl nicht registriert werden, weil sie bereits von Package dclindyprotocols200.bpl registriert wurde.
Es gibt nur den Einen, da wo er auch sein soll:
Code:
C:\Program Files (x86)\Embarcadero\Studio\14.0\bin\dclIndyProtocols200.bpl
In Tools > Optionen > Umgebungsoptionen > Komponenten-Symbolleiste
waren unter Indy alle Komponenten aufgeführt. Allerdings waren dort jeweils zwei Seiten "Indy-Clients" und "Indy Clients" und auch "Indy-Server" und "Indy Server" angelegt. Die Komponenten waren auf beide verteilt.
Nach einen Neustart waren "Indy Clients" und "Indy Server" leer. Wenn ich dann unter "Packages installieren" dclindyprotocols200.bpl mit der bekannten Fehlermeldung anwähle, waren die Komponenten unter "Indy Clients" und "Indy Server" wieder vorhanden, lassen sich aber nicht verwenden. (wirft eine Exception)


Code:
exception class   : ENonAIRException
exception message : Komponente TIdDayTime kann von Package dclindyprotocols200.bpl nicht registriert werden, weil sie bereits von Package dclindyprotocols200.bpl registriert wurde.


disassembling:
21c66e94
21c66e99       mov    eax, [ebp-$3c]
21c66e9c      mov    [ebp-$30], eax
21c66e9f      mov    byte ptr [ebp-$2c], $11
21c66ea3       lea    edx, [ebp-$40]
21c66ea6       mov    eax, [ebp-8]
21c66ea9       mov    ecx, [eax]
21c66eab      call   dword ptr [ecx+$54]
21c66eab
21c66eae      mov    eax, [ebp-$40]
21c66eb1       mov    [ebp-$28], eax
21c66eb4       mov    byte ptr [ebp-$24], $11
21c66eb8       lea    eax, [ebp-$38]
21c66ebb      push   eax
21c66ebc      push   2
21c66ebe      mov    ecx, $21c62f1c
21c66ec3       mov    dl, 1
21c66ec5       mov    eax, [$21de0694]
21c66eca      call   -$14c8f ($21c52240)   ; Winapi.Windows.System.SysUtils.Exception.CreateResFmt (delphicoreide200.bpl)
21c66eca
21c66ecf    > call   -$15d64 ($21c51170)   ; System.@RaiseExcept (delphicoreide200.bpl)
21c66ecf
21c66ed4     loc_21c66ed4:
21c66ed4 1523   inc    esi
21c66ed5 1510   dec    dword ptr [ebp-$14]
21c66ed8       jnz    loc_21c66d9a
21c66ed8
21c66ede    loc_21c66ede:
21c66ede 1524   lea    eax, [ebp-$c]
21c66ee1       mov    edx, [$21de1460]
21c66ee7       mov    edx, [edx]
21c66ee9       mov    ecx, $21c67020
21c66eee      call   -$15ab3 ($21c51440)   ; System.@IntfCast (delphicoreide200.bpl)
21c66eee
21c66ef3 1525   mov    eax, [ebx+$24]
21c66ef6       mov    eax, [eax+8]
21c66ef9       dec    eax
21c66efa      test   eax, eax
21c66efc      jl     loc_21c66f1f
21c66efc
21c66efe      inc    eax
Vielen Dank für die Hilfe!


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:48 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