我看不懂这段程序,谁能解释一下?
//DirectoryBox是一个ListBox控件,他显示的是FTP服务器的文件列表
//我主要看不太懂的是函数GetNameFromDirLine(Line, IsDirectory)里面那部分的代码
//GetNameFromDirLine的功能主要是判断当前选中的是文件还是文件夹
procedure TForm1.Button1Click(Sender: TObject);
var
Name,Line:string;
isDirectory:boolean;
begin
//如果没有建立连接则直接离开
if not IdFTP1.Connected then exit;
//把当前服务器列表中选中的 文件/文件夹 的名字赋值给 Line
Line:=DirectoryBox.Items[DirectoryBox.itemindex];
Name:=GetNameFromDirLine(Line, IsDirectory);
if IsDirectory then
ChangeDir(Name)
else
begin
SaveDialog1.FileName := Name;
if SaveDialog1.Execute then
begin
IdFTP1.TransferType := ftBinary;
BytesToTransfer := IdFTP1.Size(Name);
IdFTP1.Get(Name, SaveDialog1.FileName, true);
end;
end;
end;
//下面是两个函数的定义
//函数ChangeDir
procedure TForm1.ChangeDir(DirName: String);
begin
IdFTP1.ChangeDir(DirName);
IdFTP1.TransferType := ftASCII;
CurrentDir_Edit.Text := IdFTP1.RetrieveCurrentDir;
DirectoryBox.Items.Clear;
IdFTP1.List(DirectoryBox.Items);
end;
//函数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 := Line;
end;
{
其他方面的东西不用解释,我就是函数GetNameFromDirLine里面的东西看不懂,所以请帮我解释
GetNameFromDirLine函数里面的每一行代码的作用,为什么要这样写
}