Hallo,
ich habe ein Problem nach dem Importieren einer Typbibiothek in D2006. Verschiedene Funktionen gehen irgendwie verloren. Ich
habe es getestet, indem ich in D7 und D2006, ein und diesselbe Typbibliothek importiert habe.
Diese sieht in D7 folgendermaßen aus
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138: 139: 140: 141: 142: 143: 144: 145: 146: 147: 148: 149: 150: 151: 152: 153: 154: 155: 156: 157: 158: 159: 160: 161: 162: 163: 164: 165: 166: 167: 168: 169: 170: 171: 172: 173: 174: 175: 176: 177: 178: 179: 180: 181: 182: 183: 184: 185: 186: 187: 188: 189: 190: 191: 192: 193: 194: 195: 196: 197: 198: 199: 200: 201: 202: 203: 204: 205: 206: 207: 208: 209: 210: 211: 212: 213: 214: 215: 216: 217: 218: 219: 220: 221: 222: 223: 224: 225: 226: 227: 228: 229: 230: 231: 232: 233: 234: 235: 236: 237: 238: 239: 240: 241: 242: 243: 244: 245: 246: 247: 248: 249: 250: 251: 252: 253: 254: 255: 256: 257: 258: 259: 260: 261: 262: 263: 264: 265: 266: 267: 268: 269: 270: 271: 272: 273: 274: 275: 276: 277: 278: 279: 280: 281: 282: 283: 284: 285: 286: 287: 288: 289: 290: 291: 292: 293: 294: 295: 296: 297: 298: 299: 300: 301: 302: 303: 304: 305: 306: 307:
| unit Mark_TLB;
{$TYPEDADDRESS OFF} {$WARN SYMBOL_PLATFORM OFF} {$WRITEABLECONST ON} {$VARPROPSETTER ON} interface
uses Windows, ActiveX, Classes, Graphics, OleServer, StdVCL, Variants;
const MarkMajorVersion = 1; MarkMinorVersion = 0;
LIBID_Mark: TGUID = '{31B21198-0674-4E92-A530-30733A0FF68F}';
IID_IRemoteInterface: TGUID = '{0F24B5BF-F5B6-4F0D-9E0D-0FAB63EE4D88}'; DIID_IRemoteInterfaceEvents: TGUID = '{7B013F03-6B4C-48B4-8B1B-D20EDCCE5298}'; CLASS_RemoteInterface: TGUID = '{77CB394B-79AC-43A6-B492-4BA10126E3ED}'; type
IRemoteInterface = interface; IRemoteInterfaceDisp = dispinterface; IRemoteInterfaceEvents = dispinterface;
RemoteInterface = IRemoteInterface;
IRemoteInterface = interface(IDispatch) ['{0F24B5BF-F5B6-4F0D-9E0D-0FAB63EE4D88}'] function DoCommand(Cmd: Integer; Params: OleVariant; var Data: OleVariant): Integer; safecall; end;
IRemoteInterfaceDisp = dispinterface ['{0F24B5BF-F5B6-4F0D-9E0D-0FAB63EE4D88}'] function DoCommand(Cmd: Integer; Params: OleVariant; var Data: OleVariant): Integer; dispid 201; end;
IRemoteInterfaceEvents = dispinterface ['{7B013F03-6B4C-48B4-8B1B-D20EDCCE5298}'] procedure OnMessage(const MessageText: WideString); dispid 201; end;
CoRemoteInterface = class class function Create: IRemoteInterface; class function CreateRemote(const MachineName: string): IRemoteInterface; end;
TRemoteInterfaceOnMessage = procedure(ASender: TObject; const MessageText: WideString) of object;
{$IFDEF LIVE_SERVER_AT_DESIGN_TIME} TRemoteInterfaceProperties= class; {$ENDIF} TRemoteInterface = class(TOleServer) private FOnMessage: TRemoteInterfaceOnMessage; FIntf: IRemoteInterface; {$IFDEF LIVE_SERVER_AT_DESIGN_TIME} FProps: TRemoteInterfaceProperties; function GetServerProperties: TRemoteInterfaceProperties; {$ENDIF} function GetDefaultInterface: IRemoteInterface; protected procedure InitServerData; override; procedure InvokeEvent(DispID: TDispID; var Params: TVariantArray); override; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; procedure Connect; override; procedure ConnectTo(svrIntf: IRemoteInterface); procedure Disconnect; override; function DoCommand(Cmd: Integer; Params: OleVariant; var Data: OleVariant): Integer; property DefaultInterface: IRemoteInterface read GetDefaultInterface; published {$IFDEF LIVE_SERVER_AT_DESIGN_TIME} property Server: TRemoteInterfaceProperties read GetServerProperties; {$ENDIF} property OnMessage: TRemoteInterfaceOnMessage read FOnMessage write FOnMessage; end;
{$IFDEF LIVE_SERVER_AT_DESIGN_TIME} TRemoteInterfaceProperties = class(TPersistent) private FServer: TRemoteInterface; function GetDefaultInterface: IRemoteInterface; constructor Create(AServer: TRemoteInterface); protected public property DefaultInterface: IRemoteInterface read GetDefaultInterface; published end; {$ENDIF}
procedure Register;
resourcestring dtlServerPage = 'Additional';
dtlOcxPage = 'Additional';
implementation
uses ComObj;
class function CoRemoteInterface.Create: IRemoteInterface; begin Result := CreateComObject(CLASS_RemoteInterface) as IRemoteInterface; end;
class function CoRemoteInterface.CreateRemote(const MachineName: string): IRemoteInterface; begin Result := CreateRemoteComObject(MachineName, CLASS_RemoteInterface) as IRemoteInterface; end;
procedure TRemoteInterface.InitServerData; const CServerData: TServerData = ( ClassID: '{77CB394B-79AC-43A6-B492-4BA10126E3ED}'; IntfIID: '{0F24B5BF-F5B6-4F0D-9E0D-0FAB63EE4D88}'; EventIID: '{7B013F03-6B4C-48B4-8B1B-D20EDCCE5298}'; LicenseKey: nil; Version: 500); begin ServerData := @CServerData; end;
procedure TRemoteInterface.Connect; var punk: IUnknown; begin if FIntf = nil then begin punk := GetServer; ConnectEvents(punk); Fintf:= punk as IRemoteInterface; end; end;
procedure TRemoteInterface.ConnectTo(svrIntf: IRemoteInterface); begin Disconnect; FIntf := svrIntf; ConnectEvents(FIntf); end;
procedure TRemoteInterface.DisConnect; begin if Fintf <> nil then begin DisconnectEvents(FIntf); FIntf := nil; end; end;
function TRemoteInterface.GetDefaultInterface: IRemoteInterface; begin if FIntf = nil then Connect; Assert(FIntf <> nil, 'DefaultInterface is NULL. Component is not connected to Server. You must call ''Connect'' or ''ConnectTo'' before this operation'); Result := FIntf; end;
constructor TRemoteInterface.Create(AOwner: TComponent); begin inherited Create(AOwner); {$IFDEF LIVE_SERVER_AT_DESIGN_TIME} FProps := TRemoteInterfaceProperties.Create(Self); {$ENDIF} end;
destructor TRemoteInterface.Destroy; begin {$IFDEF LIVE_SERVER_AT_DESIGN_TIME} FProps.Free; {$ENDIF} inherited Destroy; end;
{$IFDEF LIVE_SERVER_AT_DESIGN_TIME} function TRemoteInterface.GetServerProperties: TRemoteInterfaceProperties; begin Result := FProps; end; {$ENDIF}
procedure TRemoteInterface.InvokeEvent(DispID: TDispID; var Params: TVariantArray); begin case DispID of -1: Exit; 201: if Assigned(FOnMessage) then FOnMessage(Self, Params[0] ); end; end;
function TRemoteInterface.DoCommand(Cmd: Integer; Params: OleVariant; var Data: OleVariant): Integer; begin Result := DefaultInterface.DoCommand(Cmd, Params, Data); end;
{$IFDEF LIVE_SERVER_AT_DESIGN_TIME} constructor TRemoteInterfaceProperties.Create(AServer: TRemoteInterface); begin inherited Create; FServer := AServer; end;
function TRemoteInterfaceProperties.GetDefaultInterface: IRemoteInterface; begin Result := FServer.DefaultInterface; end;
{$ENDIF}
procedure Register; begin RegisterComponents(dtlServerPage, [TRemoteInterface]); end;
end. |
In Delphi 2006, sieht sie dagegen nur so aus:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125:
| unit Mark_TLB;
{$TYPEDADDRESS OFF} {$WARN SYMBOL_PLATFORM OFF} {$WRITEABLECONST ON} {$VARPROPSETTER ON} interface
uses Windows, ActiveX, Classes, Graphics, OleServer, StdVCL, Variants;
const MarkMajorVersion = 1; MarkMinorVersion = 0;
LIBID_Mark: TGUID = '{31B21198-0674-4E92-A530-30733A0FF68F}';
IID_IRemoteInterface: TGUID = '{0F24B5BF-F5B6-4F0D-9E0D-0FAB63EE4D88}'; DIID_IRemoteInterfaceEvents: TGUID = '{7B013F03-6B4C-48B4-8B1B-D20EDCCE5298}'; CLASS_RemoteInterface: TGUID = '{77CB394B-79AC-43A6-B492-4BA10126E3ED}'; type
IRemoteInterface = interface; IRemoteInterfaceDisp = dispinterface; IRemoteInterfaceEvents = dispinterface;
RemoteInterface = IRemoteInterface;
IRemoteInterface = interface(IDispatch) ['{0F24B5BF-F5B6-4F0D-9E0D-0FAB63EE4D88}'] function DoCommand(Cmd: Integer; Params: OleVariant; var Data: OleVariant): Integer; safecall; end;
IRemoteInterfaceDisp = dispinterface ['{0F24B5BF-F5B6-4F0D-9E0D-0FAB63EE4D88}'] function DoCommand(Cmd: Integer; Params: OleVariant; var Data: OleVariant): Integer; dispid 201; end;
IRemoteInterfaceEvents = dispinterface ['{7B013F03-6B4C-48B4-8B1B-D20EDCCE5298}'] procedure OnMessage(const MessageText: WideString); dispid 201; end;
CoRemoteInterface = class class function Create: IRemoteInterface; class function CreateRemote(const MachineName: string): IRemoteInterface; end;
implementation
uses ComObj;
class function CoRemoteInterface.Create: IRemoteInterface; begin Result := CreateComObject(CLASS_RemoteInterface) as IRemoteInterface; end;
class function CoRemoteInterface.CreateRemote(const MachineName: string): IRemoteInterface; begin Result := CreateRemoteComObject(MachineName, CLASS_RemoteInterface) as IRemoteInterface; end;
end. |
Ich benötige die TRemoteInterface.Connect Funktion, die jetzt allerdings nicht mehr vorhanden ist...kann ich diese
irgendwie ersetzen, oder wo liegt mein Fehler???
Danke für alle hilfreichen Tipps!!!
gruß,
winx
p.s: das problem ist auch
hier gepostet