case of w record, takie pytanko

0

witam :D
kto mi powie o co chodzi z takimi rekordami, i do czego można wykożystywać takie cuda?

ULARGE_INTEGER = record
    case Integer of
    0: (
      LowPart: DWORD;
      HighPart: DWORD);
    1: (
      QuadPart: LONGLONG);
  end;

i jakie plusy daje dodanie słowa <font color="red">packed</span> (czytałem gdzieś, że zaoszczędza pamięć kompa)
miał bym prośbe aby może ktoś zechciał to wniklwiej opisać? :D

0

Po prostu rekord może sie zachowywac róznie w zależności co do niego przypiszesz (np. inny rodzaj zmiennej), natomiast do czego to komu potrzebne to nie wiem :P.
Co do packed record - rekordy są zawsze wyrównywane do granicy słowa (word, 16-bit); aby uzyskać wyrównywanie jak w TP trzeba użyć 'packed record' lub dyrektywy {$PACKRECORDS 1}. Wyłączenie wyrównywania spowolni dostęp do danych, może nie działać na procesorach innych niż x86.
[http://www.google.pl -> http://sfp.afraid.org/pod/tp2fpc/]

0

kto mi powie o co chodzi z takimi rekordami, i do czego można wykożystywać takie cuda?

ULARGE_INTEGER = record
    case Integer of
    0: (
      LowPart: DWORD;
      HighPart: DWORD);
    1: (
      QuadPart: LONGLONG);
  end;

jest to rekord ze zmienną cześcią, czyli dostosowuje typy zmiennych w zależności do tego co im przypiszesz. możesz np. zrobić rekord ze zmienną cześcią, którego pole bedzie mogło zawierać dane typu string lub integer albo nawet char - w zależności od implementacji oraz tego jakie później dane przypiszesz do pola.

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