2016-07-11 2 views
0

У меня есть старая программка с переменной:Как работать с массивом типа (TList, класс) с Delphi7

Modul : array[1..4] of array[0..5] of array[1..3] of TModul; 

Я могу хранить модули в списке:

procedure Test; 
var 
    List: TList; 
    PModul: Pointer; 
begin 
    PModul := Addr(Modul); 
    List:= TList.Create; 
    List.Add(PModul); 
    //... 
    List.Free; 
end; 

но как я могу прочитать элемент из списка

? := Modul[x,y,z].MeasValue.Value[i]; 

из списка?

И как я могу передать Modul в функции/процедуры, как это:

TTest=class(TObject) 
    private 
    FModul: TModul; 
    function GetModul: TModul; 
    procedure SetModul(const Value: TModul); // it isnt't work 
    public 
    property Modul: TModul read GetModul write SetModul; 
end; 

так, что я могу работать с моим Modul и TObjectList?

Заранее спасибо.

+0

Этот код, вероятно, не будет работать, так как 'Addr (Modul)' относится к тому же каждый раз, когда, например. Вероятно, вам нужно использовать динамическое распределение. Или динамические массивы. Если вы хотите ввести многомерное индексирование в список, вы должны перенести это на себя. Не зная, почему вы хотите изменить код, который, по-видимому, работает, как мы можем посоветовать вам наилучший курс? –

+0

Спасибо за ваш ответ. Я должен сохранить несколько измерений, чтобы работать с ними позже, например: удалить один, показать некоторые в stringgrid, сохранить. Я подумал в этом случае о списке, поэтому мой подход. Один modul = один \t Измерение – genakust

+0

Возможно, вы хотите использовать динамический массив, но это очень сложно сказать. Мы даже не знаем, что такое «TModul». Я не думаю, что кто-нибудь может дать вам хороший совет без каких-либо реальных подробностей. –

ответ

Смежные вопросы