![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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);
а без этого?