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

Вниз

idFTP докачка файла + чтение из файла   Найти похожие ветки 

 
tytus   (2008-10-02 09:43) [0]

Доброго дня всем. С докачкой по 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);

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


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


> 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 09:56) [2]

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


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

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


 
tytus   (2008-10-02 10:08) [4]

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


 
Vlad Oshin ©   (2008-10-02 10:20) [5]

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

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


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

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


 
tytus   (2008-10-02 10:35) [7]

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


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

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


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


> 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:53) [9]

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


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

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

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



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

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

Наверх




Память: 0.49 MB
Время: 0.017 c
2-1222779966
cruiser
2008-09-30 17:06
2008.11.09
Ловим сообщения программы


6-1194968418
artkil
2007-11-13 18:40
2008.11.09
Прокси


15-1221252916
RaMoNeZz
2008-09-13 00:55
2008.11.09
Помогите упростить код и проверить правильно ли написан он....


15-1221195608
[i2e]
2008-09-12 09:00
2008.11.09
Как повернуть текст на 90 градусов?


2-1222465968
SveTTT
2008-09-27 01:52
2008.11.09
Как избавиться от дублирования (SQL - full join)