problem z tablicami

DM
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 176
0

Zawsze jeśli chcę nadać wartość którejś z części tabeli, to wyskakuje "access violation</I>. Podam przykład:

Kopiuj
var tablica : array of HWND;
     Edit      : HWND;
begin
  Edit := CreateWindow(parametry);
  tablica[0] := Edit;
end;
pq
  • Rejestracja: dni
  • Ostatnio: dni
0

Bosh!!!

Tablica dynamiczna jaką stworzyłeś ma długość 0. Uzyj SetLength(tablica, dlugosc) by ustawić żądaną długość. Ja bym też unikał nazywania zmiennej typy HWND 'Edit', żeby nie było konfuzji* z kontrolką edycyjną.

*konfuzji czytającego człowieka, nie kompilatora

endrique
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
0

lub od razu podaj jej długość np. array[100] of .....

berl
  • Rejestracja: dni
  • Ostatnio: dni
0

lub od razu podaj jej długość np. array[100] of .....

No, tak najlepiej. Od razu zarezerwuj sobie 1Gb pamięci na tablicę, a co!!

jack
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Sosnowiec
  • Postów: 390
0

W zasadzie kolega pq udzielił już odpowiedzi, ja tylko wrzucę mały kodzik:

Kopiuj
var 
  tablica: array of HWND;
  hEdit: HWND; // nazwa Edit jest nieco myląca
begin
  hEdit := CreateWindow(<i>parametry</i>);

  // zwiększenie rozmiaru tablicy dynamicznej tablica o 1
  SetLength(tablica, Length(tablica) + 1);

  // zapisanie w ostatnim elemencie tablicy tablica wartości hEdit
  tablica[Length(tablica) - 1] := hEdit;
end;
  • Rejestracja: dni
  • Ostatnio: dni
0

1 GB pamięci ? 100HWND = 10032B = 3200B = 3,125 KB - trochę daleko od gigabajta.

Deti
  • Rejestracja: dni
  • Ostatnio: dni
0

Mimo wszystko.. tablice z góry deklarowane na wartość "na pewno" większą niż maksymalna jaką oczekujemy to głupota...

endrique
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
0

Litości, ludzie, czepiacie się szczegółów. Chciałem żeby było prościej i obrazowo, a liczba 100 jest przypadkowa. Tymbardziej że w pytaniu było "co zrobić żeby nie wyskakiwał błąd". No ale fakt że lepiej dynamicznie to robić.

pq
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
 // zapisanie w ostatnim elemencie tablicy tablica wartości hEdit
  tablica[Length(tablica) - 1] := hEdit;
end;

Jak już sie tak bawimy w elegancję, to lepiej

Kopiuj
tablica[High(tablica)]:=hEdit;
flabra
  • Rejestracja: dni
  • Ostatnio: dni
0

A jeśli bawimy sie w nieuzywanie jakichkolwiek funkcji to:

tab[cardinal(pointer(cardinal(tab)-4)^)-1]

samo :

cardinal(pointer(cardinal(tab)-4)^)

jest rownowazne z length(tab)

// ale tylko dla tablic dynamicznych lub ansi/widestringów

//flabra nie strasz młodzieży :-) pq

// No co? Przeciez to normalne elementy języka :> I podstawowa powinność programisty: poznać budowe struktur danych :d

DM
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 176
0

Wcześniej nie używałem ich ;) teraz będę wiedział na przyszłość.. :>

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.