AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problme mit Variablenabfrage

Ein Thema von ensacom · begonnen am 29. Mär 2005 · letzter Beitrag vom 29. Mär 2005
Antwort Antwort
ensacom
(Gast)

n/a Beiträge
 
#1

Problme mit Variablenabfrage

  Alt 29. Mär 2005, 15:10
Hallo, ich habe zwei globale Variablen FLAGPAUSE undLAGSTOP des Typs integer;

Wenn ich auf Button1 klicke übergebe ich den WERT "1" an FLAGPAUSE

Nun habe ich eine Schleife wo strings durchlaufen werden.

z.B.
REWIND
PLAY
STOP
PAUSE
EXIT

So, nun hat ja die globale Variable den Wert 1

Kann ich diesen Wert jetzt in der Schleife abfragen?

Ich hatte es so vor, geht aber nicht

for i := 0 to 10 do
begin
if 'FLAG'+String aus Schleife = 1 then showmessage('WERT ist 1');
end;

Kann mir einer sagen wie es funktioniert?

Danke
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Problme mit Variablenabfrage

  Alt 29. Mär 2005, 15:12
Speichere die Variablen doch in einem Array of Integer. Dann kannst du in einer Schleife über den Index auf die Werte zugreifen

MfG
Binärbaum
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
ensacom
(Gast)

n/a Beiträge
 
#3

Re: Problme mit Variablenabfrage

  Alt 29. Mär 2005, 15:15
Hm, kannst du dass bitte etwas genauer erklären?
Ich weiß gerade nicht was du meinst.

Danke
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Problme mit Variablenabfrage

  Alt 29. Mär 2005, 15:44
Na z.B. so:

Delphi-Quellcode:
var flags: array [0..10] of integer;
    i: Integer;
begin
  //hier kommen irgendwelche Werte in array
  ...
  for i := 0 to 10 do
  begin
    if flags[i] = 1 then showmessage('WERT ist 1');
  end;
end;
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
ensacom
(Gast)

n/a Beiträge
 
#5

Re: Problme mit Variablenabfrage

  Alt 29. Mär 2005, 16:00
Ok, aber ich verstehe jetzt nicht was ich damit anfangen soll,

die Variablen heißen ja z.B. FLAGPAUSE und FLAGSTOP
diesen werden entweder eine 1 oder eine 0 zugewiesen.

Mit deinem Beispiel kann ich ja nur abfragen ob 0 = 1 ist

Ich bräuchte also ein Array mit "FLAGPAUSE" und "FLAGSTOP" denen ich eben 0 oder 1 zuweisen kann.


Dann müsste ich abfragen

if name aus Schleife = Name aus Array und Name aus Array = 1 dann showmessage('Richtig') else showmessage('Falsch');


Hat dazu jemand einen Tipp?


Danke
  Mit Zitat antworten Zitat
Benutzerbild von gordon freeman
gordon freeman

Registriert seit: 28. Jun 2003
Ort: Gelsenkirchen
337 Beiträge
 
Delphi 2005 Personal
 
#6

Re: Problme mit Variablenabfrage

  Alt 29. Mär 2005, 16:03
Zitat von ensacom:
die Variablen heißen ja z.B. FLAGPAUSE und FLAGSTOP
diesen werden entweder eine 1 oder eine 0 zugewiesen.

Mit deinem Beispiel kann ich ja nur abfragen ob 0 = 1 ist
Was hindert dich denn daran:

Delphi-Quellcode:
//einem Wert 0 zuweisen
flags[i] := 0;

//einem Wert 1 zuweisen
flags[i] := 1;

Edit1:
Außerdem würde ich in diesem Fall sowieso ein
array of boolean nehmen. Wenn du nur 1 oder 0 hast kannste auch direkt auf true/false abfragen
  Mit Zitat antworten Zitat
Benutzerbild von sECuRE
sECuRE

Registriert seit: 10. Apr 2003
Ort: Heidelberg
360 Beiträge
 
Delphi 7 Professional
 
#7

Re: Problme mit Variablenabfrage

  Alt 29. Mär 2005, 16:05
Hi,

das Beispiel war schon richtig. Du musst jetzt zB FLAGSTOP als 0 und FLAGPAUSE als 1, FLAGRESTART als 2 etc ansehen..
In deinem Array kannst du jedem dieser Werte 0 oder 1 zuweisen. Ein Array of boolean wäre dazu sogar noch besser geeignet, wenn du die Zahlen vorher als const definierst sieht es zudem noch schön aus:
Delphi-Quellcode:
const
  FLAGRESTART: integer = 0;
  FLAGPAUSE: integer = 1;
  FLAGSTOP: integer = 2;

procedure Test;
var flags:array[0..10] of boolean;
    c:integer;
begin
flags[FLAGRESTART]:=true; // restart auf true setzen (=1)
flags[FLAGPAUSE]:=false; // pause auf false setzen (=0)
for c:=0 to 10 do
  if (flags[c]) then
    ShowMessage('flag '+IntToStr(c)+' ist gesetzt')
  else ShowMessage('flag '+IntToStr(c)+' ist nicht gesetzt');
end;
Eventuell solltest du dir mal ein paar Grundlagen-Tutorials ansehen

cu
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Problme mit Variablenabfrage

  Alt 29. Mär 2005, 23:23
Nur so eine Idee von mir:
Wenn nur die Werte 0 und 1 erlaubt sind, könnte man z.B. auch eine einzige Variable vom Typ Cardinal nehmen und dann nur die entsprechenden Bits setzen:

Delphi-Quellcode:
const
  FLAGRESTART: Byte = 0;
  FLAGPAUSE: Byte = 1;
  FLAGSTOP: Byte = 2;
  //usw., kann nach Bedarf fortgesetzt werden...
  ...

function GetFlag(flags: Cardinal; flagindex: Byte): Boolean;
begin
  Result:= (flags and (1 shl flagindex))<>0;
end;

procedure SetFlag(var flags: Cardinal; flagindex: Byte; value: Boolean);
begin
  if (GetFlag(flags, flagindex) and not(value)) then
    flags:= flags -(1 shl flagindex)
  else if (value and not(GetFlag(flags, flagindex))) then
    flags:= flags + (1 shl flagindex);
end;
Ein Beispiel könnte dann so aussehen:
Delphi-Quellcode:
var myFlags: Cardinal;//<-- hier werden die Flags gespeichert
begin
  myFlags:= 0;
  SetFlag(myflag, FLAGRESTART, True);//FLAGRESTART auf 1 setzen
  SetFlag(myflag, FLAGPAUSE, False);//FLAGPAUSE auf 0 setzen
  //usw, je nach Bedarf
  ...
  if GetFlag(myflag, FLAGRESTART) then ShowMessage('FLAGRESTART ist gesetzt')
    else ShowMessage('FLAGRESTART nicht gesetzt');
end;
MfG
Binärbaum
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Antwort Antwort


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 15:26 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