Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.11.09;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.005 c
11-1195302045
KOLBoss
2007-11-17 15:20
2008.11.09
Динамическое создание меню


6-1195117224
Potato
2007-11-15 12:00
2008.11.09
смена IP


2-1222923008
Armond
2008-10-02 08:50
2008.11.09
Работа с датами


15-1221257388
Tirael
2008-09-13 02:09
2008.11.09
вирус


2-1222918980
chezanah
2008-10-02 07:43
2008.11.09
opc клиент





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский