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

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

idFTP докачка файла + чтение из файла [D7, WinXP]


tytus ©   (2008-10-02 09:43:00) 

Доброго дня всем. С докачкой по idFTP через TFileStream я разобрался (помогли на этом форуме). Мне нужно с этого-же файла читать данные. Ситуация следующая: файл докачивается через некоторые промежутки времени (2 сек. к примеру). Вот в этот промежуток мне нужно читать с него данные. idFTP работает в доп. потоке, в нем-же в конструкторе создаю FileStream:
FStream := TFileStream.Create(FLocalFileName, fmCreate or fmShareDenyWrite);
В процедуре потока скачиваю файл:
FidFTP.Get(FOmpFileName, FStream, true);
(докачка работает)
Есче в одном потоке открываю этот файл
FFileHandle := CreateFile(PChar(AFileName), GENERIC_READ or GENERIC_WRITE,  FILE_SHARE_READ or FILE_SHARE_WRITE,
     nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);

Вот тут-то и не получается: ошибка
Процесс не может получить доступ к файлу, так как этот файл занят другим процессом
Поскажите, как мне правильно получить доступ к файлу.


tytus   (2008-10-02 10:58:00) [1]

так это что - мне придется есче один файл создавать?

Я обрабатываю файл через CreateFileMapping, мне удобно читать по-байтно...
А с MemorySеream не работал... будет -ли быстрее чем мапированные файлы...


tytus   (2008-10-02 10:53:00) [2]

>Vlad Oshin ©   (02.10.08 10:41) [8]
счаз попробую...


Vlad Oshin   (2008-10-02 10:41:00) [3]


> MemoryStreem.LoadFromFile(
> и потом оттуда

вместо


> Есче в одном потоке открываю этот файл
> FFileHandle := CreateFile(PChar(AFileName), GENERIC_READ
> or GENERIC_WRITE,  FILE_SHARE_READ or FILE_SHARE_WRITE,
>      nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);


tytus   (2008-10-02 10:35:00) [4]

Vlad Oshin ©   (02.10.08 10:20) [5]
1. а если:
MemoryStreem.LoadFromFile(
и потом оттуда


это что - получается не нужно использовать idFTP?
мне по ftp нужно забирать и докачивать файл...

>Плохиш ©   (02.10.08 10:23) [6]
так не работает...


Плохиш   (2008-10-02 10:23:00) [5]

FStream := TFileStream.Create(FLocalFileName, fmOpenRead or fmShareDenyNone);


Vlad Oshin   (2008-10-02 10:20:00) [6]

1. а если:
MemoryStreem.LoadFromFile(
и потом оттуда

2. а если: попробовать стандартно
AssignFile(F, Name);
FileMode := fmOpenRead;
Reset(F);


tytus   (2008-10-02 10:08:00) [7]

>Vlad Oshin ©   (02.10.08 10:02) [3]
... та-же ошибка...


Vlad Oshin   (2008-10-02 10:02:00) [8]

а так?
FStream := TFileStream.Create(FLocalFileName, fmCreate or fmShareDenyNone);


tytus   (2008-10-02 09:56:00) [9]

>Vlad Oshin ©   (02.10.08 09:50) [1]
к сожелению не работает. Ошибка та-же...


Vlad Oshin   (2008-10-02 09:50:00) [10]


> FFileHandle := CreateFile(PChar(AFileName), GENERIC_READ
> or GENERIC_WRITE,  FILE_SHARE_READ or FILE_SHARE_WRITE,
>      nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);

а без этого?


Наверх

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