怎么在delphi中使用visual sourcesafe的ole接口来实现checkin,out等功能?(100分)

  • 主题发起人 主题发起人 trackboy
  • 开始时间 开始时间
T

trackboy

Unregistered / Unconfirmed
GUEST, unregistred user!
在pb中可以用以下代码实现:(先要注册vssapi.dll)
//创建ole对象
iole_vss=create oleobject
iole_vss_item=create oleobject

//创建总的vss的automation对象
iole_vss.ConnectToNewObject("SourceSafe.0")
iole_vss.open("d:/vss_data/srcsafe.ini","admin","")

//创建对应具体vss文档的操作对象
ll_result=iole_vss_item.connecttonewobject("VSSItem")

改成delphi:
var
iole_vss: variant;
iole_vss_item:variant;
begin
iole_vss:=CreateOLEObject('SourceSafe.0');
iole_vss.open('d:/vss_data/srcsafe.ini,'admin','');
iole_vss_item:=CreateOLEObject('VSSItem');
...........
最后一句报错"EOleSysError:尚未调用CoInitialize",不知何解,欢迎大家来讨论,3q
 
这样试试看,在工程文件中加入
begin
try
coInitialize(nil);
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
finally
CoUninitialize;
end;
end.
 
问题解决,一下是checkout代码:
procedure TForm1.DBGrid1DblClick(Sender: TObject);
var

iole_vss: variant;
iole_vss_item:variant;
filename:string;

begin



iole_vss:=CreateOLEObject('SourceSafe.0');
iole_vss.open('//proxy/vss_data/srcsafe.ini','ssl',''); //指定vss的系统文件

//指定要checkout的文件(在vss中的路径和文件名)
iole_vss_item:=iole_vss.vssitem['$/test/'+'文件名',false];

//指定checkout出来在本机的路径和文件名
iole_vss_item.checkout('c:/'+'文件名',1);

//打开进行编辑
filename:='cmd.exe /c "start c:/'+'文件名"';
winexec(pchar(filename),sw_hide);
end;

感谢两位的帮忙,有何问题可以email: trackoy@163.net;trackboy@163.com
问题结束,3q
 
我在执行这一句的时候出错
iole_vss_item:=CreateOLEObject('VSSItem');
说是无效的字符串,该怎么解决呀?是不是要调用其它的什么?
 
starcn:
你没有看清楚吗?在我的第二个帖子,已经解决这个问题了,在delphi里面不用
iole_vss_item:=CreateOLEObject('VSSItem')这一句;直接指定iole_vss_item:=iole_vss.vssitem['$/test/'+'文件名',false];
就可以了,不过要先注册vss安装子目录win32里面的ssapi.dll,可以用开始菜单中运行栏,输入"regsvr32.exe f:/vss/win32/ssapi.dll",
提示成功就可以了,代码就像大富翁里面所写,如果还有问题,最好详细说明问题所在,谢谢你的关注.
 
多人接受答案了。
 
谢谢trackboy,问题解决了!
要不要给你些分?我的分很多哦。^_^
 
后退
顶部