Пользуюсь INDY. При загрузке файлов на FTP сервер методом Put столкнулся вот с этим
Поискав немного в сети, понял, что это какой трабл в Инди. Временное решение, в отсутствие времени – транслит.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
function TForm2.Translit(s: string): string; const rus: string = 'абвгдеёжзийклмнопрстуфхцчшщьыъэюя'; lat: array[1..33] of string = ('a', 'b', 'v', 'g', 'd', 'e', 'yo', 'zh', 'z', 'i', 'y', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'h', 'ts', 'ch', 'sh', 'shch', '''', 'y', '''', 'e', 'yu', 'ya'); var p, i, l: integer; begin s:=widelowercase(s); Result := ''; l := Length(s); for i := 1 to l do begin p := Pos(s[i], rus); if p<1 then Result := Result + s[i] else Result := Result + lat[p]; end; end; procedure TForm2.bPutFileClick(Sender: TObject); var DestName:string; begin idFTP.MakeDir('/myfiles'); IdFTP.ChangeDir('/myfiles'); if OpenDialog.Execute then begin FFileToPut:=OpenDialog.FileName; DestName:=Translit(ExtractFileName(OpenDialog.FileName)); idFTP.Put(OpenDialog.FileName,DestName); // idFTP.Disconnect; end; end; |
После чего получаем
Не так идеально, но всё же лучше чем то, что было.
Интересное решение нашёл на королевстве Delphi, но я к такому не готов
http://www.delphikingdom.com/asp/answer.asp?IDAnswer=68793