Delphi

本类阅读TOP10

·分布式网络考试系统原型分析及实现
·游戏外挂设计技术探讨①
·使用HOOK随心监视Windows
·Delphi 水晶报表打包解决
·试题库开发中非文本数据的处理
·如何将几个DBGRID里的内容导入同一个EXCEL表中....的问题
·如何使用Delphi设计强大的服务器程序
·工人线程中关闭窗体的实现
·用DLL方式封装MDI子窗体。
·支持XP下托盘栏气球提示的托盘单元

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
variant 和 Stream 的互換

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

在Com, Dcom, Com+中經常要用到variant, 而在delphi 中的文件操作之類中, 更多的用到Stream, 有時, 需要適當的互換!

Variant --> Stream

var ov: OleVariant;
  ms: TStream; p: Pointer;
begin
  ov := dmMain.ComConnection.AppServer.TimeZone;
  ms := TMemoryStream.Create;
  ms.Position := 0;
  p := VarArrayLock(ov);
  ms.Write(p^, VarArrayHighBound(ov, 1)); //這句可否改進?
  VarArrayUnlock(ov);

  ms.Position := 0;
  ...
  ms.Free;
end;

Stream --> Variant

function TTCanteenSvr.Get_TimeZone: OleVariant;
var
  AStream: TStream;
  MyBuffer: Pointer;
begin
  try
    AStream := TFileStream.Create(, fmOpenRead);
    Result := VarArrayCreate([0, AStream.Size - 1], VarByte);
    MyBuffer := VarArrayLock(Result);
    AStream.ReadBuffer(MyBuffer^, AStream.Size);
    VarArrayUnlock(Result);
  finally
    AStream.Free;
  end;




相关文章

相关软件