AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi COM-DLL mit langen Dateinamen registrieren (Breakpoints)
Thema durchsuchen
Ansicht
Themen-Optionen

COM-DLL mit langen Dateinamen registrieren (Breakpoints)

Ein Thema von Ralf Kaiser · begonnen am 21. Nov 2008 · letzter Beitrag vom 5. Mai 2014
Antwort Antwort
Benutzerbild von Ralf Kaiser
Ralf Kaiser

Registriert seit: 21. Mär 2005
Ort: Wuppertal
932 Beiträge
 
Delphi 10.3 Rio
 
#1

COM-DLL mit langen Dateinamen registrieren (Breakpoints)

  Alt 21. Nov 2008, 08:50
Hallo zusammen,

wir haben da ein Projekt das einige COM DLLs enthält. In diesen DLLs will ich debuggen, also Breakpoints verwenden.

Wenn ich die Hostapplikation starte werden die Breakpoints im Source der COM DLL plötzlich grün (also nicht wirksam, deaktiviert, wasauchimmer).

Ich habe mir daraufhin die Einträge, die die DLL in der Registry beschreiben angesehen. Diese waren mit kurzen Dateinamen eingetragen (Tilden im Dateinamen, da Leerzeichen enthalten sind). Ändere ich diese in die lange Form des Dateinamens funktionieren die Breakpoints auch wieder.

Schön und gut. Allerdings werden, soblad man die DLL neu registriert die Dateinamen wieder in die kurze Form geändert. Das ist auf die Dauer ziemlich lästig, zumal unsere COM DLLs eine grosse Anzahl von Interfaces registrieren (es müssen also nicht nur 2 oder 3 Registryeinträge geändert werden sondern wesentlich mehr)

Weiss jemand, wie man eine COM DLL registrieren kann, sodass lange Dateinamen in die Registry eingetragen werden?

Ich frage, weil in TComObjectFactory.UpdateRegistry diese Zeilen zu finden sind:

Delphi-Quellcode:
    CreateRegKey('CLSID\' + ClassID, '', Description);
    ShortFileName := FComServer.ServerFileName;
    if AnsiPos(' ', ShortFileName) <> 0 then
      ShortFileName := ExtractShortPathName(ShortFileName);
    CreateRegKey(ServerKeyName, '', ShortFileName);
Hier wird also, falls ein Leerzeichen im Serverfilenamen enthalten ist, der Filename extra in die kurze Form umgewandelt. Man könnte also TComObjectFactory.UpdateRegistry einfach in einer abgeleiteten Factoryklasse überschreiben (ist ja virtuell) und diese Konvertierung dann weglassen.

Oder würde etwas dagegen sprechen? Schliesslich wird sich der Autor dieses TComObjectFactory.UpdateRegistry eventuell etwas dabei gedacht haben, den Dateinamen extra umzuwandeln, oder?

Dieses Problem ist mir übrigens vorher nie aufgefallen, da das Projekt auf meinem alten Rechner in einem Verzeichnis ohne Leerzeichen im Dateinamen gespeichert war.

Ciao,
Ralf
Ralf Kaiser
  Mit Zitat antworten Zitat
Benutzerbild von ogiesen
ogiesen

Registriert seit: 25. Okt 2004
Ort: Delmenhorst
43 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: COM-DLL mit langen Dateinamen registrieren (Breakpoints)

  Alt 5. Mai 2014, 15:18
Der Vollständigkeit halber für alle, die hier über eine Suche landen, wie ich : Dieses Problem wurde angeblich in Delphi XE5 gefixt: http://qc.embarcadero.com/wc/qcmain.aspx?d=118309

Bin selber leider noch auf XE4. Kann mir jemand sagen, ob tatsächlich nur die beiden für die Konvertierung zuständigen Zeilen entfernt wurden, oder wurde da doch noch etwas mehr gemacht?

Cheers,

Oliver
Oliver Giesen

People assume that time is a strict progression of cause and effect, but *actually* from a non-linear, non-subjective viewpoint - it's more like a big ball of wibbly-wobbly... timey-wimey... stuff.
The Doctor
  Mit Zitat antworten Zitat
Antwort Antwort


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 00:55 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