Форум: "Основная";
Текущий архив: 2002.10.31;
Скачать: [xml.tar.bz2];
ВнизНе могу прочитать файл созданный 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c