程序能正常运行,但我想弄明白这段函数的意思
//函数GetNameFromDirLine                                                                  
function TForm1.GetNameFromDirLine(Line: String;                                          
  var IsDirectory: Boolean): String;                                                      
Var                                                                 i:Integer;                                                                             
DosListing: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:=true              
end;

解决方案 »

  1.   

    function TForm1.GetNameFromDirLine(Line: String;                                          
      var IsDirectory: Boolean): String;                                                      
    Var                                                                 i:Integer;                                                                             
    DosListing:boolean                                                            
    begin                                                                                     
      IsDirectory:= Line[1]='d';//如果Line[1]是'd',则IsDirectory是true,否则为false
      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>';  //从Line的第一个字符开始,到第一个' '结束的字符串,如果是<DIR>,则IsDirectory是true,否则是false                           
      if not IsDirectory then                                                                 
      DosListing := Line[1] in ['0'..'9']   //如果不是目录,并且Line的第一个字符是 0到9,则DosListing是true,否则为false
                                                      
      else DosListing := true;                                                                  end;                                                                                    
      Delete(Line, 1, Pos(' ', Line)); //删除Line的第一个字符到第一个空格间的部分。                                                       
      While Line[1] = ' ' do Delete(Line, 1, 1);  //删除空格。                                            
      if DosListing and (i = 2) then break;                                                   
      end;                                                                                    
      Result:=true              
    end;
      

  2.   

    莫名其妙,你看一下Line是什么样的字符串不就明白了,就是一个对字符串的操作,如果line第一个字符是‘d’,就吧Line的前几部分八删掉,剩下的返回,不是的话首先把Line的前三部分散掉,看第三部分开头是不是‘<DIR> ’如果是就把剩下的返回,不是再看第三部分的第一个字符,是[0..9]就把剩下的返回,不是就
    同第一中情况,//好辛苦,给我多加点分吧!