Creando una función Implode /Explode igual que en PHP
Los que tocamos PHP, podemos ver las carencias que a veces tiene Delphi. En este caso hay unas funciones muy útiles para tratar cadenas, serian Implode y Explode.
Cadena = "1,2,3,4,5,6" -> Explode -> devuelve una array con [1],[2],[3],[4],[5],[6]
array = [1],[2],[3],[4],[5],[6] -> Implode -> devuelve un string "1,2,3,4,5,6"
En los 2 casos, hay que indicar el carácter separador, en este caso es una coma.
En delphi he hecho estas pequeñas funciones que nos ayudaran a utilizar estas funciones de una manera cómoda y fácil.
Cadena = "1,2,3,4,5,6" -> Explode -> devuelve una array con [1],[2],[3],[4],[5],[6]
array = [1],[2],[3],[4],[5],[6] -> Implode -> devuelve un string "1,2,3,4,5,6"
En los 2 casos, hay que indicar el carácter separador, en este caso es una coma.
En delphi he hecho estas pequeñas funciones que nos ayudaran a utilizar estas funciones de una manera cómoda y fácil.
function Implode(const Separador: string; const sArray: TStringArray): string;
var
i: Integer;
sTexto : string;
begin
sTexto := '';
for i := 0 to Length(sArray) - 1 do
begin
sTexto := sTexto + Separador + sArray[i];
end;
Delete(sTexto, 1, Length(Separador));
result := sTexto;
end;
function Explode(const Separador, texto: string): TStringArray;
var
i: Integer;
S: string;
sArray : TStringArray;
begin
S := texto;
SetLength(sArray, 0);
while AnsiPos(Separador, S) > 0 do
begin
i := Length(sArray);
SetLength(sArray, i + 1);
sArray[i] := Copy(S, 1, Pos(Separador, S) - 1);
S := Copy(S, Pos(Separador, S) + Length(Separador), Length(S));
end;
i := Length(sArray);
SetLength(sArray, i + 1);
sArray[i] := Copy(S, 1, Length(S));
result := sArray;
end;
Me parece interesante, voy a ponerlo en un hilo de Delphiaccess para ver que piensan sobre estas funciones.
ReplyDeleteSeguramente ya estara obsoleto, hay otras maneras de hacerlo con funciones del propio entorno.
ReplyDeleteGracias