Navegación
-
Servicios
-
Noticias
- Microsoft extiende el downgrade a Windows XP hasta el 2020
- Opera sumó la protección de AVG a su browser
- Un hombre dice ser dueño del 84% de Facebook
- Se descubre un buffer overflow en la versión de desarrollo de PHP6
- Google lanza una nueva beta de Chrome y es hasta un 35% más rápida
- Ya salio Ubuntu 10.04 LTS
- Digital Sky Technologies le compra ICQ a AOL
- Microsoft habla de la falta de soporte para Windows XP en la Wave 4
- 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 29 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 ayer a las 00:39 por última vez.
Ha publicado 34 artículos en clubdesarrolladores con un promedio de valoración de 7.63 puntos. Puedes visitar su sitio web en http://www.clubdesarrolladores.com
Estadísticas
- Leido 1604 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