rozne typy danych w jednej zmiennej

rozne typy danych w jednej zmiennej
Johny_Morfina
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 448
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?

ŁF
  • Rejestracja: dni
  • Ostatnio: dni
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.

  • Rejestracja: dni
  • Ostatnio: dni
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.

Kopiuj

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ę:

Kopiuj

  TGlownyObiekt = class(TObject)
  
  war : TWartosc;

  end;

  //i odwołanie np.

  i := war.AsByte;  

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.