Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Dateiname eines Fonts ermitteln (https://www.delphipraxis.net/29669-dateiname-eines-fonts-ermitteln.html)

flomei 12. Sep 2004 23:09


Dateiname eines Fonts ermitteln
 
Hallo!
Ich würde gerne den Dateinamen eines Fonts ermitteln.
Kennt jemand eine Funktion dafür oder weiss wie man es probieren könnte?

Problem ist nämlich, dass bei vielen Fonts der Dateiname <> Fontname ist.
z.B.: Fontname: "ZoeBecker" Dateiname: "zoerdb.ttf"

Vielen Dank im Vorraus!

MfG Florian :hi:

scp 12. Sep 2004 23:20

Re: Dateiname eines Fonts ermitteln
 
Hinzu kommt noch, das bestimmte Fonts "gemappt" sind, das heisst "MS Shell Dlg 2" ist z.B. Tahoma.
Nachzulesen in der Registry unter HKLM\Microsoft\Windows NT\CurrentVersion\FontSubstitutes.
Namen kann man unter "HKLM\Microsoft\Windows NT\CurrentVersion\Fonts" rausfinden. Das ganze gilt für Windows NT4/2000/XP/2003.
Ob es eine Funktion dafür gibt, weis ich allerdings nicht.

flomei 13. Sep 2004 00:30

Re: Dateiname eines Fonts ermitteln
 
Und genau da liegt das Problem!
Nur mit genügend Rechten kann man auf HKLM zugreifen...
Weiterhin sollte das wenn möglich zumindest auch auf Win98 laufen...

MfG Florian :hi:

Luckie 13. Sep 2004 00:35

Re: Dateiname eines Fonts ermitteln
 
Lesen solltest du auch als einfacher Benutzer können. Und schlimmsten falls musst du eben zwei Versionen machen.

alcaeus 13. Sep 2004 00:42

Re: Dateiname eines Fonts ermitteln
 
Hi Florian,

du musst beim Erstellen des TRegistry-Objekts angeben, dass du nur Lesezugriff willst:

Delphi-Quellcode:
reg := TRegistry.Create(KEY_READ);
Lässt du den Parameter weg, so wird automatisch Lese- und Schreibzugriff verlangt, welchen du auf HKLM aber nur als Admin erhälst.

Greetz
alcaeus

flomei 13. Sep 2004 14:39

Re: Dateiname eines Fonts ermitteln
 
Seid ihr euch sicher, dass der Pfad unter NT und Win9x der Gleiche ist?
Wenn ja, dann wäre das wohl ne Möglichkeit...

MfG Florian :hi:

scp 13. Sep 2004 14:53

Re: Dateiname eines Fonts ermitteln
 
Habe grad unter Win95 geguckt, da gibt es das nur unter HKLM\Microsoft\Windows\CurrentVersion\Fonts, die FontSubstitutes scheint es gar nicht zu geben.

Brüggendiek 14. Sep 2004 21:16

Re: Dateiname eines Fonts ermitteln
 
Hallo Florian!

Zitat:

Zitat von scp
Nachzulesen in der Registry unter HKLM\Microsoft\Windows NT\CurrentVersion\FontSubstitutes.
Namen kann man unter "HKLM\Microsoft\Windows NT\CurrentVersion\Fonts" rausfinden. Das ganze gilt für Windows NT4/2000/XP/2003.

:wiejetzt:
Auf meinen Rechnern stehen die Fonts bei Win98, Win98SE unter
Zitat:

HKLM\Software\Microsoft\Windows\CurrentVersion\Fonts
Bei XP ist es
Zitat:

HKLM\Software\Microsoft\Windows NT\CurrentVersion\Fonts
Da finden sich auch die Substitutionen unter
Zitat:

HKLM\Software\Microsoft\Windows NT\CurrentVersion\FontSubstitutes
WinME habe ich nicht im Einsatz - das sollte ein Anderer nachsehen. Da WinME nur eine Weiterentwicklung von 98 ist, vermute ich die Win98-Variante.

Fazit: Die Fonts selber stehen bei MS-DOS Version 7 mit Windows Version 4 (aka Win95, Win98, WinME) in einem geringfügig anderen Registryzweig als bei Windows (aka WinNT, Win2000, WinXP).
Substitutes gibt es nur bei NT.

Da es nur 2 mögliche Schlüssel für Fonts sind, kann man ja beide auswerten. Für Substitutes würde ich auch beide theoretisch möglichen Schlüssel suchen.

Gruß

Dietmar Brüggendiek
Edit: Teitscha Sprak -schwäres Sprak

scp 14. Sep 2004 23:26

Re: Dateiname eines Fonts ermitteln
 
Ja, natürlich sind die alle unter HKLM\SOFTWARE, weis auch nich warum mir dreimal der geleich Tippfehler passiert ist, wahsrcheinlich durch Copy&Paste.
Die "Windows NT"- und die FontSubstitutes-Einträge gibt es aber unter Win95 garantiert nicht, erst ab Win98.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz