一个简单的函数的问题!

kjiwu 2006-11-24 10:38:20
function ModifyTime(ATime: TDateTime): string;
var
TimeStr, str: string;
i: integer;
begin
str := '';
TimeStr := DateTimeToStr(ATime);
for i := 0 to Length(TimeStr) - 1 do
begin
if (TimeStr = ':') or (TimeStr = '-') or (TimeStr = ' ') then Continue;

str := str + TimeStr[i];
end;
Result := str;
end;
这个函数为什么总输出空值呀?
...全文
87 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ZyxIp 2006-11-24
  • 打赏
  • 举报
回复
方式1
function ModifyTime(ATime: TDateTime): string;
begin
Result:=FormatDateTime('yyyymmddhhnnss',aTime);
end;

方式2
function ModifyTime(ATime: TDateTime): string;
var
TimeStr: string;
i,L: integer;
begin
TimeStr := DateTimeToStr(ATime);
L:=Length(TimeStr);
for i := 1 to L do
if (TimeStr[i] in ['0'..'9']) then
Result:=Result+TimeStr[i];
end;

两个的差别是第一个会格式化为定长的。
kjiwu 2006-11-24
  • 打赏
  • 举报
回复
ZyxIp不好意思,只给了你5分,下次有机会再多给你.
liliang800207 2006-11-24
  • 打赏
  • 举报
回复
从0开始也可以 不过你必须确认内存中你的TimeStr 前的一个字节不是0x00
ZyxIp 2006-11-24
  • 打赏
  • 举报
回复
String 类型是从1开始保存值的,第0字节保存的是长度。
ZyxIp 2006-11-24
  • 打赏
  • 举报
回复
for i := 1 to Length(TimeStr) do
kjiwu 2006-11-24
  • 打赏
  • 举报
回复
为什么不能从'0'开始呀?
do2008 2006-11-24
  • 打赏
  • 举报
回复
function ModifyTime(ATime: TDateTime): string;
var
TimeStr, str: string;
i: integer;
begin
str := '';
TimeStr := DateTimeToStr(ATime);
for i := 1 to Length(TimeStr) do //改循环 从1 开始
begin
if (TimeStr = ':') or (TimeStr = '-') or (TimeStr = ' ') then Continue;

str := str + TimeStr[i];
end;
Result := str;
end;

5,930

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧