Вниз
Скачать: CL | DM;

Функция и 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.007 c
1-1276837690
Kukolev
2010-06-18 09:08
2011.12.11
Кнопки на панели задач


2-1314167622
6136
2011-08-24 10:33
2011.12.11
как полученные на сервер данные отображать в графике


15-1313174177
Anatoly Podgoretsky
2011-08-12 22:36
2011.12.11
induc.2


15-1314000095
alexdn
2011-08-22 12:01
2011.12.11
Где можно анонсировать свою программу?..


2-1314597307
brother_home
2011-08-29 09:55
2011.12.11
как правильно обратиться к полю?




   Наверх