Wskaźnik na tablicę

0

mam kilka tablic statycznych tego samego typu.

lista_elementy : array[0..MAX_LISTA] of temp_list;
lista_Naleznosci : array[0..MAX_LISTA] of temp_list;  

i teraz chciałbym mieć przypisaną jedną jako aktywną. więc próbuję zadeklarować wskaźnik na tablicę i pod ten wskaźnik przypisać aktualną tablicę

type PTRarray = array[0..MAX_LISTA] of temp_list;
var ktora_tablica : PTRarray

a później w kodzie próbuję przypisać do tej zmiennej wskaźnikowej adres odpowiedniej tablicy:

ktora_tablica := ^lista_elementy[0];

ale mimo różnych kombinacji nie udało mi się tego prawidłowo zrobić.
Jak to powinno być zrobione?

1
My Razem napisał(a):

a później w kodzie próbuję przypisać do tej zmiennej wskaźnikowej adres odpowiedniej tablicy:

ktora_tablica := ^lista_elementy[0];

Do pobrania adresu służy operator @ lub intrinsic Addr:

ktora_tablica := @lista_elementy[0];

// lub

ktora_tablica := Addr(lista_elementy[0]); // fuj, lepszy operator @

Konstrukcja której użyłeś, stosowana jest do deklaracji typu wskaźnikowego i tylko do tego celu. Przykład:

type
  TFoo = array [0 .. 9] of Integer;
  PFoo = ^TFoo; // Wymagany jest identyfikator typu danych.

Tak więc operator ^ służy do deklaracji typu wskaźnikowego, a także do dereferencji wskaźników. Poczytaj troszkę na temat wskaźników, bo to z czym masz problem dotyczy podstaw. ;)

0
const
  MAX_LISTA = 100;

type
  myArray = array [0 .. MAX_LISTA] of string;
  pLista = ^myArray;

procedure TForm1.Button1Click(Sender: TObject);
var
  lista_elementy: myArray;
  lista_Naleznosci: myArray;
  lLista: pLista;
begin
  lLista := @lista_elementy;
  lLista[0] := 'abcd';
  lLista := @lista_Naleznosci;
  lLista[0] := '1234';
  self.Memo1.Lines.Add(lista_elementy[0]);
  self.Memo1.Lines.Add(lista_Naleznosci[0]);
end;

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