MAC hat geschrieben:So steht es zumindest in einem Delphi text, aber Delphi ist ja 'total' was anderes...
Was mache ich falsch ? Danke
Abseits der Lösung von monta
Die Problembeschreibung ist nicht vollständig. Was für eine Fehlermeldung spuckt der Lazarus aus. Ich versuche aus Deinen Fragmenten etwas nach zu vollziehen.
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
procedure Menuwahl;
begin
if 1 + 1 = 'hallo' then Label1.Caption := 'irgendwas stimmt nicht' ;
end;
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
begin
Menuwahl;
end;
initialization
{$I unit1.lrs}
end.
Compilieren -> Ergebnis
Code: Alles auswählen
unit1.pas(31,8) Error: Incompatible types: got "ShortInt" expected "ShortString"
unit1.pas(31,33) Error: Identifier not found "Label1"
unit1.pas(46) Fatal: There were 2 errors compiling module, stopping
Damit sagt dir der Kompiler, das du Typen verwendest die nicht zusammenpassen und das er das Label nicht finden kann, weil deine Prozedure nicht im Bereich des Objektes liegt.
Konklusion: Definiere Dein Problem mit mehr Info und versuche die Fehlermeldung zu lesen, zu verstehen und abzuarbeiten.
Eine mögliche (aber nicht sinnvolle) Lösung:
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
procedure Menuwahl;
begin
if '1' + '1' = 'hallo' then Form1.Label1.Caption := 'irgendwas stimmt nicht' ;
end;
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
begin
Menuwahl;
end;
initialization
{$I unit1.lrs}
end.
Gibt die folgen Meldung aus
Code: Alles auswählen
unit1.pas(32,31) Warning: unreachable code
Projekt "project1" erfolgreich gebaut. :)
Das heisst, der Code läuft, die Meldung wird aber nie kommen, da die if-Bedingung nie erfüllt werden kann. Mit eine doppelclick auf die Meldung zeigt er soger genau die Zeile an.