2014-03-05 126 views
-2

我正在使用embarcadero DataSnap中的代码进行操作。 当执行下面的代码时,我收到错误消息: 错误:第42行上的未声明标识符'TMyClass' PersistentClass:= TMyClass;错误:未声明的标识符'TMyClass'

任何帮助表示赞赏。

unit MyServer; 

interface 

uses 
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, 
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, IPPeerServer, Datasnap.DSCommonServer, 
    Datasnap.DSTCPServerTransport, Datasnap.DSServer; 

type 
    TForm1 = class(TForm) 
    DSServer1: TDSServer; 
    DSServerClass1: TDSServerClass; 
    DSTCPServerTransport1: TDSTCPServerTransport; 
    procedure DSServerClass1GetClass(DSServerClass: TDSServerClass; 
     var PersistentClass: TPersistentClass); 
    procedure DSServerClass1CreateInstance(
     DSCreateInstanceEventObject: TDSCreateInstanceEventObject); 
    private 
    { Private declarations } 
    public 
    { Public declarations } 
    end; 

var 
    Form1: TForm1; 

implementation 

{$R *.dfm} 

procedure TForm1.DSServerClass1CreateInstance(
    DSCreateInstanceEventObject: TDSCreateInstanceEventObject); 
begin 

end; 

procedure TForm1.DSServerClass1GetClass(DSServerClass: TDSServerClass; 
    var PersistentClass: TPersistentClass); 
begin 

     PersistentClass := TMyClass; 
end; 

end. 
+1

那么,TMyClass类是否存在于本单元的范围之内呢?你不能分配给那个不存在的参数。 – TLama

+2

在遵循教程关注所有说明时,这很有帮助。请参阅步骤3的第3点:'对于Delphi,将此单元的名称MyClass添加到服务器应用程序单元MyServer.pas的uses子句中。 - http://docwiki.embarcadero.com/RADStudio/XE4/ en/Tutorial:_Using_a_DataSnap_Server_with_an_Application –

+0

另请参阅:http://docwiki.embarcadero.com/RADStudio/XE5/en/Programs_and_Units#Unit_References_and_the_Uses_​​Clause –

回答

1

错误很明显。在您使用TMyClass时,编译器无法看到具有该名称的符号。

最喜欢你还没有声明它,或者在uses子句中省略了它声明的单位。