Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-03-2010
Avatar de Carmelo Cash
Carmelo Cash Carmelo Cash is offline
Miembro
 
Registrado: jul 2003
Ubicación: Buenos Aires
Posts: 261
Poder: 21
Carmelo Cash Va por buen camino
Mal Memo y retorno de Carro al final.

Hola foro:

El problema es el siguiente: Escribo en un memo, por ejemplo:

AAAAAAAAAAAA
BBBBBBBBBBBB
CCCCCCCCCCCC

Pero después de CCCCCCCCC "no aprieto [Enter]",entonces el texto queda así:

AAAAAAAAAAAA
BBBBBBBBBBBB
CCCCCCCCCCCC| <- Con el cursor ahí !!!.


Ahora bién, luego en la rutina de impresión se imprime perfecto.

El promlema es que si edito ese registro, al traer el texto y cargralo en el Memo me queda así:

AAAAAAAAAAAA
BBBBBBBBBBBB
CCCCCCCCCCCC
| <- Con el cursor ahí !!!.

O sea que le agrega un retorno de carro al final, y cada vez que lo cargo se agrega un retorno de carro. Puedo borrar todos los que se agreguen menos el último.

¿Cómo puedo eliminar este retorno de carro que se agrega al final?

Más abajo les muestro cómo hago para grabar y leer.

Desde ya muchas gracias por su atención.

Para guardar un memo hago lo siguiente:

Código Delphi [-]
procedure TF_Periodos.Guardo_Modificacion;
var
MS1 : TMemoryStream;
begin
  MS1 := TMemoryStream.Create;
  try
    Memo1.Lines.SaveToStream(MS1);
    with D_Periodos.Q_Update do begin
      ParamByName('P_OBSERVACIONES1').LoadFromStream(MS1,ftBlob);
      ExecSQL;
    end;
  finally
    ms1.Free;
  end;
end;


Para Leer hago:

Código Delphi [-]
 Memo1.Lines.Clear;
 Memo1.lines.Add(D_Periodos.Q_Periodo.FieldByName('OBSERVACIONES1').AsString);

Estoy utilizando Delphi 7 + InterBase.
Responder Con Cita
  #2  
Antiguo 05-03-2010
BrunoBsso BrunoBsso is offline
Miembro
 
Registrado: nov 2009
Ubicación: Berisso, Buenos Aires, Argentina
Posts: 239
Poder: 15
BrunoBsso Va por buen camino
Siempre que agregues algo a un TMemo se va a agregar un renglón vacío, para permitirte agregar otro elemento.
Una solución bastante simple que te puedo ofrecer es:
Código Delphi [-]
procedure TStrListToListBox(StrList:TStringList; var LB:TListBox);
var
  I:Integer;
begin
  for I := 0 to StrList.Count-1 do
    LB.Items.Append(StrList.Strings[i]);
end;

procedure GetMemoSinVacios(Memo:TMemo; var L:TStringList);
{ESTE PROC SE ENCARGA DE CREAR LA LISTA Y AGREGAR TODOS LOS ELEMENTOS
 SIN AGREGAR EL ELEMENTO FINAL QUE SERÍA UN RENGLÓN VACÍO}
var
  I:Integer;
begin
  L:=TStringList.Create;
  for I := 0 to Memo.Lines.Count-1 do
    L.Add(Memo.Lines.Strings[i]);
end;

procedure TForm1.Button1Click(Sender: TObject);
{ESTE PROC USA UN MEMO1 PARA CARGAR DATOS Y LOS DEVUELVE EN UN
 LISTBOX1 USANDO EL PROC GetMemoSinVacios}
var
  L:TStringList;
begin
  GetMemoSinVacios(Memo1,L);
  TStrListToListBox(L,ListBox1);
end;
Espero que se entienda y te sirva.
Puede ser que haya mejores soluciones, pero yo siempre utilizo esto para ese problema.
Saludos!

Última edición por BrunoBsso fecha: 05-03-2010 a las 06:57:54. Razón: Mal algunos comentarios
Responder Con Cita
  #3  
Antiguo 05-03-2010
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola Carmelo, prueba esto:

Código Delphi [-]
  Aux := Memo1.Text;
  Delete(Aux, Length(Aux)-1, 2);
  Memo1.Text := Aux;
  Memo1.SelStart := Length(Memo1.Text);
  Memo1.SetFocus;

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #4  
Antiguo 05-03-2010
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Carmelo Cash Ver Mensaje
¿Cómo puedo eliminar este retorno de carro que se agrega al final?
Es curioso, a mi no me sucede esto de la línea en blanco extra . En todo caso, también puedes intentar esto:

Código Delphi [-]
Memo1.Text := TrimRight(Memo1.Text);

Con esto quitarás cualquier espacio en blanco al final, lo que incluye, tabuladores y retornos de carro.

// Saludos
Responder Con Cita
  #5  
Antiguo 06-03-2010
Avatar de Carmelo Cash
Carmelo Cash Carmelo Cash is offline
Miembro
 
Registrado: jul 2003
Ubicación: Buenos Aires
Posts: 261
Poder: 21
Carmelo Cash Va por buen camino
Listo. Gracias

Utilicé la solucion propuesta por Caro y quedó 10 puntos.

La propuesta de Roman también funciona, pero no te permite dejar renglones en blanco al final si así deseas hacerlo.

Gracias Bruno, Caro y Roman.
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
Memo y retorno de carro. Carmelo Cash OOP 2 01-08-2008 15:31:33
retorno de carro sergio17 Varios 3 25-07-2006 17:17:42
Como eliminar el Retorno de Carro al final de un TString gluglu Varios 5 15-05-2006 17:24:03
Posicion del Retorno de Carro gluglu Varios 3 17-04-2006 19:09:57
retorno de carro empty Varios 3 14-05-2004 10:21:39


La franja horaria es GMT +2. Ahora son las 13:07:19.


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