![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Функция и 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)
?