Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.01.13;
Скачать: CL | DM;

Вниз

ICS   Найти похожие ветки 

 
Dennis I. Komarov ©   (2007-12-11 12:50) [0]

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

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


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


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


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


 
Dennis I. Komarov ©   (2007-12-11 13:30) [2]

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


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

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


 
Dennis I. Komarov ©   (2007-12-11 13:36) [4]

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


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

см. [3]


 
Dennis I. Komarov ©   (2007-12-11 13:42) [6]

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.


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

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

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


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

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

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


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


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


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

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


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

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


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

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

???


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


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


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


 
Dennis I. Komarov ©   (2007-12-11 14:38) [13]

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

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


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

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


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

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

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


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


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


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


 
Lacmus ©   (2007-12-11 16:08) [17]

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

Binary ?


 
Dennis I. Komarov ©   (2007-12-11 16:14) [18]

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


 
Dennis I. Komarov ©   (2007-12-11 16:15) [19]

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

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



Страницы: 1 вся ветка

Текущий архив: 2008.01.13;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.02 c
15-1196892989
Petr V. Abramov
2007-12-06 01:16
2008.01.13
глюк (?) форума


2-1197511676
Wind
2007-12-13 05:07
2008.01.13
TTreeView


2-1197568658
San1712
2007-12-13 20:57
2008.01.13
Как изменить один бит в байте ?


2-1197374227
deras
2007-12-11 14:57
2008.01.13
Какое условие прописать в BeforPost?


6-1178348077
Анонимщики
2007-05-05 10:54
2008.01.13
Pipe, информация о клиенте