Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.07.2010, 21:08   #1
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию Работа с указателями.

Код:
Procedure Brigthness(Var T : TTexture; Value : Integer);
 Var
  X, Y : Integer;
  BMP  : BITMAP;
  P1, P2   : PRGBTriple;
 Begin
 P1 := T.Bits;
 For Y := 0 To T.Height - 1 Do
  Begin
   P2 := P1;
    For X := 0 To T.Width - 1 Do
     Begin
      If Value < 255 Then
       Begin
        P2^.rgbtRed   := Sub(P2^.rgbtRed, 255 - Value);
  //      P2^.rgbtGreen := Sub(P2^.rgbtGreen, 255 - Value);
  //      P2^.rgbtBlue  := Sub(P2^.rgbtBlue, 255 - Value);
       End
        Else
       Begin
  //      P2^.rgbtRed   := Add(P2^.rgbtRed, Value - 255);
  //      P2^.rgbtGreen := Add(P2^.rgbtGreen, Value - 255);
  //      P2^.rgbtBlue  := Add(P2^.rgbtBlue, Value - 255);
       End;
      Inc(P2);
     End;
    Pointer(P1) := Pointer(Integer(P1) + T.WBytes);
  End;
 End;
Суть в том, что на
Код:
 P2^.rgbtRed   := Sub(P2^.rgbtRed, 255 - Value);
Lazarus вываливается в ошибку библиотеки libastral32 (SIGSEGV(Comodo нет)).

Как исправить сие общение с указателями?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 03.07.2010, 14:32   #2
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Убедился, что Лазарь таким образом реагирует на
Код:
RGBQ := P^;
Т.е. на снятие указателя.

Есть другой способ получить данные по указателю?

P.S. Скорее всего такая реакция, потому, что получаем указатель от указателя, и с него пытаемся читать.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 05.07.2010, 12:14   #3
igh0st
Форумчанин
 
Аватар для igh0st
 
Регистрация: 05.07.2010
Сообщений: 136
По умолчанию

Не уверен, но кажется надо вот так:
Код:
P2^.rgbtRed := Sub(P2.rgbtRed, 255 - Value);
igh0st вне форума Ответить с цитированием
Старый 05.07.2010, 23:05   #4
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Кошачья морда, я может твой код как-то не так готовлю, но AV из-за того, что T.Bits таки показывает в космос



Открываем Великий Мануал, читаем про GetObject:

Цитата:
Remarks
...
If hgdiobj identifies a bitmap created by calling CreateDIBSection, and the specified buffer is large enough, the GetObject function returns a DIBSECTION structure. In addition, the bmBits member of the BITMAP structure contained within the DIBSECTION will contain a pointer to the bitmap's bit values.

If hgdiobj identifies a bitmap created by any other means, GetObject returns only the width, height, and color format information of the bitmap. You can obtain the bitmap's bit values by calling the GetDIBits or GetBitmapBits function.
Что и наблюдаем.
пыщь
JTG вне форума Ответить с цитированием
Старый 06.07.2010, 10:31   #5
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Круто! Тхенкс!

Сотворил чудо при помощи Get\SetDIBBits.

А где достать ВМ?

P.S. Кстати, чем компилили?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ

Последний раз редактировалось Alex Cones; 06.07.2010 в 10:44.
Alex Cones вне форума Ответить с цитированием
Старый 06.07.2010, 11:04   #6
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Делфёй, не весь проект, конечно. ВМ - это что?
пыщь
JTG вне форума Ответить с цитированием
Старый 06.07.2010, 13:06   #7
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
ВМ
Цитата:
Великий Мануал
Цитата:
Делфёй
Тогда понятно, что за великий ман.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 06.07.2010, 15:00   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

по апи вообще то msdn или его порты на Делфи.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 06.07.2010, 18:34   #9
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Великий Мануал Мелкомягких всегда рядом http://msdn.microsoft.com/en-us/library/default.aspx
пыщь
JTG вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с указателями Masip Общие вопросы Delphi 2 12.06.2010 12:49
Работа с указателями (C) pixel_ Помощь студентам 1 28.08.2009 14:07
Работа с указателями Mango Помощь студентам 2 23.11.2008 10:33
Работа с указателями!!! HKBD Общие вопросы C/C++ 1 06.10.2008 07:52
Работа с указателями в паскале Cartman18 Помощь студентам 3 12.05.2008 09:43