Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как передать в поток TThread двумерный дин. массив, не принимает массив. Ругается на память 
V
    Опции темы
Desperate
Дата 8.11.2018, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 11.10.2006

Репутация: нет
Всего: -1



Собственно вопрос:

Создал простой поток, который должен использовать двухмерный массив 
mas:array of array of integer;

массив инициализируется на главной форме и передается в поток.

В поток передаю так же размеры массива.

Но тут ругается на память.

поток:

....
 protected
    procedure Execute(); override;
  public

    ThSizeRow:integer;  //Передаем размерность строк
    ThSizeCol:integer;  //Передаем размерность столбцов
    pMas : array of array of integer; //массив
    ThResult:TStrings;

  end;

....

Как правильно передать и использовать двухмерный массив в потоке?





PM MAIL   Вверх
Hiori
Дата 9.11.2018, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 29.3.2016

Репутация: нет
Всего: нет



Код

type
   TMyArray = array of array of Integer;
   PMyArray = ^TMyArray;

и потом в поток передавайте ссылку на массив, передавать его размерность - вообще излишек, для этого есть функции low и high
PM MAIL   Вверх
Desperate
Дата 11.11.2018, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 11.10.2006

Репутация: нет
Всего: -1



Вопрос решен после прочтения бааальшой и подробной статьи про указатели
Про указатели в Delphi

Собака была зарыта в том что массив инициализировал и наполнял обработчике кнопки, там же он был описан. Точнее его описание локальным массивом  и сыграло злую шутку. Поток стартует, но при этом не приостанавливает выполнение команд процедуры создавшей поток. Как следствие потоку передал указатель и тут же стер массив из памяти. Вынес описание массива в глобальные переменные все отлично заработало.


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1267 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.