Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Eliminar una Linea Memo especificada (https://www.clubdelphi.com/foros/showthread.php?t=88033)

maxzama 06-04-2015 21:50:24

Eliminar una Linea Memo especificada
 
Hola a todos.

Programa:

Delphi XE2

A utilizar:

-Memo

-Boton

Problema:

Necesito eliminar la primera linea o fila del memo en una de las funciones y en otra de las funciones la segunda linea o fila del memo.

Codigo:

E puesto lo siguiente, y claro no a funcionado.

Código Delphi [-]
var 

TT:String;
begin
            TT:=Memo1.Lines[1];
            Memo1.Lines.Delete(TT);
end;

Espero su respuesta por favor y gracias...

ecfisa 06-04-2015 22:03:25

Hola maxzama.
Cita:

Empezado por maxzama (Mensaje 490856)
Necesito eliminar la primera linea o fila del memo en una de las funciones y en otra de las funciones la segunda linea o fila del memo.

Por lo que entendí de lo anterior, sería:
Código Delphi [-]
// primer linea
procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Lines.Delete(0);
end;

// segunda linea
procedure TForm1.Button2Click(Sender: TObject);
begin
  Memo1.Lines.Delete(0); // la 1 pasó a ser 0
end;

Saludos :)

maxzama 06-04-2015 22:18:08

Gracias.

Otra ayuda, como puedo indicar la fila a eliminar, utilizando un edit.

Ejemplo:

// Se que es erroneo, pero lo hago para hacerme enterder.

Codigo:

Código Delphi [-]

1) Memo1.Lines.Delete(Edit61.Text);

O

2) var
TT:Strin;
Begin
      TT:=Edit61.Text;
      Memo1.Lines.Delete(TT);
end;

ecfisa 06-04-2015 22:23:20

Hola maxzama.

Basicamente:
Código Delphi [-]
...
begin
  try
    Memo1.Lines.Delete(StrToInt(Edit1.Text));
  except
    raise Exception.Create('El dato ingresado no es un número entero.');
  end;
end;

Saludos :)

maxzama 06-04-2015 22:30:39

Uff, que cosa.

Asi que el error era. De que no maneja String, sino real. ((si es que se dice asi)).

// Que codigo tan tonto es, pero como te frega la vida sino te sabes las reglas. en este caso del eliminar fila del Memo...

y falto colocar:
Código Delphi [-]
StrToInt(Edit1.Text)

Gracias, nueva-mente.

ecfisa 06-04-2015 22:48:58

Hola maxzama.
Cita:

Empezado por maxzama (Mensaje 490865)
...
Asi que el error era. De que no maneja String, sino real. ((si es que se dice asi)).
...

Solo a modo de aclaración, los índices de las "líneas" de cualquier TStrings, o componente que haga uso de esta clase (Memo, ComboBox, ListBox, ...) son de tipo Integer (entero) no un número real, de allí que usé la función StrToInt.
Cuando se quiere convertir de cadena a punto flotante se debe usar StrToFloat.

Información sobre los tipos de datos que maneja Delphi: Delphi Data Types

Saludos :)

AgustinOrtu 07-04-2015 00:59:48

Para completar lo del maestro ecfisa:

En un form simplemente coloque un TMemo, 2 TButton, un TEdit y un TSpinEdit

Uno de los botones lo llame BtnBuscarBorrar y el otro BtnBorrarPorIndice

Y agregue este codigo en los eventos OnClick

Código Delphi [-]
procedure TForm3.BtnBuscarBorrarClick(Sender: TObject);
var
    i: integer;
    str: string;
begin
    str := Edit1.Text;
    // le pido el indice del string que quiero borrar
    i := Memo1.Lines.IndexOf(str);

    // IndexOf devuelve un entero. Si me devuelve -1 siginifica que no lo encontro
    if i <> -1 then
    begin
        Memo1.Lines.Delete(i);
        ShowMessageFmt('Borrado string %s en la posicion %d', [QuotedStr(str), i]);
    end;
end;

procedure TForm3.BtnBorrarPorIndiceClick(Sender: TObject);
var
    i: integer;
    str: string;
begin
    i := SpinEdit1.Value;

    try
        // puedo acceder por posicion a cada string si quiero
        str := Memo1.Lines[i];
        Memo1.Lines.Delete(i);
        ShowMessageFmt('Borrado string %s en la posicion %d', [QuotedStr(str), i]);
    except on E: Exception do
        ShowMessageFmt('No pude borrar! El error fue:%s %s', [sLineBreak, E.Message]);
    end;
end;

Y en tiempo de diseño agrege en el memo a traves de la propiedad Lines algun texto (cualquier cosa)

El resultado:

1) Apenas ejecuto el programa:




2) En mi memo tengo el string "Borrame!", si en mi edit escribo "Borrame!" y hago click en el boton "Buscar y Borrar":



3) Y si en el SpinEdit indico el indice y hago click en el otro boton:



La franja horaria es GMT +2. Ahora son las 07:45:08.

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