Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - String vs. TLabel


Spike Lobo - Do 25.10.07 21:18
Titel: String vs. TLabel
Mahlzeit!

Ich habe ein kleines Problem. Immer, wenn ich mein kleines Programm starten will, sagt Delphi mir "Inkompatible Typen: String und TLabel". Was ich machen will, ist folgendes: Wenn in ein Feld ein bestimmter Wert eingegeben wird, soll einer Variable a (String) eine Zeichenfolge ('abcxyz', String) zugeordnet werden. Jetzt sagt er mir aber diese obengenannte Fehlermeldung. Ich weiß, wie ich Strings in Integer umwandeln kann und so weiter, aber was mache ich mit TLabel?


Christian S. - Do 25.10.07 21:21

Hallo und :welcome:!

Normalerweise: Ohne Quellcode kann man da nix zu sagen.

In dem Fall: Der Text, den das Label anzeigt, steckt in der Caption-Eigenschaft, Du musst den String also dieser Eigenschaft zuweisen

Grüße
Christian


mkinzler - Do 25.10.07 21:34


Delphi-Quelltext
1:
s := Label.Caption;                    


Delphi-Quelltext
1:
Label.Caption := s;                    


Christian S. - Do 25.10.07 21:35

@mkinzler: Ein Label hat keine Text-Eigenschaft :zwinker:


mkinzler - Do 25.10.07 21:40

Sorry meinte Caption


Tilman - Do 25.10.07 22:41

user profile iconChristian S. hat folgendes geschrieben:
@mkinzler: Ein Label hat keine Text-Eigenschaft :zwinker:

Doch, hat es ^^ allerdings freilich als protected deklariert. (--> TControl)


Spike Lobo - Fr 26.10.07 09:26

Da bin ich wieder. Also, ich erklär mal, was ich vorhabe:

Ich habe a und den Inhalt von Feld1 (b) als String-Variablen deklariert. Nun will ich, dass bei einer bestimmten Eingabe in Feld1 a eine bestimmte Zeichenfolge zugewiesen bekommt. Sprich:


Delphi-Quelltext
1:
2:
3:
4:
b := Feld1.Text;


if b = 'MOIN'
then a := 'xyz123'

Beim Versuch es zu compilieren, streicht er mir immer die then-Zeile rot an und meint, dass TLabel und String inkompatible Typen sind. Ich habe auch schon einmal versucht, einem neuen Edit-Feld diese Zeichenfolge zuzuweisen. Sprich:

Delphi-Quelltext
1:
2:
3:
4:
b := Feld1.Text;


if b = 'MOIN'
then Edit2.Text := 'xyz123'

Hat aber genausowenig funktioniert. Die gleiche Fehlermeldung.

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


Gausi - Fr 26.10.07 09:32

Was sind denn a und b für Typen? Sind das Strings oder TEdits oder TLabel? Wenn es TLabel oder Edits sind, dann sollte es so funktionieren:

Delphi-Quelltext
1:
2:
if b.Caption = 'MOIN' then //...falls b Label ist
if b.Text = 'MOIN' then // falls b Edit ist


Spike Lobo - Fr 26.10.07 09:40

Es sind String-Variablen. Hatte ich auch ganz am Anfang geschrieben.


Alpha_Wolf - Fr 26.10.07 09:45

Hab das mal anhand deines Codes nachgebaut..:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Feld1: TEdit;
    Button1: TButton;
    Edit2: TEdit;
    procedure Button1Click(Sender: TObject);
  private
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  b: string;
  a: string;
begin
  b := Feld1.Text;
  if b = 'MOIN' then
    Edit2.Text := 'xyz123';
end;

end.

Denn der Code funktioniert bei mir einwandfrei.


Spike Lobo - Fr 26.10.07 09:46

Kommando zurück! Ich weiß meinen Fehler. Ich hatte vergessen, der Variablen auch wirklich den Inhalt des Feldes zuzuweisen. Jetzt klappt es. Trotzdem danke für die Hilfe!