Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.09.12;
Скачать: [xml.tar.bz2];

Вниз

Передача двумерного массива методу объекта...   Найти похожие ветки 

 
$HiC0   (2002-09-02 18:48) [0]

У меня есть много классов, раскиданных по модулям, в главной программе
объявив переменную главного класса который в качестве полей включает
в себя объекты остальных классов запускаю программу на выполнение.
Все вроде нормально, возникла необходимость что-бы матрица полученная в результате
деятельности методов одного из объектов попадала в другой для вывода...
Если-бы надо-было шлепать все на определенную форму проблем не было-бы,
добавляешь метод который выводит все что ты наработал
Но так как мне необходими что-бы отображение шло на StringGrid
формы вызывающего модуля, то приходится делать новый обхъект с методом для
отображения... в общем не буду долго разглогольствовать.. посмотрите пожалуйста
Вот примерная конструкция... все лишние классы исключил, оставил, по моему мнению
все что может пригодиться...


type
TMatrix =array of array of Integer;

TKB=class(TComponent)
Private
PatCount : Integer;
ActCount : Integer;
EstCount : Integer;
Procedure SetPatCount(PatCount_:Integer);
Procedure SetActCount(ActCount_:Integer);
Procedure SetEstCount(EstCount_:Integer);
Public
FReal_Matrix : Array of Array of Array of Integer;
FMatrix : TMatrix;
Constructor Create(AOwner:TComponent);override;
Procedure SaveData;
Procedure ExportMatrix;
Property Patterns : Integer read PatCount write SetPatCount;
Property Actions : Integer read ActCount write SetActCount;
Property Estemates : Integer read EstCount write SetEstCount;

TViz_KB=class
Private
FTable : TStringGrid;
Public
Constructor Create(ATable:TStringGrid);
Procedure ShowMatrix;
End;


Вот чего я делаю


Var
Pattern : Integer;
Action : Integer;
Estemation : Integer;
Matrix : TMatrix;

Constructor TKB.Create(AOwner:TComponent);
Begin
inherited Create(AOwner);
SetPatCount(Pat);
SetActCount(Act);
SetEstCount(Est);
SetLength(FReal_Matrix,Pat,Act,Est);
SetLength(FMatrix,Pat,Act);
End;

Procedure TKB.SaveData;
Begin
Inc(FReal_Matrix[Pattern][Action][Estemation]);
If FReal_Matrix[Pattern][Action][Estemation]>=Porog then Begin
FReal_Matrix[Pattern][Action][Estemation]:=Porog; //Дабы избежать переполнения
FMatrix[Pattern][Action]:=Estemation;
End;
ExportMatrix;
End;

Procedure TKB.ExportMatrix;
Begin
Matrix:=FMatrix;
End;


Ну тут все работает как надо... В FMatrix сидит моя матрена и не рыпается,
дальше делаю вот что:


Constructor TViz_KB.Create(ATable:TStringGrid);
Begin
inherited Create;
FTable := ATable;
End;


ATable - Соответсвенно опредляется в основном модуле строчкой

VizKB :=TViz_KB.Create(MatrixG);

Где MatrixG это StringGrid


Procedure TViz_KB.ShowMatrix;
Var i,j : integer;
Begin
For i:=0 to Pat do
For j:=0 to Act do
Begin
FTable.Cells[i,j]:=IntToStr(Matrix[i,j]); ---< RUntime Error
End;
End;


Я не понял почему. Matrix вроде задан, все работает верно...
Стоит и все... может я что-то не то со StringGridom делаю
Да нет, вроде все то что надо, проверял через FTAble менял цвета баловался,
все работало... а вот что-то с матрицой не хочет...
Ошибка: Аксес виолатион по адресу такому-то...

Помогите плиз... вроде все что может пригодится для совета я привел, даже много лишнего.. так что очень расчитываю на помощь.


 
McSimm   (2002-09-02 18:56) [1]

Разбираться подробно не стал. Проверь для начала такое
For i:=0 to Pat - 1 do
For j:=0 to Act - 1 do


 
$hiC0   (2002-09-02 19:17) [2]

Оба-ну не туп-ли я? :) Как я сам не додумался :) Блован литой :)
Спасибо McSimm. Большое спасибо :) Все заработало :)



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.09.12;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.006 c
14-35872
Driverrr
2002-08-17 17:48
2002.09.12
RxLib


1-35727
Yaro
2002-08-31 06:18
2002.09.12
Прорисовка при скроллинге в StringGrid e


4-35963
Flashx
2002-07-22 03:57
2002.09.12
КАК ЧИТАТАТЬ EXEшник????


4-35969
Groove
2002-06-07 15:02
2002.09.12
Alt+Ctrl+Del


1-35723
Борис
2002-09-02 09:22
2002.09.12
Защитить программу от множественного запуска по сети?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский