2010-08-11 10:53:06 +00:00
|
|
|
|
|
|
|
|
|
|
unit CVBUtils;
|
|
|
|
|
|
|
|
|
|
|
|
interface
|
|
|
|
|
|
|
|
|
|
|
|
uses SysUtils;
|
|
|
|
|
|
|
|
|
|
|
|
function Trim(const cString: string): string;
|
|
|
|
|
|
function Replicate(c: char; nLen: integer): string;
|
|
|
|
|
|
function Ajusta(sCampo, sOrientacion: string; iLongitud: integer; sRelleno: char): string;
|
2013-12-13 09:42:56 +00:00
|
|
|
|
function Modulo9710(const ANumber : string) : Integer;
|
2010-08-11 10:53:06 +00:00
|
|
|
|
|
|
|
|
|
|
function AjustaCIF(sCampo: string): string;
|
2013-12-13 09:42:56 +00:00
|
|
|
|
function ReplaceAccents(AText : String) : string;
|
2010-08-11 10:53:06 +00:00
|
|
|
|
|
|
|
|
|
|
implementation
|
|
|
|
|
|
|
2013-12-13 09:42:56 +00:00
|
|
|
|
uses
|
|
|
|
|
|
Dialogs;
|
|
|
|
|
|
|
|
|
|
|
|
const
|
|
|
|
|
|
SansAccents : array[#0..#255] of Char
|
|
|
|
|
|
= #0#1#2#3#4#5#6#7#8#9#10#11#12#13#14#15#16#17#18#19#20#21#22#23#24#25#26#27#28#29#30#31 +
|
|
|
|
|
|
' !"#$%&''()*+,-./0123456789:;<=>?' +
|
|
|
|
|
|
'@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_'+
|
|
|
|
|
|
'`abcdefghijklmnopqrstuvwxyz{|}~'#127 +
|
|
|
|
|
|
'<27>'#129'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>S<EFBFBD><53>'#141'<27>'#143#144'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><73>'#157'zY' +
|
|
|
|
|
|
#160'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>' +
|
|
|
|
|
|
'AAAAAA<41>CEEEEIIIIDNOOOOO<4F>OUUUUY<55><59>' +
|
|
|
|
|
|
'aaaaaa<61>ceeeeiiiidnooooo<6F>ouuuuy<75>y';
|
|
|
|
|
|
|
|
|
|
|
|
function ReplaceAccents(AText : String) : string;
|
|
|
|
|
|
var
|
|
|
|
|
|
i : integer;
|
|
|
|
|
|
p : pchar;
|
|
|
|
|
|
begin
|
|
|
|
|
|
Result := AText;
|
|
|
|
|
|
if Result='' then
|
|
|
|
|
|
exit;
|
|
|
|
|
|
p := @Result[1];
|
|
|
|
|
|
for i:=1 to Length(Result) do
|
|
|
|
|
|
begin
|
|
|
|
|
|
p^ := SansAccents[p^];
|
|
|
|
|
|
inc(p);
|
|
|
|
|
|
end;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
|
2010-08-11 10:53:06 +00:00
|
|
|
|
function AjustaCIF(sCampo: string): string;
|
|
|
|
|
|
// Quita cualquier car<61>cter no v<>lido del cif,nif
|
|
|
|
|
|
var
|
|
|
|
|
|
iX: integer;
|
|
|
|
|
|
begin
|
|
|
|
|
|
Result := '';
|
|
|
|
|
|
sCampo := UpperCase(sCampo);
|
|
|
|
|
|
|
|
|
|
|
|
if length(sCampo) < 1 then
|
|
|
|
|
|
sCampo := '0';
|
|
|
|
|
|
|
|
|
|
|
|
for iX := 0 to length(sCampo) do
|
|
|
|
|
|
if (sCampo[iX] in ['0'..'9', 'A'..'Z']) then
|
|
|
|
|
|
Result := Result + sCampo[iX];
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
function Trim(const cString: string): string;
|
|
|
|
|
|
begin
|
|
|
|
|
|
Result := TrimLeft(TrimRight(cString));
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
function Replicate(c: char; nLen: integer): string;
|
|
|
|
|
|
begin
|
|
|
|
|
|
Result := stringOfChar(c, nLen);
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
function Ajusta(sCampo, sOrientacion: string; iLongitud: integer; sRelleno: char): string;
|
|
|
|
|
|
begin
|
|
|
|
|
|
sCampo := Trim(sCampo);
|
|
|
|
|
|
if uppercase(sOrientacion) = 'I' then
|
|
|
|
|
|
Result := Replicate(sRelleno, iLongitud - Length(sCampo)) + sCampo
|
|
|
|
|
|
else
|
|
|
|
|
|
Result := sCampo + Replicate(sRelleno, iLongitud - Length(sCampo));
|
|
|
|
|
|
|
|
|
|
|
|
if length(Result) > iLongitud then
|
|
|
|
|
|
Result := copy(Result, 1, iLongitud);
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
2013-12-13 09:42:56 +00:00
|
|
|
|
|
|
|
|
|
|
function Modulo9710(const ANumber : string) : Integer;
|
|
|
|
|
|
const
|
|
|
|
|
|
m36:string = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
|
|
|
|
|
|
var
|
|
|
|
|
|
i, p : Integer;
|
|
|
|
|
|
begin
|
|
|
|
|
|
Result := 0;
|
|
|
|
|
|
|
|
|
|
|
|
for i := 1 to Length(ANumber) do
|
|
|
|
|
|
begin
|
|
|
|
|
|
p := Pos(ANumber[i], m36) ;
|
|
|
|
|
|
if p = 0 then
|
|
|
|
|
|
raise Exception.CreateFmt('Modulo97(%s): invalid data', [ANumber]);
|
|
|
|
|
|
Dec(p);
|
|
|
|
|
|
if p > 9 then
|
|
|
|
|
|
begin
|
|
|
|
|
|
Result := Result * 10 + (p div 10);
|
|
|
|
|
|
p := p mod 10;
|
|
|
|
|
|
end;
|
|
|
|
|
|
Result := Result * 10 + p;
|
|
|
|
|
|
Result := Result mod 97;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
Result := 98 - Result;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
2010-08-11 10:53:06 +00:00
|
|
|
|
end.
|