![]() |
Problem mit WMCopyData und Aufruf eigener Prozeduren
Hallo zusammen,
aus meinen zuletzt gestellten Fragen hier im Forum resultierte über die Antworten eurerseits eine Kommunikation zwischen zweien meiner Programme über WMCopyData. Hierbei werden Strings übergeben. Funktioniert soweit auch gut. Aber in derjenigen Prozedur, die die Daten empfängt soll in Abhängigkeit von dem empfangenen Inhalt unterschiedlich reagiert werden. Ich habe also vor den empfangenen String zu analysieren und dementsprechend andere meiner Prozeduren in dem Programm aufzurufen Aktuell sieht das so aus (vereinfacht):
Delphi-Quellcode:
Und der zuletzt in der Prozedur befindliche Aufruf ist das Problem, denn der Compiler meckert über das "Daten_A(Sender);" und sagt, dass es "Sender" nicht kennt.
type
TFORM1: class(Tform) Procedure Daten_A(Sender: TObject); ... Private procedure WMCopyData(var Msg: TWMCopyData); message WM_COPYDATA; Var Cometext: String; ... procedure Tform1.Daten_A(Sender: TObject); begin ##tue etwas## end; procedure Tform1.WMCopyData(var Msg: TWMCopyData);//empfänger begin cometext := String(Msg.CopyDataStruct.lpData); ##hier findet die Analyse des Strings statt die ich zum testen entfernt habe## Daten_A(Sender); //Aufruf der zuvor definierten Prozedur end; [Error] Form1_u.pas(161): Undeclared identifier: 'sender'. Kann man aus der Empfangroutine keine anderen Prozeduren aufrufen? Die Prodeur von einem anderen Punkt des Programms aus aufzurufen geht ohne Probleme. Muß die Definition der WMCopyData Prozedur wonaders hin? Kann jemand helfen? |
Re: Problem mit WMCopyData und Aufruf eigener Prozeduren
Daten_A erfordert einen Parameter vom Typ TObject. Du musst einen gültigen Parameter übergeben, um die Methode aufzurufen. Sender ist in deiner aktuellen Methode nicht definiert (Namen in der aufgerufenen Methode sind Schall und Rauch). Übergib am besten nil oder Self, das wäre das TForm1, das die Nachricht empfangen hat.
Hast du die Methode von Hand erstellt? Warum forderst du überhaupt einen Parameter Sender, wenn du ihn anscheinend nicht brauchst? |
Re: Problem mit WMCopyData und Aufruf eigener Prozeduren
Ersetz mal Sender durch self oder nil.
[edit] Ich bin einfach zu langsam :cry: [/edit] |
Re: Problem mit WMCopyData und Aufruf eigener Prozeduren
[gekürzt wegen rotem Kasten]
und das funktioniert? "string(...lpdata)" |
Re: Problem mit WMCopyData und Aufruf eigener Prozeduren
Hey vielen Dank für schnellen Antworten,
was würde man nur ohne so ein Forum machen... Die Definition des (Sender: TObject); bei meinen Prozeduren habe ich einfach aus irgendwelchen bestehenden, die das System angelegt hat (also sowas wie Button1Click) übernommen. Ich wußte bis Dato nicht dass dieser Paramter nicht benötigt wird. Und siehe da kaum lasse ich ihn bei der Definition und dem Aufruf weg und schon gehts... Vielen Dank P.S. das mit dem cometext := String(Msg.CopyDataStruct.lpData); war in einer der unzählichen Antworten irgendwo hier angegeben und... ja es geht anscheinend |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:23 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