[fpc-devel] Comparing arrays of char
Carsten Bager
carsten at beas.dk
Mon Nov 2 11:08:46 CET 2009
Here is output from my program p compiled with Delphi (5) and FPC.
I believe that FPC fails because the first byte is chr(0) when comparing 70501033728 with
0.
I did run into this problem when moving code from a Pascal compiler that can compare
records of the same type.
In Delphi I can come around this problem creating an array of char in the record of the same
size and then comparing those.
But it looks like this doesn´t work in FPC.
Is this an error in FPC, or dos the compiler always look at an array of char as a null
terminated string.
Carsten
OK:70501033728/0
OK:70501033729/0
OK:70501033727/0
Error:70501033728/0
OK:70501033729/0
OK:70501033727/0
Free Pascal Compiler version 2.2.4 [2009/09/01] for arm
Copyright (c) 1993-2008 by Florian Klaempfl
Target OS: Linux for ARM
Compiling p.pp
Program p;
type
t_typ=packed array[0..4] of char;
b_typ=packed array[0..4] of byte;
t2=record
case integer of
0:(t:t_typ);
1:(b:b_typ);
2:(i:Int64);
end;
Var
b1,b2:t2;
Begin
b2.i:=0;
b1.i:=70501033728;
if b1.t=b2.t then
writeln('Error:',b1.i,'/',b2.i)
else
writeln('OK:',b1.i,'/',b2.i);
b2.i:=0;
b1.i:=70501033729;
if b1.t=b2.t then
writeln('Error:',b1.i,'/',b2.i)
else
writeln('OK:',b1.i,'/',b2.i);
b1.i:=70501033727;
if b1.t=b2.t then
writeln('Error:',b1.i,'/',b2.i)
else
writeln('OK:',b1.i,'/',b2.i);
End.
------------------------------------
Error:70501033728/0
OK70501033729/0
OK70501033727/0
Med venlig hilsen
Carsten Bager
BEAS A/S
Brørupvænget 10
DK-7650 Bøvlingbjerg
Tlf. : +45 9788 5222 Fax : +45 9788 5434
www.beas.dk
More information about the fpc-devel
mailing list