AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign COM Klassen werden mit kurzen Dateinamen registriert

COM Klassen werden mit kurzen Dateinamen registriert

Ein Thema von Rolf Frei · begonnen am 15. Sep 2021 · letzter Beitrag vom 16. Sep 2021
Antwort Antwort
Rolf Frei

Registriert seit: 19. Jun 2006
391 Beiträge
 
Delphi 10.3 Rio
 
#1

COM Klassen werden mit kurzen Dateinamen registriert

  Alt 15. Sep 2021, 19:34
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?

Geändert von Rolf Frei (15. Sep 2021 um 19:42 Uhr)
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
391 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: COM Klassen werden mit kurzen Dateinamen registriert

  Alt 16. Sep 2021, 13:42
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.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
8.819 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: COM Klassen werden mit kurzen Dateinamen registriert

  Alt 16. Sep 2021, 13:59
Ist immer noch so. Ja, bitte melde das in QP.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
391 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: COM Klassen werden mit kurzen Dateinamen registriert

  Alt 16. Sep 2021, 14:05
Ok danke. Dann mache ich das mal.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf