Но MakeInt(w1, w2) выдает integer, а нужно получать dword, так как присылают dword.
Как результат (по крайней мере у меня) при w1= 65535 и w2= 65535 MakeInt выдает -1, что в принципе верно. Но нужно то 4294967295.
MakeInt просто объединяет два слова в целое число. Отображаемое значение зависит от типа данных. См. пример ниже:
var
I: Integer;
L: LongWord;
begin
I := MakeInt(65535, 65535); // I теперь равно -1
L := MakeInt(65535, 65535); // L теперь равно 4294967295
end.
Если тип не задан явно, то MakeInt вернёт Integer, но при необходимости можно привести к нужному типу. Например:
begin
Text1.Text := IntToStr(MakeInt(65535, 65535)); // в Text1 будет выведено значение -1
Text2.Text := IntToStr(LongWord(MakeInt(65535, 65535))); // в Text2 будет выведено значение 4294967295
end.