Einzelnen Beitrag anzeigen

Osse

Registriert seit: 25. Mär 2005
Ort: Hamburg
74 Beiträge
 
Delphi 5 Enterprise
 
#5

Re: Klassen in verschiedenen Units & Werte übergeben

  Alt 2. Mai 2005, 15:26
Also, ich meine das ungefähr so:

Delphi-Quellcode:
unit main;

interface

uses
  Nachrichten, Controller , NeueNachrichtErstellen, NeueSucheErstellen;

type
 TRcvThread = class(TThread)
  private
    hClient: Byte;
  protected
    procedure Execute; override;
  public
    procedure Set_hClient(client : Byte);
    function Get_hClient() : Byte;
  end;

  public
    { Public declarations }
                                             TCANMsg := message
                  

    CAN_Controller : TCAN_Controller; // Can Controller einstellungen und eingenschaften,
                                                             
    FClientHandle: HCANClient;
    FNetHandle: HCANNet;
    FRcvEvent: TEvent; // Event von TRcv (Ankommende Telegramme)
    FRcvThread: TRcvThread; // Thread (Unterprozess) für Ankommende Telegramme

    property ClientHandle: HCANClient read FClientHandle;
    property RcvEvent: TEvent read FRcvEvent;
  end;

var
  Form1: TForm1;
  CAN_Controller : TCAN_Controller;
implementation
....

procedure TRcvThread.Set_hClient(client : Byte);
begin
  hclient := client;
end;

function TRcvThread.Get_hClient() : Byte;
begin
   Get_hClient := hclient;
end;


procedure TRcvThread.Eingangsabgleich;
var hilfe : byte;
begin
  hilfe := CAN_Controller.Get_Client();
  Set_hClient(hilfe);
end;
Ich möchte einfach der Variablen RcvThread.hClient := CAN_Controller.Client zuweisen. Bekomme aber immer die Fehlermeldung, dass CAN_Controller.Client kein wert zugewiesen ist, obwohl er schon vorher einen Wert hat. Irgendwie hab ich die Klasse nich richtig eingebunden. Die CAN_Contoller Klasse ist in der Controller.pas Unit gespeichert.



Delphi-Quellcode:
unit Controller;

interface

type
   
//allgemeine Controlerbezeichnung
  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);
  public
...
1. eine Lösung für das Problem
2. Ist das eine gute Variante??
3. Was kann ich besser machen??

Vielen dank
  Mit Zitat antworten Zitat