|
|
t0mek pisze:
Najważniejsze jest jednak w tym wszystkim pytanie - po co to wszystko?
Przerabiam pewną funkcję, która z tego korzysta, na metodę klasy. Samo
absolute w tym wypadku służy do rzutowania tablicy 4 bajtów na LongInta
(bo wcześniej do obliczeń wygodniejsze były bajty, a dalej już longinty
są równie wygodne, a zawsze 4 razy szybsze).
Absolute jest dosyć eleganckie, ale jak się nie da to trudno.
IMHO jest raczej nieeleganckie, to taka kalka z C.
możesz sobie zrobić
type
TIntRecord = record
case Integer of
0: (P: array[1..4] of Byte);
1: (H: Longint);
end;
TCos = class
Pole: TIntRecord;
function Nic: Byte;
end;
function TCos.Nic;
begin
Pole.H := 1024;
Result := Pole.P[1]
end;
W ten sposób definiujesz na początku, że Twoja dana jest raz taka, raz
taka. Wszystko jest jasne, czytelne i eleganckie, struktura danych
odpowiada rzeczywistości. Oczywiście w konkretnym przypadku nazwy
zmiennych powinny być bardziej znaczące.
Alternatywnie możesz użyć pointerów jak sugerował Andrzej.
Tygrys
|
|