Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ICS


Dennis I. Komarov ©   (2007-12-11 12:50:00) 

При передаче через TFtpClient приходит изменение содержимого файла.
Процедуры передачи в dll

Никто такое не встречал? Может свойство какое?


Dennis I. Komarov   (2007-12-11 16:15:00) [1]

> [17] Lacmus ©   (11.12.07 16:08)

Стоит по умолчанию


Dennis I. Komarov   (2007-12-11 16:14:00) [2]

При вызове FTP.GET
Получаем файл - он отличается от исходного :(


Lacmus   (2007-12-11 16:08:00) [3]

>Может свойство какое?

Binary ?


Сергей М.   (2007-12-11 15:48:00) [4]


> Он увеличивается в объеме


Что показывает пошаговая трассировка ?
На каком этапе выполнения твоегокода это происходит ?


Dennis I. Komarov   (2007-12-11 15:27:00) [5]

> [14] Сергей М. ©   (11.12.07 15:17)

Не одну ассинхронную процедуру не использовал.
На сколько я понял из примеров все использованные процедуры - синхронные
И как это может влиять на получающийся файл. Он увеличивается в объеме.


Сергей М.   (2007-12-11 15:17:00) [6]

У меня нет под рукой ICS, но подозреваю, что работа с компонентом идет в асинхр.режиме. Притом и события.


Dennis I. Komarov   (2007-12-11 14:38:00) [7]

> [12] Сергей М. ©   (11.12.07 14:22)

Ну вижу, а при чем тут события и результирующий файл?


Сергей М.   (2007-12-11 14:22:00) [8]


> Dennis I. Komarov ©   (11.12.07 14:00) [11]


События в Инспекторе Объектов у TFtpClient видишь ?
Как думаешь, для чего они представлены ?


Dennis I. Komarov   (2007-12-11 14:00:00) [9]

> [10] Anatoly Podgoretsky ©   (11.12.07 13:56)

???


Anatoly Podgoretsky   (2007-12-11 13:56:00) [10]

Используется путь Дельфи - Driven Event Model


Сергей М.   (2007-12-11 13:47:00) [11]


> Почему он пересылается с искожениями?


Вникать в код нет никакого желания.

Скорей всего потому, что ICS, в отличие от Инди, использует асинхронный транспорт с нотификациями.


Сергей М.   (2007-12-11 13:44:00) [12]

Что с этим добром делать ?)

Когда изволишь вопрос сформулировать ?


Dennis I. Komarov   (2007-12-11 13:43:00) [13]

> [3] Сергей М. ©   (11.12.07 13:34)

Почему он пересылается с искожениями?


Dennis I. Komarov   (2007-12-11 13:42:00) [14]

library qftp;

uses
 SysUtils,
 Classes, Windows, Dialogs,
 OverbyteIcsWndControl, OverbyteIcsFtpCli, OverbyteIcsLogger,
 Sockets, ComCtrls;
const
 rFileLog = '***\ics_r.log';
 sFileLog = '***\ics_s.log';
 ftpHost = '******';
 ftpUsername = '******';
 ftpPassword = '******';

{$R *.res}

function GetTempWindowsPath: string;
var
 tmp: array[0..1023] of AnsiChar;
begin
 GetTempPath(1024, Tmp);
 Result:=tmp;
end;

function SendFile(FileName, FTPPath: PAnsiChar): Boolean; Export;
var
 FTP: TFtpClient;
 Log: TIcsLogger;
begin
 Result:=false;
 if FileExists(StrPas(FileName)) then begin
   Log:= TIcsLogger.Create(nil);
   FTP:=TFtpClient.Create(nil);
   try
     FTP.HostName:=ftpHost;
     FTP.Username:=ftpUsername;
     FTP.PassWord:=ftpPassword;
     FTP.Passive:=true;
     Log.LogOptions:=[loDestEvent,loDestFile,loDestOutDebug,loAddStamp,loWsockErr,loW sockInfo,loWsockDump,loSslErr,loSslInfo,loSslDump,loProtSpecErr,loProtSpecInfo,l oProtSpecDump];
     Log.LogFileName:=sFileLog;
     FTP.IcsLogger:=Log;
     try
       FTP.Connect;
       FTP.LocalFileName := StrPas(FileName);
       FTP.HostFileName := StrPas(FTPPath) + '/' + ExtractFileName(FTP.LocalFileName);
       Result:=FTP.Put;
     finally
       FTP.Quit;
     end;
   finally
     FTP.Free;
     Log.Free;
   end;
 end;
end;

function RenameFile(FtpFileNameOld, FtpFileNameNew: PAnsiChar): Boolean; Export;
var
 FTP: TFtpClient;
 Log: TIcsLogger;
begin
 Log:= TIcsLogger.Create(nil);
 FTP:=TFtpClient.Create(nil);
 try
   FTP.HostName:=ftpHost;
   FTP.Username:=ftpUsername;
   FTP.PassWord:=ftpPassword;
   FTP.Passive:=true;
   Log.LogOptions:=[loDestEvent,loDestFile,loDestOutDebug,loAddStamp,loWsockErr,loW sockInfo,loWsockDump,loSslErr,loSslInfo,loSslDump,loProtSpecErr,loProtSpecInfo,l oProtSpecDump];
   Log.LogFileName:=rFileLog;
   FTP.IcsLogger:=Log;
   try
     FTP.Connect;
     FTP.HostFileName:= StrPas(FtpFileNameOld);
     FTP.LocalFileName:= StrPas(FtpFileNameNew);
     Result:=FTP.Ren;
   finally
     FTP.Quit;
   end;
 finally
   FTP.Free;
   Log.Free;
 end;
end;

function ReciveFile(FTPFileName, FileName: PAnsiChar): Boolean; Export;
var
 FTP: TFtpClient;
 Log: TIcsLogger;
 TmpDir: string;
begin
//  Result:=false;
 TmpDir:=GetTempWindowsPath + 'ftp_r';
 Log:= TIcsLogger.Create(nil);
 FTP:=TFtpClient.Create(nil);
 try
   FTP.HostName:=ftpHost;
   FTP.Username:=ftpUsername;
   FTP.PassWord:=ftpPassword;
   FTP.Passive:=true;
   Log.LogOptions:=[loDestEvent,loDestFile,loDestOutDebug,loAddStamp,loWsockErr,loW sockInfo,loWsockDump,loSslErr,loSslInfo,loSslDump,loProtSpecErr,loProtSpecInfo,l oProtSpecDump];
   Log.LogFileName:=rFileLog;
   FTP.IcsLogger:=Log;
   try
     if (not DirectoryExists(TmpDir)) then CreateDir(TmpDir);
     FTP.Connect;
     FTP.HostFileName := StrPas(FTPFileName);
     FTP.LocalFileName := TmpDir + '\' + ExtractFileName(StrPas(FileName));
     Result:= FTP.Get and SysUtils.RenameFile(TmpDir + '\' + ExtractFileName(StrPas(FileName)), StrPas(FileName));
   finally
     FTP.Quit;
   end;
 finally
   FTP.Free;
   Log.Free;
 end;
end;

function DeleteFile(FTPFileName: PAnsiChar): Boolean; Export;
var
 FTP: TFtpClient;
 Log: TIcsLogger;
begin
 Log:= TIcsLogger.Create(nil);
 FTP:=TFtpClient.Create(nil);
 try
   FTP.HostName:=ftpHost;
   FTP.Username:=ftpUsername;
   FTP.PassWord:=ftpPassword;
   FTP.Passive:=true;
   Log.LogOptions:=[loDestEvent,loDestFile,loDestOutDebug,loAddStamp,loWsockErr,loW sockInfo,loWsockDump,loSslErr,loSslInfo,loSslDump,loProtSpecErr,loProtSpecInfo,l oProtSpecDump];
   Log.LogFileName:=rFileLog;
   FTP.IcsLogger:=Log;
   try
     FTP.Connect;
     FTP.HostFileName := StrPas(FTPFileName);
     Result:=FTP.Dele;
   finally
     FTP.Quit;
   end;
 finally
   FTP.Free;
   Log.Free;
 end;
end;

function GetFileList(FTPPath: PAnsiChar; var RBuf: TStrings): Boolean; Export;
var
 FTP: TFtpClient;
 Log: TIcsLogger;
begin
 Log:= TIcsLogger.Create(nil);
 FTP:=TFtpClient.Create(nil);
 try
   FTP.HostName:=ftpHost;
   FTP.Username:=ftpUsername;
   FTP.PassWord:=ftpPassword;
   FTP.Passive:=true;
   Log.LogOptions:=[loDestEvent,loDestFile,loDestOutDebug,loAddStamp,loWsockErr,loW sockInfo,loWsockDump,loSslErr,loSslInfo,loSslDump,loProtSpecErr,loProtSpecInfo,l oProtSpecDump];
   Log.LogFileName:=rFileLog;
   FTP.IcsLogger:=Log;
   try
     FTP.Connect;
     FTP.HostDirName:=StrPas(FTPPath);
     FTP.LocalFileName:=GetTempWindowsPath + 'icslist.tmp';
     Result:= FTP.Cwd and FTP.Dir;
     RBuf.LoadFromFile(GetTempWindowsPath + 'icslist.tmp');
     SysUtils.DeleteFile(GetTempWindowsPath + 'icslist.tmp');
   finally
     FTP.Quit;
   end;
 finally
   FTP.Free;
   Log.Free;
 end;
end;

exports
 SendFile, RenameFile, ReciveFile, DeleteFile, GetFileList;
begin
end.


Сергей М.   (2007-12-11 13:42:00) [15]

см. [3]


Dennis I. Komarov   (2007-12-11 13:36:00) [16]

Экземпляры создаюся там же - на инди вроде работает все


Сергей М.   (2007-12-11 13:34:00) [17]

И что тебе непонятно при этом ?


Dennis I. Komarov   (2007-12-11 13:30:00) [18]

В dll запрятаны процедуры Send, Recive и т.п.
Разумеется передачи файлов, ФТП все-таки :)


Сергей М.   (2007-12-11 13:05:00) [19]


> Процедуры передачи в dll
>


Передачи чего и зачем ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо