Witam,
musze stworzyc liste tablic - przy uzyciu TList, bo najwygodniej. W przypadku odczytu danych z listy ktore sa pojedyncze lub nawet sa rekordami, nie ma problemu. Wskaznik na zmienna/rekord a potem Lista.Items[index]^. Ale musze stworzyc liste tablic. Wiem jak ustawic sie na tej tablicy i odczytac pierwszy element tablicy - dodanie do listy tej tablicy ustawia sie przeciez na pierwszym elemencie. Ale jak mam sie dostac do pozostalych elementow tablicy?
pozdrawiam
Zadeklaruj typ danych dla listy np.
type
TMyItem = array of Integer;
potem zrob klase z identycznym wygladem co TList (nie dziedzcz TList). Oczywisce zmien typ z Pointer na TMyItem np.
type
TMyArrayList = class
private
FList: TList;
function GetItem(): TMyItem;
procedure SetItem(Index: Integer; const Item: TMyItem);
public
...
property Item[Index: Integer]: TMyItem read GetItem write SetItem; default;
end;
teraz chyba wiesz oco mi lata :P
potem uzywasz to poprastu
MyArrayList[ItemIndex][IndexInArray]
powinno latac :P
albo ja juz nichce ci sie robic klasy mozesz zrobic to bardziej skomplikowanie :P
np.
TMyItem(MyArrayList[ItemIndex])[IndexInArray]
choc moim zdaniem lepiej zrobic klase i potem sie nie przejmowac.
Jak nie rozumiesz to napisz wytlumacze lepiej :P.
sasio napisał(a)
albo ja juz nichce ci sie robic klasy mozesz zrobic to bardziej skomplikowanie :P
np.
TMyItem(MyArrayList[ItemIndex])[IndexInArray]
choc moim zdaniem lepiej zrobic klase i potem sie nie przejmowac.
Jak nie rozumiesz to napisz wytlumacze lepiej :P.
Wiem, ze lepiej zrobic klase, ale po pierwsze nie ma chyba az takiej potrzeby, bo jedyne co ja bede potrzebowal, to dodawanie danych do listy i pobieranie ich, a po drugie czaje idee, co napisales, ale czuje, ze nie poradzilbym sobie z ta klasa :P
Jesli mozesz, to wyjasnij dokladniej druga metode. Bo wydaje mi sie, ze ja zostosowalem, ale nie do konca dziala (kompiluje) :P
dzieki ;)
Gdyz mam takie cos:
Buffer : array of string;
BufferList : TList;
...
Dodaje dane do tablicy:
Buffer[index] := 'jakies dane';
i do listy:
BufferList.Add(Buffer);
No i teraz sie sypie przy odczycie:
zm_typu_string := Buffer(BufferList[0]^)[0]
[Error] TB_main.pas(181): Missing operator or semicolon
Mniemam ze nie chodzi o zaden srednik ;)</b>
usun znak ^
edit: aha jak rzutujesz to na typ a nie na zmienna :-/
Ok, dziala :)
Wystarczylo zrobic cos takiego:
type
strArray = array of string;
a potem juz:
tmpstr := strArray(BufferList[0])[0];
dzieki sasiu ;) [browar]