2009-11-30 4 views
2

Je souhaite pouvoir déclarer une méthode snap données avec la signature suivanteComment retourner un enregistrement dans une méthode DataSnap

type 
    TLoginInfo = record 
    Username: string; 
    Password: string; 
    LastLogged: DateTime; 
    end; 

function GetLoginInfo(const UserId: Integer): TLoginInfo; 

Lorsque je tente de l'appeler, il dit que TLoginInfo est pas bien connue .

+0

Quelle saveur de Datasnap? Le DCOM basé sur un ou basé sur dbExpress? –

Répondre

1

magasin l'enregistrement dans un cours d'eau et passer le courant à la méthode DataSnap

// côté serveur

function GetLoginInfo(const UserId: Integer): TStream; 
begin 
    Result := TMemoryStream.Create; 
    Result.Write(loginRec, SizeOf(TLoginInfo)) 
    Result.Seek(0, TSeekOrigin.soBeginning); 
end; 

// côté client

procedure TfrmMain.getLogInto(sUser: string); 
var 
    AStr : TStream; 
    loginRec : TLoginInfo; 
begin 
// cycleConnection; 

    with TMethodsClient.Create(SQLConn.DBXConnection, False) do begin 

    AStr := GetLoginInfo(sUser); 
    AStr.Read(loginRec, SizeOf(TLoginInfo)) 
    Free; 
    end; 

    FreeAndNil(AStr); 
end; 
+0

RPC n'est pas un moyen de se débarrasser de la sécurité de type ... –

+0

@ldsandon: cela n'a rien à voir avec * se débarrasser de la sécurité de type * c'est une solution de travail pour ce problème. Si vous avez une meilleure solution, n'hésitez pas à la poster. –

+0

Vous devez correctement rassembler/démasquer les données. Comment dépend de quel type de Datasnap votre utilisation. Pour la dernière saveur, voir ma réponse. –

Questions connexes