![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
POverlapped [D7, XP]
F@T@L_Err0r © (2007-11-07 15:39:00)Здравсвуйте.У меня такой вопрос:Пытаюсь записать информацию в сом порт, но при
pi:POverlapped;
begin
pi.hEvent := CreateEvent(nil, True, False, nil);
....
вылазит ошибка access voltation???
Германн (2007-11-07 19:18:00) [1]
> POverlapped [D7, XP]
>
> F@T@L_Err0r (07.11.07 15:39)
http://delphimaster.ru/cgi-bin/forum.pl?id=1193902088&n=18
> F@T@L_Err0r (07.11.07 16:23) [22]
>
> блин ну ладна буду искать сам где ошибка...
>
Да чего её искать, эту ошибку. И так ясно в чём она :-)
Сергей М. (2007-11-07 16:29:00) [2]Нефига ее искать.
В справке даже пример работы в этом режиме имеется.
F@T@L_Err0r (2007-11-07 16:23:00) [3]блин ну ладна буду искать сам где ошибка...
Сергей М. (2007-11-07 16:15:00) [4]
> справку я смотрел все сделал как там написано
Нифига ты ее не читал.
Или читал, но сделал наоборот.
Reindeer Moss Eater (2007-11-07 16:12:00) [5]и справку я смотрел все сделал как там написано...
if ReadFile(hPort,Buf,SizeOf(Buf),s,pi) then showmessage('Good')
В случае с оверлаппед все как раз наеборот.
Успешный вызов REadFile обязан вернуть False.
Anatoly Podgoretsky (2007-11-07 16:11:00) [6]> F@T@L_Err0r (07.11.2007 15:49:06) [6]
Она не повисает, а ждет SizeOf(Buf) байт
Anatoly Podgoretsky (2007-11-07 16:10:00) [7]> F@T@L_Err0r (07.11.2007 16:03:13) [13]
Поставь точку останова на многоточии.
F@T@L_Err0r (2007-11-07 16:10:00) [8]прверка overlapped:
if pi.hEvent = Null then showmessage('Null') else showmessage(good);
проверка ReadFile:
if ReadFile(hPort,Buf,SizeOf(Buf),s,pi) then showmessage('Good') else showmessage('Null');
и справку я смотрел все сделал как там написано...
Anatoly Podgoretsky (2007-11-07 16:10:00) [9]> F@T@L_Err0r (07.11.2007 15:55:08) [8]
А зачем нам обсуждать посторонний код?
F@T@L_Err0r (2007-11-07 16:03:00) [10]Вот код:
var Buf:array[0..5] of byte;
pi:POverlapped;
s:cardinal;
begin
new(pi);
pi.hEvent := CreateEvent(nil, True, False, nil);
ReadFile(hPort,Buf,SizeOf(Buf),s,pi);
........
Сергей М. (2007-11-07 16:03:00) [11]
> теперь вообще перестали считывать данные из порта
Ты справку проштудировал по overlapped-режиму ввода-вывода ?
Reindeer Moss Eater (2007-11-07 16:03:00) [12]И где анализ результата ReadFile и где проверка GetLastError если у тебя оверлаппед чтение?
Palladin (2007-11-07 16:01:00) [13]ну значит не читает он оттуда ничего
Reindeer Moss Eater (2007-11-07 16:01:00) [14]так У тебя снова старый код и ты снова его не успел поправить
F@T@L_Err0r (2007-11-07 16:00:00) [15]ну поставил я pi вместо nil.теперь вообще перестали считывать данные из порта.
Сергей М. (2007-11-07 15:57:00) [16]
> проблема ведь не в етом?
>
А в чем же, по-твоему ? В магнитных бурях на Луне ?)
F@T@L_Err0r (2007-11-07 15:55:00) [17]ну ето старый код...не успел обновить...но проблема ведь не в етом?
Сергей М. (2007-11-07 15:53:00) [18]Чукча точно не читатель)
Какого же лешего ты передаешь последним параметром nil, если в вопросе ты озаботился именно overlapped-режимом ?
F@T@L_Err0r (2007-11-07 15:49:00) [19]спасиба.а еще такой вопрос в прцедуре
var Buf:array[0..5] of byte;
s:cardinal;
begin
ReadFile(hPort,Buf,SizeOf(Buf),s,nil);
......
программа останавливается и бесконечно долго думает...точнее подвисает.
settimouts все равно 0.
Palladin (2007-11-07 15:46:00) [20]ты б почитал уже чего нибудь чтоли...