AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Win 10 : add/remove Font Resource
Thema durchsuchen
Ansicht
Themen-Optionen

Win 10 : add/remove Font Resource

Ein Thema von creehawk · begonnen am 2. Dez 2017 · letzter Beitrag vom 17. Jan 2018
 
creehawk

Registriert seit: 1. Jul 2013
Ort: Hamburg
233 Beiträge
 
Delphi 10.4 Sydney
 
#1

Win 10 : add/remove Font Resource

  Alt 2. Dez 2017, 16:20
Moin Moin.

Für ein Editierprogramm verwende ich eine besondere Schriftart. Diese wird beim Start aus einer Ressource gelesen, anschließend gesetzt und beim Beenden des Programms wieder entfernt.

Delphi-Quellcode:
//in Form.Create
....

   C4Font := 'D:\Games\C4\C4S.ttf';

    FontRes := TResourceStream.Create(hInstance, 'TTF', Pchar('CityFont'));
    FontRes.SaveToFile(C4Font);
    FontRes.Free;
    FontInt :=AddFontResource(PChar(C4Font));
    If FontInt > 0 then SendMessage(Application.Handle, WM_FONTCHANGE, 0, 0);
    If FontInt = 0 then
         MessageBox(0, PChar(SysErrorMessage(GetLastError)), 'Schriftenfehler', MB_OK or MB_ICONERROR);
....
// in Form.OnDestroy
....
    RemoveFontResource(PChar(CityFont));
    SendMessage(Application.Handle, WM_FONTCHANGE, 0, 0);
   If DeleteFile(C4Font) = false then   
         MessageBox(0, PChar(SysErrorMessage(GetLastError)), 'Löschfehler', MB_OK or MB_ICONERROR);
....
Soweit so schön, klappt(e) anstandslos. Also bisher, in diesem Fall mit Delphi7 und in Win7.

In Delphi 10.2 und Win10 geht das auch korrekt vor sich, dacht ich jedenfalls. Der Font wird zur Laufzeit verwendet,jedoch wird die TTF Datei nach dem Programmende nicht mehr gelöscht wie vorgesehen. Fehlermeldung : Zugriff verweigert

Eine Löschung im Explorer funktioniert ebenfalls nicht mit der bekannten "Aktion kann nicht beendet werden, weil die Datei im System geöffnet ist." Meldung. Zum Zeitpunkt des Löschaufrufs in Delphi/Explorer war keine Anwendung am laufen, schon gar nicht eine die diese Schrift verwendet.

Okay, einfach mal neu gestartet, direkt in den Explorer um die TTF Datei zu löschen - wieder "Aktion kann nicht....." usw. Jetzt mit "Unlocker" ans Werk. Und auch der kann die Datei erst - dann allerdings erfolgreich - nach einem Neustart löschen, gibt allerdings nicht aus wer denn die Datei im System noch verwendet. Jetzt mal kernig das Verzeichnis gelöscht in dem sich die TTF Datei befindet. Kein Problem. Alles weg.

Was kann das sein?

creehawk

Das Problem besteht auf insgesamt 20 Win10Home Rechnern, darunter auch nagelneue (Vanilla) ohne irgendwelche Programme.
  Mit Zitat antworten Zitat
 


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 20:51 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