Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   WErteübergabe zwischen 2 Klassen (https://www.delphipraxis.net/45156-werteuebergabe-zwischen-2-klassen.html)

Osse 30. Apr 2005 17:27


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:
TRcvThread = class(TThread)
  private
    hClient: Byte;  
    hRcvNet: HCANNet;
    msg: TCANMsg;
    rcvtime: TCANTimestamp;
    procedure NachrichtAusgeben;
  protected
    procedure Execute; override;
  end;
Die Variable ist die Client Variable in

Delphi-Quellcode:
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
Ich möchte folgende Funktion ausführen: FRcvThread.hClient := CAN_Controller.Client;

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

Waldteufel 1. Mai 2005 18:01

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:
TRcvThread = class(TThread)
  private
    hRcvNet: HCANNet;
    msg: TCANMsg;
    rcvtime: TCANTimestamp;
    procedure NachrichtAusgeben;
  protected
    procedure Execute; override;
  public
    hClient: Byte;  
  end;
oder

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 18:00 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