PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Array auf 0 setzen?



TobiasBlome
23.07.2011, 17:09
Hallo,
welche Möglichkeit gibt es ein Array auf 0 zu setzen?

Bisher viel mir nur ein es von Hand auf 0 zu setzen:

Dim x(3) As Byte
x(1) = 0
x(2) = 0
x(3) = 0


oder in einer For...Next Schleife.

Gibt es vielleicht noch etwas einfacheres?
Schön wäre ja "x(1) ; 3 = 0" oder so....

Tobias

Che Guevara
23.07.2011, 17:49
Hallo,

du könntest versuchen, eine Overlay-Variable über das Array zu legen und diese dann auf 0 zu setzen, so etwa:


dim ar(4) as byte
dim _overlay as byte at ar(1) overlay

_overlay = 0


Ist allerdings nicht von mir getestet, war nur gerade so ein spontaner Einfall ;)

Gruß
Chris

TobiasBlome
23.07.2011, 18:23
werd ich versuchen - war aber nur eine grundsätzliche Frage ob es da vielleicht etwas gibt.

Tobias

PicNick
24.07.2011, 09:56
Wirklich verändern kann man nur das bzw die Bascom Statements, denn ein 8-Bit Rechner kann eben nur ein Byte auf einmal verändern, d.h. eine Art FOR-Schleife wird es letztlich auf jeden Fall.

da_reefer
24.07.2011, 10:50
Hallo,

Das mit dem Overlay wird so nicht funktionieren, dabei wird nur das erste Byte im Array gesetzt.
Schau dir mal den Memcopy-Befehl an, der kopiert einen Speicherbereich in den anderen, wobei du bestimmen kannst, welche Adressen inkrementiert werden. Zum Nullen eines Arrays bietet sich Option 2 an.
Ein bisschen schneller gehts noch wenn man sich diese Funktion selbst in Assembler schreibt und dabei auf die Parameterübergabe verzichtet...

mfg

Che Guevara
24.07.2011, 12:10
Oh sorry, die overlay Variable muss natürlich ein größerer Typ sein! Wenn das Array 4 Byte groß ist, dann muss die Overlay Variable mindestens ein 4Byte Datentyp sein (z.b. Long).

Gruß
Chris

TobiasBlome
24.07.2011, 12:47
Vielen Dank für die vielen Antworten.
Dann bleibe ich also bei der FOR-Schleife.

Tobias