2014-03-05 160 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子句中省略了它聲明的單位。