PDA

Ver la Versión Completa : Añadir carácter según una posición x a un String


Ledian_Fdez
29-07-2013, 21:49:50
Hola chicos intento hacer una funcion que me permita añadir un carácter según una posición x a un String


Query: Consulta que me devuelve cada cuanto caracteres debo poner un separador.
Resultado de la consulta:
posición separador
3 -
3 -
5 -
6 -
11 -

Cadena: variable String que le inserto un separador según la posición.

function FormateaCadena(Query: TADOQuery, Cadena: String): String;
var
Valor, Separador : String;
i,j : integer;
begin
Query.Open;
Query.First;
Separador := Query.Fields[1].AsString; // obtengo el caracter de separador
for i:= 1 to Query.RecordCount do // ciclo para recorrer la tabla y saber cada cuantos caracteres va el separador
begin
for j:=1 to Query.Fields[0].AsInteger do // ciclo para ir armando la cadena con el separador
begin
Valor := Valor + Cadena[j];
end;
Query.Next;
Valor := Valor + CadenaSeparador;
end;
Query.Close;
Result := Valor;
end;

Al llamar la funcion

text := FormateaCadena(qryXXX, '10024888'); // text = 100-100-100-248-248- ...

Esta era mi idea pero la verdad no funciona pues el ciclo en j se me repite y pufff ... no logro hacerlo bien.

en espera de su ayuda
y mil grasias de antemano
lo salu2.

ecfisa
30-07-2013, 03:00:13
Hola Ledian.

La verdad, o no entiendo el planteo, o los ejemplos que das no se condicen con los resultados. Tal vez si pudiesemos conocer la estructura del registro con los campos que trae la consulta y como deben considerarse los valores de posición obtenidos...

Del ejemplo:
text := FormateaCadena(qryXXX, '10024888'); // text = 100-100-100-248-248- ...
Pareciera que deben tomarse n caracteres y agregarlos n veces separados por el separador y valor obtenido de la consulta, pero sigo suponiendo...

Saludos. :)

Ledian_Fdez
01-08-2013, 14:57:08
Chicos quizas me complique con la función y no supe explicarme. Se los voy a poner mas sencillo, digamos que quiero a una cadena de caracteres insertarle en la posicion x otro caracter.

Pos := 3;
Caracter := '-'
cadena := InsertaCaracter ('10024888', Pos, Caracter);
//cadena = 100-24888


Es algo como esto, sabiendo eso yo lo adapto a lo que quiero mas arriba.

gracias de antemano.

ecfisa
01-08-2013, 16:22:21
Hola Ledian.


...
var
str : string;
ch : char;
posi: Integer;
begin
str := '10024888';
ch := '-';
posi := 4; // 3+1 (entre 0 y 2)
Insert(ch, str, posi);
...


Saludos :)