AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Problem mit WMCopyData und Aufruf eigener Prozeduren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit WMCopyData und Aufruf eigener Prozeduren

Ein Thema von Anthauri · begonnen am 24. Okt 2007 · letzter Beitrag vom 24. Okt 2007
Antwort Antwort
Anthauri

Registriert seit: 1. Feb 2004
61 Beiträge
 
Delphi 6 Personal
 
#1

Problem mit WMCopyData und Aufruf eigener Prozeduren

  Alt 24. Okt 2007, 19:58
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:
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;
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.

[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?
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Problem mit WMCopyData und Aufruf eigener Prozeduren

  Alt 24. Okt 2007, 20:02
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?
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Problem mit WMCopyData und Aufruf eigener Prozeduren

  Alt 24. Okt 2007, 20:02
Ersetz mal Sender durch self oder nil.

[edit] Ich bin einfach zu langsam [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Problem mit WMCopyData und Aufruf eigener Prozeduren

  Alt 24. Okt 2007, 20:02
[gekürzt wegen rotem Kasten]

und das funktioniert? "string(...lpdata)"
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Anthauri

Registriert seit: 1. Feb 2004
61 Beiträge
 
Delphi 6 Personal
 
#5

Re: Problem mit WMCopyData und Aufruf eigener Prozeduren

  Alt 24. Okt 2007, 20:08
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz