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

Вниз

Связать две проги   Найти похожие ветки 

 
Дима   (2010-11-22 23:17) [0]

Здравствуйте.Вообщем есть прога которая все время шлет значение одной переменной в текстовый файл(приблизительно 2 раза в сек).Я написал программу которая обрабатывает эти данные.Memo загружает этот файл и считывает эти значения.Проблема в том ,что время от времени выскакивает ошибка "нельзя открыть файл....занят другим процессом",это понятно при совпадении той проги на запись а моей на чтение этого файла.

Как зделать что-бы игнорировать эту ошибку или просто проигнорировать.Надо что б прога с критом не вылетала.

Помогите пожалуйста,не лезет ниче в голову.Заранее благодарен.С уважением,Дмитрий.


 
Dimka Maslov ©   (2010-11-22 23:22) [1]

есть такая штука как обработка исключительных ситуаций


 
Дима   (2010-11-22 23:27) [2]

try except ??? пробовал,но ошибка все равно выскакивает,может не в том блоке где надо писал.Если можно поподробнее.


 
Германн ©   (2010-11-23 04:38) [3]


> Дима   (22.11.10 23:27) [2]
>
> try except ??? пробовал,но ошибка все равно выскакивает,
> может не в том блоке где надо писал.

Ставь блок try except там, где твоя программа открывает этот файл.
И не надо грузить файл в мемо, если не требуется "ручное редактирование пользователем" содержимого файла. Для обработки содержимого текстового файла вполне достаточно TStringList.


 
Anatoly Podgoretsky ©   (2010-11-23 09:52) [4]

Сомневаюсь что ты открываешь на чтение.


 
12 ©   (2010-11-23 12:28) [5]


> Ставь блок try except там, где твоя программа открывает
> этот файл.

+ не смотри под delphi отладчиком, смотри готовый ехе когда запускаешь
(или убери stop on except настройку в самой delphi)


 
Плохиш ©   (2010-11-23 15:17) [6]

{$-}


 
stas ©   (2010-11-23 17:29) [7]

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


 
Дима   (2010-11-23 20:01) [8]

Спасибо за ответы.Проблема в том,что та прога может передавать только в текстовый файл.


 
Плохиш ©   (2010-11-23 23:55) [9]


> Дима   (23.11.10 20:01) [8]

Так ошибку в своей 17й строке уже исправил?


 
12 ©   (2010-11-24 08:33) [10]

не Мастер тур случайно?


 
kvorubin ©   (2010-11-24 18:52) [11]

Сколько информации в файле? наверняка раз в 2 секунды мало сохраняется.

кустарно можно через реестр передавать.
через клиенты поточно как подсказал stas. как осуществить? - есть пример в каталоге демо.

программа вместо сохранения мемо в файл, может сохранять во всякие переменные стринга. массой и построчно вередовать в другую.
можно даже энтеры в строку вложить, чтобы вторая прога приняла строку как текст.
showmessage("строка1"+#13+"строка2");

формируй линию за линией через #13 и пуляй втрой программе,
а второй прими в мемо.


 
Плохиш ©   (2010-11-24 19:29) [12]


> kvorubin ©   (24.11.10 18:52) [11]
>
> Сколько информации в файле? наверняка раз в 2 секунды мало
> сохраняется.
>
> кустарно можно через реестр передавать.
> через клиенты поточно как подсказал stas.

Типа, чукча - не читатель?
Ты бы ответы автора перед своим жеванием почитал.


 
Денис2   (2010-11-24 20:10) [13]


> Плохиш ©  

Это не генеальное решение проблемы, нужно первую программу переделать.
я так делал чат раньше и блокировал ошибки от программы, чтобы хоть както умудриться читать файл..

Для фильтрации, к примеру, EConvertError, вы можете создать собственный обработчик исключений:

Приблизительно так:

Объявите следующую процедуру в объекте вашей главной формы:
procedure MyException(Sender:TObject; E:Exception);

Затем делайте так:
procedure TMyForm.MyException(Sender:TObject; E:Exception);
begin
 if (E.ClassType.ClassName="EConvertError") then
 begin
   {как-то общаемся с пользователем по-поводу ошибки}
 end
 else
   {позволяем Delphi показать ошибку}
   Application.ShowException(E);
end;


Наконец, позвольте приложению воспользоваться вашим новым обработчиком исключений:
procedure TMyForm.FormCreate(Sender: TObject);
begin
 Application.OnException := MyException;
end;


 
Плохиш ©   (2010-11-24 20:14) [14]


> нужно первую программу переделать.

дальше читать не стал.


 
Дима   (2010-11-24 20:20) [15]


> + не смотри под delphi отладчиком, смотри готовый ехе когда
> запускаешь(или убери stop on except настройку в самой delphi)

Спасибо,вроде помогло.


> {$-}

Спасибо за директивы


 
Денис2   (2010-11-24 20:40) [16]


> Плохиш ©

В интернете можно отыскать букварь, сейчас молодёжь по линейка да контрам. и незнают как зовут президента.


 
Плохиш ©   (2010-11-24 23:15) [17]


> незнают как зовут президента.

Неужели это такое важное знание?


 
azim   (2010-12-01 07:31) [18]

Для таких задач лучше использовать почтовые ящики, т.е mailSlot



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

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

Наверх




Память: 0.51 MB
Время: 0.013 c
2-1290952548
delpilamer
2010-11-28 16:55
2011.02.20


15-1289683791
Юрий
2010-11-14 00:29
2011.02.20
С днем рождения ! 14 ноября 2010 воскресенье


11-1231539544
BMouradov
2009-01-10 01:19
2011.02.20
Unzip File Time Stamp


3-1253089294
d@vinchi
2009-09-16 12:21
2011.02.20
DAO: как создать Memo поле с возможностью ввода пустых строк?


11-1230481247
robt
2008-12-28 19:20
2011.02.20
поток+модальная форма