Delphi Resultat in Label umwandeln

computerfreaky

Lt. Commander
Registriert
Juni 2008
Beiträge
1.589
Hallo
Hab da nen kleines Problem: Ich möchte ein Proggi schreiben, wo ich meine Grösse angebe, und der sagt ob ich ein Ries, normaler oder kleiner Mensch bin:D
Also der Compiler meldet mir dauern unkompatible Typen:string und integer
Code:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    edit1: TEdit;
    Label1: TLabel;
    Button1: TButton;
    Label2: TLabel;
    Label3: TLabel;
    procedure Button1Click(Sender: TObject);

  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


VAR GROESSE:INTEGER;
VAR AUSSEHEN:STRING;
procedure TForm1.Button1Click(Sender: TObject);
begin
if (GROESSE < '200') then         //diese Zeile wird rot markiert
begin
  Label1:=strtoint(edit1.text);
  AUSSEHEN:=Label2;
  Label2.caption:=intostr(AUSSEHEN);

end;
end.
Ich komme da gar nicht klar wie ich den Code schreiben soll:(

In einer Application Console bekomm ich es hin::king:
Code:
program Proj_greisst;

{$APPTYPE CONSOLE}

uses
  SysUtils;

VAR GROESSE:STRING;

begin
  write('Wie groß bist du? (in cm) ');
  readln(GROESSE);

 if (GROESSE >= '200') then
begin
  write('Monster');
  readln;
end
 else if (GROESSE > '150') then
begin
  write('Großer');
  readln;
end
 else if (GROESSE > '130') then
begin
  write('kleiner');
  readln;
end
 else if (GROESSE <= '130') then
begin
  write('Zwerg');
  readln;
end;
Kann mir jmd helfen um das Graphisch zu machen?
 

Anhänge

  • Aufzeichnen.JPG
    Aufzeichnen.JPG
    60,7 KB · Aufrufe: 174
Zuletzt bearbeitet:
Dein problem im oberen Beispielcode wird sein, das du GROESSE als INTEGER definierst die 200 aber von dir als String angegeben wird, indem du die 200 in Anführungszeichen setzt. Lasse die einfach mal weg und schon dürfte das klappen.
Lösung also: if (GROESSE < 200) then

Daher auch der Fehler, denk mal drüber nach ;)

mfg
 
AUSSEHEN ist schon nen string.

label2.caption:=AUSSEHN;
 
neee moment....
um ehrlich zu sein macht dein Programm wenig sinn sry =)

groesse:=strtoint(edit1.text); //Größe einlesen
if groesse<180 then label1.caption:='Normal groß'; //Je nach Größe andere Ausgabe in Label1

Anweisungen wie Label1:=... werden nie gehen, da Lables Objekte sind welche wiederum unterschiedliche eigenschaften haben. Willst du die Aufschrift (caption) ändern musst du Label1.caption schreiben. Wenn du dein Label ausblenden möchtest kannst du zum Beispiel Label1.visible:=false; schreiben. usw....

BTW: Wenn du nicht unbedingt fließend französisch sprichts, wäre ne deutsche Version praktisch, denn die Fehlermeldungen, sowie die Hilfe!! helfen in den meisten Fällen.

Zur Abfrage mal noch,dass könnte sonst auch schiefgehen:
If (groesse<=180) and (groesse>150) then...
Um die Bereiche abzustecken musst du and verwenden und die Bedingungen durch () einfassen. Neben and kannst du auch or verwenden.
 
Zuletzt bearbeitet:
okayokay jetzt verstehe ich wie das gemacht wird :p endlich
Ich hatte mich daran orientiert:Klick

So werde mein Proggi mal fertig schreiben und verschönern hehe.
Ehm also Französich kann ich zimlich guuut^^

Danke für deine Hilfe

@dein edit:
Ich kann doch auch alles mit if ...else if...else if... so wie in der Application Console machen
 
Zuletzt bearbeitet:
Zu dem Problem mit den Datentypen lohnt ein Blick hierher: http://de.wikipedia.org/wiki/Datentyp#Elementare_Datentypen

Zu dem Problem mit den logischen Verknüpfungen: http://de.wikipedia.org/wiki/Logische_Verknüpfung



If (groesse<=180) and (groesse>150) then...
Das and in der Mitte verbindet die beiden Bedingungen. Der darauf folgende Anweisungsblock wird nur ausgeführt, wenn groesse sowohl kleiner/gleich 180, als auch größer als 150 ist.
Wenn du hier ein logisches oder (OR oder ||) einsetzt, dann wird der Anweisungsblock ausgeführt wenn entweder ... oder ... zutrifft und wenn beide zutreffen. Wenn die erste Bedingung zutrifft, wird die zweite nicht mehr ausgewertet, da es für den Programmfluss unwichtig ist, ob die zweite auch noch zutrifft, da eine reicht. Die zweite wird also nur "angeschaut", falls die erste nicht zutrifft. Schau dir hier auch mal die Wahrheitstabelle an: http://de.wikipedia.org/wiki/Disjunktion#Die_nicht_ausschlie.C3.9Fende_Disjunktion

Das sind der grundlegende Dinge, die man wissen muss, um Programme zu verstehen und zu schreiben.

Bei Fragen, einfach melden. (Hoffe dir hier nichts falsches gesagt zu haben)

Gruß,

badday
 
Zuletzt bearbeitet:
Zurück
Oben