Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - variable prolbem


Infest - Di 17.02.09 17:32
Titel: variable prolbem
hallo ich bin ein ziemlicher anfänger und wollte euch etwas fragen

zurzeit erstelle ich ein einfaches programm wo man die punkte 0 bis 15 eingibt und dann als ausgabe erhält z.b bei 13 bis 15 sehr gut und soweiter

also bisher ist alles klar

so sieht das bisher aus:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure TForm1.Bu_BerechnenClick(Sender: TObject);
var wert, punkte: integer;
begin
punkte:= StrToInt(Ed_Punkte.Text);
wert:= Pa_Ausgabe.Caption;

case punkte of
  0   :     wert:= 'ungenügend':
  1..3:     wert:= 'mangelhaft';
  4..6:     wert:= 'ausreichend';
  7..9:     wert:= 'befriedigend';
  10..12:   wert:= 'gut';
  13..15:   wert:= 'sehr gut';
ELSE        wert:= 'Diese Punktzahl gibt es nicht!';

end;


mein problem ist bei wert:= Pa_Ausgabe.Caption; bringt er ein Problem und ich weiß nicht warum!!
Ich möchte nicht immer Pa_Ausgabe.Caption eingeben sondern einmal als variable deklarieren damit ich die dann benützen kann.

was habe ich falsch eingegeben?

Moderiert von user profile iconGausi: Delphi-Tags hinzugefügt


Xentar - Di 17.02.09 17:35

1. Verwende Delphi Tags hier im Forum
2. Schreib beim nächsten Mal dazu, WAS für ein Problem "er bringt".
3. Wert ist ein integer, Caption aber ein String. Also musst du das vorher umwandeln:

Delphi-Quelltext
1:
wert := StrToInt(Pa_Ausgabe.Caption);                    


TProgger - Di 17.02.09 17:45

Vielleicht klappts ja so?

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TForm1.Bu_BerechnenClick(Sender: TObject);
var 
  wert: String
  punkte: integer;
begin
  punkte:= StrToInt(Ed_Punkte.Text);
  //wert:= Pa_Ausgabe.Caption;
  case punkte of
  0 : wert:= 'ungenügend':
  1..3: wert:= 'mangelhaft';
  4..6: wert:= 'ausreichend';
  7..9: wert:= 'befriedigend';
  10..12: wert:= 'gut';
  13..15: wert:= 'sehr gut';
  ELSE wert:= 'Diese Punktzahl gibt es nicht!';
  Pa_Ausgabe.Caption:=wert;
end;


Infest - Di 17.02.09 17:46

user profile iconXentar hat folgendes geschrieben Zum zitierten Posting springen:
1. Verwende Delphi Tags hier im Forum
2. Schreib beim nächsten Mal dazu, WAS für ein Problem "er bringt".
3. Wert ist ein integer, Caption aber ein String. Also musst du das vorher umwandeln:

Delphi-Quelltext
1:
wert := StrToInt(Pa_Ausgabe.Caption);                    


Hey, aber dann bringt er mir bei der Auflistung der Folgen ein Problem, weil dann ist es wieder mit Integer und String falsch....

Was muss ich dann mit denen machen in der Auflistung wie z.b 0 : wert:= 'ungenügend';

weil dann bringt er wieder den fehler :(


Xentar - Di 17.02.09 17:50

Ach, hatte da eben einen Denkfehler.
Dann musst du wert als String deklarieren, siehe die Antwort von TProgger.


Infest - Di 17.02.09 17:54

Mh, ich steh grad ehrlich gesagt auf dem Schlauch,

Ist mir alles logisch so gibt es jetzt auch Sinn habs grad ausprobiert aber jetzt zeigt er mir wenn ich dann im Programm auf Berechnen klick die Ausgabe nicht auf dem Panel an, also es kommt dann nicht als antwort: sehr gut wo auf dem panel erscheinen sollte eigentlich

weiß jemand woran das liegen könnte?


TProgger - Di 17.02.09 17:58

Wenn Pa_Ausgabe ein Panel ist, dann vielleicht noch "Pa_Ausgabe.Refresh" dranhängen?
Edit: Ich seh grad, da fehlt noch ein "end" (das von case)


Xentar - Di 17.02.09 18:00

Ich vermute einfach mal, du hast vergessen, die Caption des Panels zu ändern?


Infest - Di 17.02.09 18:01

user profile iconTProgger hat folgendes geschrieben Zum zitierten Posting springen:
Wenn Pa_Ausgabe ein Panel ist, dann vielleicht noch "Pa_Ausgabe.Refresh" dranhängen?


Geht immer noch nicht...

Mist ich bin verzweifeln. Muss morgen ein Vortrag in der Schule halten.

Ich möchte halt einfach die Schreibarbeit von dem Pa_Ausgabe.Caption sparen und die durch eine Variable ersetzen. Des mit dem Wert als string deklarieren ist ja noch ok, aber es geht irgendwie nicht =(

@ Xentar: Die caption von dem Panel ist leer logischerweise und der Name ist wiegesagt Pa_Ausgabe


TProgger - Di 17.02.09 18:04


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TForm1.Bu_BerechnenClick(Sender: TObject);
var 
  wert: String
  punkte: integer;
begin
  punkte:= StrToInt(Ed_Punkte.Text);
  //wert:= Pa_Ausgabe.Caption;
  case punkte of
  0 : wert:= 'ungenügend':
  1..3: wert:= 'mangelhaft';
  4..6: wert:= 'ausreichend';
  7..9: wert:= 'befriedigend';
  10..12: wert:= 'gut';
  13..15: wert:= 'sehr gut';
  ELSE wert:= 'Diese Punktzahl gibt es nicht!';
  end;
  Pa_Ausgabe.Caption:=wert;
end;

So müsste es nun klappen ;)


Infest - Di 17.02.09 18:05

Super danke TProgger hat geklappt. Oh man des hab ich garnich gesehen das die Ausgabe noch vor dem end war.

Vielen Dank!!!


TProgger - Di 17.02.09 18:09

Bitte :wink: