Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.06.2014, 17:16   #1
Armageddets
Форумчанин
 
Регистрация: 30.06.2012
Сообщений: 145
По умолчанию Как передать динамический массив Tbitmap в процедуру

Добрый день, уважаемые эксперты. У меня стоит задача передать массив типа TBitmap в процедуру. В процедуре я пытаюсь его создать и загрузить в него картинки. Ошибок не происходит, но когда я пытаюсь нарисовать на форме картинки из этого массива, то ничего не происходит. Буд-то массви так и не создан.

Процедура у меня такая:
Код:
procedure DownLoadBMP(BMP:array of TBitmap; var Transparent:boolean; Min,Max:integer; Papka:String);
var path:string;
i,j:integer;
begin

path:=ExtractFileDir(Application.ExeName);
path:=path+'\';
if Papka<>'' then Path:=Path+Papka+'\';

  for i:=min to Max do
  begin
  BMP[i]:=TBitmap.Create;
  BMP[i].Width:=64;
  BMP[i].Height:=64;
  if Transparent=true then BMP[i].Transparent:=true else  BMP[i].Transparent:=false;
  BMP[i].LoadFromFile(path+inttostr(i)+'.bmp');
  end;

end;
Я пробовал вариант с обьявлением типа:
procedure DownLoadBMP(var BMP:array of TBitmap; Transparent:boolean; Min,Max:integer; Papka:String);

Также пробовал передавать не динамический массив сюда, тоже ничего. А когда добавляю строку сюда Setlength(BMP,Max+1); Тогда появляется ошибка о несовместимости форматов integer и bitmap;

Вот собственно и вопросс. Каким образом можно сюда передавать массив картинок формата TBitmap; Причем мне не важно динамический это будет или нет массив. Главное чтобы процедура могла сразу весь массив обработать. Если это конечно возможно. Заранее спасибо за ответ.

Последний раз редактировалось Stilet; 21.06.2014 в 20:04.
Armageddets вне форума Ответить с цитированием
Старый 21.06.2014, 18:23   #2
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Массиву длину установил?
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 21.06.2014, 18:36   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Код:
type TArrayOfBitmap = array of TBitmap;

procedure DownLoadBMP(var BMP: TArrayOfBitmap);
begin
  SetLength(BMP,1);
  BMP[0]:=TBitmap.Create;
  ...
end;

var xBMP: TArrayOfBitmap;
    i: Integer;


  DownLoadBMP(xBMP);
...
  for i:=Low(xBMP) to High(xBMP) do xBMP[i].Free;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 21.06.2014, 19:29   #4
Armageddets
Форумчанин
 
Регистрация: 30.06.2012
Сообщений: 145
По умолчанию

Цитата:
Сообщение от саша40 Посмотреть сообщение
Массиву длину установил?
Когда устанавливаю длину через setlength выскакивает ошибка, я же писал в первом сообщении.

Цитата:
Сообщение от Аватар Посмотреть сообщение
Код:
type TArrayOfBitmap = array of TBitmap;

procedure DownLoadBMP(var BMP: TArrayOfBitmap);
begin
  SetLength(BMP,1);
  BMP[0]:=TBitmap.Create;
  ...
end;

var xBMP: TArrayOfBitmap;
    i: Integer;


  DownLoadBMP(xBMP);
...
  for i:=Low(xBMP) to High(xBMP) do xBMP[i].Free;


Аватар, спасибо. Ваш вариант подошел. Когда массив обьявляешь в type как array of TBitmap тогда массив отлично передается в процедуру. Без этого никак.

Последний раз редактировалось Stilet; 21.06.2014 в 20:05.
Armageddets вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как передать динамический массив в поток? bilibian Общие вопросы Delphi 8 28.02.2014 15:22
Передать неинициализированный двухмерный динамический массив в функцию zorg-kirill Общие вопросы C/C++ 3 02.03.2013 19:44
Как передать Динамический массив в функцию? RainCat Помощь студентам 4 13.04.2011 11:25
можно ли передать динамический массив в процедуру "по значению" ? vedro-compota Общие вопросы Delphi 2 05.05.2010 23:11
Как правильно передать через ссылку двумерный динамический массив? amerhant Общие вопросы C/C++ 2 21.04.2010 23:50