Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - string --> var [done]


TheHunter - Mo 12.05.03 19:58
Titel: string --> var [done]
servus
also ... ich hab in einer string variablen nen text stehen

( var test : string ;
test := hochhaus;
)

nun habe ich eine konstante festgelegt die ebenfalls hochhaus heißt
( const hochhaus = ' 11:00:00' ;)

wie kann ich es nun machen das ich meinetwegen die caption eines labels
ändern will dabei test verwende um an den inhalt von hochhaus zu kommen (leicht verwirrend ich weiß :P )

also das ich schreibe label1.caption := wasochimmer(test)

und dann '11:00:00' auf dem label steht


JacFab - Mo 12.05.03 21:52

hä? damit hast du das doch schon!
du schreibst dann für dein label einfach nur:
label1.caption:=test;
und dann hast du den wert deiner konstanten drauf!


Terra23 - Mo 12.05.03 22:32

... und überhaupt ist dein Posting alles andere als Einleuchtend. Komm doch mal zum Punkt :!:


foxy - Di 13.05.03 09:12

hat er doch :shock:
aber die antwort haste ja schon .... einfach deine variable oder const. in der caption verwenden


Simon Joker - Di 13.05.03 09:25

Hi

ich denke er meint das anders. Er will den Name der Constanten Hochhaus in der StringVariablen speichern und dann mit diesem auf den constanten Wert zugreifen.
Also so:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
const hochhaus='blabla';

var Test:string;

...
Test:='hochhaus';
Lable1.Caption:=GetConstValue(Test);
...


Aber das ist meines Wissens nich möglich.


foxy - Di 13.05.03 10:06

joker wiso setzt du hochhaus als string hinter tes?? :shock:

das ist doch schon eine const O_O

und was du gerade beschrieben hast das macht absolut keinen sinn sry .. oder ich versteh ihn nicht :)


Simon Joker - Di 13.05.03 10:22

Das ist ja das Problem. Die StringVariable soll den Namen der Constanten enthalten. Und über die StringVariable soll dann auf die Constante zugegriffen werden. Das geht aber nicht, höchstens man merkt sich die Adresse der Const und liest den nullterminierten String aus.


TheHunter - Di 13.05.03 14:05
Titel: thx
yoa ich meinte das so wie simon, aber da es anscheinend nich geht muss ich mir wohl was anderes übalegn :?

trotzdem thx an alle

problem is folgendes

ich hab eine combobox mit einer reihe von items
z.bsp.

kraftwerk
siedlungskomplex
forschungszentrum
...

desweiteren hab ich einige konstanten

Quelltext
1:
2:
3:
 const     DauerKraftwerk = '1:30:00' ;
          DauerSiedlungskomplex = '00:30:00' ;
          DauerForschungszentrum = '2:00:00' ;


nun wollte ich folgenden code verwenden


Quelltext
1:
2:
3:
procedure TForm1.ComboBox1Change(Sender: TObject);
 label1.caption := 'Dauer' + combobox1.item
end;


wenn ich jetzt z.bsp. das Kraftwerk auswähle steht aus dem label 'DauerKraftwerk'. ich wollte nun aber das er den wert aus der konstanten Dauerkraftwerk auf das label schreibt.

hoffe das ist jetzt verständlicher


Phantom1 - Di 13.05.03 14:46

ich würde das so hier lösen:


Quelltext
1:
Const Eintrag: Array[0..2] of String=('1:30:00', '00:30:00', '2:00:00');                    


und hier:


Quelltext
1:
2:
3:
4:
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  Label1.caption := 'Dauer ' + Eintrag[combobox1.ItemIndex];
end;


Simon Joker - Di 13.05.03 14:47

Hi


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
type
  TArrStr = array [0..1,0..1] of string;
var
  Val:TArrStr=(('A1','02:00:30'),('A2','00:00:30'));

...
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  if ComboBox1.ItemIndex<>-1 then
    Label1.Caption:=Val[ComboBox1.ItemIndex,1]+' '+ComboBox1.text//Items[ComboBox1.ItemIndex]
  else
    Label1.Caption:='';
end;

procedure TForm1.FillCombo;
var i:integer;
begin
  ComboBox1.Items.Clear;
  for i:=0 to Length(Val)-1 do
    ComboBox1.Items.Add(Val[i,0]);
end;
...

So sollte es gehen.

EDIT: Wieder zu langsam. Er muss aber aufpassen, dass Inhalt der Combo und des Arrays zusammenpassen.


TheHunter - Di 13.05.03 14:51

wunderbar, schön dank nochmal :D