Einzelnen Beitrag anzeigen

thomaskroger

Registriert seit: 22. Mär 2009
16 Beiträge
 
#3

AW: Indy:komponente tiddaytime kann nicht registriert werden

  Alt 11. Aug 2023, 16:27
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!
  Mit Zitat antworten Zitat