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

Вниз

Не могу прочитать файл созданный TFileStream   Найти похожие ветки 

 
Zergling   (2002-10-21 10:08) [0]

Всем привет! Помогите люди добрые!!! 1-е приложение создает файл с помощью TFileStream и все время пишет в него данные. Мне нужно прочитать данные из этого файла другим приложением, но вываливается ошибка, что файл не может быть открыт. Как обойти эту проблему?
TFileStream я создаю так:
if FileExists(FName) then RecStream:=TRecordStream.Create(FName,fmShareDenyNone)
fmShareDenyNone - если я верно понял данный параметр дает полный доступ для всех.

Заранее благодарен.


 
Smithson ©   (2002-10-21 10:30) [1]

Смотри параметры открытия файла (кажись, ShareRead)


 
andrey_pst ©   (2002-10-21 10:35) [2]

возможно Вы пытаетесь открыть файл в режиме чтение/запись
как читаете-то, напишите ?


 
Zergling   (2002-10-21 11:36) [3]

Параметры fmOpenRead, fmShareDenyNone не помогают. Во втором приложении создаю TFileStrem так же как и в первом случае:
if FileExists(FName) then RecStream:=TRecordStream.Create(FName,fmShareDenyNone)


 
Zergling   (2002-10-21 12:00) [4]

Второе приложение не читает файл, если первое приложение создает новый файл:
if FileExists(FName) then RecStream:=TRecordStream.Create(FName,fmCreate), а если первое приложение открывает существующий файл с параметром fmShareDenyNone, то второе приложение без проблем считывает данные из файла. Пытался открыть вновь созданный файл с параметром fmShareDenyNone следующим образом:
RecStream:=TRecordStream.Create(FName,fmCreate);
RecStream.Free;
RecStream:=TRecordStream.Create(FName,fmShareDenyNone);

Но при таком подходе второе приложение ни чего ни считывает из файла. Как быть???


 
Bis   (2002-10-21 13:31) [5]

полагается делать FlushBuffers, тогда все записанное читается.
Не знаю, как это делается родными средствами Дельфи, можно в крайнем случае открывать и закрывать после каждой записи.


 
Рыжик ©   (2002-10-21 13:31) [6]


> Второе приложение не читает файл, если первое приложение
> создает новый файл:
> if FileExists(FName) then RecStream:=TRecordStream.Create(FName,fmCreate),
>

fmCreate Create a file with the given name. If a file with the given name exists, open the file in write mode.

Попробуй так :
if FileExists(FName) then RecStream:=TRecordStream.Create(FName,fmCreate or fmOpenReadWrite or fmShareDenyNone)


 
Zergling   (2002-10-22 13:24) [7]

Данный метод не помогоает.
if FileExists(FName) then RecStream:=TRecordStream.Create(FName,fmCreate or fmOpenReadWrite or fmShareDenyNone)
Тут дают совет все время открывать/закрывать файл после записи.
Как это правильно это делается? Результат с Free я описал выше.


 
Bis   (2002-10-22 13:40) [8]

FlushFileBuffers(RecStream.Handle);



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

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

Наверх




Память: 0.48 MB
Время: 0.022 c
3-101169
b-Ars
2002-10-09 12:45
2002.10.31
Конфигурация BDE


14-101451
Ghg
2002-10-10 09:55
2002.10.31
Принципиальные отличия писания программ в C++ Builder и MVS C++


3-101086
ttt
2002-10-03 14:14
2002.10.31
Кодировка paradox3.5 таблицы


4-101581
kerrik
2002-09-19 21:59
2002.10.31
Аналог ф-ии inherited; в С++Builder (5.0)


1-101320
NA
2002-10-19 14:13
2002.10.31
директива INCLUDE своими силами, или Собираем файл из шаблонов.