Если кто в Дельфе (хотя и в билдере наверное тоже самое) пробовал подсоеденится с серверу то может сталкивался что пока когда вызываешь CreateOleObject и через IDispatch возвращенный этим вызовом коннектишься (вызываешь connect) к серверу, то потом при попытке законнектится к другому серверу вылетает что типа вы не можете законнектится к другому серверу, пока вы не законнекчены на этом серваке (you cannot change name? login бла_бла for server object while it is connected). Это означает что нужно все время отсоеденяться/подключаться от сервака к серваку? я попытался обойти это вот так
SQLServer:=CreateOleObject('SQLDMO.SQLServer');
dmo:=CreateOleObject('SQLDMO.SQLServer');
dmo:=SQLServer.Application;
dmo:=dmo.ListAvailableSQLServers;
if dmo.Count > 1 then begin
for i:= 1 to dmo.Count do begin
SQLServerN:=CreateOleObject('SQLDMO.SQLServer');
PSQLServerN := @SQLServerN;
tvDatabases.Items.AddObject(nil, AnsiUpperCase(dmo.Item(i)), PSQLServerN);
end;
end;
// SQLServerN: OleVariant, PSQLServerN: POleVariant, список серверов создается
// tvDatabases - TreeView
а вот при коннекте код такой
var
dmo : OleVariant;
pdmo : POleVariant;
begin
pdmo := tvDatabases.Items.Item[tvDatabases.Selected.Index].Data;
dmo := pdmo^; //- и во тут ошибка Invalid type cast
может ли кто объяснить в чем трабла, я с указателями плохо, или может кто нить решал сходную траблу