Форум: "Начинающим";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];
ВнизГоспода подскажите плз как узнать открыт ли файл? Найти похожие ветки
← →
JTAG (2006-11-01 12:29) [0]Господа подскажите плз как узнать открыт ли файл?
← →
Desdechado © (2006-11-01 12:31) [1]открыт кем? твоей или посторонней программой?
← →
Still Swamp (2006-11-01 12:33) [2]Я бы попытался его открыть его с полными правами, после разбирал бы полученную ошибку.
← →
JTAG (2006-11-01 12:39) [3]Моей программой,
У меня программа принимает данные через ком порт и запаисывает их в файл. принимает так, пришли данные открыл файл для добавления потом закрыл и опять жду в цикле. Но когда пытаюсь закрыть программу нажав на "Х"
то виндовс пишит что программа не отвечает и после нескольких нажатий на "Х" все таки закрывается , но вылезет окно выбрано завершение не отвечающей программы , послать собщении в микросовт или нет.
Как корректно завершить программу.
Я в цикле написал исключительную ситуаия
try
открыть файл для записи и записать
закрыть файл
exception
exit;
end;
теперь хочу перед exit сделать проверку открыт ли файл и если да , то закрыть его.
← →
Anatoly Podgoretsky © (2006-11-01 12:57) [4]> JTAG (01.11.2006 12:39:03) [3]
И почему ты решил, что это из-за незакрытого файла?
← →
Stanislav © (2006-11-01 13:07) [5]JTAG (01.11.06 12:39) [3]
Скорее это работает дополнительный поток, который общаятся с com портом.
← →
Percent (2006-11-01 13:10) [6]Я в цикле написал
Цикл увидеть можно?
Какие условия прерывания цикла?
Как обрабатываются сообщения Windows?
← →
JTAG (2006-11-01 13:28) [7]while 2>1 do
begin
receivebyte:=readsymbol(1);
if a=1 then begin
a:=0;
a1:=readsymbol(1)-48;
a2:=readsymbol(1)-48;
a3:=readsymbol(1)-48;
a4:=readsymbol(1)-48;
a5:=readsymbol(1)-48;
value:=a1*10000+a2*1000+a3*100+a4*10+a5;
try
systemtime:= FormatDateTime("dd.mm.yyyy hh:nn:ss", Now);
AssignFile(outfile,filename);
Append(outfile);
writeln(outfile, systemtime);
writeln(outfile, level);
closeFile(outfile);
except
closeFile(outfile);
form1.VaCom.Close;
exit;
end;
end;
// form1.Memo1.Lines.Append(" receivebyte="+inttostr(receivebyte)+" ");
end
← →
Percent (2006-11-01 13:35) [8][7] JTAG (01.11.06 13:28)
Этот цикл у тебя где крутится?
← →
Anatoly Podgoretsky © (2006-11-01 13:37) [9]Вот в этой строчке и узнаешь
writeln(outfile, systemtime);
← →
JTAG (2006-11-01 13:50) [10]Это у меня основной цикл программы он все время крутится,
может внутри этого бесконеного цикла нужно какой нибудь оператор выхода по нажатию "Х" поставить?
← →
Percent (2006-11-01 13:59) [11]Надо отдельный поток делать. По-любому.
Или еще, как вариант, далеко не самый лучший, поставить внутри цикла:Application.ProcessMessages;
И в условии цикла, вместо (2 > 1):not Application.Terminated
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.11.19;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.046 c