Sprawdzanie czy tablica dwuwymiarowa jest pusta

0

Witam wszystkich

Piszę program w Lazarusie operujący na tablicach dwuwymiarowych i mam pytanie: jak mogę sprawdzić czy tablica jest pusta? W sensie jest funkcja, w której tworzę tablicę wg rozmiarów, które się podaje, ale można też wcześniej uruchomić inną funkcję (np. wyświetlającą tą macierz) zanim zdefiniuję jej rozmiar. Wtedy co prawda po prostu nic się nie pojawia, ale inne funkcje już pokazują błąd, dla tego wolałbym przed wykonaniem operacji takiej funkcji sprawdzić czy macierz została stworzona, jeśli nie to przejść do procedury, która ją stworzy.

Próbowałem wpisywać np:

if tablica = 0 then

albo

if tablica = NULL then

niestety to nie działa, niby się kompiluje ale w momencie uruchomienia takiej funkcji wyrzuca błąd: Project ... raised exception class 'External:SIGSEGV'

3

Zakładając, że deklaracja przykładowego typu tablicowego wygląda tak:

type
  TMyArray = array of array of Integer;

sprawdzenie czy jest pusta możesz wykonać porównując zmienną z wartością nil:

var
  MyArray: TMyArray;

{..}

if MyArray = nil then
  // tutaj jest pewne, że macierz jest pusta

Przy czym użyty przez Ciebie Null nie jest zerowym wskaźnikiem, a funkcją zwracającą typ Variant, stąd problem.

0

Działa, dzięki wielkie!
To przy okazji żeby nie robić drugiego tematu: da radę podświetlić lub zaznaczyć jakąś pozycję (np wypisane liczby z takiej tablicy) w konsoli w inny sposób nić używając modułu crt i zmieniając kolor tła bądź samych wyświetlonych danych? Pytam ponieważ ten moduł trochę mi ogranicza wielkość konsoli, a do funkcji Window mogę podać maksymalnie wymiary 255x255, co przy tablicy 10x10 jest trochę za małe bo elementy przechodzą do kolejnej linii zamiast być obok siebie, przez co nie jest to zbyt czytelne. Myślałem o jakieś inwersji kolorów, znaczy się zamiast cyfry białe a tło czarne, to taka pozycja byłaby biała a cyfry czarne. Nie musi to jakoś migać, wystarczy, że będzie się wyróżniać

1

Nie, standardowa obsługa konsoli (bez modułu Crt) ogranicza się do dwóch kolorów - jednego dla tła (zwykle czarnego) oraz drugiego dla tekstu (zwykle białego); Jeżeli potrzebujesz zmienić wygląd konsoli to skorzystaj albo z modułu Crt, albo z innych bibliotek upiększających;

Albo sprawdź sobie w jaki sposób funkcje z modułu Crt zmieniają atrybuty konsoli i napisz własne odpowiedniki.

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