Показать сообщение отдельно
  #1  
Старый 10.01.2007, 16:03
NovaC NovaC вне форума
Прохожий
 
Регистрация: 13.11.2006
Сообщения: 24
Репутация: 10
По умолчанию WinToDos & CopyFile

Доброе время суток !

После выполнения function CopyFile
процедура WinToDos начинает выдавать какой-то мусор вместо нормальной строки.
CopyFile и WinToDos находятся в dll библиотеке
Причём если в function CopyFile происходит ошибка при IdFTP.Connect то
procedure WinToDos продолжает работать исправно!!!
Причём проблема появляется как с кирилицей так и с латинскими буквами
Помогите пожалуйста разобраться!!!

procedure WinToDos(const WinStr: pchar; var DosStr: pchar);
var
tmp2 : PChar;
begin
tmp2 := AllocMem(length(WinStr) + 1);
if CharToOem(PChar(WinStr),tmp2) then
DosStr := tmp2
else DosStr := '';
FreeMem(tmp2);
end;

function CopyFile (Copy{Put, Get}, Host, UserName, Password, FTPDir, SourceFile, PutFile : pchar) : boolean;
var
IdFTP : TIdFTP;
begin
result := false;
IdFTP := TIdFTP.Create(nil);

IdFTP.Host := pchar(Host);
IdFTP.UserName := pchar(UserName);
IdFTP.Password := pchar(Password);

try
if IdFTP.Connected = false
then IdFTP.Connect;
except
MessageDlg('Ошибка : IdFTP.Connect!',mtError, [mbOK],0);
IdFTP.Abort;
IdFTP.Free;
exit;
end;
if trim(FTPDir) <> '' then IdFTP.ChangeDir(FTPDir);
try
if trim(Copy) = 'Put' then IdFTP.Put(SourceFile,PutFile,true);
if trim(Copy) = 'Get' then IdFTP.Get(SourceFile,PutFile,true);
except
MessageDlg('Ошибка : IdFTP.' + pchar(Copy) + '()!',mtError, [mbOK],0);
IdFTP.Abort;
IdFTP.Free;
exit;
end;
IdFTP.Disconnect;
IdFTP.Free;
result := true;
end;

Заранее спасибо за ответ . . .
Ответить с цитированием