rozne typy danych w jednej zmiennej

0

Wiatm

tworze klase ktora w zaleznosci od parametru przeczyta ze strumienia
1,2 lub 4 bajty i zamieni je odpowiednio na zmienna typu byte, word lub single.

Chcialbym zeby ta klasa miala pole WARTOSC w ktorym bylaby owa zmiennna.
Nie chce uzywac typu variant. jak moznaby to rozwiazac?
Macie jakies pomysly?

0

"mam problem. mam jego proste rozwiązanie, ale nie chcę go użyć."
w czym przeszkadza ci variant? przecież zapewnia dokładnie to czego potrzebujesz.

0

Możesz spróbować z właściwościami. Powiedzmy że twój obiekt będzie posiadał obiekt wartość typu TWartość która zwraca albo bajt albo słowo, albo podwójne słowo np.


TWartosc = class(TObject)
private
  FZmienna : DWORD;
  function GetAsByte : Byte;
  function GetAsWord : Word;
  function GetAsDword : Dword;
public
  property AsByte : Byte read GetAsByte;
  property AsWord : Word read GetAsWord;
  property AsDword : Dword read GetAsDword;
end;

  function TWartosc.GetAsByte : Byte;
  begin
    result := Byte(FZmienna);
  end;

  function TWartosc.GetAsWord : Word;
  begin
    result := Word(FZmienna);
  end;

  function TWartosc.GetAsDword : Dword;
  begin
    result := Dword(FZmienna);
  end;

Taki obiektik wkłądasz do głównego obiektu i zależnie co chcesz pobrać to odwołujesz się:


  TGlownyObiekt = class(TObject)

  war : TWartosc;

  end;

  //i odwołanie np.

  i := war.AsByte;  

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