Ver Mensaje Individual
  #3  
Antiguo 03-10-2013
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Reputación: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
jonydread,

Cita:
Empezado por jonydread
...stringlist quitar salto de linea de items...
Revisa este código basado en la solución propuesta en el Msg #2:
Código Delphi [-]
unit Unit1;

interface

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

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

var
  Form1: TForm1;

implementation

{$R *.dfm}

function DeleteLineBreaks(const S: String): String;
var
   Source, SourceEnd : PChar;

begin

   Source := Pointer(S);
   SourceEnd := Source + Length(S);

   while Source < SourceEnd do
   begin

      case Source^ of
         #10 : Source^ := #32;
         #13 : Source^ := #32;
      end;

      Inc(Source);

   end;

   Result := S;

end;

procedure TForm1.Button1Click(Sender: TObject);
const
   DELIM = ' - ';
   CRLF = #13 + #10; // Retorno de Carro y Salto de Línea

var
   AuxText : String;
   StrList : TStringList;
   i : Integer;

begin

   // Instancia un StringList
   StrList := TStringList.Create;

   // Carga una muestra de 10 valores de ejemplo con Retorno de Carro y Salto de Línea cada uno.
   for i := 0 to 9 do
      StrList.Add('Item ' + IntToStr(i) + CRLF);

   // Carga cada valor individual del StringList en un String
   for i := 0 to 9 do
      AuxText :=  AuxText + StrList.Strings[i];

   // Muestra los items (Uno en cada línea por el CRLF)
   ShowMessage(AuxText);

   // Elimina el CRLF y adiciona un delimitador
   AuxText := EmptyStr;
   for i := 0 to 9 do
      AuxText :=  AuxText + Trim(DeleteLineBreaks(StrList.Strings[i])) + DELIM;

   // Elimina el delimitador sobrante del último item
   SetLength(AuxText, Length(AuxText) - Length(DELIM));

   // Muestra los items uno al lado del otro separados por el delimitador
   ShowMessage(AuxText);

   // Elimina de Memoria el StringList
   StrList.Free;

end;

end.
El código anterior muestra la forma de generar valores en un TStringList con un Retorno de Carro y Salto de Línea y luego eliminar el mismo adicionando un separador entre los elementos a visualizar.

Nota: Se asume que el problema planteado en el Msg #1 se debe a un CRLF que forma parte de cada elemento del TStringList.

Espero sea útil

Nelson.
Responder Con Cita