ja mam taką wersję, najłatwiej mi było to zakodować
uses Crt;
function ReverseString(const s :string) :string;
var
t :string;
ip, len :byte;
begin
t := s;
len := Length(s);
for ip := len downto 1 do t[ip] := s[len-ip+1];
ReverseString := t;
end;
function IntToStr(const l :LongInt) :string;
var
s :string;
begin
Str(l, s);
IntToStr := s;
end;
function Dec2Bin(l :LongInt) :string;
const
BinDigit :string = '01';
var
B1 :Integer;
B :string;
begin
B := '';
repeat
B1 := l mod 2;
l := l div 2;
B := B + BinDigit[B1+1];
until l < 1;
Dec2Bin := B;
end;
var
i :LongInt;
dec, bin :string;
begin
ClrScr;
for i := 1 to 1000000 do
begin
dec := IntToStr(i);
bin := Dec2Bin(i);
if (dec = ReverseString(dec)) and
(bin = ReverseString(bin)) then
WriteLn('Liczba ', dec, ' [', bin, '] jest palindromem');
end;
ReadLn;
end.