AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Font ohne Installation verwenden
Thema durchsuchen
Ansicht
Themen-Optionen

Font ohne Installation verwenden

Ein Thema von EWeiss · begonnen am 21. Mär 2017 · letzter Beitrag vom 21. Mär 2017
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

Font ohne Installation verwenden

  Alt 21. Mär 2017, 00:33
Ja es gibt hier schon einige Threads für das Problem.
Und das Ergebnis ist dies

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject) ;

begin
  AddFontResource('c:\FONTS\MyFont.TTF') ;
  SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0) ;
end;

procedure TForm1.FormDestroy(Sender: TObject; var Action: TCloseAction) ;

begin
  RemoveFontResource('C:\FONTS\MyFont.TTF') ;
  SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0) ;
end;
Nur wenn das jeder empfiehlt warum stürzt meine Anwendung dann hier ab ?

GdipCheck(GdipCreateFontFamilyFromName(UseFont, nil, Fam)); Wo liegt das Problem?

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

AW: Font ohne Installation verwenden

  Alt 21. Mär 2017, 00:52
Rückgabewerte und Fehlerbehandlung? Wie sieht der Code drumherum aus? Funktioniert es mit einer schon installierten Schrift?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: Font ohne Installation verwenden

  Alt 21. Mär 2017, 00:59
Zitat:
Funktioniert es mit einer schon installierten Schrift?
Ja.

Zitat:
Rückgabewerte und Fehlerbehandlung?
Keine nur AV. GenericError

gruss

Geändert von EWeiss (21. Mär 2017 um 01:04 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

AW: Font ohne Installation verwenden

  Alt 21. Mär 2017, 01:15
Zitat:
Rückgabewerte und Fehlerbehandlung?
Keine nur AV. GenericError
Deswegen sollst du ja eine machen, damit man sieht wo es genau schief geht, ohne dass es dir gleich um die Ohren fliegt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Font ohne Installation verwenden

  Alt 21. Mär 2017, 01:22
Zitat:
Rückgabewerte und Fehlerbehandlung?
Keine nur AV. GenericError
Deswegen sollst du ja eine machen, damit man sieht wo es genau schief geht, ohne dass es dir gleich um die Ohren fliegt.
Bringt nichts..
Diese Funktion ist einfach zu GDI+ nicht kompatible.
Die Rückgabe ist zwar true( VCL) aber nicht gleich True für GDI+

Ich muss das hier verwenden.

GdipPrivateAddFontFile

gruss
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#6

AW: Font ohne Installation verwenden

  Alt 21. Mär 2017, 08:46
Wie wäre es mit den etwas besser dokumentierten APIs? (MSDN)

AddFontResource oder besser AddFontResourceEx

Standardmäßig braucht man im Windows keine erhöhten Rechte.
Selbst in Server-Windowsen kann jeder Benutzer diese APIs nutzen, bzw. im Explorer auf "Installieren" klicken.
Bei AddFontResourceEx kann man angeben, ob Windows den Font automatisch wieder entlädt (auch wenn dein Programm mal abstürzt) und ob der FontName aufgelistet werden soll (z.B. bei den FontName-Properties im DropDown).
Auch wenn der Name nicht aufgelistet wird, kann man ihn direkt dem FonName zuweisen und verwenden.

(bei Fonts gibt es im GDI+ auch niemals eine Exception/Fehlermeldung, sollte man einen nichtregistrierten Namen angeben ... das wird einfach nur "heimlich" durch registrierte Ersatzfonts oder Standardfonts ersetzt)


PS: In deinem BeispielCode und dem nichtverlinkten Hierwurdedasschonberedetthread finde ich die Zeile mit "GdipCreateFontFamilyFromName" irgendwie nicht.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (21. Mär 2017 um 08:48 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: Font ohne Installation verwenden

  Alt 21. Mär 2017, 08:58
Zitat:
(bei Fonts gibt es im GDI+ auch niemals eine Exception/Fehlermeldung, sollte man einen nichtregistrierten Namen angeben ... das wird einfach nur "heimlich" durch registrierte Ersatzfonts oder Standardfonts ersetzt)
Hast du das schon gemacht bzw.. Versucht?

Denn da bist du im Irrtum.. und wie es kracht.
Ich lasse es gerne absichtlich krachen. Das Programm soll sich beenden wenn Fehler bei der Verwendung von GDI+ auftreten.
Sonst hätte ich diesen Thread gar nicht erstellen müssen.

Das muss und soll krachen wenn ein Fehler auftritt. Fam wäre in dem Fall NIL.
GdipCheck(GdipCreateFontFamilyFromName(UseFont, nil, Fam));
Zitat:
Standardmäßig braucht man im Windows keine erhöhten Rechte.
Das hat mit Rechten nichts zu tun sondern einfach damit das du die Windows API von GDI nicht für GDI+ verwenden kannst.

GDI+ Muss seinen Font von der Festplatte oder woher auch immer mit
privateFontCollection: TGPPrivateFontCollection;

FontCollection einholen.

privateFontCollection.AddFontFile('c:\Windows\Fonts\Arial.ttf');
Zitat:
In deinem BeispielCode und dem nichtverlinkten Hierwurdedasschonberedetthread
Soll ich dir jetzt hier die ganzen hundert Threads mit diesen Thema auflisten ?

Zitat:
finde ich die Zeile mit "GdipCreateFontFamilyFromName" irgendwie nicht.
Warum willst du diese finden?
Die wird verwendet in meiner Library sobald man GDIP_DrawTextToDC verwendet Button beschriftet oder Labels addiert..

gruss

Geändert von EWeiss (21. Mär 2017 um 10:54 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#8

AW: Font ohne Installation verwenden

  Alt 21. Mär 2017, 10:40
Hast du das schon gemacht bzw.. Versucht?
Der einfachste Test:
Label.Font.FontName im OI zuweisen und dann schauen was nicht passiert
oder irgendwas ala
Delphi-Quellcode:
Canvas.Font.FontName := 'GibtEsNicht';
Canvas.DrawText(...);
Nirgendwo wird ein Fehler geworfen.


Soll ich dir jetzt hier die ganzen hundert Threads mit diesen Thema auflisten ?

Warum willst du diese finden?
Weil du nur schreibst "geht nicht" und sagst "ich hab diese Lösung von wo anders" aber dazu auch kein weiteres Wort.
Sollen wir uns das jetzt alles durchlesen, anstatt du einfach mal ein/zwei weiterfphrende Links gibst?


Das Einzige Problem was wir z.B. bei AddFontResourceEx haben ist Microsoft Office.
Der Dreck hookt sich krankhaft überall ins System und bei einigen Kunden passiert es dann, dass der Aufruf dieser API niemals zurückkehrt (hängt), bis man MS Office abschießt/deinstalliert.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (21. Mär 2017 um 10:49 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

AW: Font ohne Installation verwenden

  Alt 21. Mär 2017, 10:49
Delphi-Quellcode:
Canvas.Font := 'GibtEsNicht';
Canvas.DrawText(...);
Es hat nichts mit GDI+ zu tun.. sorry das ist VCL(GDI) und hier funktioniert die altbewährte Methode über GDI.
Also das funktioniert AddFontResourceEx mit GDI

Zitat:
Weil du nur schreibst "geht nicht" und sagst "ich hab diese Lösung von wo anders" aber dazu auch kein weiteres Wort.
Ich habe nirgendwo geschrieben "Geht nicht" (Nur gesagt das meine Anwendung abstürzt mit diesen Lösungsansätzen)
Ich habe nirgends geschrieben "ich hab diese Lösung von wo anders"

Zitat:
aber dazu auch kein weiteres Wort
Doch..
Und zwar das her
Zitat:
Ja es gibt hier schon einige Threads für das Problem.
Ich habe hier gesucht und in Verbindung mit meiner Frage einige Threads mit den gleichen Thema gefunden.
Nur alle die Informationen die fast alle gleich sind funktionieren nicht mit GDI+ das ist Fakt!

Warum habe ich oben beschrieben.
Aber ich möchte mich mit niemanden hier streiten von daher

gruss
  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 06:13 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