Navegación
-
Servicios
-
Noticias
- jQuery 1.4.2 Released
- Emulación de pseudo clases y selectores en IE
- Google lanza la primera versión 4.0 estable de Chrome para Windows
- Baidu gana el juicio contra IFPI
- Opera agrega soporte para CSS3 transiciones y transformaciones 2D
- Microsoft teme a OpenOffice y toman medidas
- Netbeans 6.8 listo para descargar
- Google borró una extensión para Chrome que permitía descargar videos desde YouTube
- Todas las noticias
-
Artículos
-
Descargas
-
Últimos 10 usuarios
-
Usuarios Top
-
Sitios recomendados
Web social
Clase vector dinámico (Array dinámico)
Publicado por Administrador el 12/05/2009 en Delphi - Nivel Básico
Tabla de contenidos
La tabla de contenidos pertenece al artículo completo y no al contenido parcial de cada página del mismo si fuese el caso.
Resúmen
Explicación y ejemplo. Modo de uso. Clase vector dinámico escrito en object pascal.
Sobre el autor
Administrador tiene 28 años, vive en Argentina / Santa Fe / Santa Fe y su ocupación es Desarrollador de aplicaciones web.
Forma parte del club desde el 29/07/2007 habiendo estado en linea hace 2 días a las 22:56 por última vez.
Ha publicado 32 artículos en clubdesarrolladores con un promedio de valoración de 7.87 puntos. Puedes visitar su sitio web en http://www.clubdesarrolladores.com
Estadísticas
- Leido 1111 veces
- Valorado 8.00 puntos
La siguiente clase modela un vector de reales de tamaño variable.
Clase TVector
unit uVector;
interface
type
TDato = Real;
TArrayInt = array[0..0] of TDato;
PArrayInt = ^TArrayInt;
TVector = class
private
UnArray: PArrayInt;
Fn: integer;
function GetValor(indice: integer): TDato;
procedure SetValor(indice: integer; const Value: TDato);
public
constructor Create(n:integer);overload;
destructor Destroy;override;
procedure NewSize(n:integer);
property Valor[indice:integer]:TDato read GetValor write SetValor;default;
end;
implementation
{ TVector }
constructor TVector.Create(n: integer);
var
i:integer;
begin
inherited Create;
Fn:=n;
{Reserva memoria para el array}
GetMem(UnArray, Fn * SizeOf(TDato));
for i := 0 to Fn - 1 do
UnArray^[i] := 0;
end;
destructor TVector.Destroy;
begin
{Liberamos la memoria utilizada al terminar con el array}
FreeMem(UnArray, Fn * SizeOf(TDato));
inherited Destroy;
end;
function TVector.GetValor(indice: integer): TDato;
begin
if (indice >=0) and (indice < Fn) then
Result:=UnArray^[indice]
else
Result:=0;
end;
procedure TVector.NewSize(n: integer);
begin
Fn:=n;
ReAllocMem(UnArray, Fn * SizeOf(TDato))
end;
procedure TVector.SetValor(indice: integer; const Value: TDato);
begin
if (indice >=0) and (indice < Fn) then
UnArray^[indice]:=Value;
end;
end.
Modo de uso
Y asi podemos utilizarlo:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
function Tiempo:string;
implementation
uses uVector;
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
Caption:=Tiempo;
end;
function Tiempo:string;
var
freq, start, stop: TLargeInteger;
lapsoStr: string;
Vector:TVector;
begin
QueryPerformanceFrequency(freq);
QueryPerformanceCounter(Start);
{ aquí va el código a medir el tiempo de ejecución }
Vector:=TVector.Create(1000000);
Vector.Destroy;
QueryPerformanceCounter(Stop);
// lapsoStr := FloatToStr(round((Stop-Start)/freq)); //en segundos
lapsoStr := FloatToStr(round((Stop-Start)/freq*1000)); //en milisegundos
Result:=lapsoStr
end;
end.
Como puede verse se agregaron rutinas para calcular el tiempo de ejecución y tener una idea de cuanto tarda en ejecutarse.
Si tiene alguna pregunta sobre éste artículo por favor deje un comentario y será respondido.
Descargas
No existen descargas asociadas
Comentarios
Sus comentarios son importantes.
Listado de comentarios
No hay comentarios para listar, si desea puede crear el primer comentario para este artículo.
Agregar un comentario
Debe estar identificado para agregar un comentario
delicio.us
Google Bookmark
Technorati
Twitthis
Meneame
Yahoo My Web
Fresqui
Enchilame