Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #9  
Antiguo 06-04-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola jularaXD.

Mas allá del tamaño de tu arreglo en memoria (50000*6*11 = 33.14713 Mb), podría suceder que mas adelante se les ocurra pedirte que obtengas el valor de una monitorización de un año atrás... Entonces tendrás para manejar 397,69 Mb aprox.

Como sugirió Lepe, lo podes gestionar de manera sencilla usando listas dinámicas como en este esbozo al vuelo:
Código Delphi [-]
...
uses contnrs;

type
  TStr10 = string[10];
  TClase = class
    v: array[0..5] of TStr10;
  end;

var
  List: TObjectList;

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
  C: TClase;
begin
  List:= TObjectList.Create;
  for i:= 0 to 100 do
  begin
    C:= TClase.Create;
    C.v[0]:= 'cero';
    C.v[1]:= 'uno';
    C.v[2]:= 'dos';
    c.v[3]:= 'tres';
    c.v[4]:= 'cuatro';
    c.v[5]:= 'cinco';
    List.Add(TObject(C));
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  col,row: Integer;
  s: string;
begin
  for row:= 0 to 100 do
  begin
    s:= IntToStr(row)+') ';
    for col:= 0 to 5 do s:= s + TClase(List[row]).v[col] + ',';
    SetLength(s,Length(s)-1);
    ListBox1.Items.Add(s);
  end;
end;
...
también con un árbol binario de búsqueda o un arreglo de apuntadores, cada una con sus pros y contras. Estas soluciones han sido (y son), usadas como las mejores en los procesamientos de arreglos casi vacíos, vg.: planillas de cálculo.

O también,como sugirió duiliosola, mediante un archivo de acceso directo :
Código Delphi [-]
unit Directo;

interface

type
  TStr10     = string[10];
  TDataClass = class
  private
    FData    : array[0..5] of TStr10;
    FFileName: string;
    function  GetDatos(Index: Integer): TStr10;
    procedure SetDatos(Index: Integer; const Value: TStr10);
    function  GetSize: Integer;
  public
    property  FileName: string read FFileName write FFileName;
    property  Data[Index: Integer]: TStr10 read GetDatos write SetDatos; default;
    procedure Open;
    property  Size: Integer read GetSize;
    procedure ReadData(const Posic: Integer);
    procedure SaveData(const Posic: Integer);
    procedure AppendData;
    procedure Close;
    //...
  end;

implementation

uses SysUtils;

type
  TRegData = packed record
    VData: array[0..5] of TStr10;
  end;
  TFileReg = file of TRegData;

var
  RegData : TRegData;
  FileReg: TFileReg;

procedure TDataClass.Open;
begin
  if FFileName = EmptyStr then
    raise Exception.Create('Falta el nombre de archivo');
  AssignFile(FileReg, FFileName);
  try
    Reset(FileReg);
  except
    Rewrite(FileReg);
  end;
end;

function TDataClass.GetDatos(Index: Integer): TStr10;
begin
  Result:= FData[Index];
end;

procedure TDataClass.SetDatos(Index: Integer; const Value: TStr10);
begin
  FData[Index]:= Value;
end;

function TDataClass.GetSize: Integer;
begin
  Result:= FileSize(FileReg);
end;

procedure TDataClass.ReadData(const Posic: Integer);
begin
  if Posic >= Size then
    raise Exception.Create('Índice fuera de rango');
  Seek(FileReg, Posic);
  Read(FileReg, RegData);
  Move(RegData.VData, FData, SizeOf(FData));
end;

procedure TDataClass.SaveData(const Posic: Integer);
begin
  if Posic >= Size then
    raise Exception.Create('Índice fuera de rango');
  Move(FData, RegData.VData, SizeOf(RegData.VData));
  Seek(FileReg, Posic);
  Write(FileReg, RegData);
end;

procedure TDataClass.AppendData;
begin
  Move(FData, RegData.VData, SizeOf(RegData.VData));
  Seek(FileReg, FileSize(FileReg));
  Write(FileReg, RegData);
end;

procedure TDataClass.Close;
begin
  CloseFile(FileReg);
end;
//...
end.

Pero en términos de simpleza, fiabilidad y escalabilidad pienso que almacenar esos valores de monitorización como campos de una tabla de una base de datos tampoco es mala idea.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
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
Stack Overflow Guillermo80 Varios 10 01-06-2008 21:41:36
stack overflow juan francisco Varios 6 28-05-2008 22:26:15
Stack overflow aonarres API de Windows 5 29-02-2008 13:07:11
Stack Overflow agonzalez Varios 5 08-12-2006 22:26:46
Stack Overflow Mariana Varios 14 30-10-2003 11:37:47


La franja horaria es GMT +2. Ahora son las 07:06:39.


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
Copyright 1996-2007 Club Delphi