On 14.11.2012 19:19, Curt Carpenter wrote:
Hello Sven.

I understand now.  I am using lazarus, which uses 4-byte integers.

While it might be true that you are using Lazarus this is not directly the answer to my question. ;) At the top of a unit or program in Free Pascal there is usually a "$mode blabla" directive where normally "blabla" is either "objfpc" or "delphi" (other modes are possible). If no mode directive is given than the default is used which is "fpc" normally except you pass a corresponding command line parameter (which Lazarus does and which you can influence through the Compiler Settings (page "Parser").

Nevertheless you said that you use a mode where SizeOf(Integer) = 4. In that case it is incorrect to expect Byte values:

var
  loval, hival: Byte;
begin
  loval := Lo(SomeInt);
  hival := Hi(SomeInt);
end;

Lo/Hi of a 4 Byte value will give the lower and higher Word (16 Bit) value not a 8 Bit value. So if you have this value: $12345678 you will get $1234 and $5678 by Lo/Hi and loval and hival will both contain the Lower value ($34, $78) respectively.

I hope this helps you in finding the problem.

Regards,
Sven


--
_______________________________________________
Lazarus mailing list
Lazarus@lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to