Funkcja zwracająca wielowymiarową tablicę dynamiczną

Odpowiedz Nowy wątek
2011-08-24 19:24
0

mam taki kod:

type T2DArray = array of array of string;
 
function getFieldsAsArray(): T2DArray;
var DArray: array of array of string;
 
begin
        SetLength(DArray, 1, 3);
        DArray[0,0]:='Jacek';
        DArray[0,1]:='Placek';
        DArray[0,2]:='Pankracek';
        result := DArray;
end;

Wywala to błąd pt. 'Incompatybile types: 'T2DArray' and 'Dynamic array'

Czemu? :(

Aha, już wiem: chodzi o poprawny zapis result := T2DArray(Darray); - niemniej gdyby komuś chciało się po krotce wytlumaczyc czemu tak jest, to bede zobowiazany - JacekKw 2011-08-24 19:34

Pozostało 580 znaków

2011-08-24 19:48
var
darray:T2Array;

Tak też będzie działać.

Dlaczego Ci nie działa?
Bo array zawsze się różni od innego arraya, nie ważne czy są takie same. Dla kompilatora to jest co innego - on się nie męczy w dokładne porównywanie.
Tak samo jest z rekordami, obiektami, klasami itd. (ale w przypadku klas i obiektów jest dziedziczenie).


Nie pisz do mnie PM o czymś co nie dotyczy bezpośrednio mnie. | Nie rozmawiaj ze mną jeśli brak Ci kultury (wystarczy że mi brakuje) | Nie jestem zły, jestem po prostu zły.
dzięki :) - JacekKw 2011-08-24 19:55

Pozostało 580 znaków

2011-08-24 21:59
0

za bardzo kombinujesz

type T2DArray = array of array of string;
 
function getFieldsAsArray(): T2DArray;
begin
        SetLength(Result, 1, 3);
        Result[0,0]:='Jacek';
        Result[0,1]:='Placek';
        Result[0,2]:='Pankracek';
end;

- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij
SetLength(Result, 1, 3); - przyznam, że nie znałem tego. myślałem że może mieć tylko 2 argumenty i zawsze forem jechałem (jak w C++) - krwq 2011-08-24 22:06
W artykułach 4p jest tylko ta pierwsza SetLength wyjaśniona. O drugim sposobie więcej tutaj: http://www.delphibasics.co.uk/RTL.asp?Name=SetLength - Opi 2011-08-24 23:20

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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