Форум: "Начинающим";
Текущий архив: 2008.01.13;
Скачать: [xml.tar.bz2];
Вниз
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;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.011 c