This repository has been archived on 2024-11-29. You can view files and clone it, but cannot push or open issues or pull requests.
Tecsitel_FactuGES/Libreria/StrFunc.pas
2007-06-21 15:47:20 +00:00

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.