Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Функция и 2 массива.


Mu ©   (2011-08-28 22:22:00) 

Есть массив (в моем случае это Tbitmap, хоть я пробовал и с обыкновенным это ничего меняет). И есть функция в которую я передаю этот массив. На выходе из функции я также хочу получить такой же массив, но уже преобразованный.

Менять исходный массив нельзя (тогда преобразование пройдет неверно), поэтому в функции создается еще 1 такой же пустой и в него записывается первый преобразованный массив. И вот его и нужно вернуть в основную программу.

Но  никак у меня это не выходит и найти как правильно это делать не смог.

Хотелось бы увидеть пример такого кода. Ну то есть, как из функции вернуть массив..


анонимус   (2011-08-29 03:51:00) [1]

Вопрос снимается, нашел косяк) работают все способы )


анонимус   (2011-08-29 03:30:00) [2]


> SourceBitmap.SaveToStream (Stream, ...)
> Stream.Position := 0;
> Result := TBitmap.Create;
> Result.LoadFromStream(Stream...)
>
> будет копия


ну да, я так и делал, только я на диск сохранял и загружал после процедуры. Я надеялся есть человеческий способ )


анонимус   (2011-08-29 03:28:00) [3]


> А "выше" примера нет.
> И вообще нет нигде никакого примера! Только "умные слова".
>
> Где, к примеру,  код создания bmpdest?


пример в посте Игоря Шевченко[1]

Какой смысл выкладывать полный код? вопрос вроде задан ясно.

  bmpdest := TBitmap.Create;
   bmpdest.Width:= 1050;
   bmpdest.Height:=800;
   bmpdest.PixelFormat := pf24bit;


вот к примеру код создания bmpdest.  но как я уже сказал перед окончанием процедуры картинка диск сохраняется отлично, а по выходу ее нет....


Игорь Шевченко   (2011-08-29 00:28:00) [4]


> Есть процедура или функция, вообщем мне от нее нужно чтобы
> она вернула мне другой битмап, сделанный из первого.


SourceBitmap.SaveToStream (Stream, ...)
Stream.Position := 0;
Result := TBitmap.Create;
Result.LoadFromStream(Stream...)

будет копия


Германн   (2011-08-29 00:13:00) [5]


> procedure greenBorders(tBmp:Tbitmap; var bmpdest:TBitmap);
>
>
> Это процедура, я ее даж сделал как в примере выше - не помогло.
>
>

А "выше" примера нет.
И вообще нет нигде никакого примера! Только "умные слова".
Где, к примеру,  код создания bmpdest?


анонимус   (2011-08-28 23:46:00) [6]

описываю

Есть процедура или функция, вообщем мне от нее нужно чтобы она вернула мне другой битмап, сделанный из первого.

procedure greenBorders(tBmp:Tbitmap; var bmpdest:TBitmap);

Это процедура, я ее даж сделал как в примере выше - не помогло.

Суть проблеммы в том, что когда я делаю в конце этой процедуры так:

bmpdest.SavetoFile('E:\test2.bmp');

У меня на диск сохраняется то что я хочу. А когда я в исходном модуле после вызова процедуры так пишу, у меня сохраняется пустой битмап, т.е. внутри вообще вообще пусто:

procedure greenBorders(tBmp:Tbitmap; var bmpdest:TBitmap);
bmpdest.SaveToFile('E:\test33.bmp');


Если сделать так

function greenBorders(tBmp:Tbitmap):TBitmap

то результат будет аналогичный. На самом деле первый раз я с этим столкнулся когда пытался вернуть просто массив - результат был такой же.


Омлет   (2011-08-28 23:23:00) [7]

Tbitmap - это не массив, а объект.
Опишите изначальную задачу.


Игорь Шевченко   (2011-08-28 22:32:00) [8]

procedure foo (sourcearray: arraytype; var destarray: arraytype)

?


Наверх

Титульная страница Поиск, карта сайта Написать письмо