Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Copiado Datos de la Pantalla (https://www.clubdelphi.com/foros/showthread.php?t=73386)

ASAPLTDA 17-04-2011 23:30:40

Copiado Datos de la Pantalla
 
buenas Tardes,
Estoy interesado en copiar datos (Texto) que se esta mostrando en la pantalla pero quiero seleccionar una parte de ellos no por reglon si no por una parte de ellos
Ejemplo
codigo cliente orden producto descripcion producto cantidad
-------- -------- ------ ---------- -------------- --------- ------------
0001 pedro 001 codigo1 descrip 1 aaa 10
002 juan 001 codigo 2 descripcion bbbb 15

Quisiera seleccionar la parte del codigo y la parte de la cantidad los otros campos no serian de interes, el formato cambia de posiciones dependiendo quien envia la informacion y a veces aunque la envie el mismo cambia.

Podrian darme alguna sugerencia? He visto algunos post pero se trata de graficas yo lo quiero de un texto

gracias

ecfisa 17-04-2011 23:46:19

Hola ASAPLTDA.

¿ Donde se está mostrando el texto, en qué componente ?
¿ Los datos tienen un tamaño fijo, algún separador o forma de identificarlos ?

Un saludo.

ASAPLTDA 18-04-2011 17:14:40

Ampliar Requerimiento
 
Cita:

Empezado por ecfisa (Mensaje 397427)
Hola ASAPLTDA.

¿ Donde se está mostrando el texto, en qué componente ?
¿ Los datos tienen un tamaño fijo, algún separador o forma de identificarlos ?

Gracias por tu atencion
Los datos son de longitud fija venir en un archivo de texto (.txt) o en un archivo de excel o copiados de una emulacion de un sistema as400 .

la idea seria copiar una fracion de los datos
si vienen 10 registros (10 Reglones) poder copia 10 reglones las posiciones 2 al 7 y de los mismos reglones las posiciones 10/16 , asi el operador evitaria copiar los datos.
Para el caso son remisiones que vienen de un documento impreso como archivo de texto, viene cabeceras, pies de pagina, detalles y comentarios las idea es copiar partes de los detalles. en mi caso son los codigos y las cantidades

ecfisa 18-04-2011 18:54:55

Hola ASAPLTDA.

Supongamos que el tamaño de la columna código es de 4 caracteres y el tamaño máximo que puede alcanzar la columna cantidad es de 6 caracteres.
Si se respeta el formato que pusiste en el primer post, sólamente tendrías que copiar los campos de aquellas líneas que empiezan con un dígito,
ya que las cabeceras empiezan por los caracteres 'c' y '-'.
Todo esto basándome en que los campos tienen una longitud fíja, que es el dato que no me especificas.

Te pongo un ejemplo que incluye un Memo (donde está el texto recibido) y dos ListBox donde se almacenan código y cantidad respectivamente:
Código Delphi [-]
uses StrUtils;
const
  NCODIGO  = 4;
  NCANTIDAD = 6;

procedure GetCodCant(Lineas,Cod,Cant: TStrings);
var
  i: Integer;
begin
  for i:= 0 to Lineas.Count -1 do
  begin
    if Lineas[i][1] in ['0'..'9'] then
    begin
      Cod.Add(Copy(Lineas[i],1,NCODIGO));
      Cant.Add(RightStr(Lineas[i],NCANTIDAD));
    end;
  end;
end;

Llamada:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  GetCodCant(Memo1.Lines, ListBox1.Items, ListBox2.Items);
end;


Un saludo.


La franja horaria es GMT +2. Ahora son las 17:40:22.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi