2009-11-30 2 views
2

Я хочу, чтобы иметь возможность объявить метод Привязки данных с помощью следующей сигнатурыКак вернуть запись в методе DataSnap

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

function GetLoginInfo(const UserId: Integer): TLoginInfo; 

Когда я пытаюсь назвать это говорит, что TLoginInfo не хорошо известен ,

+0

Какой вкус Datasnap? DCOM основан на одном или на базе dbExpress? – 2009-12-01 08:28:36

ответ

1

магазин запись в поток и передать поток методу DataSnap

// на стороне сервера

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

// на стороне клиента

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 - это не способ избавиться от безопасности типа ... – 2009-12-01 10:29:06

+0

@ldsandon: это не имеет ничего общего с * избавлением от безопасности типа * это рабочее решение для этой проблемы. Если у вас есть лучшее решение, пожалуйста, отправьте его. –

+0

Вы должны должным образом маршалировать/отменять данные. Как зависит от того, какой тип данных вы используете. Для последнего аромата, см. Мой ответ. – 2009-12-01 15:45:30

Смежные вопросы