![]() |
Delphi-Version: 7
Array initialisieren
Habe hier etwas rumgebastelt, um mal mit den Array anzufangen.
Ist nichts großes, es geht hier nur darum zufällige Zahlen zu generieren und diese mit Hilfe eines Array als Bildpunkt darzustellen, damit man dann später die Verteilung der Zufallszahlen als Balkendiagramm erkennen kann. Das ganze sieht so aus:
Delphi-Quellcode:
Finde jetzt nur den Schritt zum initialisieren des Array (also alle Werte auf 0 setzen) etwas umständlich, da gibt es doch bestimmt eine bessere und elegantere Lösung. Für Hinweise und Hilfen wäre ich dankbar.
procedure TForm1.Button1Click(Sender: TObject);
var Durchgaenge,n,Zufallswert,x: Integer; //Variablen deklarieren AZufall: Array [1..600] of Integer; //Array mit 600 Feldern begin Durchgaenge:=StrToInt(Edit2.Text); //Anzahl der Durchgänge x:=PaintBox1.ClientHeight; //Höhe der PaintBox in x schreiben PaintBox1.Refresh; //Refreshen der PaintBox For n := 1 to 600 do //Schleife Array initialisieren Begin //Start Array initialisieren AZufall[n]:=0; //Array-Wert auf 0 setzen end;//Ende Array initialisieren Randomize; //Zufallsgenerator starten For n := 1 to durchgaenge do //Schleife für Ausgabe der Werte Begin //Start Ausgabe Zufallswert:=Random(600)+1; //Zufallswert 1-600 generieren inc (AZufall[Zufallswert]); //Array hochzählen PaintBox1.Canvas.Pixels[Zufallswert,x-AZufall[Zufallswert]]:=ClBlack; //Einzeichnen des Punktes end; //Ende Ausgabe end; |
AW: Array initialisieren
Versuch mal:
Delphi-Quellcode:
ZeroMemory(@aZufall, SizeOf(AZufall));
|
AW: Array initialisieren
Delphi-Quellcode:
:!: Aber nur für Arrays in welchen keine Strings, Interfaces und andere dynamischen Arrays enthalten sind.
FillChar(MyArray[0], Length(MyArray) * SizeOf(MyArray[0]), 0); // für satische und dynamische Arrays (geht also immer)
FillChar(MyArray[0], SizeOf(MyArray), 0); // für statische Arrays FillChar(MyArray, SizeOf(MyArray), 0); // für statische Arrays (da hier ja der erste Wert und das Array selber am gleichen Platz beginnen) [add]
Delphi-Quellcode:
entspricht
ZeroMemory(@x, SizeOf(AZufall));
Delphi-Quellcode:
Was einem halt lieber ist.
FillChar(x, SizeOf(AZufall), 0);
PS: Wenn du sofort danach eh das Array (neu) befüllst (also nochmal initialisierst), kannst'e dir das Initialisieren sparen. PSS: Randomize nur einmal (bei Programmstart) aufrufen :!: |
AW: Array initialisieren
Na da sag ich doch mal ganz lieb dankeschön
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:53 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 by Thomas Breitkreuz