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