Форум: "Начинающим";
Текущий архив: 2011.12.11;
Скачать: [xml.tar.bz2];
ВнизФункция и 2 массива. Найти похожие ветки
← →
Mu (2011-08-28 22:22) [0]Есть массив (в моем случае это Tbitmap, хоть я пробовал и с обыкновенным это ничего меняет). И есть функция в которую я передаю этот массив. На выходе из функции я также хочу получить такой же массив, но уже преобразованный.
Менять исходный массив нельзя (тогда преобразование пройдет неверно), поэтому в функции создается еще 1 такой же пустой и в него записывается первый преобразованный массив. И вот его и нужно вернуть в основную программу.
Но никак у меня это не выходит и найти как правильно это делать не смог.
Хотелось бы увидеть пример такого кода. Ну то есть, как из функции вернуть массив..
← →
Игорь Шевченко © (2011-08-28 22:32) [1]procedure foo (sourcearray: arraytype; var destarray: arraytype)
?
← →
Омлет © (2011-08-28 23:23) [2]Tbitmap - это не массив, а объект.
Опишите изначальную задачу.
← →
анонимус (2011-08-28 23:46) [3]описываю
Есть процедура или функция, вообщем мне от нее нужно чтобы она вернула мне другой битмап, сделанный из первого.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-29 00:13) [4]
> procedure greenBorders(tBmp:Tbitmap; var bmpdest:TBitmap);
>
>
> Это процедура, я ее даж сделал как в примере выше - не помогло.
>
>
А "выше" примера нет.
И вообще нет нигде никакого примера! Только "умные слова".
Где, к примеру, код создания bmpdest?
← →
Игорь Шевченко © (2011-08-29 00:28) [5]
> Есть процедура или функция, вообщем мне от нее нужно чтобы
> она вернула мне другой битмап, сделанный из первого.
SourceBitmap.SaveToStream (Stream, ...)
Stream.Position := 0;
Result := TBitmap.Create;
Result.LoadFromStream(Stream...)
будет копия
← →
анонимус (2011-08-29 03:28) [6]
> А "выше" примера нет.
> И вообще нет нигде никакого примера! Только "умные слова".
>
> Где, к примеру, код создания bmpdest?
пример в посте Игоря Шевченко[1]
Какой смысл выкладывать полный код? вопрос вроде задан ясно.
bmpdest := TBitmap.Create;
bmpdest.Width:= 1050;
bmpdest.Height:=800;
bmpdest.PixelFormat := pf24bit;
вот к примеру код создания bmpdest. но как я уже сказал перед окончанием процедуры картинка диск сохраняется отлично, а по выходу ее нет....
← →
анонимус (2011-08-29 03:30) [7]
> SourceBitmap.SaveToStream (Stream, ...)
> Stream.Position := 0;
> Result := TBitmap.Create;
> Result.LoadFromStream(Stream...)
>
> будет копия
ну да, я так и делал, только я на диск сохранял и загружал после процедуры. Я надеялся есть человеческий способ )
← →
анонимус (2011-08-29 03:51) [8]Вопрос снимается, нашел косяк) работают все способы )
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.12.11;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c