Форум: "WinAPI";
Текущий архив: 2003.08.21;
Скачать: [xml.tar.bz2];
ВнизКак прочитать текстовой файл,если он занят другой програмой? Найти похожие ветки
← →
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 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.08.21;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.008 c