请看这个函数(50分)

  • 主题发起人 主题发起人 pzh509
  • 开始时间 开始时间
P

pzh509

Unregistered / Unconfirmed
GUEST, unregistred user!
函数如下:
function GetNameFromDirLine(Line: String; Var IsDirectory: Boolean): String;
Var
i: Integer;
DosListing: Boolean;
isdirectory:boolean;
begin
IsDirectory := Line[1] = 'd';
DosListing := false;
for i := 0 to 7 do begin
if (i = 2) and not IsDirectory then begin
IsDirectory := Copy(Line, 1, Pos(' ', Line) - 1) = '<DIR>';
if not IsDirectory then
DosListing := Line[1] in ['0'..'9']
else DosListing := true;
end;
Delete(Line, 1, Pos(' ', Line));
While Line[1] = ' ' do Delete(Line, 1, 1);
if DosListing and (i = 2) then break;
end;
Result := Line;
end;

请问这个函数究竟是怎样理解?它要实现的功能的是什么?
 
好象是Unix显示文件列表到Dos的转换!^_^
 
同意楼上
 
說一下,不知對不對.
若字符串Line第一個字符是'd',則IsDirectory值指向True,否則指向False.
好像返回的字符串是將字符串Line的字符為空格的前面所有的字符去掉,
如line為'v f g h',則返回為'h';但若字符Line的最后一個字為空格,將會
出現異常。
 
没有人能完整的说出来吗?
 
function GetNameFromDirLine(Line: String; Var IsDirectory: Boolean): String;
Var
i: Integer;
DosListing: Boolean;
isdirectory:boolean;
begin
IsDirectory := Line[1] = 'd'; //判断第一个字符是否为d,如果是,则IsDirectory =true
DosListing := false;
for i := 0 to 7 do begin
if (i = 2) and not IsDirectory then begin //如果第一个字符不是为d
IsDirectory := Copy(Line, 1, Pos(' ', Line) - 1) = '<DIR>';//line的内容为dir则IsDirectory 为true
if not IsDirectory then
DosListing := Line[1] in ['0'..'9']//如果line的第一个字符是在0到9之间则doslisting为false
else DosListing := true;
end;
Delete(Line, 1, Pos(' ', Line)); //删除字符串中第一个空格以前的字符
While Line[1] = ' ' do Delete(Line, 1, 1);//删除字符串头的空格
if DosListing and (i = 2) then break;//在第3次循环时如果doslisting为ture退出此循环
end;
Result := Line;
end;
 
多人接受答案了。
 

Similar threads

后退
顶部