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

Вниз

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

 
sucer   (2003-06-16 06:23) [0]

Мастера помогите!
Как прочитать текстовой файл,если он занят другой програмой?
procedure p1;
var s:string;
( F,"data.mpq") Мастера помогите!
Как прочитать текстовой файл,если он занят другой програмой?
procedure p1;
var s:string;
F:Text;
begin
AssignFile(F,"data.mpq");ReSet(F);
Read(F,s);
CloseFile(F);
end; -НЕРАБАТАЕТ


 
Cobalt ©   (2003-06-16 08:52) [1]

Можно было бы, между прочим, и сказать - что именно "не работает".
В общем, смотрите Хелп, раздел "FileMode variable"


 
Pat ©   (2003-06-16 12:59) [2]

>Как прочитать текстовой файл
>AssignFile(F,"data.mpq");
Прикольно :-))

>F:Text;
Тут я подумал, что это BP
>AssignFile(F,"data.mpq");
>CloseFile(F);
А тут - OP

>Как прочитать текстовой файл,если он занят другой програмой?
TMemoryStream.LoadFromFile()

Либо как ты делаешь, только перед Resеt"ом не забудь FileMode:=0


 
sucer   (2003-06-16 18:11) [3]

Не то и не другое неработает
Вот еще что:Программа которая занимает файл постоянно в него что-то пишет
procedure p1; возникает ошибка
var s:string;
begin
FileMode:=0;
AssignFile(F,"data.mpq");ReSet(F);
Read(F,s);
ShowMessage("=>"+s);
CloseFile(F);
end;
procedure p2;Возникает ошибка .....Can"t open file "FileName".Process Stopped.....
var s:string;
( "data.mpq") Не то и не другое неработает
Вот еще что:Программа которая занимает файл постоянно в него что-то пишет
procedure p1; возникает ошибка
var s:string;
begin
FileMode:=0;
AssignFile(F,"data.mpq");ReSet(F);
Read(F,s);
ShowMessage("=>"+s);
CloseFile(F);
end;
procedure p2;Возникает ошибка .....Can"t open file "FileName".Process Stopped.....
var s:string;
T:TMemoryStream;
begin
T:=TMemoryStream.Create;
T.LoadFromFile("data.mpq");
T.Free;
end;


 
Volcano   (2003-06-16 18:23) [4]

Никак. Тем более если другая прога его постоянно переписывает!


 
Pat ©   (2003-06-16 18:36) [5]

>Не то и не другое неработает
GetLastError вам многое скажет..и нам тоже...Есть подозрение, что Path not found
Специально потратил 1 минуту своего времени, чтобы проверить вариант №2, правда, файл был data.mp3. Все работает. Более того, пару дней назад читал таким способом из своего же exe"шника (т.е. paramstr(0))


 
Pat ©   (2003-06-16 18:42) [6]

Да и первый вариант работает...
Только вот, непонятно, с каких пор *.mpg стал текстовым файлом?


 
clickmaker ©   (2003-06-16 18:56) [7]

Pat © (16.06.03 18:42)
Да и первый вариант работает...
Только вот, непонятно, с каких пор *.mpg стал текстовым файлом?


А там чел просто текст читает, без музыки, без видео...


 
Pat ©   (2003-06-16 19:51) [8]

>clickmaker © (16.06.03 18:56)
Титры что ли? :-)))
Логичней было бы f:file of byte


 
sucer   (2003-06-17 12:11) [9]

procedure p1;
var s:string;
begin
try
FileMode:=0;
AssignFile(F,"data.mpq");ReSet(F);
Read(F,s);
ShowMessage("=>"+s);
except
Application.MessageBox(pchar(SysErrorMessage(GetLastError)),"er",MB_OK);
end;
CloseFile(F);
end;
procedure p2;
var s:string;
T:TMemoryStream;
begin
try
T:=TMemoryStream.Create;
T.LoadFromFile("data.mpq");
except
( pchar(SysErrorMessage(GetLastError) procedure p1;
var s:string;
begin
try
FileMode:=0;
AssignFile(F,"data.mpq");ReSet(F);
Read(F,s);
ShowMessage("=>"+s);
except
Application.MessageBox(pchar(SysErrorMessage(GetLastError)),"er",MB_OK);
end;
CloseFile(F);
end;
procedure p2;
var s:string;
T:TMemoryStream;
begin
try
T:=TMemoryStream.Create;
T.LoadFromFile("data.mpq");
except
Application.MessageBox(pchar(SysErrorMessage(GetLastError)),"er",MB_OK);
end;
T.Free;
end;

Файл существует.
В нем записаны строки текста.

Когда файл незанят программа читает с него и выдает ShowMessage(первая строка).
Когда занят другой программой выдает ошибки:
В случае p1:
I/O Error 32
Процесс неможет получить доступ к файлу,т.к этот файл занять другим процессом

В случае p2:
Delphi пишет:
Project Project2.exe raised exception class EFOpenError with message
"Cannot open file "C:\......\data.mpq".Process stopped.
Use Step or Run to continue.
моя программа:
Процесс неможет получить доступ к файлу,т.к этот файл занять другим процессом


Может быть файл открыт(OpenFile) программой с парамаетрам OF_SHARE_EXCLUSIVE тл
как тогда быть?

HELP_HELP_HELP_HELP_HELPHELPMEHELPMEHELPME_HELP_ME
---------------------



-----------------------------------------------------
Перерисовать экрна- InvalidateRect(0,nil,true);


 
Игорь Шевченко ©   (2003-06-17 13:26) [10]


> Вот еще что:Программа которая занимает файл постоянно в
> него что-то пишет


CreateFile (.....generic_read, file_share_write or file_share_read, ....)


 
KSergey ©   (2003-06-18 11:50) [11]

> Игорь Шевченко © (17.06.03 13:26)

Здорово, конечно, но при условии, что вторая программа (или первая - та, что пишет) - своя.

Автору. Если программа не своя - возможно она открывает файл монопольно - и тогда никак.


 
Игорь Шевченко ©   (2003-06-18 12:22) [12]

KSergey © (18.06.03 11:50)


> Здорово, конечно, но при условии, что вторая программа (или
> первая - та, что пишет) - своя.


Я все-таки, полагаю, что режим открытия файла зависит не от авторства :)


 
KSergey ©   (2003-06-18 14:55) [13]

> Игорь Шевченко © (18.06.03 12:22)
> Я все-таки, полагаю, что режим открытия файла зависит не от авторства :)

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


 
Игорь Шевченко ©   (2003-06-18 15:16) [14]

KSergey © (18.06.03 14:55)

Если бы была возможность править программу, я полагаю, проблема бы у автора не возникла вообще, так как имея две программы, обмен данными можно организовать и более удобным способом :)


 
KSergey ©   (2003-06-18 15:54) [15]

ТОгда я на совсем понимаю - как это все может помочь, если вдруг пишущая программа открывает файл именно монопольно? Или я тут слабо смыслю? (что вполне возможно)



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

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

Наверх




Память: 0.51 MB
Время: 0.013 c
14-68455
Pat
2003-08-02 23:17
2003.08.21
Ура!! Сегодня женился... :)


3-68199
Flint
2003-07-28 13:27
2003.08.21
Изменение таблицы в Interbase


14-68547
CD
2003-08-06 14:53
2003.08.21
Про вопрос о неприкасаемости


1-68373
Dmk
2003-08-08 00:21
2003.08.21
Оптимизация вычислений с плавающей точкой


3-68176
arous
2003-07-28 00:59
2003.08.21
Paradox