COMDCOM对象中通过Variant传递数组



 因为COM/DCOM对象都不在Client程序运行的内存空间(内进程COM对象除外,即便如此,为了统一接口,内进程的COM也不得传递指针),而且在Win32中所有的程序都有自己独立的2GB的内存空间,程序与程序之间传递指针(内存地址)是毫无意义的,而数组、字符串等大量的数据在程序中都是分配一定的内存空间,然后用指针加内存偏移量来存取数据的,这时,如何在COM/DCOM对象中如何传递呢?
 在Win32中引入了一新变量Variant,可以通过Variant传递数组。具体的实现方法,用Delphi实现为:

 Server(COM/DCOM程序)端:
 procedure TTestDCOM.Send4(Size: Integer; D1: OleVariant);
 type
  TData=array [0..999] of Byte;
 Var
  Data:TData;
  i:Integer;
 begin
  for i:=0 to Size-1 do begin
 Data[i]:=D1[i];
  end;
 end;

 Cleint端:

 Var
 D1:OleVariant;
 begin
 D1:=VarArrayCreate([0,99],varByte);

 {
 D1[1]:=45;
....  file://将值存入D1中

 }
 S.Send4(99,D1);  file://S是TestDCOM对象
 end;








作者:高素梅

  配置数据引擎(BDE、SQL Link)的简单方法

  在数据库程序分发时,需要携带数据引擎(BDE、SQL Link),并且在客户端安装完程序后还需要配置数据引擎,如用户名(username)、密码(Password)等等。如果手工配置的话,工作量比较大,这时,我们可利用InstallShield For Delphi轻松实现配置。在用InstallShield For Delphi制作安装程序时,在生成安装程序的目录里有一个*.iwz的文本文件,只要在[IDAPI Alias]片段中手工加入即可。 例如:

  [IDAPI Alias]

  username=SYSDBA

  password=masterkey

  安装程序后数据引擎自动配置完毕。

  制做快速按钮条的方法

  快速按钮条上的每一个图形按钮都代表着一项常用的功能,同时,这些图形按钮尺寸较普通的图标大,可以放置更大、更形象的图形,甚至可以带上简短的提示,这对于用户执行最常用的功能很有帮助。基于上述原因,越来越多的Windows应用程序采用快速按钮条来改善应用程序的界面。笔者在用Delphi编程时,采用了两种不同的方法来实现快速按钮条,本文结合制作一个具有两组、共六个按钮的快速按钮条的实例,列出了这两种方法的具体设计步骤。

  1.组合生成法

  (1)在窗体上放置一个Panel1对象,作为图形按钮的载体。

回首页