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
Ir a la versión completa