Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-02-2013
ungrande87 ungrande87 is offline
Miembro
NULL
 
Registrado: feb 2012
Posts: 42
Poder: 0
ungrande87 Va por buen camino
Consulta: Como eliminar un de un Widestring??

Estoy trabajando con Delphi 7 y quería saber como eliminar un renglón de un widestring.

La cosa seria mas o menos así supongamos que tenemos:

manzana
naranja
pera
durazno

y quisiera eliminar pera, cosa que cuando lo recorra nuevamente no me aparezca el espacio vació.

Así me aparecía a mi:

manzana
naranja

durazno.

Espero puedan ayudarme. Gracias
Responder Con Cita
  #2  
Antiguo 06-02-2013
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

¿De dónde sale la lista de frutas?
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 06-02-2013
ungrande87 ungrande87 is offline
Miembro
NULL
 
Registrado: feb 2012
Posts: 42
Poder: 0
ungrande87 Va por buen camino
Cita:
Empezado por dec Ver Mensaje
Hola,

¿De dónde sale la lista de frutas?
de un campo memo ej:

var
frutas: widestring;

begin
frutas := TMemo1.Text;
.......
Responder Con Cita
  #4  
Antiguo 06-02-2013
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

La clase TMemo contiene una propiedad llamada Lines la cual es del tipo TString. Conociendo esto, puedes hacer algo como:

Código Delphi [-]
Memo1.Lines.Delete(2); // Borramos la línea con la palabra Pera


Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita
  #5  
Antiguo 06-02-2013
ungrande87 ungrande87 is offline
Miembro
NULL
 
Registrado: feb 2012
Posts: 42
Poder: 0
ungrande87 Va por buen camino
Cita:
Empezado por maeyanes Ver Mensaje
Hola...

La clase TMemo contiene una propiedad llamada Lines la cual es del tipo TString. Conociendo esto, puedes hacer algo como:

Código Delphi [-]
Memo1.Lines.Delete(2); // Borramos la línea con la palabra Pera


Saludos...
Entiendo lo que me decís amigo, pero igual necesito borrarla del widestring no del Memo.
Responder Con Cita
  #6  
Antiguo 06-02-2013
Theluar Theluar is offline
Miembro
NULL
 
Registrado: ago 2011
Posts: 44
Poder: 0
Theluar Va por buen camino
Tu pregunta no esta muy clara

recomiendo usar el metodo de la burbuja es muy comun y sencillo, links(aqui)
Responder Con Cita
  #7  
Antiguo 06-02-2013
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Empezado por maeyanes Ver Mensaje
Hola...

La clase TMemo contiene una propiedad llamada Lines la cual es del tipo TString. Conociendo esto, puedes hacer algo como:

Código Delphi [-]
Memo1.Lines.Delete(2); // Borramos la línea con la palabra Pera


Saludos...
Incluso algo así:

Código Delphi [-]
var
  i : integer;
begin
  for i := Memo1.Lines.Count - 1 downto 0 do
  begin  
    if Memo1.Lines[ i ] = 'Pera' then
      Memo1.Lines.Delete( i );
  end;
end;

Si es que no estoy proponiendo alguna barbaridad...
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #8  
Antiguo 06-02-2013
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Otra pregunta: ¿deseas poder eliminar una de las filas indicando tú su "índice" (0, 1, 2..) o indicando su contenido ('manzana', 'naranja'...)?

Las soluciones que te proponen maeyanes y dec son buenas, siempre que no te importe que la línea en cuestión también sea borrada del Memo.

dec: con IndexOf te ahorras el ciclo for.

Última edición por Al González fecha: 06-02-2013 a las 20:34:21.
Responder Con Cita
  #9  
Antiguo 06-02-2013
ungrande87 ungrande87 is offline
Miembro
NULL
 
Registrado: feb 2012
Posts: 42
Poder: 0
ungrande87 Va por buen camino
Cita:
Empezado por Al González Ver Mensaje
Otra pregunta: ¿deseas poder eliminar una de las filas indicando tú su "índice" (0, 1, 2..) o indicando su contenido ('manzana', 'naranja'...)?

Las soluciones que te proponen maeyanes y dec son buenas, siempre que no te importe que la línea en cuestión también sea borrada del Memo.

dec: con IndexOf te ahorras el ciclo for.
Deseo eliminar una de las filas del widestring ya sea por el indice o contenido me da lo mismo. Gracias a todos los que colaboran.
Responder Con Cita
  #10  
Antiguo 06-02-2013
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Acabo de ver esto:
Cita:
Empezado por ungrande87 Ver Mensaje
[...] necesito borrarla del widestring no del Memo.
No estaría mal que ampliaras un poco tu consulta para entender bien lo que estás buscando.

Tienes la opción de usar las funciones nativas para cadenas de caracteres Pos, Delete y quizá Length. O también usar una lista de cadenas temporal:
Código Delphi [-]
Var
  S :WideString;
begin
  S := Memo1.Text;  // Asignamos el texto de Memo1 a la variable S

  With TStringList.Create Do  // Creamos una lista de cadenas auxiliar
    Try
      Text := S;  // Asignamos el texto de S a la lista de cadenas auxiliar
      Delete (2);  // Eliminamos de la lista auxiliar la tercera línea
      S := Text;  // Asignamos el texto resultante a la variable S
    Finally
      Free;  // Destruimos la lista auxiliar
    End;

  ShowMessage (S);  // Mostramos el resultado de la variable S

Saludos.

P.D. No es un trabajo escolar, ¿verdad?
Responder Con Cita
  #11  
Antiguo 07-02-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
ungrande87,

Cita:
Empezado por ungrande87
Estoy trabajando con Delphi 7 y quería saber como eliminar un renglón de un widestring.
Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

// Elimina una palabra del texto de entrada.
function DeleteWord(Word : string; ListWord : WideString) : string;
var
   StrList : TStringList;
   i : Integer;
begin
   StrList := TStringList.Create;
   StrList.Text := ListWord;
   for i := StrList.Count-1 downto 0 do
      if StrList[i] = Word then
         StrList.Delete(i);
   Result := StrList.Text;
   StrList.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
   AuxStr : WideString;
begin
   AuxStr := Memo1.Text;
   AuxStr := DeleteWord(Memo1.SelText,AuxStr);
   ShowMessage(AuxStr);
   Memo1.SelLength := 0;
end;

end.
El código anterior asigna el texto de un control TMemo a una variable de tipo WideString y por medio de la función DeleteWord elimina un texto seleccionado en la variable mencionada.

Nota: En la función DeleteWord la variable Word representa una línea del control TMemo formada por una o más palabras.

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 07-02-2013 a las 02:37:16.
Responder Con Cita
  #12  
Antiguo 07-02-2013
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is online now
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.289
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por ungrande87 Ver Mensaje
y quisiera eliminar pera, cosa que cuando lo recorra nuevamente no me aparezca el espacio vació.
Me imagino que debes estar eliminando el texto y te debe estar quedando por detrás los caracteres de FINLIEA y SALTOCARRO.
Creo que si eliminas esos 2 caracteres que hay después de la Pera (#13#10) eliminarás también el salto de línea.

Pero tal y como ha comentado alguien, depende de cómo lo estés haciendo. Si pasas el texto a un TStrings, por ejemplo, y eliminas líneas no hará falta; Si la eliminación la estás haciendo como si fuera todo un string seguido, deberás eliminar los caracteres que te comento.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Convertir o pasar WideString a xml o consulta sql marcosPedraza Internet 0 18-05-2012 23:25:05
eliminar un registro de una consulta sql marcoi Varios 2 29-05-2010 00:58:29
Capacidad WideString LauraAS Internet 5 08-11-2007 16:59:54
Eliminar Fila de StringGrid...Consulta BlueSteel Varios 2 07-06-2006 10:47:52
eliminar consulta con ADO JODELSA Conexión con bases de datos 3 06-11-2003 19:19:20


La franja horaria es GMT +2. Ahora son las 19:04:37.


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
Copyright 1996-2007 Club Delphi