![]() |
Undefinierter Bezeichner: 'Sender'
Ich habe eine Prozedur
Delphi-Quellcode:
und diese möchte ich nun über eine andere Prozedur aufrufen:
procedure Tfrm_main.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); begin if Button = mbLeft then begin sendText(befehle[1].befehl); image1.Picture:=img_btn_gedrueckt.Picture; Label1.Top:=Label1.Top+2; Label1.Left:=Label1.Left-1; end; end;
Delphi-Quellcode:
Leider bekomme ich nur Fehlermeldungen:
procedure Tfrm_main.WMHotKey(var Msg: TWMHotKey);
begin if Msg.HotKey = id1 then Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); . . .
Delphi-Quellcode:
Da scheint wohl was an der parametern nicht zu stimmen.
[Fehler] Unit_main.pas(323): Undefinierter Bezeichner: 'Sender'
[Fehler] Unit_main.pas(323): Anweisung erforderlich, aber Ausdruck vom Typ 'Class reference' gefunden [Fehler] Unit_main.pas(323): '(' erwartet, aber ';' gefunden [Fehler] Unit_main.pas(323): '(' erwartet, aber ';' gefunden [Fehler] Unit_main.pas(324): ';' erwartet, aber 'IF' gefunden [Fehler] Unit_main.pas(362): '.' erwartet, aber ';' gefunden [Fataler Fehler] Befehlstool.dpr(9): Verwendete Unit 'Unit_main.pas' kann nicht compiliert werden Weiss hier vielleicht wer Rat ? |
Re: Undefinierter Bezeichner: 'Sender'
Moin Stony2k,
du darfst beim Aufruf der Funktion nicht die Parameter hinschreiben, sondern Werte uebergeben ;) d.h. hier
Delphi-Quellcode:
musst du eigentliche Werte uebergeben.
Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
Greetz alcaeus |
Re: Undefinierter Bezeichner: 'Sender'
Du darfst nicht den ganzen Funktionskopf herauskopieren. Das Problem, das du hast, ist einfach, dass du keine Parameter übergibst. Parameter sind dafür da, Informationen an Prozeduren weiterzugeben. Ungetestet, aber so könnte es gehen:
Delphi-Quellcode:
Image1MouseDown(Frm_main, mbLeft, nil, 10, 10);
|
Re: Undefinierter Bezeichner: 'Sender'
Ich verstehe..
nun ich habe mal die von dir Vorgeschlagenen Parameter genommen, bekomme aber nur eine Fehlermeldung:
Delphi-Quellcode:
Woran kann's liegen?
[Fehler] Unit_main.pas(323): Inkompatible Typen: 'TShiftState' und 'Pointer'
|
Re: Undefinierter Bezeichner: 'Sender'
nimm
Delphi-Quellcode:
Image1MouseDown(Frm_main, mbLeft, [], 10, 10);
|
Re: Undefinierter Bezeichner: 'Sender'
Ich kenne dein Programm nicht, also weiß ich nicht obs läuft. Probiers mal so.
Delphi-Quellcode:
procedure TForm1.down;
var Button: TMouseButton; Shift: TShiftState; X, Y: Integer; begin if Button = mbLeft then begin sendText(befehle[1].befehl); image1.Picture:=img_btn_gedrueckt.Picture; Label1.Top:=Label1.Top+2; Label1.Left:=Label1.Left-1; end; end; procedure TForm1.key; var Msg: TWMHotKey begin if Msg.HotKey = id1 then down; . . . end; {procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Down; end;} //unnötig |
Re: Undefinierter Bezeichner: 'Sender'
Zitat:
Na ja, es geht vielleicht zu kompilieren, aber das Programm funktioniert dann nicht mehr. 1. Sollte die Down-Methode ein Ereignis sein. Das kann man jetzt bestimmt nicht mehr zuweisen, da die Parameter nicht mehr stimmen. 2. Die Parameter sind nicht nur Spaß-Variablen, die man sich auch selbst generieren kann, sondern da steht auch was drinnen :roll: . So erhält man die Warnung 'Button könnte nicht Initialisiert sein' oder ähnlich. Klar, ist es auch nicht, und somit gibt die Abfrage "if Button = mbLeft" bloß noch Mist -> Logischer Programmfehler. Es geht also nicht nur, Syntaktische Fehler zu beseitigen, sondern auch die Funktionalität des Programms nicht einzuschränken :roll: [edit=alcaeus]Wortwahl auf Wunsch angepasst, da die 24-Stunden-Grenze ueberschritten war. Mfg, alcaeus[/edit] |
Re: Undefinierter Bezeichner: 'Sender'
Zitat:
Achja und danke, da es nun mit den Parametern funzt :) |
Re: Undefinierter Bezeichner: 'Sender'
Zitat:
um einen vergleich aufzustellen:
Delphi-Quellcode:
b wird nicht Initialisiert. Also kann in b auch 293, 2345 oder 938457 stehen. Man weiß es nicht, deshalb ist die If-abfrage nicht eindeutig.
procedure a;
var b: integer; begin if b = 10 then ; end; Nils' Lösung würde funktionieren, wenn die Parameter nicht gebräucht werden würden. So aber funktioniert sie nicht. |
Re: Undefinierter Bezeichner: 'Sender'
Ich glaube du verwechselst da etwas.
1. Nein,e s gibt keine Fehlermeldung 2. Button ist in dem Fall schon in vordefenierter Wert in Delphi, der dazu dient, nur die linke Maustaste(in meinem Fall) zu zulassen, und muss(kann) in dem Fall nicht intialiesiert werden. Aber les dir erstmal das hier durch: ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:17 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz