Format 函数

Delphi 支持“开参数”和动态数组,变体数组,使用时的语法类似 Delphi 中的集合:采用两个方括号把不同类型的变量括起来(这太方便了啊),也可以采用声明一个 TVarRec 类型的数组来容纳不同的类型变量(具体请参阅其帮助文档)

Format函数声明比较

function Format(const Format: string; const Args: array of const): string; overload;

extern DELPHI_PACKAGE UnicodeString __fastcall Format(const UnicodeString Format, TVarRec const *Args, const int Args_High)/* overload */;

C++Builder 中,没有像 Delphi 中的那中语法特性,BCB 中的 Format 函数其第一个参数与 Delphi 的 Format
是类似的(一个格式化描述字符串),而后面有两个参数,第二个参数是一个 TVarRec
类型的数组指针,第三个参数是这个数组的最后一个元素的索引值!因为 C++
不支持动态数组语法,也没有什么“开参数”之类的怪异特性,所以当你传递数组时,你必须同时传递数组的大小(Format
要求的是数组的最后一个元素的索引值,因此大同小异)。刚才我说过,在 Delphi 中也可以用 TVarRec
数组代替方括号的方法,其实本质是一样的。当然了,在 C++Builder 中,我们没有必要在每次使用 Format 函数时都先声明一个
TVarRec 数组,然后再把要用于输出的变量赋给 TvarRec 数组的每一个元素,最后还要传递 TVarRec
数组的最后元素索引。其实,我们可以使用一个 C++Builder 预先声明好的宏 ARRAYOFCONST,直接传入要格式化输出的变量

C++builder中的Format函数ARRAYOFCONST参数

Format( "My name is %s, I'm %d years old.",  ARRAYOFCONST(("Phoenix2000", 22)) );  //注意两个括号

FDQuery1.Open函数声明比较

procedure TFDRdbmsDataSet.Open(const ASQL: String; const AParams: array of Variant);

FDQuery1.Open('select * from tt where id=:id',[0]);

HIDESBASE void __fastcall Open(const UnicodeString ASQL, Variant const *AParams, const int AParams_High)/* overload */;

Variant locvalues[1];
 locvalues[0] = Variant("01");
 FDQuery1->Open("select * from table where id=:id", locvalues, 0);

TCustomDataSet.Locate函数声明比较

Delphi

function Locate(const KeyFields: string; const KeyValues: Variant;  Options: TLocateOptions): Boolean; override;

  CustTable.Locate('Company;Contact;Phone', VarArrayOf(['Sight Diver', 'P', '408-431-1000']), [loPartialKey]);
CustTable.Locate('ID', 1001, []);

C++

virtual bool __fastcall Locate(const UnicodeString KeyFields, const Variant &KeyValues, TLocateOptions Options);

三个字段搜索
TLocateOptions Opts;
Variant locvalues[3];
locvalues[0] = Variant("Sight Diver");
locvalues[1] = Variant("P");
locvalues[2] = Variant("408-431-1000");
CustTable->Locate("Company;Contact;Phone", VarArrayOf(locvalues, 2), Opts); 二个字段搜索
Variant locvalues[2];
locvalues[0] = Variant("Sight Diver");
locvalues[1] = Variant("P");
CustTable->Locate("Company;Contact", VarArrayOf(locvalues, 1), TLocateOptions());

一个字段搜索
FDMemTable1->Locate("fieldName", strVar, TLocateOptions());

Delphi 变体数组 Dataset Locate 查找定位的更多相关文章

  1. Delphi结构体数组指针的问题

    //这段代码在Delphi 2007和delphi 7下是可以执行的,所以正确使用结构体数组和指针应该是这样的,已验证 unit Unit1; interface uses Windows, Mess ...

  2. 【Visual Lisp】变体与安全数组

    (vlax-make-variant) ;;创建一个未初始化的变体 ;;01.整型值变体(setq myvar (vlax-make-variant 10)) ;;创建整型值变体,返回 #<va ...

  3. 二分查找及几种变体的Python实现

    1. 在不重复的有序数组中,查找等于给定值的元素 循环法 def search(lst, target): n = len(lst) if n == 0: return -1 low = 0 high ...

  4. 二叉查找树及B-树、B+树、B*树变体

    动态查找树主要有二叉查找树(Binary Search Tree),平衡二叉查找树(Balanced Binary Search Tree), 红黑树 (Red-Black Tree ), 都是典型的 ...

  5. java基础编程——二维数组中的查找

    题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数 ...

  6. GCC 中零长数组与变长数组

    前两天看程序,发现在某个函数中有下面这段程序: int n; //define a variable n int array[n]; //define an array with length n 在 ...

  7. C++内存分配及变长数组的动态分配

    //------------------------------------------------------------------------------------------------ 第 ...

  8. labview 变体数据类型

    变体数据类型是LabVIEW中多种数据类型的容器.将其它数据转换为变体时,变体将存储数据和数据的原始类型,保证日后可将变体数据反向转换. 例如,如将字符串数据转换为变体,变体将存储字符串的文本,以及说 ...

  9. oracle:变长数组varray,嵌套表,集合

    创建变长数组类型 ) );  这个变长数组最多可以容纳两个数据,数据的类型为 varchar2(50) 更改元素类型的大小或精度 可以更改变长数组类型和嵌套表类型 元素的大小. ALTER TYPE ...

随机推荐

  1. 解决:VS2010 调试器无法继续继续运行该进程,无法启动调试

    工具栏上突然出现 Model Project选项插件,在调试项目的时候突然出现错误: 按照网上的一些方法弄了后还是同样报错,把本地代码删除后从库上重现拉下来的项目依然报错,到这里就明白不是项目本身问题 ...

  2. Oracle密码过期处理

    问题:Oracle密码过期导致数据库无法访问 解决方案: 1.后台以数据库管理员身份登陆,服务器中打开cmd命令,然后输入 sqlplus / as sysdba 2.查看用户对应的proifle文件 ...

  3. SVN服务器搭建和使用(四)

    在第一次使用TortoiseSVN从服务器CheckOut的时候,会要求输入用户名和密码,这时输入框下面有个选项是保存认证信息,如果选了这个选项,那么以后就不用每次都输入一遍用户名密码了. 不过,如果 ...

  4. POJ2299逆序对模板(树状数组)

    题目:http://poj.org/problem?id=2299 只能相邻两个交换,所以交换一次只会减少一个逆序对.所以交换次数就是逆序对数. ps:原来树状数组还可以记录后边lowbit位的部分和 ...

  5. 异步Socket服务器与客户端

      本文灵感来自Andre Azevedo 在CodeProject上面的一片文章,An Asynchronous Socket Server and Client,讲的是异步的Socket通信. S ...

  6. ALGO-7_蓝桥杯_算法训练_逆序对

    出处:http://blog.csdn.net/enjoying_science/article/details/44114035 (有难度,以后回来填坑) 阅读代码中: #include<st ...

  7. JavaScript之图片操作3

    在页面布局中,常常会用到九宫格布局,如下图所示: 本次我们就以九宫格为基础进行图片的布局操作,首先我们以上面的图片的为例,假设每个格子的大小都相同,将每一个格子相对其父元素进行定位,这样,我们只需要控 ...

  8. SpringMVC中session的使用

    SpringMVC中仍然可以使用传统方式使用session /** * 使用session - 传统方式 */ @RequestMapping("/hello13.action") ...

  9. httpclient httpcore jar包及源码

    HttpClient HttpCore HttpComponents jar src download httpclient home help

  10. python 自动化多线程的应用

    1.本机上同时执行多个浏览器 import threading,sys from time import sleep,ctime from selenium import webdriver path ...