Hallo,
Delphi-Quellcode:
IS7ProSimEvents = interface(IUnknown)
['{********-****-****-****-************}']
function ScanFinished(ScanInfo: OleVariant): HResult; stdcall;
function ConnectionError(const ControlEngine: WideString; Error: Integer): HResult; stdcall;
function PLCSimStateChanged(const NewState: WideString): HResult; stdcall;
function PauseStateChanged(const NewState: WideString): HResult; stdcall;
function ScanModeChanged(const NewState: WideString): HResult; stdcall;
end;
Ich habe versucht, mit dem EventSinkImp daraus was zu erstellen und erhalte eine veränderte S7PROSIMLib_TLB.pas und eine S7PROSIMLibEvents.pas. Die verwende ich im Programm (uses ...).
So. Jetzt habe ich in der Events.pas:
Delphi-Quellcode:
//SinkEventsForwards//
TIS7ProSimEventsPLCSimStateChangedEvent = function (Sender: TObject; const NewState: WideString): HResult of object;
...
TS7PROSIMLibIS7ProSimEvents = class (TS7PROSIMLibEventsBaseSink
, IS7ProSimEvents
)
protected
function IS7ProSimEvents.PLCSimStateChanged = DoPLCSimStateChanged;
...
protected
//SinkInterface//
DoPLCSimStateChanged(const NewState: WideString): HResult; stdcall;
...
protected
//SinkEventsProtected//
FPLCSimStateChanged: TIS7ProSimEventsPLCSimStateChangedEvent;
...
published
//SinkEventsPublished//
property PLCSimStateChanged: TIS7ProSimEventsPLCSimStateChangedEvent read FPLCSimStateChanged write FPLCSimStateChanged;
...
implementation
...
function TS7PROSIMLibIS7ProSimEvents.DoPLCSimStateChanged(const NewState: WideString): HResult;
begin
Result := S_OK;
if not Assigned (PLCSimStateChanged) then System.Exit;
Result := PLCSimStateChanged (Self, NewState);
end;
und das Event, ebenso wie die anderen, möchte ich jetzt im Hauptprogramm haben...
Ich habe so etwas probiert:
S7ProSimPLCSimStateChanged := S7PROSIMLibEvents.TIS7ProSimEventsPLCSimStateChangedEvent;
Delphi-Quellcode:
procedure TMainForm.S7ProSimPLCSimStateChanged(Sender: TObject;const NewState: WideString);
begin
...
end;
Funktioniert irgendwie nicht:
E2035 Nicht genügend wirkliche Parameter
Was mache ich falsch?