Informacje o zmiennej i recordzie

0

Chciałbym utworzyć procedurę która będzie wpisywała do pliku zawartość rekordu w taki sposób:

type
  TRecord = record
    Nazwa          : ShortString;
    Identyfikator : cardinal;
    Obecnosc      : boolean;
end;

procedure ZapiszRecDoPliku( _rec : pointer );
begin
  //?????
end;

var
   Rec := TRecord;
   
begin
  Rec.Nazwa          := "LESIU_1";
  Rec.Identyfikator := "32572";
  Rec.Obecnosc      := true;
  ZapiszRecDoPliku( @Rec );
end.

W pliku chciałbym otrzymać:

Nazwa( ShortString ) = LESIU_1
Identyfikator( cardinal ) =  32572 
Obecnosc( boolean ) = true

Procedura powinna działać rekordami o różnych strukturach. Jak to zrobić, czy się w ogóle da wykryć co jest wpisane pod rekord?
Czy możliwe jest wyciągnięcie nazwy jego pola i jakiego typu dane pole jest?

0

Musisz stworzyć interfejs z wirtualną metodą do zapisu.
Później tylko dziedziczenie i przeciążenie.

3
  TRecord = class
  private:
     _Nazwa          : String;
     _Identyfikator : Cardinal;
     _Obecnosc      : Boolean;
   published:
     property Nazwa          : String read _Nazwa write _Nazwa;
     property Identyfikator : Cardinal read _Identyfikator write _Identyfikator;
     property Obecnosc      : Boolean read _Obecnosc write _Obecnosc;
   end;

procedure Foo(Obj:TRecord);
var I:Integer;
var PropList:TPropList;
begin
  GetPropList(Obj.ClassInfo,tkProperties, @PropList);
  for i:=Low(PropList) to High(PropList) do
  begin
    ShowMessage(PropList[i].Name + ': ' + PropList[i].PropType^.Name);
  end
end;

Tu więcej: http://www.blong.com/Conferences/BorConUK98/DelphiRTTI/CB140.htm

0

o to chodziło dziękuje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1