Delphi 7 的一个奇怪的Bug
近来发现一个Delphi莫名其妙的bug,当使用SetOptionalParam时,不能使用一连串数字的字符串,如'101',注意,是带引号的。在SaveToFile时,就会出现'Invalid field type'的异常,真是百思不得其解!连'001'这种串也不行,去掉引号,直接按数字赋值,则正常。
procedure TForm1.Button1Click(Sender: TObject);
var
cds:TClientDataSet;
begin
cds:=TClientDataSet.Create(nil);
with cds do
begin
FieldDefs.Add('f1',ftString,50);
CreateDataSet;
end;
cds.SetOptionalParam('ppppp','101');
cds.SaveToFile('c:\sss.dat'); //出现异常:Invalid field type!,把101改为abc,正常
cds.Free;
end;
相关文档:
Delphi中Format字符串说明
function Format(const Format: string; const Args: array of const):
string;
Format字符串说明:
"%" [index ":"] ["-"] [width] ["." prec] type
(1)
格式化字符串必须以%开头
(2) [index ":"]
索引指的是Args参数列表中要显示的每一项的序号。比如:Args是
......
在Delphi中Ado系列控件使用xxxxx.Parameters.Refresh,可以获得存储过程的Return值
以TADOStoredProc为例
ADOStoredProc1.Connection := 'xxxx';
ADOStoredProc1.ProcedureName := 'XXXX';
ADOStoredProc1.Parameters.Refresh; //刷新存储过程的参数列表
//参数赋值
ADO ......
Procedure OnMouseWheel(Var Msg :TMsg;var Handled:Boolean);
begin
if Msg.message = WM_MouseWheel then
begin
if Msg.wParam > 0 then
begin
if DBGrid.Focused then
......
当A D O开始处理数据后,应用程序必须等到A D O处理完毕之后才可以继续执行。但
是除了同步执行方式之外, A D O也提供了异步执行的方式,允许当A D O处理时,
应用程序仍然能够先继续执行。而当A D O处理数据完毕之后, A D O会以事件的方
式通知应用程序,此时应用程序可以再根据A D O执行的 ......
.pas ---- pascal的缩写, 单元原始程式档( unit source files )
.dpr ---- 专案档 ( project files )
.dpk ---- 包裹原始程式档/组件包 ( package source files )
.dfm ---- 表单档 (记录form的内容,除去这个内容就等于删除了form这个表单)
.dcu ---- 是编译好的单元文件.若只有一个dcu文件,则不能看到源代码.
......