![]() |
WErteübergabe zwischen 2 Klassen
Hallo,
ich schreibe gerade an einem kleienen Monitorprogramm. Dazu ist es nötig, die ankommenden Daten möglichst schnell auszulesen. Aus diesem Grunf laufen in meinem Programm 2 Threats. der 1. ist für das ganz normale Programm, der 2. ist dafür zuständig die ganze Zeit den Eingangsport zu überwachen. Ich bekomme auch schön immer ein Ereignis von Threat2, wenn ein Telegramm ankommt. Das Problem (mein Problem) ist, dass ich 2 Klassen habe. Möchte aber eine Variable übergeben. Wie kann ich von Klasse 1 auf Klasse 2 zugreifen??
Delphi-Quellcode:
Die Variable ist die Client Variable in
TRcvThread = class(TThread)
private hClient: Byte; hRcvNet: HCANNet; msg: TCANMsg; rcvtime: TCANTimestamp; procedure NachrichtAusgeben; protected procedure Execute; override; end;
Delphi-Quellcode:
Ich möchte folgende Funktion ausführen: FRcvThread.hClient := CAN_Controller.Client;
TController = CLASS
Client: Byte; // Typ 'Client-Handle' Byte Variable Netz : Byte; // Typ 'Net-Handle' Byte Variable Hardware : Byte; // Typ 'Hardware-Handle' Byte Variable CONSTRUCTOR Create ; END ; TCAN_Controller = CLASS(TController) procedure Initalisierung_CANController(Netz : Byte ; _Hardware : Byte ; Baudrate : Integer ; Netzname : String ; Clientname : String ; var _Client : HCANClient); procedure Netzinfo(LB: TListBox ); procedure Hardwareinfo(LB: TListBox); procedure Hardware_analyse(var Hardware : HCANHw); procedure Status(LB : TListBox); CONSTRUCTOR Create ; ...... public CAN_Controller : TCAN_Controller; FRcvThread: TRcvThread; // Thread (Unterprozess) für Ankommende Telegramme Hat da jemand ne Ahnung?? Später muss ich dann einen Array übergeben in dem die ausgelesenen Daten aus der Schnittstelle stehen. Hab da schon was mit sync. gelesen, um 2 Threads abzugleichen. HAt damit jemand erfahrung?? Vielen Dank |
Re: WErteübergabe zwischen 2 Klassen
Hi.
Du kannst auf das Feld hClient nicht zugreifen, da es als private deklariert ist. Verschiebe es einfach nach public oder richte eine property ein, dann funktioniert es. ;-)
Delphi-Quellcode:
oder
TRcvThread = class(TThread)
private hRcvNet: HCANNet; msg: TCANMsg; rcvtime: TCANTimestamp; procedure NachrichtAusgeben; protected procedure Execute; override; public hClient: Byte; end;
Delphi-Quellcode:
TRcvThread = class(TThread)
private hClient: Byte; hRcvNet: HCANNet; msg: TCANMsg; rcvtime: TCANTimestamp; procedure NachrichtAusgeben; protected procedure Execute; override; public property Client: Byte read hClient write hClient; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:35 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