![]() |
Array durchlaufen und Werte rauslesen
Hallo,
ich steh gerade auf dem Schlauch ich möchte gerade mit einer for-schleife durch ein "festdefiniertes" Array gehen. also so:
Delphi-Quellcode:
nur so meckert mir Delphi die markierte Zeile an
var
Bool: array [1, 2, 4, 8, 16, 32, 64, 128] of Integer; //<--- geht nicht begin Wert := 0; for i := 1 to 8 do begin // Wert := Wert + (Integer(dummy_CheckBox) * Bool[i]); end; Zitat:
Nur, wie kann ich in der Schleife den Wert eines bestimmten Array-Feld rauslesen? |
Re: Array durchlaufen und Werte rauslesen
Delphi-Quellcode:
Mit einem shl ginge das allerdings noch viel einfacher.
Bool: array [1..8] of Integer=(1, 2, 4, 8, 16, 32, 64, 128);
|
Re: Array durchlaufen und Werte rauslesen
Zitat:
[Edit] Wenn ich
Delphi-Quellcode:
in den Var-Teil der Procedure einfüge erhalte ich die Meldung:
Bool: array [1..8] of Integer=(1, 2, 4, 8, 16, 32, 64, 128);
[Fehler] Unit1.pas(245): Lokale Variablen können nicht initialisiert werden |
Re: Array durchlaufen und Werte rauslesen
Hallo Helmi,
was Manuel sicher meinte ist: Schenke dir die lokale Array-Variable und ersetze "Bool[5]" durch "1 shl 5". Grüße vom marabu |
Re: Array durchlaufen und Werte rauslesen
Sollte so gehen:
Delphi-Quellcode:
shl verschiebt die Bits nach links, 1 shl i verschiebt also die 1 um i Bits nach links.
var
i: Integer; Bool: array [1..8] of Integer; begin for i := 0 to 7 do Bool[i + 1] := 1 shl i; end; [Nachtrag] Natürlich kannst du es auch direkt so machen, und dir das array komplett schenken (meinte marabu sicherlich auch so), lass dann aber die FOR-Schleife mit 0 beginnen, da 1 shl 0 logischerweise wieder 1 ergibt, 1 shl 1 wäre aber schon 2 (Binär: 10).
Delphi-Quellcode:
for i := 0 to 7 do
begin // Wert := Wert + (Integer(dummy_CheckBox) * (1 shl i)); //bin mir nicht sicher, ob man die Klammern beim shl braucht, warscheinlich kannst du sie auch wegalssen end; |
Re: Array durchlaufen und Werte rauslesen
das array was du nlegen wolltest, musst du als konstante anlegen..
Delphi-Quellcode:
MfG p0w3r5tr34m3r
const
bool: array[0..8] of integer = (1, 2, 4, 8, 16, 32, 64, 128); var i : integer; wert : integer; begin for i := low(bool) to high(bool) do begin wert := wert + (integer(dummy_checkbox) * bool[i]); end; end; |
Re: Array durchlaufen und Werte rauslesen
Vielen Dank!
Hat funktioniert! |
Re: Array durchlaufen und Werte rauslesen
Delphi-Quellcode:
var
I: integer; wert: integer; begin for I:=0 to 7 do begin wert:=wert+(integer(dummy_checkbox)*1 shl I); end; end; |
Re: Array durchlaufen und Werte rauslesen
Hallo Helmi,
der Name dummy_CheckBox ist sehr unglücklich gewählt. Er läßt den Leser deines Codes vermuten, daß es sich dabei um einen Zeiger auf eine TCheckBox-Komponente handelt und nicht um einen (booleschen?) Wert. Und da in der Schleife immer derselbe Wert verrechnet wird, verstehe ich nicht, warum du überhaupt eine Schleife verwendest - eine einfache Multiplikation mit dem Wert 255 hätte auch gereicht. Oder war das nur ein vereinfachtes Beispiel? Gruß Hawkeye |
Re: Array durchlaufen und Werte rauslesen
Hallo Hawkeye,
dummy_CheckBox ist nur ein Zeiger auf eine CheckBox. Oben ist leider ein Fehler in den Codes - es sollte natürlich
Delphi-Quellcode:
heissen.
Integer(dummy_CheckBox.checked)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:50 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