Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
14-68516
CD
2003-08-05 15:04
2003.08.21
Компонент


1-68275
Nestor
2003-08-07 09:48
2003.08.21
Почему не показывает форму?


1-68384
СергейК
2003-08-07 11:19
2003.08.21
Разрыв страницы в Excel


9-68137
Landgraph
2003-02-19 10:52
2003.08.21
Где почитать?


14-68497
Мг. Гад
2003-08-05 23:37
2003.08.21
Усех сосчитаю





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский