Insertar en posiciones

Necesito una función o algoritmo que dado las posiciones de unos caracteres en texto plano me inserte un determinado texto, ejemplo
s:='hola';
insertar hola en posicion 40 a 44;
Fin
De antemano muchas gracias

2 Respuestas

Respuesta
1
No te entiendo bien, ¿quieres qué en una cadena se inserte 'Hola' de la posición 40 a la 44?
Necesito una mejor explicación... si quieres una función para insertar, seria así:
Insert('Hola', CadenaOriginal, 40); Donde 40 es la posicion inicial.
Respuesta
1
Supongo que donde quieres insertar el texto, es un string, ¿no?
Si es así, puedes trabajer con el como si fuese un array.
Simplemente accede a la posiciones 40 a 44 e inserta las letras de hola,
P.ej,
posicion:=40;
for i:=40 to 40+strlen(s) do
begin
Destino:=s[i-39];
end;
Este sencillo algoritmo te sirve, siempre que DESTINO sea mayor que lo que vas a insertar, esto es, siempre que no te pases de la longitud de destino insertando. (p, ej en este caso destino tendría que tener al menos 44 caracteres de longitud. Si no los tiene, lo que tienes que hacer es insertar la cadena al final.
P.Ej.
(resto es de tipo string, Posicion e i, integer)
Posicion:=40;
longitud:=strlen(Destino);
fin:=Posicion+strlen(s);
resto:='';
if (longitud<fin) then
begin
i:=longitud-fin;
resto:=Copy(S,-i,i); // Si no recuerdo mal, esto copia los iesimos ultimos caracreres de s en resto;
fin:=longitud;
end;
for i:=Posicion to fin do
begin
Destino:=s[i-Posicion+1];
end;
Destino:=Destino+resto;
Si no he metido la pata, este código debería funcionar sin problemas.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas