Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.12.11;
Скачать: 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 вся ветка

Текущий архив: 2011.12.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
15-1313853077
RGV
2011-08-20 19:11
2011.12.11
HP pavilion dv6-6160er


15-1314044999
Юрий
2011-08-23 00:29
2011.12.11
С днем рождения ! 23 августа 2011 вторник


2-1314473437
Gu
2011-08-27 23:30
2011.12.11
данные в ресурсах


2-1314597578
petvv
2011-08-29 09:59
2011.12.11
Вызвать функцию exe из dll


8-1217964911
Рацелий
2008-08-05 23:35
2011.12.11
Chip music