Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#18

AW: DLL Exportiert ein Interface mit Strings...

  Alt 10. Jun 2014, 11:22
Eigentlich Recht einfach.

- TStream-Nachfolger können nicht direkt an IStream übergeben werden.
> TStream ist halt ein Delphi-Typ und ISteam kommt irgendwo aus dem OLE32, oder so.
> Gut, man hätte natürlich auf die Idee kommen können, die Methoden von IStream direkt in TStream einzubauen, damit man auch direkt darüber das IStream hätte supporten können, aber so schlau war wohl Keiner.

Man nimmt also irgendeinen Stream, packt ihn in den TStreamAdapter und überlegt sich dann noch, wer für die Freigabe sorgen soll.

Delphi-Quellcode:
type
  IMyIntf = interface
    function GetStream: IStream;
    procedure PutStream(S: IStream);
  end;

function TMyClass.GetStream: IStream;
begin
  Result := TStreamAdapter.Create(FStream, soReference);
end;

function TMyClass.GetStream: IStream;
begin
  Result := TStreamAdapter.Create(TFileStream.Create('Test.dat', 0), soOwned);
end;


begin
  MyIntf.PutStream(TStreamAdapter.Create(FStream, soReference));
end;

begin
  MyIntf.PutStream(TStreamAdapter.Create(TFileStream.Create('Test.dat', 0), soOwned));
end;
$2B or not $2B
  Mit Zitat antworten Zitat