to goalitaly (迈克尔.朱珠) 你你你你你你你,大胆,,嘿嘿,小心一点了 //hammer//ice//zap//pinch//punch//grin
呵呵,懒刺猬要小心哦!! 下一步就是挥刀了!! 挥刀以后俺就不偷师了!! xixi!!
procedure Calc(mStrings: TStrings); begin { 自己发挥 } end;测试代码: begin Calc(Memo1.Lines); end; 师傅,俺知道怎么打印九九表,但是不明白怎么用你给的过程和测试方法啊?//cry
还有师傅,你这个下标用数值类型和不用数值类型我没看出好处来啊//cry 俺笨笨,,,呜呜 cNumberCn: array['0'..'9'] of string = // ~~~~~~~~注意下标不是数值类型的巧妙用法 ('零', '一', '二', '三', '四', '五', '六', '七', '八', '九'); cDateCn: array[1..3] of string = ('年', '月', '日'); var
师傅,俺是自己编的,不知道用那个tstring参数怎么做啊?还有那个测试,怎么测试啊? 俺这样做就直接在memo1里输出了,, precedure calc() const cNum: array [1..9] of integer=(1,2,3,4,5,6,7,8,9); var vString:string; i,j:integer; begin for i:=1 to 9 do begin vString:=''; for j:=1 to i do vString:=vString+inttostr(cNum[j])+'*'+inttostr(cNum[i])+'='+ inttostr(cNum[j]*cNum[i])+' '; //控制空格,可是对不齐啊//cry memo1.Lines.Add(vString); end;
procedure Calc(mStrings: TStrings); // ~~~~~~~~TStringList的父类就上TStrings // ~~~~~~~~~这里的mStrings就是Memo1.Lines var S: string; //很好你知道vString的命名,不过简单的变量象I, J, S就没有必要遵循规则 I, J: Integer; begin mStrings.Clear; //不要忘记清空 for I := 1 to 9 do begin S := ''; for J := 1 to I do S := Format('%s'#9'%d*%d=%d', [S, I, J, I * J]); // ~~~~~~记住Format函数的用法,很有用 Delete(S, 1, 1); //除掉前面的分隔字符"#9" mStrings.Add(S); end; end;procedure TForm1.Button1Click(Sender: TObject); begin Calc(Memo1.Lines); //在编写函数的时候一定要把注意它的通用性和重用性 Calc(RichEdit1.Lines); //你编写的函数只能在你的TForm1中使用 Calc(ListBox1.Items); //而我写的函数可以在任何自定义单元中使用 Calc(ComboBox1.Items); //要写会编写标准函数 end;
precedure calc() const cNum: array [1..9] of integer=(1,2,3,4,5,6,7,8,9); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~没有意义 var vString:string; // vString: string;//zs //~~递进两格//zs i,j:integer; // I, J: Integer;//zs // ~有个空格//zs begin for i:=1 to 9 do begin vString:=''; for j:=1 to i do vString:=vString+inttostr(cNum[j])+'*'+inttostr(cNum[i])+'='+ inttostr(cNum[j]*cNum[i])+' '; //控制空格,可是对不齐啊//cry // ~~~~~最后会多一个空格//zs memo1.Lines.Add(vString); // Memo1.Lines.Add(vString);//zs // ~大小写要统一,以系统为标准//zs end;
procedure Calc(mStrings: TStrings); // ~~~~~~~~TStringList的父类就上TStrings // ~~~~~~~~~这里的mStrings就是Memo1.Lines var S: string; //很好你知道vString的命名,不过简单的变量象I, J, S就没有必要遵循规则 I, J: Integer; begin mStrings.Clear; //不要忘记清空 for I := 1 to 9 do begin S := ''; for J := 1 to I do S := Format('%s'#9'%d*%d=%d', [S, I, J, I * J]); // ~~~~~~记住Format函数的用法,很有用 Delete(S, 1, 1); //除掉前面的分隔字符"#9" mStrings.Add(S); end; end;procedure TForm1.Button1Click(Sender: TObject); begin Calc(Memo1.Lines); //在编写函数的时候一定要把注意它的通用性和重用性 Calc(RichEdit1.Lines); //你编写的函数只能在你的TForm1中使用 Calc(ListBox1.Items); //而我写的函数可以在任何自定义单元中使用 Calc(ComboBox1.Items); //要写会编写标准函数 end;我明白了,师傅,这个procedure的意思是把那个mStrings当作输出的地方,是不是? 俺把它想成要被处理的字符串了,实际是要输出的地方,对吗?在memo里,在RichEdit1.Lines 在ListBox1.Items里,或者在ComboBox1.Items等等,是吗?
procedure TForm1.Button1Click(Sender: TObject); const cNumberCn1: array['0'..'9'] of string = ('零', '一', '二', '三', '四', '五', '六', '七', '八', '九'); cNumberCn2: array[0..9] of string = ('零', '一', '二', '三', '四', '五', '六', '七', '八', '九'); var C: Char; begin if Length(Edit1.Text) <= 0 then Exit; C := Edit1.Text[1]; //用户输入的是字符呀 Caption := cNumberCn1[C]; //字符下标用法 Caption := cNumberCn2[StrToInt(C)]; //数字下标用法 end;
输入范例:<NULL>//表示没有输入范例 //你不知道我也不怪你 <---是啊,徒弟出错,当然责怪师傅吗,嘿嘿@_@ //乘法表是固定的有不需要任何输入 <---现在明白了啊,呜呜 if Length(Edit1.Text) <= 0 then Exit; C := Edit1.Text[1]; //用户输入的是字符呀<---不会让他输入数字啊?//cry//hammer(砸咋用户那,嘿嘿) Caption := cNumberCn1[C]; //字符下标用法 Caption := cNumberCn2[StrToInt(C)]; //数字下标用法师傅,俺现在就在测试那,测试怎么这么烦啊?比学程序还累,对了 我做的是那查询打印部分,是简单那?还是复杂?怎么都找俺的错啊? 嘿嘿,不过不找恐怕难,都要用到俺这里,,//cry//cry//cry作业~~~~~~~~~~~~homework,俺怎么成小学生了?嘿嘿 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
begin mStrings.Clear; //不要忘记清空 for I := 1 to 9 do begin S := ''; for J := 1 to I do S := Format('%s'#9'%d*%d=%d', [S, I, J, I * J]);<----此处的#9没有通过,:( // ~~~~~~记住Format函数的用法,很有用<---师傅能给俺仔细写写这个函数的常用方法? //俺查了,不是很清楚你这里可以直接把s //在format里连接?@_@ Delete(S, 1, 1); //除掉前面的分隔字符"#9"<----是清空s开始的空格,还是#9产生的分隔符? //在说要清除,干吗开始要加上它啊?嘿嘿 mStrings.Add(S); end; end;师傅,俺今天可能晚上不上来了,累死了,俺去sleep//heihei//cry//cry//cry 明天早上俺来检查师傅的任务啊,,嘿嘿
for J := 1 to I do if S = '' then //这里会判断很多次 S := Format('%d*%d=%d', [S, I, J, I * J]) else S := Format('%s'#9'%d*%d=%d', [S, I, J, I * J]); //Delete(S, 1, 1); //这里只执行一次
procedure Calc(mStrings: TStrings); var vString:string; i,j:integer; begin mStrings.Clear; for i:=1 to 9 do begin vString:=''; for j:=1 to i do //vString:=vString+inttostr(cNum[j])+'*'+inttostr(cNum[i])+'='+ inttostr(cNum[j]*cNum[i])+' '; vString:=format('%s'+#9+'%d*%d=%d',[vString,j,i,i*j]); //师傅还是给俺仔细说说这个函数的用法吧,比如可以直接在format里实现字符连接 //还有那个#9的作用,我用宽度控制整齐就不可以,怎么用#9就可以?? //#9调试通过了,嘿嘿,师傅少了两个+号,,//@@ Delete(vString, 1, 1);<--看见了,不删除,空格太多了 mStrings.Add(vString); end;end;procedure TForm1.Button2Click(Sender: TObject); begin close; end;procedure TForm1.Button1Click(Sender: TObject); begin Calc(Memo1.Lines); end;
function TForm1.Calc(mStrings: TStrings): Real; <---师傅这里还是 VAR // 不知道怎么声明单元函数 I,J:integer; //我不用类生成函数名字,就 begin // 说俺没声明啊?help~~~~ result:=0; //初值付0 for I := 0 to mStrings.Count-1 do // 判断每一个字符串 begin for J := 1 to length(mStrings[I]) do //在找到每一个字符串的第一个数字位 begin if mStrings[I][J] in ['0'..'9'] then begin result:=result+strtofloat(copy(mStrings[I],J,length(mStrings[I]))); break; //找到第一个数字位就可以结束对这个字符串的循环 end; //不过师傅,我这里不知道怎么处理后面没有数字的字符串 end; //不过这样做好象默认为0:) end; end;procedure TForm1.Button1Click(Sender: TObject); begin Caption := FloatToStr(Calc(Memo1.Lines)); end;
http://www.csdn.net/expert/topic/429/429416.shtm嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻
嘻嘻嘻我来了嘻嘻嘻嘻
嘻嘻嘻嘻嘻嘻嘻嘻嘻嘻
to zswang(伴水)(被黑中) 俺还在看你的那个转换年月日的代码那,嘿嘿
下一步做什么啊?快快快快布置任务啊,嘿嘿对了,师傅,为什么acess数据库里)0:00写不上?
那么在DBgrid中也就显示不出来,怎么解决??
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
练习题 2.1
算法名题:九九乘法表
输入范例:<NULL>
输出范例:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
.............
1*7=7 2*7=14 3*7=21 4*7=28 .....7*7=49
.............
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 ...........9*9=81
函数声明:
procedure Calc(mStrings: TStrings);
begin
{ 自己发挥 }
end;测试代码:
begin
Calc(Memo1.Lines);
end;
//hammer//ice//zap//pinch//punch//grin
下一步就是挥刀了!!
挥刀以后俺就不偷师了!!
xixi!!
begin
{ 自己发挥 }
end;测试代码:
begin
Calc(Memo1.Lines);
end; 师傅,俺知道怎么打印九九表,但是不明白怎么用你给的过程和测试方法啊?//cry
俺笨笨,,,呜呜
cNumberCn: array['0'..'9'] of string =
// ~~~~~~~~注意下标不是数值类型的巧妙用法
('零', '一', '二', '三', '四', '五', '六', '七', '八', '九');
cDateCn: array[1..3] of string = ('年', '月', '日');
var
俺这样做就直接在memo1里输出了,,
precedure calc()
const
cNum: array [1..9] of integer=(1,2,3,4,5,6,7,8,9);
var
vString:string;
i,j:integer;
begin
for i:=1 to 9 do
begin
vString:='';
for j:=1 to i do
vString:=vString+inttostr(cNum[j])+'*'+inttostr(cNum[i])+'='+ inttostr(cNum[j]*cNum[i])+' '; //控制空格,可是对不齐啊//cry
memo1.Lines.Add(vString);
end;
// ~~~~~~~~TStringList的父类就上TStrings
// ~~~~~~~~~这里的mStrings就是Memo1.Lines
var
S: string; //很好你知道vString的命名,不过简单的变量象I, J, S就没有必要遵循规则
I, J: Integer;
begin
mStrings.Clear; //不要忘记清空
for I := 1 to 9 do begin
S := '';
for J := 1 to I do
S := Format('%s'#9'%d*%d=%d', [S, I, J, I * J]);
// ~~~~~~记住Format函数的用法,很有用
Delete(S, 1, 1); //除掉前面的分隔字符"#9"
mStrings.Add(S);
end;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
Calc(Memo1.Lines); //在编写函数的时候一定要把注意它的通用性和重用性
Calc(RichEdit1.Lines); //你编写的函数只能在你的TForm1中使用
Calc(ListBox1.Items); //而我写的函数可以在任何自定义单元中使用
Calc(ComboBox1.Items); //要写会编写标准函数
end;
const
cNum: array [1..9] of integer=(1,2,3,4,5,6,7,8,9);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~没有意义
var
vString:string;
// vString: string;//zs
//~~递进两格//zs
i,j:integer;
// I, J: Integer;//zs
// ~有个空格//zs
begin
for i:=1 to 9 do
begin
vString:='';
for j:=1 to i do
vString:=vString+inttostr(cNum[j])+'*'+inttostr(cNum[i])+'='+ inttostr(cNum[j]*cNum[i])+' '; //控制空格,可是对不齐啊//cry
// ~~~~~最后会多一个空格//zs
memo1.Lines.Add(vString);
// Memo1.Lines.Add(vString);//zs
// ~大小写要统一,以系统为标准//zs
end;
const
cNumberCn1: array['0'..'9'] of string =
('零', '一', '二', '三', '四', '五', '六', '七', '八', '九');
cNumberCn2: array[0..9] of string =
('零', '一', '二', '三', '四', '五', '六', '七', '八', '九');
var
C: Char;
begin
C := '1'; //通过一个数字字符返回中文表达方式
Caption := cNumberCn1[C]; //字符下标用法
Caption := cNumberCn2[StrToInt(C)]; //数字下标用法
end;
恩,
1,看看那个数组是没有用啊,俺俺俺,,,//shy//blush
2,俺一直在找格式那,就是用不好,俺记下了,不过不保证下次用正确,师傅你别生气啊//comfort//inn//dove//milk//tea//cry
3,俺还没看明白,测试时,输入什么,可以输出九九表啊?输入的那个tstring示例是null,师傅的意思是输入null就输出九九表吗?//cry/cry//heihei//fool//think
const
cNumberCn1: array['0'..'9'] of string =
('零', '一', '二', '三', '四', '五', '六', '七', '八', '九');
cNumberCn2: array[0..9] of string =
('零', '一', '二', '三', '四', '五', '六', '七', '八', '九');
var
C: Char;
begin
C := '1'; //通过一个数字字符返回中文表达方式<----如果只是为了用数字字符,干吗用字符?直接用数字不就可以吗?
Caption := cNumberCn1[C]; //字符下标用法,
Caption := cNumberCn2[StrToInt(C)]; //数字下标用法<-----这里如果开始就定义数组的下标是数字的不是就不用strtoint了吗???
end;
// ~~~~~~~~TStringList的父类就上TStrings
// ~~~~~~~~~这里的mStrings就是Memo1.Lines
var
S: string; //很好你知道vString的命名,不过简单的变量象I, J, S就没有必要遵循规则
I, J: Integer;
begin
mStrings.Clear; //不要忘记清空
for I := 1 to 9 do begin
S := '';
for J := 1 to I do
S := Format('%s'#9'%d*%d=%d', [S, I, J, I * J]);
// ~~~~~~记住Format函数的用法,很有用
Delete(S, 1, 1); //除掉前面的分隔字符"#9"
mStrings.Add(S);
end;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
Calc(Memo1.Lines); //在编写函数的时候一定要把注意它的通用性和重用性
Calc(RichEdit1.Lines); //你编写的函数只能在你的TForm1中使用
Calc(ListBox1.Items); //而我写的函数可以在任何自定义单元中使用
Calc(ComboBox1.Items); //要写会编写标准函数
end;我明白了,师傅,这个procedure的意思是把那个mStrings当作输出的地方,是不是?
俺把它想成要被处理的字符串了,实际是要输出的地方,对吗?在memo里,在RichEdit1.Lines
在ListBox1.Items里,或者在ComboBox1.Items等等,是吗?
const
cNumberCn1: array['0'..'9'] of string =
('零', '一', '二', '三', '四', '五', '六', '七', '八', '九');
cNumberCn2: array[0..9] of string =
('零', '一', '二', '三', '四', '五', '六', '七', '八', '九');
var
C: Char;
begin
if Length(Edit1.Text) <= 0 then Exit;
C := Edit1.Text[1]; //用户输入的是字符呀
Caption := cNumberCn1[C]; //字符下标用法
Caption := cNumberCn2[StrToInt(C)]; //数字下标用法
end;
//你不知道我也不怪你
//乘法表是固定的有不需要任何输入
//你不知道我也不怪你 <---是啊,徒弟出错,当然责怪师傅吗,嘿嘿@_@
//乘法表是固定的有不需要任何输入 <---现在明白了啊,呜呜 if Length(Edit1.Text) <= 0 then Exit;
C := Edit1.Text[1]; //用户输入的是字符呀<---不会让他输入数字啊?//cry//hammer(砸咋用户那,嘿嘿)
Caption := cNumberCn1[C]; //字符下标用法
Caption := cNumberCn2[StrToInt(C)]; //数字下标用法师傅,俺现在就在测试那,测试怎么这么烦啊?比学程序还累,对了
我做的是那查询打印部分,是简单那?还是复杂?怎么都找俺的错啊?
嘿嘿,不过不找恐怕难,都要用到俺这里,,//cry//cry//cry作业~~~~~~~~~~~~homework,俺怎么成小学生了?嘿嘿
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
mStrings.Clear; //不要忘记清空
for I := 1 to 9 do begin
S := '';
for J := 1 to I do
S := Format('%s'#9'%d*%d=%d', [S, I, J, I * J]);<----此处的#9没有通过,:(
// ~~~~~~记住Format函数的用法,很有用<---师傅能给俺仔细写写这个函数的常用方法? //俺查了,不是很清楚你这里可以直接把s
//在format里连接?@_@
Delete(S, 1, 1); //除掉前面的分隔字符"#9"<----是清空s开始的空格,还是#9产生的分隔符?
//在说要清除,干吗开始要加上它啊?嘿嘿
mStrings.Add(S);
end;
end;师傅,俺今天可能晚上不上来了,累死了,俺去sleep//heihei//cry//cry//cry
明天早上俺来检查师傅的任务啊,,嘿嘿
if S = '' then //这里会判断很多次
S := Format('%d*%d=%d', [S, I, J, I * J])
else S := Format('%s'#9'%d*%d=%d', [S, I, J, I * J]);
//Delete(S, 1, 1); //这里只执行一次
var
vString:string;
i,j:integer;
begin
mStrings.Clear;
for i:=1 to 9 do
begin
vString:='';
for j:=1 to i do
//vString:=vString+inttostr(cNum[j])+'*'+inttostr(cNum[i])+'='+ inttostr(cNum[j]*cNum[i])+' ';
vString:=format('%s'+#9+'%d*%d=%d',[vString,j,i,i*j]);
//师傅还是给俺仔细说说这个函数的用法吧,比如可以直接在format里实现字符连接
//还有那个#9的作用,我用宽度控制整齐就不可以,怎么用#9就可以??
//#9调试通过了,嘿嘿,师傅少了两个+号,,//@@
Delete(vString, 1, 1);<--看见了,不删除,空格太多了
mStrings.Add(vString);
end;end;procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
Calc(Memo1.Lines);
end;
算法名题:对不规则行计算合计。(合计每行后面的数值,没有数值的看作0处理)
输入范例:
zswang 10.9
urchinjj 20.0
goalitaly 30
yyyyyyyyyyyyyy
scripting -1
输出范例:59.9
// ~~~~~10.9+20.0+30+(-1)
函数声明:
function Calc(mStrings: TStrings): Real;
begin
{ 自己发挥 }
end;测试代码:
begin
Caption := FloatToStr(Calc(Memo1.Lines));
end;
vString:=format('%s'+#9+'%d*%d=%d',[vString,j,i,i*j]);
//师傅还是给俺仔细说说这个函数的用法吧,比如可以直接在format里实现字符连接
//还有那个#9的作用,我用宽度控制整齐就不可以,怎么用#9就可以??
//#9调试通过了,嘿嘿,师傅少了两个+号,,//@@
Delete(vString, 1, 1);<--看见了,不删除,空格太多了
mStrings.Add(vString);
end;这个作业俺晚点交,俺在测试,烦烦烦~~~~~~~~~~~~//cry//cry
首部 function Format(const Format: string; const Args: array of const): string; $[SysUtils.pas
功能 返回按指定方式格式化一个数组常量的字符形式
说明 这个函数是我在Delphi中用得最多的函数,现在就列举几个例子给你个直观的理解
"%" [索引 ":"] ["-"] [宽度] ["." 摘要] 类型
Format('x=%d', [12]); //'x=12' //最普通
Format('x=%3d', [12]); //'x= 12' //指定宽度
Format('x=%f', [12.0]); //'x=12.00' //浮点数
Format('x=%.3f', [12.0]); //'x=12.000' //指定小数
Format('x=%.*f', [5, 12.0]); //'x=12.00000' //动态配置
Format('x=%.5d', [12]); //'x=00012' //前面补充0
Format('x=%.5x', [12]); //'x=0000C' //十六进制
Format('x=%1:d%0:d', [12, 13]); //'x=1312' //使用索引
Format('x=%p', [nil]); //'x=00000000' //指针
Format('x=%1.1e', [12.0]); //'x=1.2E+001' //科学记数法
Format('x=%%', []); //'x=%' //得到"%"
S := Format('%s%d', [S, I]); //S := S + StrToInt(I); //连接字符串
参考 proceduer SysUtils.FmtStr
例子 Edit1.Text := Format(Edit2.Text, [StrToFloatDef(Edit.3.Text, 0)]);
&_
这个宝典在哪里啊?俺也要看看看
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
http://wlbookwl.myrice.com/book/Delphikhbd.zip
http://wlbookwl.myrice.com/book/Delphikhbd.zip
#13#10:换行符号
#32:空格
#97:a
#65:A
一些常用的Ascii码要记住
//bug,,翻译过来就是,,,(迈克尔.朱珠)你这个臭虫,嘿嘿,,
//制表符号是什么意思啊?为什么用它就可以每列对齐,具体功能是?
S= Format('%s'#9'%d*%d=%d', [S, I, J, I * J]);
//这里怎么实现的S连接功能?比如:S:='1*3 2*3 3*3 '
#32:空格
#97:a
#65:A
一些常用的Ascii码要记住 //俺记不住啊,用ASCI('A')可以查吧?嘿嘿师傅,俺可能暂时做不了上面的题了,俺的报表浏览的时候总是有问题
不是缺条横线就是少条竖线,可是打印出来却是正常的,俺要找找看看能
不能解决这个问题,师傅你也帮俺想想办法,实现所见即所得啊//cry
//cry//cry//cry//cry//cry//cry//cry//cry//cry//cry//cry//cry//cry
你的宝典,俺怎么看不见啊?说没有这个帖子啊??//cry/cry
VAR // 不知道怎么声明单元函数
I,J:integer; //我不用类生成函数名字,就
begin // 说俺没声明啊?help~~~~
result:=0; //初值付0
for I := 0 to mStrings.Count-1 do // 判断每一个字符串
begin
for J := 1 to length(mStrings[I]) do //在找到每一个字符串的第一个数字位
begin
if mStrings[I][J] in ['0'..'9'] then
begin
result:=result+strtofloat(copy(mStrings[I],J,length(mStrings[I])));
break; //找到第一个数字位就可以结束对这个字符串的循环
end; //不过师傅,我这里不知道怎么处理后面没有数字的字符串
end; //不过这样做好象默认为0:)
end;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
Caption := FloatToStr(Calc(Memo1.Lines));
end;
vString:=format('%s'+#9+'%d*%d=%d',[vString,j,i,i*j]);
//师傅还是给俺仔细说说这个函数的用法吧,比如可以直接在format里实现字符连接