Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 24.04.2013
Сообщений: 17

W8018 Assigning unsigned long to TColor

26.04.2013, 11:30. Показов 2850. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго дня. Ребята, помогите мне, пожалуйста. Объясните, что у меня не так в коде и как исправить.
Ошибки:
[C++ Warning] Unit1.cpp(44): W8018 Assigning unsigned long to TColor

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
void __fastcall TForm1::ProcessingClick(TObject *Sender)
{
  int J,JH,I,IH,mr,mg,mb;                 
  
  IH=Image1->Picture->Bitmap->Height;     
  JH=Image1->Picture->Bitmap->Width;      
  Image2->Picture->Bitmap->Height=IH;     
  Image2->Picture->Bitmap->Width=JH;      
 
  for(I = 0; I <IH; I++)
    for(J = 0; J < JH; J++) {
      // ïîïèêñåëüíîå ÷òåíèå
      mr=GetRValue(Image1->Canvas->Pixels[J][I]);     
      mg=GetGValue(Image1->Canvas->Pixels[J][I]);     
      mb=GetBValue(Image1->Canvas->Pixels[J][I]);     
      mr=1.5*mr;    mg=1.5*mg;  mb=1.5*mb;            
         
      if (mr>255) mr=255;  else mr=mr;
      if (mr<0)   mr=0;    else mr=mr;
      if (mg>255) mg=255;  else mg=mg;
      if (mg<0)   mg=0;    else mg=mg;
      if (mb>255) mb=255;  else mb=mb;
      if (mb<0)   mb=0;    else mb=mb;
  
      Image2->Picture->Bitmap->Canvas->Pixels[J][I] = RGB(mr, mg, mb); // Ошибка 
      ProgressBar1->Position = I*100/IH;
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.04.2013, 11:30
Ответы с готовыми решениями:

W8018 Assigning unsigned long to TColor
Доброго дня. Ребята, помогите мне, пожалуйста. Объясните, что у меня не так в коде и как исправить. Ошибки: Unit1.cpp(44): W8018...

unsigned long long и Builder 2010
В общем, такая проблема: написал программу на Builder 2006 (реализация шифрования 3DES). Работала замечательно. Затем сделал проект на...

Не понятный undefined reference to `unsigned long long f<unsigned long long, void>
test.cpp: #include &lt;iostream&gt; template &lt;typename FormalType, typename FactType = typename std::enable_if&lt;std::is_same&lt;FormalType,...

20
0 / 0 / 0
Регистрация: 24.04.2013
Сообщений: 17
27.04.2013, 18:28  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от nick42 Посмотреть сообщение
GetBValue(Image1->Canvas->Pixels[J][I]) возвращает 8-и битное значение (байт). Ты помещаешь это значение в 32-битную ячейку (int); эта величина уже заведомо положительная ( < 256). Вот эта запись...
C++
1
if ((mb = (int)mb*1.5)>255) mb = 255;
умножает величину mb на 1.5 и при этом анализирует: если произведение не более 255, оно не меняется, если же больше - заменяется на 255; незачем было писать строчку умножения mb, mg, mr перед этим! И анализировать на < 0 тоже ни к чему... - умножая положительную величину на положительную, минус получить трудно (разве что коэффициент многомиллионный; так тогда можно объявлять mb и др. как беззнаковый int. Так в общем в коде больше ничего менять и не надо, с файлами bmp он нормально отрабатывает. Если же нужно работать с картинками jpg, то потребуются дополнительные "приседания". Поиском по форуму можно найти соотв. тему для изучения этой проблемы, - здесь об этом не раз писалось.
Можешь весь код мне написать

Добавлено через 1 минуту
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
#include <jpeg.hpp>
void __fastcall TForm1::Open1Click(TObject *Sender)
{
if(OpenPictureDialog1-> Execute()) //Оператор чтения изображения из файла
Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName);
}
//---------------------------------------------------------------------------
 
 
void __fastcall TForm1::ProcessingClick(TObject *Sender)
{
int J,JH,I,IH,mr,mg,mb;                 // объявляем необходимые переменные
 
IH=Image1->Picture->Bitmap->Height;     // определяем высоту исходного изображения
JH=Image1->Picture->Bitmap->Width;      // определяем ширину исходного изображения
Image2->Picture->Bitmap->Height=JH;     // присваиваем значение высоты результирующему изображению
Image2->Picture->Bitmap->Width=IH;      // присваиваем значение ширины результирующему изображению
 
// исключаем возможность выхода за 8-и разрядную сетку новых значений интенсивностей.
// Тем самым предотвращаем искажения, связанные с перегрузкой
// Цикл считывания значений интенсивности трех компонентов (красной, зеленой, синий)
for(I = 0; I <IH; I++)
for(J = 0; J < JH; J++)
{
// попиксельное чтение
mr=GetRValue(Image1->Canvas->Pixels[J][I]);     // чтение интенсивности компоненты красного
mg=GetGValue(Image1->Canvas->Pixels[J][I]);     // чтение интенсивности компоненты зеленого
mb=GetBValue(Image1->Canvas->Pixels[J][I]);     // чтение интенсивности компоненты синего
mr=1.5*mr;    mg=1.5*mg;  mb=1.5*mb;            // преобразование
 
// Ограничение динамического диапазона
if ((mb = (int)mb*1.5)>255) mb = 255;
if ((mr = (int)mr*1.5)>255) mr = 255;
if ((mg = (int)mg*1.5)>255) mg = 255;
 
 
// запись в обработанное изображение новых значений интенсивностей
Image2->Picture->Bitmap->Canvas->Pixels[J][I] = (TColor)RGB(mr, mg, mb);
// Подключаем прогресс-бар
ProgressBar1->Position = I*100/IH;
}
}
//---------------------------------------------------------------------------
 
 
 
void __fastcall TForm1::Save1Click(TObject *Sender)
{
if(SaveDialog1->Execute())
Image2->Picture->SaveToFile(SaveDialog1->FileName);
}
//---------------------------------------------------------------------------
 
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Close1Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.04.2013, 18:28
Помогаю со студенческими работами здесь

Требуется написать функцию long long pow(long long a, unsigned int p), которая возводит число a в степень p
Требуется написать функцию long long pow(long long a, unsigned int p), которая возводит число a в степень p и возвращает ap. Помогите...

Error C2440: return: невозможно преобразовать "unsigned long" в "unsigned long &"
У меня есть ref-класс с полем типа System::Collections::Generic::List&lt;unsigned long int&gt; ^, и необходимо привязать оператор к этому полю....

Меняется ответ при приведении функции pow к unsigned long long
Тест: 50 50 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...

Быстрое вычисление наибольшего общего делителя для unsigned long long int
Даны два числа типа unsigned long long int, в них могут оказаться любые представимые значения, требуется максимально быстро вычислить...

Перевести long long unsigned int в массив char
Подскажите, пожалуйста, как превратить число типа long long unsigned int в массив символов? Каждый символ - цифра числа в 16-значной...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
21
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru