DELPHI 7 学习笔记
2014-06-11 14:33
260 查看
[ 2013-05-13 ]
【字符串操作】
AnsiStartsText('DATA ', strCommand) —— 如果字符以此打头,需引用 StrUtils
SameText(strCommand, 'QUIT') —— 判断两个字符相同
s:='0001000200030004';
s1:= LeftStr(s,4); //结果为0001
s2:= RightStr(s,4);//结果为0004
LeftStr / RightStr 只对英文有效,中文需当成两个字节,所以中文不能用,需要加WideString
1,LeftStr(Str,2)=He;//从Str字符串变量的最左边(第一个字符包括第一个字符)开始截取2个字符;
2,RightStr(Str,2)=ld;//从Str字符串变量的最右边(第一个字符包括第一个字符)开始截取2个字符;
3,MidStr(Str,2,2)=el;//从Str字符串变量的中第2个字符开始取长度为2个字符的字符串;
另外有一个函数Copy
4,Copy(Str,2,2)=el;//从Str字符串变量的中第2个字符开始取长度为2个字符的字符串;(类似于MidStr);
a := trim('DATA sdasd大家好');
b := Rightstr(a, Length(WideString(a))-5 );
第一个参数为要进行处理的字符串,第二个参数为从何处开始删除,第三个参数为删除的字符个数。
S := 'I Like Reading CPCW.';
Delete(S, 16, 1); // 代码将删除S变量中的“C”字符
【ListBox操作】
ListBox1.Items.Add('服务器启动成功!') —— 添加一行内容
[ 2013-05-19 ]
报错:access violation at address 004d76f1 in module 'ys.exe'.read of address 00000004
解决:这个错误往往是你的指针没有初始化,或者已经被释放以后,再调用其指向的内容或者对象造成的。
[ 2013-05-31 ]
1.Insert INTO Select语句
语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Table1
要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。
Sample:
insert into TBL_QUESTION_RT(PROJID, EXAMID, SECTIONID, QUESID, EXAMINEEID, QUESANSWER, EXAMINEEANSWER, QUESSCORE, EXAMINEESCORE, SEQUENCEID, ISMARK )
Select PROJID, "'+ExamineeObj.ExamID+'" as EXAMID , SECTIONID, QUESID, "'+ ExamineeObj.ExamineeID +'" as EXAMINEEID, QUESANSWER, "" as EXAMINEEANSWER, QUESSCORE, 0 as EXAMINEESCORE, SEQUENCEID, "0" as ISMARK
from TBL_QUESTION
insert into TBL_QUESTION_RT(PROJID, EXAMID, SECTIONID, QUESID, EXAMINEEID, QUESANSWER, EXAMINEEANSWER, QUESSCORE, EXAMINEESCORE, SEQUENCEID, ISMARK )
Select "P1006" as PROJID, "P1006E01" as EXAMID , SECTIONID, QUESID, "C100009" as EXAMINEEID, QUESANSWER, "" as EXAMINEEANSWER, QUESSCORE, 0 as EXAMINEESCORE, SEQUENCEID, "0" as ISMARK
from TBL_QUESTION
2.Select INTO FROM语句
语句形式为:Select vale1, value2 into Table2 from Table1
要求目标表Table2不存在,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中。
两者区别:
insert into 下,是将选择好的结果集一个一个插入一个已存在的表内。
select * into 是将一个选择出来的结果集保存到一个即将创建的表内。
[ 2013-06-05 ]
MessageBox使用指南
1、函数原型及参数
function MessageBox(hWnd: HWND; Text, Caption: PChar; Type: Word): Integer;
hWnd:对话框父窗口句柄,对话框显示在Delphi窗体内,可使用窗体的Handle属性,否则可用0,使其直接作为桌面窗口的子窗口。
Text:欲显示的信息字符串。
Caption:对话框标题字符串。
Type:对话框类型常量。
该函数的返回值为整数,用于对话框按钮的识别。
2、类型常量
对话框的类型常量可由按钮组合、缺省按钮、显示图标、运行模式四种常量组合而成。
(1)按钮组合常量
MB_OK = $00000000; //一个确定按钮
MB_OKCANCEL = $00000001; //一个确定按钮,一个取消按钮
MB_ABORTRETRYIGNORE = $00000002; //一个异常终止按钮,一个重试按钮,一个忽略按钮
MB_YESNOCANCEL = $00000003; //一个是按钮,一个否按钮,一个取消按钮
MB_YESNO = $00000004; //一个是按钮,一个否按钮
MB_RETRYCANCEL = $00000005; //一个重试按钮,一个取消按钮
(2)缺省按钮常量
MB_DEFBUTTON1 = $00000000; //第一个按钮为缺省按钮
MB_DEFBUTTON2 = $00000100; //第二个按钮为缺省按钮
MB_DEFBUTTON3 = $00000200; //第三个按钮为缺省按钮
MB_DEFBUTTON4 = $00000300; //第四个按钮为缺省按钮
(3)图标常量
MB_ICONHAND = $00000010; //“×”号图标
MB_ICONQUESTION = $00000020; //“?”号图标
MB_ICONEXCLAMATION = $00000030; //“!”号图标
MB_ICONASTERISK = $00000040; //“i”图标
MB_USERICON = $00000080; //用户图标
MB_ICONWARNING = MB_ICONEXCLAMATION; //“!”号图标
MB_IConERROR = MB_ICONHAND; //“×”号图标
MB_ICONINFORMATION = MB_ICONASTERISK; //“i”图标
MB_ICONSTOP = MB_ICONHAND; //“×”号图标
(4)运行模式常量
MB_APPLMODAL = $00000000; //应用程序模式,在未结束对话框前也能切换到另一应用程序
MB_SYSTEMMODAL = $00001000; //系统模式,必须结束对话框后,才能做其他操作
MB_TASKMODAL = $00002000; //任务模式,在未结束对话框前也能切换到另一应用程序
MB_HELP = $00004000; //Help Button
3、函数返回值
0 //对话框建立失败
idOk = 1 //按确定按钮
idCancel = 2 //按取消按钮
idAbout = 3 //按异常终止按钮
idRetry = 4 //按重试按钮
idIgnore = 5 //按忽略按钮
idYes = 6 //按是按钮
idNo = 7 //按否按钮
MessageBox(Self.Handle, '您确定要删除吗?', '删除确认', MB_YESNO+MB_DEFBUTTON2+MB_ICONQUESTION+MB_SYSTEMMODAL) = 6
[ 2013-06-07 ]
Panel背景颜色设置问题
设置了颜色,但没有起效,解决办法:
答:在设计时,首先把Panel的parentcolor设置为true,然后在设置为false,然后把parengground设置为true,然后在设置为false,这样处理过后Panel在就可以了。
[ 2013-06-13 ]
TList包含对象指针列表。
Tlist用于存储和维护对象列表。TList引入属隆和方法以执行以下操作:
(1)在列表中增加或删除对象。
(2)在列表中重排对象。
(3)在列表中定位和获得对象。
(4)在列表中对对象进行排序。
属性列表
Capacity 标识TList对象维护的指针数组的大小。
Count 表明在列表中使用的项的数量。
Items 列出对象的引用。
List 标识组成Items的指针数组。
方法列表
~TList 删除与TList对象有关的内存。
Add 在列表的末尾插入有关的内存。
Clear 从列表中删除所有项。
Delete 删除Index参数标识的项。
Error 产生EListError异常。
Exchange 交换Items数组中两项的位置。
Expand 增加列表的Capacity。
First 返回Items[0]。
IndexOf 返回Items数组中一指针的索引。
Insert 增加一对象至Items数组中。
Last 返回Items[Count-1]。
Move 在Items数组中改变某一项的位置。
Pack 从Items数组中删除所有的零项。
Remove 从Items数组中删除Items参数的第一个引用。
Sort 在列表中执行QuickSort。
TList 创建一个新的TList对象。
[ 2013-06-16 ]
SQLServer语句中字符需要单引号,但DELPHI也是单引号,所以在DELPHI中需要用两个单引号表示单引号。
[文件操作:]
MEMO内容写入文件:Memo1.Lines.SaveToFile(FormatDateTime('yyyy-mm-dd-hh时mm分ss秒',Now) + '.txt');
procedure TForm1.Button1Click(Sender: TObject);
var
saveedit:TStringList;
begin
saveedit := Tstringlist.Create;
saveedit.Text := edit1.Text;
saveedit.SaveToFile(ExtractFilePath(Application.ExeName)+'自己想要的文件名.txt');
saveedit.Free;
end;
const
cnsFilename='c:\1.txt';
var
F:Text;// 以文本的形式,也可以以其他形式。
begin
AssignFile(F,cnsFilename);
try
if FileExists(cnsFilename) then
Append(F)
else
Rewrite(F);
Writeln(F,'hellow world.');
finally
CloseFile(F);
end;
end;
[ 2013-06-17 ]
ListView有个属性叫 RowSelect,设为true,则列表可选定高亮。
[ 2013-06-19 ]
InputBox 是调用了 InputQuery, InputQuery 是通过一个 var 参数获取新字串:
var str: string;
begin
InputQuery('输入窗口标题', '输入提示', str);
ShowMessage(str); //显示输入的内容
end;
theIP := Inputbox('修改考试机','请修改选定的考试机IP:', ListView1.Selected.SubItems[0]);
[ 2013-06-21 ]
关于 ClientDataSet1 的用法
移动
第一个 ClientDataSet1.First
上一个 ClientDataSet1.Prior
下一个 ClientDataSet1.Next
最后一个 ClientDataSet1.Last
定位
ClientDataSet1.FindKey('键值');
ClientDataSet1.Locate(字段,值,选项)
....
插入
ClientDataSet1.Insert
编辑
ClientDataSet1.Edit
删除
ClientDataSet1.Delete
取值
Edit1.Text:=ClientDataSet1.FieldByName('字段名').Asstring
赋值
ClientDataSet1.FieldByName('字段名').Asstring:='字符串'
也可以用其他的方法
ADOQUERY和ADOTABLE一样
与TTable、TQuery一样,TClientDataSet也是从TDataSet继承下来的,它通常用于多层体系结构的客户端。 TClientDataSet最大的特点是它不依赖于BDE(Borland Database Engine),但它需要一个动态链接库的支持,这个动态链接库叫DBCLIENT.DLL。在客户端,也不需要用TDatabase构件,因为客户端并 不直接连接数据库。
由于TClientDataSet是从TDataSet继承下来的,所以,它支持诸如编辑、搜索、浏览、纠错、过滤等功 能。由于TClientDataSet在内存中建立了数据的本地副本,上述操作的执行速度很快。也正是由于TClientDataSet并不直接连接数据 库,因此,客户程序必须提供获取数据的机制。在Delphi 4中,TClientDataSet有三种途径获取数据:
.从文件中存取数据。
.从本地的另一个数据集中获取数据。
.通过IProvider接口从远程数据库服务器获取数据。
在一个客户程序中,可以同时运用上述三种机制获取数据。
你可以拖一个TDataSetProvider控件,然后将查询到TADOQuery控件中的数据通过TDataSetProvider控件加载到数据集中。
qry3.SQL.Text:=sql;
qry3.Open;
DataSetProvider2.DataSet:=qry3;
Mem1.Data:=DataSetProvider2.Data;
sql是sql语句,qry3是TADOQuery控件名,DataSetProvider2是TDataSetProvider控件名,Mem1是数据集名
************ 动态ADO ************
//自动调整服务器路径
AppPath := ExtractFilePath(Application.ExeName);
CopyFile(PAnsiChar(AppPath+'db\ATS_EXAM.dat'),PAnsiChar(AppPath+'db\ATS_'+GlobalItem.ExamId+'.dat'),True);
DataModule1.ADOConnection1.Connected:=false;
DataModule1.ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+AppPath+'DB\ATS_'+GlobalItem.ExamId+'.dat;Persist Security Info=False';
DataModule1.ADOConnection1.Connected:=true;
************ 两边加单引号 ************
给字符串两边加单引号并返回.
声明:function QuotedStr(const S: string): string;
************ 文件COPY ************
CopyFile(PAnsiChar(UC_Var.AppPath+'Data\'+UC_Const.ExamFile_Template),PAnsiChar(UC_Var.AppPath+'Data\'+ExamId+'.mdb'),True);
[ 2013-06-24 ]
在操作MDB数据库时,不能用MEMO作为字段名,因为这是保留字
[ 2013-07-01 ]
将一个数组打乱顺序,即乱序的算法如下(又叫洗牌算法):
Array20 : array[1..20] of String;
//初始化数组
procedure TForm1.InitValue();
var
i : integer;
begin
for i:=1 to 20 do
begin
Array20[i] := inttostr(i);
end;
end;
//随机得到新数组
procedure TForm1.tmprandom();
var
i,j : integer;
swp:string;
begin
randomize;
for i:=1 to 20 do
begin
j := 1 + random(20);
swp := Array20[i];
Array20[i] := Array20[j];
Array20[j] := swp;
end;
end;
[ 2013-07-07 ]
显示布尔型的值: IntToStr(Ord(LblA.AutoSize))
[ 2013-07-13 ]
显示当前时间: Label3.Caption := FormatDateTime('yyyy-MM-dd hh:nn:ss',Now());
【字符串操作】
AnsiStartsText('DATA ', strCommand) —— 如果字符以此打头,需引用 StrUtils
SameText(strCommand, 'QUIT') —— 判断两个字符相同
s:='0001000200030004';
s1:= LeftStr(s,4); //结果为0001
s2:= RightStr(s,4);//结果为0004
LeftStr / RightStr 只对英文有效,中文需当成两个字节,所以中文不能用,需要加WideString
1,LeftStr(Str,2)=He;//从Str字符串变量的最左边(第一个字符包括第一个字符)开始截取2个字符;
2,RightStr(Str,2)=ld;//从Str字符串变量的最右边(第一个字符包括第一个字符)开始截取2个字符;
3,MidStr(Str,2,2)=el;//从Str字符串变量的中第2个字符开始取长度为2个字符的字符串;
另外有一个函数Copy
4,Copy(Str,2,2)=el;//从Str字符串变量的中第2个字符开始取长度为2个字符的字符串;(类似于MidStr);
a := trim('DATA sdasd大家好');
b := Rightstr(a, Length(WideString(a))-5 );
第一个参数为要进行处理的字符串,第二个参数为从何处开始删除,第三个参数为删除的字符个数。
S := 'I Like Reading CPCW.';
Delete(S, 16, 1); // 代码将删除S变量中的“C”字符
【ListBox操作】
ListBox1.Items.Add('服务器启动成功!') —— 添加一行内容
[ 2013-05-19 ]
报错:access violation at address 004d76f1 in module 'ys.exe'.read of address 00000004
解决:这个错误往往是你的指针没有初始化,或者已经被释放以后,再调用其指向的内容或者对象造成的。
[ 2013-05-31 ]
1.Insert INTO Select语句
语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Table1
要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。
Sample:
insert into TBL_QUESTION_RT(PROJID, EXAMID, SECTIONID, QUESID, EXAMINEEID, QUESANSWER, EXAMINEEANSWER, QUESSCORE, EXAMINEESCORE, SEQUENCEID, ISMARK )
Select PROJID, "'+ExamineeObj.ExamID+'" as EXAMID , SECTIONID, QUESID, "'+ ExamineeObj.ExamineeID +'" as EXAMINEEID, QUESANSWER, "" as EXAMINEEANSWER, QUESSCORE, 0 as EXAMINEESCORE, SEQUENCEID, "0" as ISMARK
from TBL_QUESTION
insert into TBL_QUESTION_RT(PROJID, EXAMID, SECTIONID, QUESID, EXAMINEEID, QUESANSWER, EXAMINEEANSWER, QUESSCORE, EXAMINEESCORE, SEQUENCEID, ISMARK )
Select "P1006" as PROJID, "P1006E01" as EXAMID , SECTIONID, QUESID, "C100009" as EXAMINEEID, QUESANSWER, "" as EXAMINEEANSWER, QUESSCORE, 0 as EXAMINEESCORE, SEQUENCEID, "0" as ISMARK
from TBL_QUESTION
2.Select INTO FROM语句
语句形式为:Select vale1, value2 into Table2 from Table1
要求目标表Table2不存在,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中。
两者区别:
insert into 下,是将选择好的结果集一个一个插入一个已存在的表内。
select * into 是将一个选择出来的结果集保存到一个即将创建的表内。
[ 2013-06-05 ]
MessageBox使用指南
1、函数原型及参数
function MessageBox(hWnd: HWND; Text, Caption: PChar; Type: Word): Integer;
hWnd:对话框父窗口句柄,对话框显示在Delphi窗体内,可使用窗体的Handle属性,否则可用0,使其直接作为桌面窗口的子窗口。
Text:欲显示的信息字符串。
Caption:对话框标题字符串。
Type:对话框类型常量。
该函数的返回值为整数,用于对话框按钮的识别。
2、类型常量
对话框的类型常量可由按钮组合、缺省按钮、显示图标、运行模式四种常量组合而成。
(1)按钮组合常量
MB_OK = $00000000; //一个确定按钮
MB_OKCANCEL = $00000001; //一个确定按钮,一个取消按钮
MB_ABORTRETRYIGNORE = $00000002; //一个异常终止按钮,一个重试按钮,一个忽略按钮
MB_YESNOCANCEL = $00000003; //一个是按钮,一个否按钮,一个取消按钮
MB_YESNO = $00000004; //一个是按钮,一个否按钮
MB_RETRYCANCEL = $00000005; //一个重试按钮,一个取消按钮
(2)缺省按钮常量
MB_DEFBUTTON1 = $00000000; //第一个按钮为缺省按钮
MB_DEFBUTTON2 = $00000100; //第二个按钮为缺省按钮
MB_DEFBUTTON3 = $00000200; //第三个按钮为缺省按钮
MB_DEFBUTTON4 = $00000300; //第四个按钮为缺省按钮
(3)图标常量
MB_ICONHAND = $00000010; //“×”号图标
MB_ICONQUESTION = $00000020; //“?”号图标
MB_ICONEXCLAMATION = $00000030; //“!”号图标
MB_ICONASTERISK = $00000040; //“i”图标
MB_USERICON = $00000080; //用户图标
MB_ICONWARNING = MB_ICONEXCLAMATION; //“!”号图标
MB_IConERROR = MB_ICONHAND; //“×”号图标
MB_ICONINFORMATION = MB_ICONASTERISK; //“i”图标
MB_ICONSTOP = MB_ICONHAND; //“×”号图标
(4)运行模式常量
MB_APPLMODAL = $00000000; //应用程序模式,在未结束对话框前也能切换到另一应用程序
MB_SYSTEMMODAL = $00001000; //系统模式,必须结束对话框后,才能做其他操作
MB_TASKMODAL = $00002000; //任务模式,在未结束对话框前也能切换到另一应用程序
MB_HELP = $00004000; //Help Button
3、函数返回值
0 //对话框建立失败
idOk = 1 //按确定按钮
idCancel = 2 //按取消按钮
idAbout = 3 //按异常终止按钮
idRetry = 4 //按重试按钮
idIgnore = 5 //按忽略按钮
idYes = 6 //按是按钮
idNo = 7 //按否按钮
MessageBox(Self.Handle, '您确定要删除吗?', '删除确认', MB_YESNO+MB_DEFBUTTON2+MB_ICONQUESTION+MB_SYSTEMMODAL) = 6
[ 2013-06-07 ]
Panel背景颜色设置问题
设置了颜色,但没有起效,解决办法:
答:在设计时,首先把Panel的parentcolor设置为true,然后在设置为false,然后把parengground设置为true,然后在设置为false,这样处理过后Panel在就可以了。
[ 2013-06-13 ]
TList包含对象指针列表。
Tlist用于存储和维护对象列表。TList引入属隆和方法以执行以下操作:
(1)在列表中增加或删除对象。
(2)在列表中重排对象。
(3)在列表中定位和获得对象。
(4)在列表中对对象进行排序。
属性列表
Capacity 标识TList对象维护的指针数组的大小。
Count 表明在列表中使用的项的数量。
Items 列出对象的引用。
List 标识组成Items的指针数组。
方法列表
~TList 删除与TList对象有关的内存。
Add 在列表的末尾插入有关的内存。
Clear 从列表中删除所有项。
Delete 删除Index参数标识的项。
Error 产生EListError异常。
Exchange 交换Items数组中两项的位置。
Expand 增加列表的Capacity。
First 返回Items[0]。
IndexOf 返回Items数组中一指针的索引。
Insert 增加一对象至Items数组中。
Last 返回Items[Count-1]。
Move 在Items数组中改变某一项的位置。
Pack 从Items数组中删除所有的零项。
Remove 从Items数组中删除Items参数的第一个引用。
Sort 在列表中执行QuickSort。
TList 创建一个新的TList对象。
[ 2013-06-16 ]
SQLServer语句中字符需要单引号,但DELPHI也是单引号,所以在DELPHI中需要用两个单引号表示单引号。
[文件操作:]
MEMO内容写入文件:Memo1.Lines.SaveToFile(FormatDateTime('yyyy-mm-dd-hh时mm分ss秒',Now) + '.txt');
procedure TForm1.Button1Click(Sender: TObject);
var
saveedit:TStringList;
begin
saveedit := Tstringlist.Create;
saveedit.Text := edit1.Text;
saveedit.SaveToFile(ExtractFilePath(Application.ExeName)+'自己想要的文件名.txt');
saveedit.Free;
end;
const
cnsFilename='c:\1.txt';
var
F:Text;// 以文本的形式,也可以以其他形式。
begin
AssignFile(F,cnsFilename);
try
if FileExists(cnsFilename) then
Append(F)
else
Rewrite(F);
Writeln(F,'hellow world.');
finally
CloseFile(F);
end;
end;
[ 2013-06-17 ]
ListView有个属性叫 RowSelect,设为true,则列表可选定高亮。
[ 2013-06-19 ]
InputBox 是调用了 InputQuery, InputQuery 是通过一个 var 参数获取新字串:
var str: string;
begin
InputQuery('输入窗口标题', '输入提示', str);
ShowMessage(str); //显示输入的内容
end;
theIP := Inputbox('修改考试机','请修改选定的考试机IP:', ListView1.Selected.SubItems[0]);
[ 2013-06-21 ]
关于 ClientDataSet1 的用法
移动
第一个 ClientDataSet1.First
上一个 ClientDataSet1.Prior
下一个 ClientDataSet1.Next
最后一个 ClientDataSet1.Last
定位
ClientDataSet1.FindKey('键值');
ClientDataSet1.Locate(字段,值,选项)
....
插入
ClientDataSet1.Insert
编辑
ClientDataSet1.Edit
删除
ClientDataSet1.Delete
取值
Edit1.Text:=ClientDataSet1.FieldByName('字段名').Asstring
赋值
ClientDataSet1.FieldByName('字段名').Asstring:='字符串'
也可以用其他的方法
ADOQUERY和ADOTABLE一样
与TTable、TQuery一样,TClientDataSet也是从TDataSet继承下来的,它通常用于多层体系结构的客户端。 TClientDataSet最大的特点是它不依赖于BDE(Borland Database Engine),但它需要一个动态链接库的支持,这个动态链接库叫DBCLIENT.DLL。在客户端,也不需要用TDatabase构件,因为客户端并 不直接连接数据库。
由于TClientDataSet是从TDataSet继承下来的,所以,它支持诸如编辑、搜索、浏览、纠错、过滤等功 能。由于TClientDataSet在内存中建立了数据的本地副本,上述操作的执行速度很快。也正是由于TClientDataSet并不直接连接数据 库,因此,客户程序必须提供获取数据的机制。在Delphi 4中,TClientDataSet有三种途径获取数据:
.从文件中存取数据。
.从本地的另一个数据集中获取数据。
.通过IProvider接口从远程数据库服务器获取数据。
在一个客户程序中,可以同时运用上述三种机制获取数据。
你可以拖一个TDataSetProvider控件,然后将查询到TADOQuery控件中的数据通过TDataSetProvider控件加载到数据集中。
qry3.SQL.Text:=sql;
qry3.Open;
DataSetProvider2.DataSet:=qry3;
Mem1.Data:=DataSetProvider2.Data;
sql是sql语句,qry3是TADOQuery控件名,DataSetProvider2是TDataSetProvider控件名,Mem1是数据集名
************ 动态ADO ************
//自动调整服务器路径
AppPath := ExtractFilePath(Application.ExeName);
CopyFile(PAnsiChar(AppPath+'db\ATS_EXAM.dat'),PAnsiChar(AppPath+'db\ATS_'+GlobalItem.ExamId+'.dat'),True);
DataModule1.ADOConnection1.Connected:=false;
DataModule1.ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+AppPath+'DB\ATS_'+GlobalItem.ExamId+'.dat;Persist Security Info=False';
DataModule1.ADOConnection1.Connected:=true;
************ 两边加单引号 ************
给字符串两边加单引号并返回.
声明:function QuotedStr(const S: string): string;
************ 文件COPY ************
CopyFile(PAnsiChar(UC_Var.AppPath+'Data\'+UC_Const.ExamFile_Template),PAnsiChar(UC_Var.AppPath+'Data\'+ExamId+'.mdb'),True);
[ 2013-06-24 ]
在操作MDB数据库时,不能用MEMO作为字段名,因为这是保留字
[ 2013-07-01 ]
将一个数组打乱顺序,即乱序的算法如下(又叫洗牌算法):
Array20 : array[1..20] of String;
//初始化数组
procedure TForm1.InitValue();
var
i : integer;
begin
for i:=1 to 20 do
begin
Array20[i] := inttostr(i);
end;
end;
//随机得到新数组
procedure TForm1.tmprandom();
var
i,j : integer;
swp:string;
begin
randomize;
for i:=1 to 20 do
begin
j := 1 + random(20);
swp := Array20[i];
Array20[i] := Array20[j];
Array20[j] := swp;
end;
end;
[ 2013-07-07 ]
显示布尔型的值: IntToStr(Ord(LblA.AutoSize))
[ 2013-07-13 ]
显示当前时间: Label3.Caption := FormatDateTime('yyyy-MM-dd hh:nn:ss',Now());
相关文章推荐
- Delphi 对象模型学习笔记
- Delphi2005学习笔记5 NET Interoperability: .NET ↔ Win32
- Delphi 消息机制学习笔记
- DELPHI学习笔记--数据类型
- DELPHI学习笔记--IDE的快捷键
- 一个C++程序员的Delphi学习笔记
- XML学习笔记(三)--Delphi读写XML
- Delphi高手突破学习笔记一
- Delphi学习笔记-1
- 学习笔记第一篇之Delphi的默认窗体代码
- [转贴]Delphi 消息机制学习笔记
- DELPHI学习笔记1
- NUnit学习笔记 Delphi 2006篇
- Delphi高手突破学习笔记三
- DELPHI调用JAVA代码学习笔记1
- delphi部分学习笔记
- 设计模式学习笔记5:Singleton模式及其Delphi实现
- DELPHI学习笔记1
- DELPHI学习笔记--使用通配符进行模糊查询
- Delphi项目开发和Delphi学习笔记索引