Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Methodenzeiger/Funktionszeiger Variable (https://www.delphipraxis.net/157815-methodenzeiger-funktionszeiger-variable.html)

thecatprj2501 25. Jan 2011 23:19

Methodenzeiger/Funktionszeiger Variable
 
Hallo und Hallöchen,
ich bin neu in Delphi und arbeite mit ver.2010, habe mir eine OPC Client gebastelt und alles funzt supi.

Nun Stellte ich mir folgende frage: geht das das ich eine Integer Varieble überwachen lasse und wenn sich dieser wert ändert das automatisch dann meine sende funktion diesen geänderten wert zum OPCServer sendet.
Leider fehlt mir jeglicher ansatz, was auch den nicht ganz konkreten Titel beweist, um nach dem "was ich will" bei google zu suchen oder die foren nach lösungen zu wälzen.

Also wenn mir jemand dabei helfen könnte, fänd ich das super.

LG
TheCatPrj2501

Aphton 26. Jan 2011 00:10

AW: Methodenzeiger/Funktionszeiger Variable
 
Ein Ansatz...

Delphi-Quellcode:
type
TNotifyEvent = procedure(Sender: TObject) of object;

TSomeClass = class
private
  FMyInt: Integer;
  FOnMyIntChange: TNotifyEvent;
  procedure SetMyInt(const Value: Integer);
public
  property MyInt: Integer read FMyInt write SetMyInt;
  property OnMyIntChange: TNotifyEvent read FOnMyIntChange write FOnMyIntChange;
end;

procedure TSomeClass.SetMyInt(const Value: Integer);
var
  HasChanged: Boolean;
begin
  HasChanged := Value <> FMyInt;
  FMyInt := Value;
  if HasChanged and Assigned( FOnMyIntChange ) then
    FOnMyIntChange( Self );
end;

{weiters}
TForm1 = class( TForm ) // oder so..
  procedure FormCreate(Sender: TObject);
public
  SomeInstance: TSomeClass;
  procedure OnSomeInstanceMyIntChange(Sender: TObject);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  SomeInstance := TSomeClass.Create;
  SomeInstance.OnMyIntChange := OnSomeInstanceMyIntChange;
end;

procedure TForm1.OnSomeInstanceMyIntChange(Sender: TObject);
var
  I: Integer;
begin
  I := TSomeClass(Sender).MyInt;
  // nun per Socket senden
  {...}
end;

Deep-Sea 26. Jan 2011 08:46

AW: Methodenzeiger/Funktionszeiger Variable
 
Schreibt man eine Setter-Methode i.d.R. nicht eher so:
Delphi-Quellcode:
procedure TSomeClass.SetMyInt(const Value: Integer);
begin
  If Value <> FMyInt then
  begin
    FMyInt := Value;
    If Assigned(FOnMyIntChange) then FOnMyIntChange(Self);
  end;
end;
:-D

Aphton 26. Jan 2011 13:22

AW: Methodenzeiger/Funktionszeiger Variable
 
Kann man machen. Ist sogar schöner so. Danke für den Hinweis!

thecatprj2501 3. Feb 2011 20:11

AW: Methodenzeiger/Funktionszeiger Variable
 
Danke für eure hilfte hat alles super geklappt:thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:49 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