在idftp连接语句后面需要加以下代码
idftp1.iohandler.defstringencoding:=tencoding.ansi;
关键要加对地方:必须在connected后面加,否则运行出错。
网上搜来的, 我自己试过可以用.
try
with IdFtp do
begin
Username := User;
Password := UserPwd;
Host := HostIp;
Port := HostPort;
Connect();
IOHandler.DefStringEncoding := TEncoding.ANSI;
Result := True;
end
except
on E: Exception do
begin
//WriteError(e.Message);
ShowMessage('FTP服务器连接错误,请检查设置或求助管理员!');
Result := False;
end;
end;
var
i: Integer;
begin
IdFTP.ChangeDir(Dir);
IdFTP.TransferType := ftASCII;
IdFTP.List;
with IdFTP.DirectoryListing do
begin
ListItems.Clear;
for i := 0 to Count - 1 do
begin
with ListItems.Add do
begin
Caption := AnsiString(IdFTP.DirectoryListing.Items[i].FileName);
end;
end;
end;
end;
简要代码发给大家看下 还请大家多多指教啊 谢谢。。
procedure TfrmMain.LoadListView(ListItems: TListItems; IdFTP: TIdFTP; Dir: string);
var
i: Integer;
begin
IdFTP.ChangeDir(Dir);
IdFTP.TransferType := ftASCII;
IdFTP.List;
with IdFTP.DirectoryListing do
begin
ListItems.Clear;
for i := 0 to Count - 1 do
begin
with ListItems.Add do
begin
Caption := ansitoutf8(IdFTP.DirectoryListing.Items[i].FileName);
// Caption := IdFTP.DirectoryListing.Items[i].FileName;
SubItems.Append(IntToStr(IdFTP.DirectoryListing.Items[i].Size));//获取文件大小,若是文件夹,大小为空
SubItems.Append(DateTimeToStr(IdFTP.FileDate(IdFTP.DirectoryListing.Items[i].FileName)));//获取文件日期 或者用 DateTimeToStr(IdFTP.DirectoryListing.Items[i].ModifiedDate) 也行 但是不能精确到秒
end;
end;
end;
end;