Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.47 MB
Время: 0.004 c
1-1276780601
Timer Writer
2010-06-17 17:16
2011.12.11
Перекрытие абстрактного метода в наследнике


15-1309379404
Юрий
2011-06-30 00:30
2011.12.11
С днем рождения ! 30 июня 2011 четверг


4-1252784613
Ruzzz
2009-09-12 23:43
2011.12.11
Фишки Vista/Win7 в Delphi (типа прогресс в панеле задач)


15-1314088885
xayam
2011-08-23 12:41
2011.12.11
Переключатель на светильник


1-1277226424
AKomander
2010-06-22 21:07
2011.12.11
По два раза приходят перехваченные пакеты через WM_COPYDATA.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский