且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何将Delphi Stream传递给c / c ++ DLL

更新时间: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.