AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Array durchlaufen und Werte rauslesen
Thema durchsuchen
Ansicht
Themen-Optionen

Array durchlaufen und Werte rauslesen

Ein Thema von Helmi · begonnen am 13. Jan 2007 · letzter Beitrag vom 13. Jan 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#1

Array durchlaufen und Werte rauslesen

  Alt 13. Jan 2007, 19:15
Hallo,

ich steh gerade auf dem Schlauch

ich möchte gerade mit einer for-schleife durch ein "festdefiniertes" Array gehen.

also so:
Delphi-Quellcode:
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;
nur so meckert mir Delphi die markierte Zeile an
Zitat:
[Fehler] Unit1.pas(245): '..' erwartet, aber ',' gefunden
irgendwie verständlich.

Nur, wie kann ich in der Schleife den Wert eines bestimmten Array-Feld rauslesen?
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Array durchlaufen und Werte rauslesen

  Alt 13. Jan 2007, 19:18
Bool: array [1..8] of Integer=(1, 2, 4, 8, 16, 32, 64, 128); Mit einem shl ginge das allerdings noch viel einfacher.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Array durchlaufen und Werte rauslesen

  Alt 13. Jan 2007, 19:21
Zitat von 3_of_8:
Mit einem shl ginge das allerdings noch viel einfacher.
Wie würd das gehen mit shl?

[Edit]
Wenn ich
Bool: array [1..8] of Integer=(1, 2, 4, 8, 16, 32, 64, 128); in den Var-Teil der Procedure einfüge erhalte ich die Meldung:
[Fehler] Unit1.pas(245): Lokale Variablen können nicht initialisiert werden
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Array durchlaufen und Werte rauslesen

  Alt 13. Jan 2007, 19:28
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
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Array durchlaufen und Werte rauslesen

  Alt 13. Jan 2007, 19:29
Sollte so gehen:
Delphi-Quellcode:
var
  i: Integer;
  Bool: array [1..8] of Integer;
begin
  for i := 0 to 7 do
    Bool[i + 1] := 1 shl i;
end;
shl verschiebt die Bits nach links, 1 shl i verschiebt also die 1 um i Bits nach links.

[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;
Mit den Menschen ist es wie mit Computern -
es gibt Nullen und Einsen.
  Mit Zitat antworten Zitat
Benutzerbild von p0w3r5tr34m3r
p0w3r5tr34m3r

Registriert seit: 18. Aug 2003
Ort: Monheim am Rhein
153 Beiträge
 
RAD-Studio 2009 Pro
 
#6

Re: Array durchlaufen und Werte rauslesen

  Alt 13. Jan 2007, 19:33
das array was du nlegen wolltest, musst du als konstante anlegen..

Delphi-Quellcode:
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;
MfG p0w3r5tr34m3r
Florian Cülter
ich bin ein notorischer alles-klein-schreiber!

der 100. Beitrag nach 3 Jahren 25 Wochen und einem Tag
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#7

Re: Array durchlaufen und Werte rauslesen

  Alt 13. Jan 2007, 19:39
Vielen Dank!

Hat funktioniert!
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Array durchlaufen und Werte rauslesen

  Alt 13. Jan 2007, 19:46
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;
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#9

Re: Array durchlaufen und Werte rauslesen

  Alt 13. Jan 2007, 20:18
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
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
 
Delphi XE2 Professional
 
#10

Re: Array durchlaufen und Werte rauslesen

  Alt 13. Jan 2007, 20:24
Hallo Hawkeye,

dummy_CheckBox ist nur ein Zeiger auf eine CheckBox.

Oben ist leider ein Fehler in den Codes - es sollte natürlich
Integer(dummy_CheckBox.checked) heissen.
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz