更新时间:2023-02-12 15:57:49
您可以使用 IStream 和 TStreamAdapter 。这是一个快速的例子(在D2007和XE2中测试):
You can do this using IStream and TStreamAdapter. Here's a quick example (tested in D2007 and XE2):
uses
ActiveX;
procedure TForm1.DoSomething;
var
MemStream: TMemoryStream;
ExchangeStream: IStream;
begin
MemStream := TMemoryFile.Create;
try
MemStream.LoadFromFile('C:\Test\SomeFile.txt');
MemStream.Position := 0;
ExchangeStream := TStreamAdapter.Create(MemStream) as IStream;
// Pass ExchangeStream to C++ DLL here, and do whatever else
finally
MemStream.Free;
end;
end;
以防万一,如果你需要去另一种方式(收到一个来自C / C ++的IStream
),您可以使用 TOleStream 从 IStream
获取到Delphi TStream
。
Just in case, if you need to go the other way (receiving an IStream
from C/C++), you can use TOleStream to get from that IStream
to a Delphi TStream
.