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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2015, 14:44   #1
987Alexe4ik
 
Регистрация: 13.12.2012
Сообщений: 6
По умолчанию Выделение памяти delphi или динамические массивы

Добрый день!

Пробую переписать небольшой фрагмент кода с с++ на delphi7

В сишном коде выделяется память функцией malloc и используется в другой функции
Код:
width       =  lwidth*scale;
height      =  lheight*scale;
lr_im       =  (unsigned char*) malloc( sizeof(char)*lwidth*lheight );

Read_image( argv[1], lr_im );
НА дэльфи я создал динамический массив, но возникла ошибка несовместимости типов Incompatible types: 'Byte' and 'dynamic array'
Код:
procedure TForm1.Action2Execute(Sender: TObject);
var
  lwidth, width, lheight, height, scale:integer;
  hr_im, ori_im, lr_im : array of Byte;
  tmp_um: integer;
begin
 if  Image1.Visible = True then   begin
 Get_image_size(pansichar(FileSaveAs1.Dialog.FileName), Image1.Width, Image1.Height );
 end else begin
 ShowMessage('загрузите изображение в формате pgm');
 end;
  scale:=2;
  lwidth:=Image1.Width;
  lheight:=Image1.Height;
  width:=lwidth*scale;
  height:=lheight*scale;

  tmp_um:= width*height;
  SetLength(hr_im,tmp_um);
  SetLength(ori_im,tmp_um);

  tmp_um:= lwidth*lheight;
  SetLength(lr_im,tmp_um);

  Read_image(AnsiChar(PChar(FileSaveAs1.Dialog.FileName)), lr_im);
end;

end.
пробовал менять тип массива - не сработало. Что я делаю не так?
987Alexe4ik вне форума Ответить с цитированием
Старый 10.05.2015, 14:52   #2
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

В каком месте ошибка?

А что означает эта функция?
Код:
Read_image(AnsiChar(PChar(FileSaveAs1.Dialog.FileName)), lr_im);
Не на эту случайно строку ошибка возникает? Из-за lr_im?
Если на эту, то надо так исправить:
Код:
type
  tB:array of Byte;

function Read_image(s:string;im:tB);
begin
   {*| Код |*}
end;

procedure TForm1.Action2Execute(Sender: TObject);
var
  lwidth, width, lheight, height, scale:integer;
  hr_im, ori_im : array of Byte;
  tmp_um: integer;
  lr_im:tB;
begin
   {*| Код |*}
end;
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]

Последний раз редактировалось newerow1989; 10.05.2015 в 15:03.
newerow1989 вне форума Ответить с цитированием
Старый 10.05.2015, 15:10   #3
987Alexe4ik
 
Регистрация: 13.12.2012
Сообщений: 6
По умолчанию

Да, верно, в этой строке ошибка из-за ir_im.

Эта функция, в которую передается имя картинки и под неё выделяется память, исходя из её размеров.

Большое спасибо за быструю помощь :3
987Alexe4ik вне форума Ответить с цитированием
Старый 10.05.2015, 15:11   #4
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Пожалуйста!
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамические массивы в Delphi XaHTeP Помощь студентам 1 08.04.2013 10:23
Динамические массивы в Delphi MadHouse Помощь студентам 0 15.06.2012 20:35
Язык СИ! Динамическое выделение памяти под массивы и матрицы, передача матрицы в функции Андрей! Общие вопросы C/C++ 33 31.01.2012 22:07
Динамические массивы. delphi Multiman Помощь студентам 15 29.11.2010 23:00
Динамическое выделение памяти под массивы Артем125 Общие вопросы C/C++ 4 07.04.2009 09:52