istream java,有人知道IStream怎么用吗?? (0分)

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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值