主题:[资料]函数
progfan
[专家分:2270] 发布于 2006-04-17 15:55:00
1楼:格式化显示数据
2楼:char和String的区别
字符串反向:ReverseString(const string),引用strutils
回复列表 (共3个回复)
沙发
progfan [专家分:2270] 发布于 2006-03-29 22:32:00
[b][color=0050FF]格式化显示[/color][/b]
edit1.Text:=format('计算结果是:%-5.2f',[123.45678]);
板凳
progfan [专家分:2270] 发布于 2006-04-17 15:36:00
char和String类型是不同的,char表示一个ASCII码字符,而String类型是表示一个字符串。假设
var
x:char;
y:string;
begin
x:='A';
y:='A';
end;
虽然上述代码中x和y看上去都一样,但在内存中的存储方式是不一样的,x在内存中只占一个8位字符长度,而y却要占两个8位字符长度。
x: 01000001
y: 01000001
00000000
上面的y中第二行多出来的0叫空0,为Ascii码为0的特殊字符,不可见,用字符串测长度函数测试时,这个多余的空0是不算长度的。
如果要表示更多的字符则需要用char数组,它和string类型之间可用StrPCopy函数,在拷贝时,会将字符串中的空0一同拷贝。例如
procedure TForm1.Button1Click(Sender: TObject);
var
b:array[0..80] of char;
begin
strPcopy(b,edit1.Text);
edit2.Text:=b;
end;
从上例可以看出char数组和String是相通的,都可以用来表示字符串。
3 楼
progfan [专家分:2270] 发布于 2006-04-19 11:47:00
//计算两个日期时间型数值之间的时间差程序
procedure TForm1.Button1Click(Sender: TObject);
var
t1,t2:TDateTime; //t1起始时间,t2终止时间
nyear,nmonth,nday,nhour,nminute,nsecond:integer; //年月日时分秒
ct3:string; //以年月日时分秒表示的时间差
minuteTotal:integer; //折合成分钟的时间差
begin
//'1899-12-30 00:00:00'为now日期时间的起始;
t1:=strtodatetime('2006-04-18 00-00-00');
t2:=now; //当前时间
ct3:=datetimetostr(t2-t1); //求时间差
nyear:=strtoint(copy(ct3,1,4))-1899; //年
nmonth:=strtoint(copy(ct3,6,2))-12; //月
nday:=strtoint(copy(ct3,9,2))-30; //日
nhour:=strtoint(copy(ct3,12,2)); //时
nminute:=strtoint(copy(ct3,15,2)); //分
nSecond:=strtoint(copy(ct3,18,2)); //秒
edit1.Text:='时间差为:'
+inttostr(nyear)+'年'
+inttostr(nmonth)+'月'
+inttostr(nday)+'日'
+inttostr(nhour)+'小时'
+inttostr(nminute)+'分'
+inttostr(nsecond)+'秒';
minuteTotal:=nYear*365*24*60
+nMonth*30*24*60
+nDay*60*24
+nHour*60
+nMinute; //折合成分钟
edit2.text:='折合成分钟为' +inttostr(minuteTotal)+'分';
end;
我来回复