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

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 30-06-2015
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
Anel Hernandez,

Cita:
Empezado por Anel Hernandez
...copiar parte de un TStringList a otro...quisiera saber como hacerlo mas rápido...


Pregunto:

1- ¿Tienes un problema concreto con los tiempos de copia?

2- ¿Que versión de Delphi y Windows utiliza tu aplicación?.

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)
    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
   SL1, SL2 : TStringList;
   i : Integer;
   Frecuencia, ITime, FTime : Int64;
   MSeconds : Int64;

begin

   QueryPerformanceFrequency(Frecuencia);
   QueryPerformanceCounter(ITime);

   SL1 := TStringList.Create;
   SL2 := TStringList.Create;

   SL1.BeginUpdate;
   for i := 1 to 1000 do
      SL1.Add('SL1 Dato-' + IntToStr(i));
   SL1.EndUpdate;

   SL2.BeginUpdate;
   for i := 1 to 1000 do
      SL2.Add('SL2 Dato-' + IntToStr(i));

   for i := 59 to SL1.Count - 1 do
      SL2.Add(SL1.Strings[i]);
   SL2.EndUpdate;

   QueryPerformanceCounter(FTime);

   MSeconds := (FTime-ITime) * 1000000 div Frecuencia;

   MessageDlg(Format('Total tiempo de copia de TStringList : %u Millonésimas de Segundo',[MSeconds]),mtInformation,[mbOK],0);

   SL1.Free;
   SL2.Free;

end;

end.
El código anterior en Delphi 7 sobre Windows 7 Professional x32, Copia parte de un TStringList a otro utilizando los métodos BeginUpdate y EndUpdate para mejorar el performance de la copia, como se puede ver en la siguiente imagen:



Nota:

1- En el tiempo se incluyo la creación y carga de datos de los TStringList para tener un marco referencial de todo el proceso.

2- La muestra de proceso fueron 1000 Strings por cada TStringList.

3- Se copio el 94,10% de los Items de un TStringList a otro (Del 60 al 1000).

4- Los métodos BeginUpdate y EndUpdate mejoraron muy marginalmente el procesamiento de los TStringList, el proceso de por si es muy rápido por lo cual la mejora es apenas evidente.

Espero sea útil

Nelson.
Responder Con Cita
 



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
Borrar una parte de un TStringList eennzzoo C++ Builder 2 28-06-2014 14:04:13
copiar el contenido de un TStringList a TSringGrid GerTorresM Varios 1 02-07-2010 18:38:41
copiar la parte seleccionada de un imagen fasthorse C++ Builder 4 14-05-2008 20:05:03
Copiar parte de la pantalla.... craven Gráficos 2 27-08-2003 22:53:01
Copiar Parte de un BMP a otro craven API de Windows 1 07-07-2003 10:45:34


La franja horaria es GMT +2. Ahora son las 19:39:57.


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