Programación General > Pascal

 Tdas Eficiencia En Uso De Momoria.

(1/1)

Ocean Soul:

--- Código: Text --- Unit tdaAlgo;Type  PtrArlgo=^Sth;  Sth=Record      A:Ta;      B:Tb;      …      End;  TAlgo=ptrAlgo; Procedure CrearAlgo(VAR A:TALGO);Begin  A:=Nil;End; Procedure CargarAlgo(var A:Talgo);Begin  NEW(A);  With A^ do  Begin……    …End;End;  
De esta se hace mas eficiente el uso de memoria, pues la asignación de memoria de esta estructura, solo se efectúa cuando se CargarAlgo(var A:algo), y no simplemente por declarar una variable A:TAlgo, en la cláusula VAR un programa que usa la unidad, que es lo que sucedería si no se usa un puntero. Esto es cierto, no? Pero… que pasa cuando…
Program UsetdaAlgo;
Uses tdaAlgo;
Type
   Archivo=file of TAlgo*;
Var
Arch:Archivo;

*Porque pascal permite cualquier tipo salvo un archivo... entonces que guarda en el archivo?? Supongo que lo que lo que esta guardado en la dirección de memoria de A. Entonces que pasa?????????

Enko:
Las variables tipo archivos son una especie de punteros!
cuando haces>
Assign(F, "direccion");
lo que haces es hacer que el puntero apunte hacia la direccion del disco duro donde se encuentra el primer byte del archivo.

lo mismo que lo tuyo pero encapsulado en un objeto

--- Código: Text --- type  TObject = object  private     FValue: ^Integer;  public    procedure SetValue(const Value: Integer);    function GetValue: Integer;    constructor Create;    destructor Destroy;   end; { TObject }constructor TObject.Create;begin   New(FValue);end; destructor TObject.Destroy;begin   FValue := nil;end; function TObject.GetValue: Integer;begin   GetValue := FValue^;end; procedure TObject.SetValue(const Value: Integer);begin    FValue^ := Value;end; var  Item: TObject; begin   Item.Create;   Item.SetValue(5);    Write(Item.GetValue);   Item.Destroy;   ReadLn;end.  
Abajo lo mismo pero encapsulado con POO en Delphi (m'as bonito)

--- Código: Text --- type  TObject = class  private    FValue: ^Integer;    procedure SetValue(const Value: Integer);    function GetValue: Integer;  public    property Value: Integer read GetValue write SetValue;    constructor Create;    destructor Destroy;   end; { TObject }constructor TObject.Create;begin  New(FValue);end; destructor TObject.Destroy;begin   FValue := nil;end; function TObject.GetValue: Integer;begin   GetValue := FValue^;end; procedure TObject.SetValue(const Value: Integer);begin    FValue^ := Value;end;  var  Item: TObject; begin   Item := TObject.Create;   Item.Value := 5;    Write(Item.Value);   ReadLn;end.  

Navegación

[0] Índice de Mensajes

Ir a la versión completa