Ver Mensaje Individual
  #1  
Antiguo 28-09-2006
Uoha Uoha is offline
Registrado
 
Registrado: sep 2006
Posts: 3
Reputación: 0
Uoha Va por buen camino
Cargar/Guardar un objeto de una clase propia

Hace un par de meses que empecé con este bello lenguaje, y me estuve quemando las pestañas de diversas formas pero sin poder solucionar este problema. Por lo que entendí lo que estoy haciendo está bien, pero no lo convenzo al programa, que sigue sin hacer lo que yo quiero
Este es el código que tengo escrito
Código Delphi [-]
unit PruebaExport;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls, PruebaExport2;
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormActivate(Sender: TObject);
  private
  public
  end;
var
  Form1: TForm1;
  F:Finanzas;
  S : TFileStream;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
  f:=finanzas.Create(self);
  F.Integrantes := 10;
  F.Banda := 20;
  F.Coordinador :=30;
  F.Agente := 40;
  F.Porcentaje := true;
  S := tfilestream.Create('C:\archivo',fmCreate);
  s.Write(F,100);
  showmessage(f.todo);
  f.Free;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
S : TFileStream;
begin
  s := TFileStream.Create('C:\archivo',fmOpenRead);
  f := finanzas.Create(self);
  s.Read(F,100);
  s.Free;
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
  showmessage(F.Todo);
end;
end.

Código Delphi [-]

unit PruebaExport2;
interface
uses
  SysUtils, Classes;
type
  TIO = class(TDataModule)
  private
  public
  end;
  
  Finanzas = class(Tcomponent)
  function Todo:string;
  public
    Integrantes,Banda,Coordinador,Agente : Single;
    Porcentaje : boolean;
  end;

var
  IO: TIO;

implementation
{$R *.dfm}

function Finanzas.Todo: string; // Muestra las variables.
begin
  if porcentaje = true then
  result := floattostr(integrantes) + '  ' + floattostr(coordinador)
        + '  ' + floattostr(banda) + '  ' + floattostr(agente) + ' Sí'
  else
  result := floattostr(integrantes) + '  ' + floattostr(coordinador)
        + '  ' + floattostr(banda) + '  ' + floattostr(agente) + ' No';
end;
end.

Para probarlo:
  1. Comento la parte que lee el archivo
  2. Compilo
  3. Clickeo el botón (se guarda la información, sale el messagebox)
  4. Cierro el programa
  5. Descomento lo que comenté
  6. Compilo
  7. Me sale el msgbox con todos valores '0'. Si saco 'F := finanzas.create;' en la parte de lectura, el message box inicial me da unos números rarísimos...
¿Qué estoy haciendo o escribiendo mal?
Muchas gracias
Responder Con Cita