TRY!
function TMyMoniker.BindToStorage(const bc: IBindCtx; const mkToLeft: IMoniker;
const iid: TIID; out vObj): HResult;
var
StrBuf: POleStr;
FStream, TmpStream: TMemoryStream;
NewStream: TMyStream;
v: TLocateOptions;
s: string;
x: Byte;
begin
v := ([loCaseInSensitive]);
StringFromCLSID(iid, StrBuf);
IUnknown(vObj) := nil;
Result := MK_E_NOSTORAGE;
if IsEqualIID(iid, IStream) then
begin
NewStream := TMyStream.Create;
if FFileName <> '' then
begin
TmpStream := TMemoryStream.Create;
FStream := TMemoryStream.Create;
try
if (pos('.HTM', Uppercase(FFileName)) > 0) or (pos('.TXT',
Uppercase(FFilename)) > 0) then
begin
Table.Locate('Url', FFilename, v);
s := '
' + Table.FieldByName('Titel').AsString +'
';TmpStream.write(Pointer(S)^, Length(s));
if ini.ReadStringIni('Style', 'Activestyle', '') = '' then
Fstream.LoadFromFile(Programdir +
Table.FieldByName('Style').AsString + '.css') else
Fstream.LoadFromFile(Programdir + 'Styles/' +
ini.ReadStringIni('Style', 'Activestyle', ''));
SetLength(S, FStream.Size);
FStream.read(Pointer(S)^, FStream.size);
s := S + table.fieldbyname('Text').AsString;
TmpStream.write(Pointer(S)^, Length(s));
end else
begin
s := programdir + 'Multimedia/' + copy(Ffilename, 2,
length(ffilename));
tmpstream.LoadFromFile(s);
end;
NewStream.FTheStream.LoadFromStream(TmpStream);
except
FErrorStr := Format('Filen %s ikke fundet', [FFileName]);
end;
end;
TmpStream.Free;
Fstream.Free;
end;
if FErrorStr <> '' then
begin
FOutStr := Format(OutStr, [FErrorStr, FRequestURL]);
NewStream.FTheStream.Write(Pointer(FOutStr)^, Length(FOutStr));
end;
NewStream.FTheStream.Seek(0, soFromBeginning);
bc.RegisterObjectBound(NewStream);
IStream(vObj) := NewStream;
Result := S_OK;
end;