Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - zufälliger Fontname?


Daniel L. - Di 02.11.10 18:09
Titel: zufälliger Fontname?
Hi,

wie könne man eine zufälligen, gültigen Fontnamen erstellen?

Delphi-Quelltext
1:
label1.font.name := GetRandomFontmame;  // z.B Tahoma                    


Ich weiss, wie man mit random() umgeht, aber nicht, wie und wo ich die Fonts herkriege.

Vielen Dank + Gruss: Daniel


Martok - Di 02.11.10 18:16

AFAIR gibt es in Screen.Fonts eine Liste. Kann auch in einer anderen Klasse sein, aber irgendwo in der VCL gibt es eine solche Eigenschaft.


ALF - Di 02.11.10 18:18

Jo, mein Vorschlag.
Du müsstest erst mal rausbekommen wieviele Fonts zu verfügung stehen! Also das FontArray durchsuchen. Hast Du diese Zahl, kannst Du sie zufällig generieren und dann das FontArray mit der gefundenen Zahl ansprechen. Mal so mein Gedanke.

Gruss ALf


elundril - Di 02.11.10 18:27

Screen.Fonts ist eine Stringlist. Demnach müsste folgendes funktionieren:


Delphi-Quelltext
1:
2:
3:
4:
function GetRandomFontName(): String;
begin
  Result := Screen.Fonts[Random(Screen.Fonts.Count)];
end;


lg elundril


Daniel L. - Di 02.11.10 18:55

sänks ä lott ! :D

edit:
ich glaube, ohne -1:
Result := Screen.Fonts[Random(Screen.Fonts.Count)];


Stundenplan - Di 02.11.10 19:35

Mit -1, denn Count ist nur die Anzahl der Arrayelemente, das Array geht aber von 0..Count-1, Beispiel:
Wenn ich ein Array habe, welches von 0 bis 3 geht, hab ich 4 Elemente, nämlich 0, 1, 2, und 3.
Und damit du nicht versuchst, auf ein Arrayelement zuzugreifen, welches gar nicht existiert (Beim Random(Count) könnte ja auch zufällig mal Count rauskommen, aber das Array geht ja nur bis Count-1), musst du eben entsprechend 1 abziehen.

Edit: Tatsächlich Ohne -1, siehe Gausis Post unten. :oops:

Viele Grüße,
Stundenplan.


Gausi - Di 02.11.10 19:37

Ne, ohne -1, denn Random(x) liefert eine Zahl größer oder gleich 0 und echt kleiner x. ;-)


Daniel L. - Di 02.11.10 19:39

ebend :wink2:


elundril - Di 02.11.10 19:39

oh, ich dachte kleiner gleich. sorry, ich verbessere es mal schnell.

lg elundril


F34r0fTh3D4rk - Di 02.11.10 19:53

user profile iconGausi hat folgendes geschrieben Zum zitierten Posting springen:
Ne, ohne -1, denn Random(x) liefert eine Zahl größer oder gleich 0 und echt kleiner x. ;-)

Oder anders gesagt: random(n) hat n mögliche Ausgaben, bei 0 beginnend.