Ich versuche, die XListFonts-Funktion aus der XLib-Unit zu verwenden. Ich erhalte zur Laufzeit einen Fehler.
Code: Alles auswählen
uses
XLib;
var
display: PDisplay;
display_name: pchar;
font_list: ppchar;
count: plongint;
i: integer;
begin
display_name := XDisplayName(nil);
WriteLn('display_name ', display_name);
display := XOpenDisplay(display_name);
if display = nil then
WriteLn(ErrOutput, 'Cannot open display')
else
begin
count := nil;
font_list := XListFonts(display, '*-fixed-*', 50, count); // Runtime error 216
if Assigned(font_list) and (count^ > 0) then
for i := 0 to Pred(count^) do
WriteLn(font_list[i]^);
if Assigned(font_list) then
XFreeFontNames(font_list);
XCloseDisplay(display);
end;
end.
Code: Alles auswählen
/*
* Exemple provenant du site :
* http://supertos.free.fr/html/linux/dev/xwindow/dev/xlib/index.htm
*/
#include <stdio.h>
#include <X11/Xlib.h>
Display* dpy;
char **fontlist; // Pointeur sur un tableau de pointeurs qui contiendront les noms des fontes
int listcount, i;
int main(void)
{
dpy = XOpenDisplay("");
if (dpy == NULL)
printf("Connexion impossible au serveur X par défaut\n");
else
{
// Récupération des 50 premiers noms de fonte contenant fixed dans la dénomination
fontlist = XListFonts(dpy, "*-fixed-*", 50, &listcount);
if (fontlist != NULL && listcount > 0)
{
for (i = 0; i < listcount; i++)
{
printf("%s\n", fontlist[i]);
}
}
else
printf("Problème lors de la récupération des noms\n");
if (fontlist != NULL)
XFreeFontNames(fontlist);
XCloseDisplay(dpy);
}
return;
}