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 18-11-2013
elmago00 elmago00 is offline
Miembro
NULL
 
Registrado: ago 2013
Posts: 86
Poder: 11
elmago00 Va por buen camino
Unhappy Eliminar salto de linea de TStrings

Hola,
estoy desarrollando un programa simple en el cual incluye una funcion para pasar un TStrings a un memo, el problema es que siempre hace el salto de linea, llevo 3 dias en esto, ya intente esto clubdelphi.com/foros/showthread.php?t=21324
no funciona, lo he modificado de varias maneras, me dice "Acess Violation" pero nada, uso XE3 mi programa es en Firemonkey.
gracias por responder.
Responder Con Cita
  #2  
Antiguo 18-11-2013
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Estimado sería tan amable de escribir algo de código para intentar visualizar cual sería su problema...Como dice alguien por aquí "La bola de cristal esta fallando..."
Responder Con Cita
  #3  
Antiguo 18-11-2013
elmago00 elmago00 is offline
Miembro
NULL
 
Registrado: ago 2013
Posts: 86
Poder: 11
elmago00 Va por buen camino
lo siento mi conexion a internet no es muy buena,
como dije antes me dice Invalid Pointer o Acess Violation, esto me tiene de algo impotente, pues es algo simple lo se, pero a mi no me funciona, por algo que quiza no eh visto.
lo que hago es buscar archivos y luego guardar el resultado, funciona perfecto, pero al pasar el memo siempre salta de linea.

aqui utilizo esto clubdelphi.com/foros/showthread.php?t=21324 este me dice Acess Violation

var:Listado2:TStrings; lista3:TStrings;

begin
lista:= TStringList.Create;
Listado2:= TStringList.Create;
BuscarArchivos4(carpeta, '*.exe', faAnyFile, lista3);
Listado2:=lista3;

//aqui hago el preceso segun el ejemplo anterior

lista4.free;
Listado2.free;

despues use este pero tampoco me funciona clubdelphi.com/foros/showthread.php?t=84303

tambien use este

{:Elimina los saltos de línea de un TStrings.
Elimina los saltos de línea (caracteres #10 y #13; salto de linea y salto
de carro) de un TStrings.
@param Strs TStrings del que se desean eliminar los caracteres
@param CharReplace Caracter a sustituir
}
function QuitarSaltosLinea(Strs: TStrings; CharReplace:String=STR_EMPTY):String;
var
Str:string;
begin
Str := AnsiReplaceStr(Strs.Text, #10, CharReplace);
Result := AnsiReplaceStr(Str, #13, CharReplace);
end;

y hasta el mas simple

ShowMessage(TStringsToString(Listado2));

todos me dice acces violation o invalid pointer. en otras ocasione me muestra el memo en blanco, lleno de lineas pero en blanco


"si tienes la bola de cristal pásamela por favor, así no quiebro el cerebro" jejeej
Responder Con Cita
  #4  
Antiguo 18-11-2013
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Amigo

Código Delphi [-]
var
      Lista3:TStrings;
begin
       //Talvez el procedimiento no está creando el objeto Lista3

       BuscarArchivos4(Carpeta, '*.cod', faAnyFile, Lista3);

       //Verifica que el objeto este creado...
       If Assigned(Lista3) Then
       begin
              Lista3.Text:=QuitarSaltosLinea(Lista3,'');
              Showmessage(Lista3.Text);
              Lista3.free;
       end;
end;
Responder Con Cita
  #5  
Antiguo 18-11-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
elmago00,

Cita:
Empezado por elmago00
...una funcion para pasar un TStrings a un memo...
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}

procedure TForm1.Button1Click(Sender: TObject);
var
   i : Integer;
   S : TStrings; // StringList : TStringList;

begin

   S := TStringList.Create;

   for i := 0 to 10 do
      S.Add('Text-' + IntToStr(i));

   for i := 0 to 10 do
      Memo1.Text := S.Text;

   S.Free;   

end;

end.
El código anterior permite pasar la información de un TStrings a un TMemo.

Espero sea útil

Nelson.
Responder Con Cita
  #6  
Antiguo 18-11-2013
elmago00 elmago00 is offline
Miembro
NULL
 
Registrado: ago 2013
Posts: 86
Poder: 11
elmago00 Va por buen camino
cloayza
tu codigo funciona bien en ShowMessage, pero al pasarlo al memo, lo muestra en blanco, esta lleno pero en blanco, lo pase a una varable string, y lo guarde a un .txt y lo muestra en blanco, pero lleno.

estoy probando el tuyo ahora [nlsgarcia]

por cierto los archivos a leer son 2000 y el nombre de cada uno tiene 10 letras, por lo que no se si el problema sea ese, pues son 20000 caracteres.

veo que solo guarda y muestra hasta 5000 caracteres, cuando leo mas los muestra lleno y en blanco a la vez, esto me rompe la cabeza. es la primera vez que veo esto asi. no es mi memoria, pues hice uno en vb.net y otro en java y funcionan bien leen 350000 lineas
Responder Con Cita
  #7  
Antiguo 18-11-2013
elmago00 elmago00 is offline
Miembro
NULL
 
Registrado: ago 2013
Posts: 86
Poder: 11
elmago00 Va por buen camino
[nlsgarcia]
acabo de probar el tuyo y sigue igual, en el showmesage con salto de linea funciona pero al memo, lo muestra repleto pero en blanco. y siempre hace salto de linea

esto me tiene desesperado ya. son 13 horas al dia pegado al computador, y no le veo por donde. solo los puedo hacer mostrar en el memo o variables con salto de linea. auxilio.

gracias a los dos por sus respuestas
Responder Con Cita
  #8  
Antiguo 18-11-2013
elmago00 elmago00 is offline
Miembro
NULL
 
Registrado: ago 2013
Posts: 86
Poder: 11
elmago00 Va por buen camino
señores anuncio mi futuro retiro. no puede ser que no le encuentre solución a esto de "variable llena pero en blanco"
como desarrollador es la primera vez que me veo tan impotente.
en fin creo que alguna vez se pierde, saludos a todos y gracias por haberme ayudado.
Responder Con Cita
  #9  
Antiguo 18-11-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
elmago00,

Cita:
Empezado por elmago00
...acabo de probar el tuyo y sigue igual, en el showmesage funciona pero al memo, lo muestra repleto pero en blanco...
Esta es la salida que obtengo con el código del Msg #5 en Delphi 7 sobre Windows 7 Professional x32:



Pregunto:

1- ¿Esto es lo que requiere tu programa?

2- De no ser así, ¿Puedes detallar con un ejemplo como quieres que quede formateada la información?

Espero sea útil

Nelson.
Responder Con Cita
  #10  
Antiguo 18-11-2013
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Cita:
Empezado por elmago00 Ver Mensaje
cloayza
tu codigo funciona bien en ShowMessage, pero al pasarlo al memo, lo muestra en blanco, esta lleno pero en blanco, lo pase a una varable string, y lo guarde a un .txt y lo muestra en blanco, pero lleno.
Entonces las lines de código que bienen a continuación no estan realizando bien el trabajo...

Incluye el código completo para ver que hay...

Saludos...
Responder Con Cita
  #11  
Antiguo 18-11-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
elmago00,

Cita:
Empezado por elmago00
...señores anuncio mi futuro retiro...
Cita:
Empezado por elmago00
...una funcion para pasar un TStrings a un memo...uso XE3 mi programa es en Firemonkey...
Revisa este código:
Código Delphi [-]
unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Rtti, System.Classes,
  System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs,
  FMX.StdCtrls, FMX.Layouts, FMX.Memo;

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

var
  Form1: TForm1;

implementation

{$R *.fmx}

procedure TForm1.Button1Click(Sender: TObject);
var
   i : Integer;
   S : TStrings; // StringList : TStringList;

begin

   S := TStringList.Create;

   for i := 0 to 10 do
      S.Add('Text-' + IntToStr(i));

   for i := 0 to 10 do
      Memo1.Text := S.Text;

   S.Free;

end;

end.
El código anterior permite pasar la información de un TStrings a un TMemo en Delphi XE4 con FireMonkey HD en una máquina virtual VMWare con Windows 7 Professional x32, como se indica en la siguiente imagen:



Espero sea útil

Nelson.
Responder Con Cita
  #12  
Antiguo 18-11-2013
elmago00 elmago00 is offline
Miembro
NULL
 
Registrado: ago 2013
Posts: 86
Poder: 11
elmago00 Va por buen camino
aqui el codigo fuente un simple ejemplo
prueba.rar
Responder Con Cita
  #13  
Antiguo 18-11-2013
elmago00 elmago00 is offline
Miembro
NULL
 
Registrado: ago 2013
Posts: 86
Poder: 11
elmago00 Va por buen camino
recuerden quiero eliminar el salto de linea, pero soporte gran cantidad de nombre de archivos por ejemplo 20000 nombres, siempre solo puedo ver todo el valor de la variable pero son salto, y eso es lo que no quiero.
Responder Con Cita
  #14  
Antiguo 18-11-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
elmago00,

Cita:
Empezado por elmago00
...quiero eliminar el salto de línea...
Pregunto: ¿Puedes detallar con un ejemplo como quieres que quede formateada la información?.

Espero sea útil

Nelson.
Responder Con Cita
  #15  
Antiguo 18-11-2013
elmago00 elmago00 is offline
Miembro
NULL
 
Registrado: ago 2013
Posts: 86
Poder: 11
elmago00 Va por buen camino
quiero el directorio mas el nombre del archivo. asi como aparece en la lista, pero sin el salto de linea,funciona perfecto con 825 direcciones de archivos, pero no puedo leer mas de eso, si lo hago aparece todo en blanco y quiero leer 5000 cadenas.
Responder Con Cita
  #16  
Antiguo 18-11-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola elmago00.

Creo que nlsgarcia se refiere a como deseas la salida en el memo, si es:
Código:
C:\Windows\System32\tasklist.exe
C:\Windows\System32\Taskmgr.exe
...
O si deseas eliminar todos los saltos de línea:
Código:
C:\Windows\System32\tasklist.exeC:\Windows\System32\Taskmgr.exe
...
Es decir que grafiques con un ejemplo como deseas el resultado en el memo.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #17  
Antiguo 19-11-2013
elmago00 elmago00 is offline
Miembro
NULL
 
Registrado: ago 2013
Posts: 86
Poder: 11
elmago00 Va por buen camino
tal como tu lo pones en el segundo ejemplo, eliminar todos los saltos de linea y en lugar de hacer el salto que aparezca un espacio entre ellos. eso lo consigo pero repito solo 825 direcciones de ficheros, mas no puedo pues en el memo me aparece en blanco, al igual que cualquier variable a donde deseo enviar la información. solo funciona bien en showmessage, 5000 diferentes direcciones sin salto de linea, pero no lo asi, sino que en el memo.

Última edición por elmago00 fecha: 19-11-2013 a las 00:05:43.
Responder Con Cita
  #18  
Antiguo 19-11-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
elmago00,

Cita:
Empezado por elmago00
...tal como tu lo pones en el segundo ejemplo, eliminar todos los saltos de linea y en lugar de hacer el salto que aparezca un espacio entre ellos...
Cita:
Empezado por ecfisa
...Creo que nlsgarcia se refiere a como deseas la salida en el memo...
Es correcto ecfisa, gracias

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;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function RemoveCRLF(S1 : TStrings) : String;
var
   i : Integer;
   S2 : String;

begin

   for i := 0 to S1.Count -1 do
   begin

      if Pos(#13,S1.Strings[i]) <> 0 then
         StringReplace(S1.Strings[i],#13,'',[rfReplaceAll]);

      if Pos(#10,S1.Strings[i]) <> 0 then
         StringReplace(S1.Strings[i],#13,'',[rfReplaceAll]);

       S2 := S2 + S1.Strings[i] + ' ';

   end;

   Result := S2;

end;

procedure TForm1.Button1Click(Sender: TObject);
var
   i : Integer;
   S : TStrings; // StringList : TStringList;

begin

   S := TStringList.Create;

   for i := 0 to 10 do
      S.Add('Text-' + IntToStr(i));

   Memo1.Text := RemoveCRLF(S);

   S.Free;

end;

end.
El código anterior elimina los caracteres de CR y LF de los strings contenidos en un TString y los sustituye por un espacio en blanco, asignando la salida resultante a un TMemo, como se muestra en la siguiente imagen:



Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 19-11-2013 a las 00:24:04.
Responder Con Cita
  #19  
Antiguo 19-11-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por elmago00 Ver Mensaje
...eliminar todos los saltos de linea y en lugar de hacer el salto que aparezca un espacio entre ellos...
Hola.

Entonces proba de este modo:
Código Delphi [-]
procedure DeleteCRLF(TS: TStrings);
begin
  TS.Text := StringReplace(TS.Text, #$D#$A, #$20, [rfReplaceAll]);
  TS.Text := StringReplace(TS.Text, #$D#$A#$D#$A, #$20, [rfReplaceAll]);
end;

Ejemplo de uso:
Código Delphi [-]
  DeleteCRLF(Memo1.Lines);

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #20  
Antiguo 19-11-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
elmago00,

Continuación del Msg #18:

La correcta definición de la función RemoveCRLF es la siguiente:
Código Delphi [-]
function RemoveCRLF(S1 : TStrings) : String;
var
   i : Integer;
   S2 : String;

begin

   for i := 0 to S1.Count -1 do
   begin

      if Pos(#13,S1.Strings[i]) <> 0 then
         StringReplace(S1.Strings[i],#13,'',[rfReplaceAll]);

      if Pos(#10,S1.Strings[i]) <> 0 then
         StringReplace(S1.Strings[i],#10,'',[rfReplaceAll]);

       S2 := S2 + S1.Strings[i] + ' ';

   end;

   Result := S2;

end;
Espero sea útil

Nelson.
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
Eliminar cadena con salto de linea Miguel89 Varios 3 25-04-2011 01:20:20
Parsear caracter una linea desde TStrings.... namtaxonlabs Varios 0 07-12-2010 20:01:51
Eliminar los "saltos de línea" de un TStrings.Text Neftali [Germán.Estévez] Trucos 0 08-06-2006 16:57:56
Eliminar salto de linea de una cadena pablomg8 Varios 2 13-05-2005 15:35:44
salto de linea bolofe Varios 2 24-04-2005 17:30:19


La franja horaria es GMT +2. Ahora son las 13:39:30.


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