Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Insertar o borrar en un string de un Tstringlist (https://www.clubdelphi.com/foros/showthread.php?t=80296)

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

Insertar o borrar en un string de un Tstringlist
 
Hola:

quiero insertar una cadena dentro de un string perteneciente a un Tstringlist. Lo hago asi:
Código Delphi [-]
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...

Código Delphi [-]
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

Cita:

Empezado por Anel Hernandez (Mensaje 443296)
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


La franja horaria es GMT +2. Ahora son las 07:29:04.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi