一个简单的COM问题,高人请来帮忙.(200分)

  • 主题发起人 主题发起人 www
  • 开始时间 开始时间
W

www

Unregistered / Unconfirmed
GUEST, unregistred user!
我要通过FileName得到文件的内容,文件可能是一个二进制文件,用什么类型返回比较合适??
function GetData(const FileName: WideString): PChar; safecall;
~~~~~~~~
 
文件按无类型文件打开。通过OleVariant或OleStream传回。
 
function GetData(const FileName: WideString): variant; safecall;
 
to rockjie,
怎么把数据还原呢??
 
Variant数组啊
 
谁给出一个例子,这200分都有了.
 
你怎么写入就怎么读出,把你写入的代码贴出来。
 
把文件流变成VARIANT,用VARIANT传递,收到后再倒着变回来,
就什么都可以传了

祝你好运

function StreamToVariant(Stream: TStream): OleVariant;
var
p: Pointer;
begin
Result := VarArrayCreate([0, Stream.Size - 1], varByte);
p := VarArrayLock(Result);
try
Stream.Position := 0;
Stream.Read(p^, Stream.Size);
finally
VarArrayUnlock(Result);
end;
end;

function VariantToStream(const Data: OleVariant ):TStream;
var
p: Pointer;
Stream: TStream;
begin
p := VarArrayLock(Data);
try
Stream.Write(p^, VarArrayHighBound(Data,1) + 1);
finally
VarArrayUnlock(Data);
end;
Result:=Stream;
end;
 
function GetData(const FileName: WideString): TStream; safecall;
呵呵
 
谢谢沙隆巴斯的主人,
但沙隆巴斯是审美什么呀??
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部