Problem z absolute

0

Czy jest mozliwy dostep do zmienych znajdujacych sie w tabeli za pomoca zmiennych nie powiazanych z ta tabela, probowalem uzyc absolute i program sie kompiluje do momentu gdy nie napotka COLORS[1] (wartosci rozne od 0).

Jesli to co wyzej nie jest jasne, to inaczej, zmieniajac np:
COLORS[1] := clBlack
chce aby COLOR_a2 mialo ta sama wartosc co COLORS[1] (ten sam adres w pamieci)

var
  COLORS: array[0..8] of TColor = (clRed, $00C1C1FF, clSilver, $00FFCE9D,
    clLime, $00CCFFCC, clYellow, $00A6D2FF, clWhite);

  COLOR_a1: TColor absolute COLORS[0];
  COLOR_a2: TColor absolute COLORS[1];
  COLOR_a3: TColor absolute COLORS[2];
  COLOR_a4: TColor absolute COLORS[3];
  COLOR_a5: TColor absolute COLORS[4];
  COLOR_a6: TColor absolute COLORS[5];
  COLOR_a7: TColor absolute COLORS[6];
  COLOR_a8: TColor absolute COLORS[7];
  COLOR_a9: TColor absolute COLORS[8];
0

Czy jest mozliwy dostep do zmienych znajdujacych sie w tabeli za pomoca zmiennych nie powiazanych z ta tabela, probowalem uzyc absolute i program sie kompiluje do momentu gdy nie napotka COLORS[1] (wartosci rozne od 0).

Jesli to co wyzej nie jest jasne, to inaczej, zmieniajac np:
COLORS[1] := clBlack
chce aby COLOR_a2 mialo ta sama wartosc co COLORS[1] (ten sam adres w pamieci)

var
  COLORS: array[0..8] of TColor = (clRed, $00C1C1FF, clSilver, $00FFCE9D,
    clLime, $00CCFFCC, clYellow, $00A6D2FF, clWhite);

  COLOR_a1: TColor absolute COLORS[0];
  COLOR_a2: TColor absolute COLORS[1];
  COLOR_a3: TColor absolute COLORS[2];
  COLOR_a4: TColor absolute COLORS[3];
  COLOR_a5: TColor absolute COLORS[4];
  COLOR_a6: TColor absolute COLORS[5];
  COLOR_a7: TColor absolute COLORS[6];
  COLOR_a8: TColor absolute COLORS[7];
  COLOR_a9: TColor absolute COLORS[8];

Może spróbuj

type
  PColor = ^TColor; // nie wiem czy ten typ jest zdefiniowany, więc
    // ta deklaracja to tak na wszelki wypadek :)
var
  COLORS: array[0..8] of TColor = (clRed, $00C1C1FF, clSilver, $00FFCE9D,
    clLime, $00CCFFCC, clYellow, $00A6D2FF, clWhite);

  COLOR_a1: PColor = @COLORS[0];
  // itd.

Piszę z głowy, więc pewnie jest pełno błędów, ale spróbuj ze wskaźnikami (tak jak probowałem pokazać :) )

0

Dziekuje za szybka odpowiedz, metoda w zasadzie dziala ale wymaga troche zmian w kodzie, bo doszedl typ wskaznikowy i w rezultacie dostaje:
Incompatible types: 'TColor' and 'Pointer';

...ale wazne ze dziala, jeszcze raz wielkie DZIEKI!!! :)

0

Nie ma za co :) A co do błedów: może pomoże włączenie dyrektywy {$TYPEDADDRESS On}??

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