PDA

Ver la Versión Completa : Insertar o borrar en un string de un Tstringlist


Anel Hernandez
17-09-2012, 18:47:31
Hola:

quiero insertar una cadena dentro de un string perteneciente a un Tstringlist. Lo hago asi:

var
i:byte;
milista:TStringList;
s1,s2:string;
begin
...
s1:=milista.Strings[i];
insert(s2,s1,21);
...

asi funciona perfectamente. pero quisiera hacerlo en una sola linea usando funciones/procedimientos predefinidos de Delphi. Si sustituyo en la funcion insert el valor asignado a s1 da el error:
"Constant object cannot be passed as var parameter"

De modo analogo ocurre con el procedimiento delete.

como pudiera hacerlo?

gracias

movorack
17-09-2012, 20:50:44
Hola Anel.

La verdad no entiendo muy bien lo que requieres.

De manera general...


procedure ManejarStrings;
var
lStrings : TStrings;
begin
lStrings := TStringList.Create;
try
//Agregar
lStrings.Add('Valor0');
lStrings.Add('Valor1');
lStrings.Add('Valor2');
lStrings.Add('Valor3');

//Borrar
lStrings.Delete(2); //Se borra "Valor2"
finally
lStrings.Free;
end;
end;

Anel Hernandez
18-09-2012, 08:17:58
no es eso, parece no me pude explicar bien. El ejemplo que pones movorack es para eliminar un string dentro de la lista de string.

yo lo que necesito es eliminar algunos caracteres de un string.

con el codigo que tengo funciona, lo que queria optimizarlo a una sola linea con funciones predefinidas de delphi.

si alguien sabe...

mil gracias

Casimiro Notevi
18-09-2012, 10:08:22
Es que confunde cuando hablas de string de un tstringlist, cuando en realidad todo eso sobra, simplemente es una cadena.
Puede que te sirva replacestring (o era stringreplace o replaceStr...:confused:), haz una búsqueda, se ha tratado en diversas ocasiones.

roman
18-09-2012, 15:35:17
quisiera hacerlo en una sola linea usando funciones/procedimientos predefinidos de Delphi. Si sustituyo en la funcion insert el valor asignado a s1 da el error:
"Constant object cannot be passed as var parameter"

De modo analogo ocurre con el procedimiento delete.

como pudiera hacerlo?


No creo que puedas hacerlo. Es una limitación de delphi. Aunque pareciera que se accede a las cadenas de un StringList directamente, en realidad no es así, sino que se hace a través de funciones de lectura/escritura y por ello no puedes pasarlas como parámetros de otras funciones.

// Saludos