Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   COM Klassen werden mit kurzen Dateinamen registriert (https://www.delphipraxis.net/208807-com-klassen-werden-mit-kurzen-dateinamen-registriert.html)

Rolf Frei 15. Sep 2021 18:34

COM Klassen werden mit kurzen Dateinamen registriert
 
Ich bin hier eben auf eine Problem gestossen, das mir bisher nicht aufgefallen ist. Wenn ich eine COM-Klasse registriere wird im InprocServer32 RegKey der kurze anstatt dem langen Dateinamen gespeichert, wenn der Dateipfad eien Space enthält. Das ist nicht mehr aktuell (war es das jemals?) und der Code in System.Win.ComObj.pas (TComObjectFactory.UpdateRegistry) mach da Blödsinn, sobald im Dateipfad ein Space enthalten ist:

Delphi-Quellcode:
   
    if AnsiPos(' ', ShortFileName) <> 0 then
      ShortFileName := ExtractShortPathName(ShortFileName);
Keine Anhung wieso das da gemacht wird und ob das irgendwas uraltes ist, das man schon längst hätte entfernen können? Wenn ich da die COM Klassen Registrierungen in meiner Registrierung anschaue, gibt es da diverse MS COM Klassen, die beim InprocServer32 Eintrag beim Dateipfad Leerschläge enthalten. Das kann also keine Vorgabe sein und da macht Delphi doch das falsch.

Das Problem ist wie folgt bei mir aufgetreten. Ich habe den Ordner, in dem die registrierte DLL liegt, in einen neuen Ordner kopiert und den alten gelöscht. Dann habe ich den neuen wieder umbenannt auf den alten Name. Grund für dieses seltsame Vorgehen war eine "Macke" im Dateiordner. Nun hat dieses Kopieren und Umbennen dazu geführt, dass der kurze Dateiname sich geändert hat, obwohl der Lange identisch wie vorher ist. Dadurch wurde die COM Klasse nichtmehr gefunden.

Ist das in Delphi 11 auch noch so? Sollte man da eine Bug melden? Kann das mal einer in System.Win.ComObj.pas (TComObjectFactory.UpdateRegistry) checken?

Rolf Frei 16. Sep 2021 12:42

AW: COM Klassen werden mit kurzen Dateinamen registriert
 
Könnte das bitte mal jemand mit Delphi 11 kontrollieren? Soll ich hier einen Bugreport schreiben? Es macht einfach überhaupt keinen Sinn, das Delphi die Com-Klasse mit kurzem Dateinamen registriert, der dann Probleme machen kann.

Uwe Raabe 16. Sep 2021 12:59

AW: COM Klassen werden mit kurzen Dateinamen registriert
 
Ist immer noch so. Ja, bitte melde das in QP.

Rolf Frei 16. Sep 2021 13:05

AW: COM Klassen werden mit kurzen Dateinamen registriert
 
Ok danke. Dann mache ich das mal.


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