Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.25;
Скачать: [xml.tar.bz2];




Вниз

Млин, не могу в LParam засунуть данные... 


Aleksandr   (2002-04-11 13:36) [0]

Суть в том, что ДатаСеты отправляют главной форме сообщения с информацией о наборе:

var
w : word;
begin
w:=Query.RecordCount;
w:=w shl 8;
w:=w OR Query.RecNo;
SendMessage(MainForm.Handle,WM_UpdateStatusBar,dfQuery,W)

а она это обрабатывает так:
case Message.Msg of
WM_UpdateStatusBar :
begin
if Message.WParam=dfQuery then begin
if Message.LParam=0 then
StatusBar.SimpleText:=""
else
StatusBar.SimpleText:=IntToStr(Message.LParamLo)+" : "+IntToStr(Message.LParamHi)
end
И нифига не получается - совсем не те цифры при "распаковке"... Чего я неправильно делаю?



Игорь Шевченко   (2002-04-11 13:56) [1]

День добрый,

LParam имеет размер не Word, а Cardinal.
LParamLo - это младший Word этого Cardinal"a, LParamHi - старший.
При вашем способе заполняется только LParamLo и то не лучшим образом, так как RecordCount и RecNo - это LongInt...

Лучше передавать адрес записи из двух LongInt, если посылающий и принимающий сообщения код находится в одном приложении.

С уважением, Игорь Шевченко



gek   (2002-04-11 13:59) [2]

Ну а так не получится ?
SendMessage(MainForm.Handle,WM_UpdateStatusBar,LParam(dfQuery),WParam(W))



PVOzerski   (2002-04-11 15:01) [3]

Значит, так.
Если в решаемой Вами задаче значения Query.RecordCount и Query.RecNo укладываются
в диапазон word (а в общем виде это далеко не гарантировано), то, IMHO, не сто"ит заморачиваться
с битовыми операциями, а сотворить что-нибудь такое:
type
tWholeData=packed record
case integer of
0:(RecordCount,RecNo:word);
1:(Both:lparam);
end;
var
WholeData:tWholeData;
begin
WholeData.RecordCount:=Query.RecordCount;
WholeData.RecNo:=Query.RecNo;
SendMessage(MainForm.Handle,WM_UpdateStatusBar,dfQuery,WholeData.Both);
end;
(Разборка на поля в получателе - аналогично)

Ну, а если диапазона Word на самом деле мало,
см. Игорь Шевченко © (11.04.02 13:56) (естественно, если получатель живёт в том же приложении,
что и отправитель, в противном случае тоже можно кое-что придумать, кстати :^) )



Aleksandr   (2002-04-11 17:15) [4]

Спасибо, въехал :)... Все просто, как говорится, как г... (в смысле как гениально)




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.25;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.72 MB
Время: 0.021 c
6-81016           Phobos_kx             2002-02-11 19:35  2002.04.25  
Помогите пожалуйста!!! как переслать Image через Socket


6-81029           Aleksandr             2002-02-13 13:45  2002.04.25  
Как работать с TNMStrm на подтверждение чего-либо?


3-80740           TB2                   2002-04-05 22:03  2002.04.25  
ОЧЕНЬ важный для меня вопрос.


1-80988           Катерина              2002-04-10 16:23  2002.04.25  
Про Chart


3-80815           Jony                  2002-04-04 17:20  2002.04.25  
Некорректная работа DBNavigator.