Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zufallfarbe (https://www.delphipraxis.net/54449-zufallfarbe.html)

Maduser 4. Okt 2005 16:05


Zufallfarbe
 
Ich würde gerne eine Zufallfarbe generiern. Ich möchte aber gerne dazu eine Farbe zufaällig aus den 16 Standardfarben auswählen.
Gibt es dazu eine einfachen Weg (ohne ein array mit den 16 Farben zu bauen)?

Ratte 4. Okt 2005 16:13

Re: Zufallfarbe
 
Ich hab' keine wie das geht (evt. über API?), aber was spricht denn gegen das Array?

Ratte

Speedmaster 4. Okt 2005 16:14

Re: Zufallfarbe
 
Was Spricht dagegen ein Array aus 16 Farben zu verwenden, ich meine...ich bin ja schon faul, aber so faul kann man doch garnicht sein?!?!

Edit: War wieder einer schneller!

Maduser 4. Okt 2005 16:20

Re: Zufallfarbe
 
Zitat:

Zitat von Speedmaster
Was Spricht dagegen ein Array aus 16 Farben zu verwenden, ich meine...ich bin ja schon faul, aber so faul kann man doch garnicht sein?!?!

Ja reine Faulheit und eigentlich hätte ich gedacht das es sowas gibt. Na dann werde ich ein Array schreiben.

Danke (das war aber wirklich fix)

Oxmyx 4. Okt 2005 16:21

Re: Zufallfarbe
 
Was sollte es denn da geben? Delphi hat seinen Ruf als Klickibunti-Programmiersprache wirklich verdient...

juergen 4. Okt 2005 16:34

Re: Zufallfarbe
 
was halt auch ginge (allerdings eben aufwendiger):
über Random eine Variable bis max 16 füllen lassen und dann per
Delphi-Quellcode:
if...then...else...
eine entsprechende Farbe zuweisen.

Gruß Jürgen

Maduser 4. Okt 2005 16:57

Re: Zufallfarbe
 
Zitat:

Zitat von Oxmyx
Was sollte es denn da geben? Delphi hat seinen Ruf als Klickibunti-Programmiersprache wirklich verdient...

Na einfach ein Array mit den 16 Standartfarben.

malo 4. Okt 2005 17:03

Re: Zufallfarbe
 
Zitat:

Zitat von juergen
was halt auch ginge (allerdings eben aufwendiger):
über Random eine Variable bis max 16 füllen lassen und dann per
Delphi-Quellcode:
if...then...else...
eine entsprechende Farbe zuweisen.

Gruß Jürgen

Lieber Delphi-Referenz durchsuchencase :zwinker:

Delphi-Quellcode:
procedure xyz;
var
  EineDummeZufallsZahlFuerDieFarbe: byte;
begin
  EineDummeZufallsZahlFuerDieFarbe := Random(15);
  case EineDummeZufallsZahlFuerDieFarbe of
    0: Farbe := clRed;
    1: Farbe := clBlue;
    //immer so weiter
    15: Farbe := clBlack;
  end;
end;
So in etwa... ;)

Maduser 4. Okt 2005 17:22

Re: Zufallfarbe
 
Danke euch allen.

Ich habe das jetzt so gemacht
Delphi-Quellcode:
type
 TStandardFarben = array[0..15] of TColor;


const
  CStandardFarben: TStandardFarben = (clBlack, clMaroon, clGreen, clGreen,
    clOlive, clNavy, clPurple, clTeal, clGray, clSilver, clRed, clLime,
    clYellow, clBlue, clFuchsia, clAqua);

function GetRandomColor: TColor;
begin
  GetRandomColor := CStandardFarben[Random(15)];
end;

Thorben77 4. Okt 2005 17:24

Re: Zufallfarbe
 
Zitat:

Zitat von Maduser
Delphi-Quellcode:
function GetRandomColor: TColor;
begin
  GetRandomColor := CStandardFarben[Random(15)]; // <--- so versuchst du, der Funktion einen Wert zu zuweisen
end;

So muss es sein:

Delphi-Quellcode:
function GetRandomColor: TColor;
begin
  Result := CStandardFarben[Random(15)]; // <-- Result ist der Rückgabewert der Funktion
end;
:wink:

Edit: Kann man in Quelltexten keine Farben benutzen? :gruebel:

Maduser 4. Okt 2005 17:47

Re: Zufallfarbe
 
Und das ist auch beides Möglich.
Das mit Result, aber nur wenn der erweitere Syntax an ist.

Dazu die Delphi Hilfe:
Zitat:

Ein Beispiel:
Delphi-Quellcode:
function WF: Integer;
begin
  WF := 17;
end;
Diese Deklaration definiert eine Konstantenfunktion namens WF, die keine Parameter entgegennimmt und immer den Integerwert 17 zurückgibt. Diese Deklaration ist zur folgenden äquivalent:
Delphi-Quellcode:
function WF: Integer;
begin
  Result := 17;
end;


Thorben77 4. Okt 2005 18:59

Re: Zufallfarbe
 
Wieder was dazugelernt :zwinker:

(Ich find die Lösung mit Result aber verständlicher.)

Angel4585 5. Okt 2005 07:36

Re: Zufallfarbe
 
Fahlt da nicht noch ein

Randomize;?

Grishnak 5. Okt 2005 08:16

Re: Zufallfarbe
 
Für Zufallszahlen zwischen 0 und 15 bitte ein "Random(16)" benutzen!

Sharky 5. Okt 2005 08:17

Re: Zufallfarbe
 
Hier noch eine kleine Lösung von mir. Ohne Arrays oder so Zeug ;-)
Delphi-Quellcode:
function ZufallsFarbe : TColor;
var
  farbe: TPaletteEntry;
begin
  GetPaletteEntries(GetStockObject(DEFAULT_PALETTE), Random(16), 1, farbe);
  result := RGB(farbe.peRed, farbe.peGreen, farbe.peBlue);
end;

procedure TForm1.btn_FarbeClick(Sender: TObject);
begin
  Panel1.Color := ZufallsFarbe;
end;
P.S.: Natürlich nicht das Randomize im .OnCreate der Form vergessen ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:25 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