Procedura nie widzi globalnej tablicy

Procedura nie widzi globalnej tablicy
KA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 701
0

Witam
pojawił się w moim projekcie nieoczekiwany problem. Posiadam zmienna globalna:

Kopiuj
 
var
mapa:array of array of integer

Ustawiam jej wielkość w onCreate formy oraz wypełniam danymi. Mój problem polega na tym, że wszystkie procedury widzą tablice i mogą ją obsługiwać jednak kiedy wywołuje nową, którą stworzyłem otrzymuje komunikat:

Kopiuj
 Access violation at address.. Read of address..

Problem pojawia się we fragmencie:

Kopiuj
 if mapa[col,row]=0 then

Sprawdziłem, w momencie błędu col=1 a row=0, z tym, że mapa jest pusta(!). Nie wiem dlaczego. Sprawdziłem w pozostałych procedurach i wszystkie widzą mapę bez problemu. Nigdzie też nie czyszczę mapy i jej nie likwiduje.

Wszystkie procedury są przypisane do TForm1. Nie wiem czy to istotne ale procedura pokazująca błąd jest wywoływana z innej procedury.

Wiecie może dlaczego mógł pojawić się taki problem?

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
3
Kopiuj
if Length(mapa)<=col then ShowMessage('Wyłażę poza zakres wiersza')
else if Length(mapa[col])<=row then ShowMessage('Wyłażę poza zakres kolumny')
else if mapa[col][row]=0 then
flowCRANE
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Tuchów
  • Postów: 12272
2

A tak dla ścisłości, to ten komunikat:

Access violation at address.. Read of address..
nie jest związany z widocznością macierzy, a z grzebaniem po pamięci do niej nie należącej; Staraj się rozumieć komunikaty kompilacji, zamiast radośnie je przeklejać na forum.

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.