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

Вниз

TIdFTPServer.OnStoreFile   Найти похожие ветки 

 
Gym ©   (2004-03-17 05:18) [0]

Привет. Значит написал такой обработчик:

procedure TForm1.IdFTPServer1StoreFile(ASender: TIdFTPServerThread;
 const AFileName: String; AAppend: Boolean; var VStream: TStream);
var
LocalFileName : string;
FileStream : TFileStream;
begin
 LocalFileName:=LocalPath+VDir+AFileName;
 FileStream:=TFileStream.Create(LocalFileName,fmCreate);
 FileStream.CopyFrom(VStream,VStream.Size-1);
 FileStream.Free;
end;

На строке
FileStream.CopyFrom(VStream,VStream.Size-1);
вылетает ошибка
Acces violation at addres … in module FTPSERVER.EXE. Read of addres FFFFFFFF.
как будто потока VSream не существует вовсе.
Подскажите, может я что то не правильно делаю?


 
Verg ©   (2004-03-17 06:22) [1]

Это событие возникает на начало операции приема файла от клиента.
Тут тебя просят создать и вернуть этот VStream для последующего использования сервером для сохранения принятого файла.
т.е., например:

procedure TForm1.IdFTPServer1StoreFile(ASender: TIdFTPServerThread;
const AFileName: String; AAppend: Boolean; var VStream: TStream);
var
begin
if not AAppend then
  VStream := TFileStream.Create(AFileName, fmCreate)
else
  VStream := TFileStream.Create(AFileName, fmOpenReadWrite);
end;


 
Verg ©   (2004-03-17 06:33) [2]

Хм. На всякий случай, if надо поправить:

 if not (AAppend and FileExists(AFileName)) then


 
Gym ©   (2004-03-17 16:04) [3]

Спасибо с загрузкой файлов всё наладилось.

Только возник ещё один вопрос.
На этот раз с обработчиком TIdFTPServer.OnRenameFile.
После срабатывания процедуры клиент зависает.
Видимо, ему нужно как-то сообщить, что операция прошла успешно.
Сервер продолжает работать нормально. Файл переименовывается.
Что с клиентом?

procedure TForm1.IdFTPServer1RenameFile(ASender: TIdFTPServerThread;
 const ARenameFromFile, ARenameToFile: String);
var
 OldName,NewName : string;
begin
 OldName:=LocalPath+VDir+ARenameFromFile;
 NewName:=LocalPath+VDir+ ARenameToFile;
 RenameFile(OldName,NewName);
end;


 
Gym ©   (2004-03-18 17:47) [4]

Нет версий?



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

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

Наверх




Память: 0.47 MB
Время: 0.053 c
14-1082010626
Layner
2004-04-15 10:30
2004.04.11
Юристы! Ломятся менты в дверь, хотят видимо показания взять


3-1079386235
dfg
2004-03-16 00:30
2004.04.11
DBComboBox показывает только одну строку


14-1081891855
GanibalLector
2004-04-14 01:30
2004.04.11
ИСХОДНИКИ мониторов(PortMon,RegMon и пр...)


3-1081851727
CyBeR
2004-04-13 14:22
2004.04.11
Как вставить результат запроса Query в таблицу???.


7-1079410905
Kair
2004-03-16 07:21
2004.04.11
Ctrl + Alt + Del