Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Ein Array mit einem Standardwert füllen
Janus - Do 13.03.03 18:37
Titel: Ein Array mit einem Standardwert füllen
Hallo Leute, ich habe in der Dokumentation keine Angaben über array funktionen gefunden. Gibt es eine Möglichkeite, ein Array mit einem bestimmten Standardwert zu füllen ?
z.B.
Quelltext
1: 2: 3: 4:
| arr: array of Integer;
SetLength(arr,100); setmem(arr,0); // so was in der Art |
Gruss Janus
Moderiert von
Marc: Code-Tag eingefügt. Beitrag verschoben.
MSCH - Do 13.03.03 18:49
Hi,
Quelltext
1: 2: 3: 4: 5: 6: 7:
| var A: Array[0..234] of Char; B: Array of Integer; FillChar(A,Sizeof(A),'Z'); ... SetLength(B,1000); FillChar(B,1000,123); ... |
grüße
MSCH
Moderiert von
Marc: Code-Tag eingefügt.
Andreas Pfau - Fr 14.03.03 13:25
TILT! Access Violation. Warum? Ein dynamischer Array ist ein dynamisch zugewiesener Speicherblock, und keine Variable!!!
Lösung: Auf das erste Element zugreifen (Hat die selbe Adresse):
Quelltext
1: 2: 3: 4:
| var B: Array of Integer; begin SetLength(B,1000); FillChar(B[0],Length(B),123); |
Motzi - Fr 14.03.03 13:45
| Andreas Pfau hat folgendes geschrieben: |
TILT! Access Violation. Warum? Ein dynamischer Array ist ein dynamisch zugewiesener Speicherblock, und keine Variable!!!
Lösung: Auf das erste Element zugreifen (Hat die selbe Adresse): |
Soweit richtig.. aber:
| Zitat: |
Quelltext 1: 2: 3: 4:
| var B: Array of Integer; begin SetLength(B,1000); FillChar(B[0],Length(B),123); | |
Das wird nicht gehen.. überleg mal: du hast einen Array of Integer. Ein Integer ist 4 Bytes groß, und der array enthält 1000 Elemente. Die Größe beträgt daher 4*1000 Bytes und nicht nur 1000 (Length(array))
FillChar kann dazu verwendet werden, um jedem Byte eines Speicherblocks denselben Wert zuzuweisen (für 0 gibts sogar eine eigene Funktion: ZeroMemoy). Aber in diesem Fall funktioniert das nicht, da bei einem Integer mit dem Wert 123 nicht alle Bytes gleich sind.
In diesem Fall wäre also eine for-schleife angebracht!
Andreas Pfau - Fr 14.03.03 14:15
Äh... du hast Recht :oops:
Aber @MSCH hat ja damit angefangen :wink:
Also: Wenn's ein Byte- oder Char-Array wäre, müsste man trotzdem auf das erste element zugreifen. Oder 'ne schleife erstellen.[/code]
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!