| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Как передать в поток TThread двумерный дин. массив |
| Автор: Desperate 8.11.2018, 23:27 |
| Собственно вопрос: Создал простой поток, который должен использовать двухмерный массив mas:array of array of integer; массив инициализируется на главной форме и передается в поток. В поток передаю так же размеры массива. Но тут ругается на память. поток: .... protected procedure Execute(); override; public ThSizeRow:integer; //Передаем размерность строк ThSizeCol:integer; //Передаем размерность столбцов pMas : array of array of integer; //массив ThResult:TStrings; end; .... Как правильно передать и использовать двухмерный массив в потоке? |
| Автор: Hiori 9.11.2018, 09:28 | ||
и потом в поток передавайте ссылку на массив, передавать его размерность - вообще излишек, для этого есть функции low и high |
| Автор: Desperate 11.11.2018, 12:10 |
| Вопрос решен после прочтения бааальшой и подробной статьи про указатели https://www.transl-gunsmoker.ru/2009/09/blog-post.html Собака была зарыта в том что массив инициализировал и наполнял обработчике кнопки, там же он был описан. Точнее его описание локальным массивом и сыграло злую шутку. Поток стартует, но при этом не приостанавливает выполнение команд процедуры создавшей поток. Как следствие потоку передал указатель и тут же стер массив из памяти. Вынес описание массива в глобальные переменные все отлично заработало. |