git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES/trunk@4 b68bf8ae-e977-074f-a058-3cfd71dd8f45
150 lines
3.8 KiB
ObjectPascal
150 lines
3.8 KiB
ObjectPascal
{
|
|
===============================================================================
|
|
Copyright (©) 2002. Rodax Software.
|
|
===============================================================================
|
|
Los contenidos de este fichero son propiedad de Rodax Software titular del
|
|
copyright. Este fichero sólo podrá ser copiado, distribuido y utilizado,
|
|
en su totalidad o en parte, con el permiso escrito de Rodax Software, o de
|
|
acuerdo con los términos y condiciones establecidas en el acuerdo/contrato
|
|
bajo el que se suministra.
|
|
-----------------------------------------------------------------------------
|
|
Web: www.rodax-software.com
|
|
===============================================================================
|
|
Fecha primera versión: 01-11-2002
|
|
Versión actual: 1.0.1
|
|
Fecha versión actual: 12-10-2004
|
|
===============================================================================
|
|
Modificaciones:
|
|
|
|
Fecha Comentarios
|
|
---------------------------------------------------------------------------
|
|
12-10-2004 Añ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.
|