Navegación
-
Servicios
-
Noticias
- Google, Facebook y Twitter planean una original protesta
- Adiós Dennis Ritchie
- Muere Steve Jobs
- Cierra Bizarre Creations
- No habrá más Ubuntu Netbook Edition
- Cómo es el Internet Explorer 9 que será lanzado el lunes
- Impulsan una baja del costo de Internet
- Software argentino: ¿"niña bonita" de la economía local?
- Sex.com se vendió en u$s 13 millones
- Google puso fin al misterio de Batman
- Todas las noticias
-
Artículos
-
Descargas
-
Últimos 15 usuarios
-
Usuarios Top 15
-
Sitios recomendados
Web social
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
Gastón tiene 30 años, vive en Argentina / Santa Fe / Santa Fe y su ocupación es Desarrollador de aplicaciones web.
Forma parte del club desde 19/10/2009 a las 20:52 habiendo estado en linea hace 4 días a las 00:18 por última vez.
Ha publicado 47 artículos en clubdesarrolladores con un promedio de valoración de 7.87 puntos. Puedes visitar su sitio web en http://www.devstudios.com.ar
Estadísticas
- Leido 3879 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