procedure TForm1.Button1Click(Sender: TObject);
var
FileName : String;
FileStream: TFileStream;
St: String;
begin
with IdFTP1 do begin
Host := '192.168.145.55'; // host
Username := 'user'; // username
Password := 'pwd'; // password
Connect; // make a connection
FileName:=('d:\безымянный.bmp'); // файл с русскими буквами в названии
FileStream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyNone);
try
try
TransferType := ftBinary; // or ftASCII IdFTPCommon.pas
//Start transfering packed files
St := ExtractFileName(FileName);
//тут, вероятно, необходимо сменить кодировку.
Put(FileStream, St);
Quit; // close the connection
except
On E: Exception do ShowMessage(E.Message);
end;
finally
FileStream.Free;
end;
end;{with}
end;
function TIdTCPConnection.SendCmd(AOut: string; const AResponse: SmallInt = -1;
const AEncoding: TIdEncoding = en7bit): SmallInt;
begin
if AResponse < 0 then begin
Result := SendCmd(AOut, [], AEncoding);
end else begin
Result := SendCmd(AOut, [AResponse], AEncoding);
end;
end;
function FixStringGet(const AData: String): String;
type
TW1252 = type AnsiString(1252);
var
W1252: TW1252;
S: RawByteString;
begin
W1252 := AData; // В этой строке выполняются действия, которые раньше выполнял у меня цикл - это обратные действия к тем, что выполняет Indy
// Теперь копирование данных одним блоком в буфер
SetLength(S, Length(W1252));
Move(Pointer(W1252)^, Pointer(S)^, Length(W1252));
// Помечаем, что данные на самом деле имеют кодировку 1251
SetCodePage(S, 1251, False);
// Ну и конвертация в Unicode
Result := S;
end;
function FixStringPut(const AData: String): String;
type
TW1251 = type AnsiString(1251);
var
W1251: TW1251;
S: RawByteString;
begin
W1251 := AData; // В этой строке выполняются действия, которые раньше выполнял у меня цикл - это обратные действия к тем, что выполняет Indy
// Теперь копирование данных одним блоком в буфер
SetLength(S, Length(W1251));
Move(Pointer(W1251)^, Pointer(S)^, Length(W1251));
// Помечаем, что данные на самом деле имеют кодировку 1251
SetCodePage(S, 1252, False);
// Ну и конвертация в Unicode
Result := S;
end;
//Заменить с
SendCmd( 'RNFR ' + '1.txt', 350);
// Заменить на:
SendCmd( 'RNFR ' + '1.txt', 350, enUtf8);
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.