![]() |
Problme mit Variablenabfrage
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 |
Re: Problme mit Variablenabfrage
Speichere die Variablen doch in einem Array of Integer. Dann kannst du in einer Schleife über den Index auf die Werte zugreifen :wink:
MfG Binärbaum |
Re: Problme mit Variablenabfrage
Hm, kannst du dass bitte etwas genauer erklären?
Ich weiß gerade nicht was du meinst. Danke |
Re: Problme mit Variablenabfrage
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; |
Re: Problme mit Variablenabfrage
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 |
Re: Problme mit Variablenabfrage
Zitat:
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
Delphi-Quellcode:
nehmen. Wenn du nur 1 oder 0 hast kannste auch direkt auf true/false abfragen :zwinker:
array of boolean
|
Re: Problme mit Variablenabfrage
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:
Eventuell solltest du dir mal ein paar Grundlagen-Tutorials ansehen ;)
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; cu |
Re: Problme mit Variablenabfrage
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:
Ein Beispiel könnte dann so aussehen:
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;
Delphi-Quellcode:
MfG
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; Binärbaum |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:30 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