![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Доброе время суток !
После выполнения 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; Заранее спасибо за ответ . . . |
#2
|
|||
|
|||
![]() Ну, начнем с того, что было бы проще оформить WinToDos в виде функции, а не процедуры. Но это, в общем-то, дело вкуса.
Далее. Было бы неплохо показать, как ты вызываешь эти функции. Еще. Не освобождается IdFTP при except'ах. Более детально можно что-то рассказать, увидев полностью процедуру вызова фукнций... |