Главная страница
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.009 c
1-101279
Tornado
2002-10-22 15:26
2002.10.31
ShellExecute


3-101161
Igoryan
2002-10-11 12:39
2002.10.31
Копирование в буфер из DBGrid


1-101266
cherepovets
2002-10-22 13:43
2002.10.31
MDI


6-101423
BAHO
2002-09-01 01:18
2002.10.31
Record потоком по сети


1-101272
shubin
2002-10-22 10:01
2002.10.31
День добрый!