150 lines
3.8 KiB
ObjectPascal
150 lines
3.8 KiB
ObjectPascal
|
|
{
|
|||
|
|
===============================================================================
|
|||
|
|
Copyright (<EFBFBD>) 2002. Rodax Software.
|
|||
|
|
===============================================================================
|
|||
|
|
Los contenidos de este fichero son propiedad de Rodax Software titular del
|
|||
|
|
copyright. Este fichero s<EFBFBD>lo podr<EFBFBD> ser copiado, distribuido y utilizado,
|
|||
|
|
en su totalidad o en parte, con el permiso escrito de Rodax Software, o de
|
|||
|
|
acuerdo con los t<EFBFBD>rminos y condiciones establecidas en el acuerdo/contrato
|
|||
|
|
bajo el que se suministra.
|
|||
|
|
-----------------------------------------------------------------------------
|
|||
|
|
Web: www.rodax-software.com
|
|||
|
|
===============================================================================
|
|||
|
|
Fecha primera versi<EFBFBD>n: 01-11-2002
|
|||
|
|
Versi<EFBFBD>n actual: 1.0.1
|
|||
|
|
Fecha versi<EFBFBD>n actual: 12-10-2004
|
|||
|
|
===============================================================================
|
|||
|
|
Modificaciones:
|
|||
|
|
|
|||
|
|
Fecha Comentarios
|
|||
|
|
---------------------------------------------------------------------------
|
|||
|
|
12-10-2004 A<EFBFBD>adimos el metodo quitarMascaraEuro
|
|||
|
|
===============================================================================
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
unit StrFunc;
|
|||
|
|
|
|||
|
|
{$I COMPILE.INC}
|
|||
|
|
|
|||
|
|
interface
|
|||
|
|
|
|||
|
|
uses
|
|||
|
|
SysUtils;
|
|||
|
|
|
|||
|
|
type
|
|||
|
|
TCharSet = set of Char;
|
|||
|
|
|
|||
|
|
{ Funciones de cadena }
|
|||
|
|
function StrSmartCase(const S: AnsiString; Delimiters: TSysCharSet): AnsiString;
|
|||
|
|
function StrPadLeft(const S: AnsiString; Len: Integer; C: AnsiChar): AnsiString;
|
|||
|
|
function StrCapitalize(const S: AnsiString): AnsiString;
|
|||
|
|
function EsCadenaVacia(const S: AnsiString): Boolean; overload;
|
|||
|
|
function EsCadenaVacia(const S: Variant): Boolean; overload;
|
|||
|
|
function EsCadenaVacia(const S: AnsiString; const EmptyChars: TCharSet): Boolean; overload;
|
|||
|
|
function EsNumerico(Cadena: String) : Boolean;
|
|||
|
|
|
|||
|
|
implementation
|
|||
|
|
|
|||
|
|
{$IFDEF RDX_D6}uses Variants;{$ENDIF}
|
|||
|
|
|
|||
|
|
function StrSmartCase(const S: AnsiString; Delimiters: TSysCharSet): AnsiString;
|
|||
|
|
var
|
|||
|
|
Source, Dest: PChar;
|
|||
|
|
begin
|
|||
|
|
if Delimiters = [] then
|
|||
|
|
Include(Delimiters, ' ');
|
|||
|
|
if S <> '' then
|
|||
|
|
begin
|
|||
|
|
SetLength(Result, Length(S));
|
|||
|
|
Source := PChar(S);
|
|||
|
|
Dest := PChar(Result);
|
|||
|
|
Dest^ := UpCase(Source^);
|
|||
|
|
Inc(Source);
|
|||
|
|
Inc(Dest);
|
|||
|
|
while Source^ <> #0 do
|
|||
|
|
begin
|
|||
|
|
Dest^ := Source^;
|
|||
|
|
if Source^ in Delimiters then
|
|||
|
|
begin
|
|||
|
|
Inc(Source);
|
|||
|
|
Inc(Dest);
|
|||
|
|
Dest^ := UpCase(Source^);
|
|||
|
|
end;
|
|||
|
|
Inc(Dest);
|
|||
|
|
Inc(Source);
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function StrCapitalize(const S: AnsiString): AnsiString;
|
|||
|
|
var
|
|||
|
|
Source, Dest: PChar;
|
|||
|
|
begin
|
|||
|
|
if S <> '' then
|
|||
|
|
begin
|
|||
|
|
SetLength(Result, Length(S));
|
|||
|
|
Source := PChar(S);
|
|||
|
|
Dest := PChar(Result);
|
|||
|
|
Dest^ := UpCase(Source^);
|
|||
|
|
Inc(Source);
|
|||
|
|
Inc(Dest);
|
|||
|
|
while Source^ <> #0 do
|
|||
|
|
begin
|
|||
|
|
Dest^ := Source^;
|
|||
|
|
Inc(Dest);
|
|||
|
|
Inc(Source);
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function StrPadLeft(const S: AnsiString; Len: Integer; C: AnsiChar): AnsiString;
|
|||
|
|
var
|
|||
|
|
L: Integer;
|
|||
|
|
begin
|
|||
|
|
L := Length(S);
|
|||
|
|
if L < Len then
|
|||
|
|
Result := StringOfChar(C, Len - L) + S
|
|||
|
|
else
|
|||
|
|
Result := S;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function EsCadenaVacia(const S: AnsiString): Boolean;
|
|||
|
|
begin
|
|||
|
|
Result := (Length(Trim(S)) = 0)
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function EsCadenaVacia(const S: Variant): Boolean; overload;
|
|||
|
|
begin
|
|||
|
|
Result := True;
|
|||
|
|
if VarIsNull(S) then
|
|||
|
|
Exit;
|
|||
|
|
Result := EsCadenaVacia(VarToStr(S));
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function EsCadenaVacia(const S: AnsiString; const EmptyChars: TCharSet): Boolean;
|
|||
|
|
var
|
|||
|
|
I, SLen: Integer;
|
|||
|
|
begin
|
|||
|
|
SLen := Length(S);
|
|||
|
|
I := 1;
|
|||
|
|
while I <= SLen do begin
|
|||
|
|
if not (S[I] in EmptyChars) then begin
|
|||
|
|
Result := False;
|
|||
|
|
Exit;
|
|||
|
|
end
|
|||
|
|
else Inc(I);
|
|||
|
|
end;
|
|||
|
|
Result := True;
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
function EsNumerico(Cadena: String) : Boolean;
|
|||
|
|
var
|
|||
|
|
Codigo: Integer;
|
|||
|
|
Valor: Double;
|
|||
|
|
begin
|
|||
|
|
Val(Cadena, Valor, Codigo);
|
|||
|
|
Result := (Codigo = 0)
|
|||
|
|
end;
|
|||
|
|
|
|||
|
|
end.
|