Текущий архив: 2006.06.11;
Скачать: CL | DM;
Вниз
Помогите найти ошибку в коде? Найти похожие ветки
← →
Сорс (2006-05-09 02:35) [0]Функция:
function TBMP.GetPixel(x,y:integer):TPixel;
var
Pixel : ^TPixel;
begin
Pixel := Pointer(Integer(Texture) + 3*(x + y*width));
Result := Pixel^;
end;
Дельфи ругается. Видимо что то не так с указателями. А что именно может быть не так?
Если интересно это из алгоритма вычисления Лайтмэпов. Вот : http://tmtlib.narod.ru/rad8.htm Там и исходник есть.
← →
Сорс (2006-05-09 02:37) [1]А Texture - это Texture : Pointer;
← →
Shaman_Naydak (2006-05-09 04:54) [2]Ты уж тогда возвращай указатель на свой TPixel
PPixel = ^TTPixel.. и будет тебе счастье (почти ;) )
← →
Сорс (2006-05-09 06:59) [3]Как это ?
Заменяю Pixel на PPixel? но результат всё равно тот же самый. Что делать ?
function TBMP.GetPixel(x,y:integer):TPixel;
var
PPixel : ^TPixel;
begin
PPixel := Pointer(Integer(Texture) + 3*(x + y*width));
Result := PPixel^;
end;
← →
antonn © (2006-05-09 07:35) [4]
function TBMP.GetPixel(x,y:integer):pPixel;
var
PPixel : ^TPixel;
begin
PPixel := Pointer(Integer(Texture) + 3*(x + y*width));
Result := PPixel^;
end;
?
← →
Сорс (2006-05-09 07:52) [5]Тогда она мне на эту строчк указывает : Result := PPixel^;
И пишет [Error] rad8.pas(950): Incompatible types: "TPixel" and "PPixel"
← →
Loginov Dmitry © (2006-05-09 14:25) [6]Сорс (09.05.06 2:35)
Формально код вроде правильный, в принципе ошибки здесь быть не должно.
← →
Eraser © (2006-05-09 14:36) [7]
> Сорс (09.05.06 02:35)
как объявден TPixel?
там где этот тип объявлен, объяви и PPixel.
← →
Eraser © (2006-05-09 14:37) [8]
> объявден
обьявлен
← →
wicked © (2006-05-09 14:38) [9]
function TBMP.GetPixel(x,y:integer):PPixel;
var
begin
Result := PPixel(Integer(Texture) + 3*(x + y*width));
end;
интересно, а зачем лезть туда, где ни в зуб ногой?....
поинтеры - это самая база, на которой все программирование построено.... а тут - такая каша в голове у стольких людей....
ЗЫ на абсолютную корректность кода не претендую - у меня нету дельфи и никак не проверить......
← →
Сорс (2006-05-10 01:19) [10]
> Eraser © (09.05.06 14:36) [7]
>
>
> > Сорс (09.05.06 02:35)
>
> как объявден TPixel?
Вот так :type
TPixel = Record
R, G, B : Byte;
end;
Вызовы функции например такие :
var
colorA, colorB :TPixel;
colorC, colorD :TPixel;
begin
colorA := lmap[PixelP^.R].GetPixel(PixelP^.G,PixelP^.B);
colorB := lmap[PixelN^.R].GetPixel(PixelN^.G,PixelN^.B);
Их то изменять не надо ?
← →
Карелин Артем © (2006-05-10 08:02) [11]У меня только студия под руками...
А у вас всегда рисунок 24-битный??
← →
Сорс (2006-05-11 01:19) [12]В строке
colorA := lmap[PixelP^.R].GetPixel(PixelP^.G,PixelP^.B);
Возникает ошибка из за несоответствия типов TPixel и PPixel.
Не понимаю. Зачем же мне посоветовали ввести какой то PPixel, если он не подходит?
Как быть ?
> Карелин Артем © (10.05.06 08:02) [11]
>
> У меня только студия под руками...
> А у вас всегда рисунок 24-битный??
А он там на лету и создаётся.
← →
icWasya © (2006-05-11 10:50) [13]а уменя на это Delfi не ругается - в чём дело ?
type
TPixel = Record
R, G, B : Byte;
end;
TBMP=class
Texture:Pointer;
width:Integer;
function GetPixel(x,y:integer):TPixel;
end;
function TBMP.GetPixel(x,y:integer):TPixel;
var
Pixel : ^TPixel;
begin
Pixel := Pointer(Integer(Texture) + 3*(x + y*width));
Result := Pixel^;
end;
← →
han_malign © (2006-05-11 13:07) [14]
> а уменя на это Delfi не ругается - в чём дело ?
- версия другая, в D7 отпустили возжи с приведением указательных типов - Pointer(и, кажется, PChar) приводится к любому указательному типу...
TPixel = packed Record...
← →
Карелин Артем © (2006-05-11 13:33) [15]
> Сорс (11.05.06 01:19) [12]
Переключи режим экрана в 256 цветов и попробуй код свой. Будет ли нормально работать он при этом? При создании картинки ЯВНО указано что используется 24-битный пиксель??
← →
Сорс (2006-05-12 02:19) [16]
> Карелин Артем © (11.05.06 13:33) [15]
Зачем мне нужен какой то отстойный 256 цветный режим?
Лучше скажи как сделать, чтобы заработало.
← →
Сорс (2006-05-13 01:27) [17]Ну, так что ? Никто так и не знает как заставить этот код работать?
← →
DrPass © (2006-05-13 02:15) [18]
> Сорс (13.05.06 01:27) [17]
А как она у тебя ругается-то на первоначальном варианте? Там все правильно... и кстати, нормально компилируется - специально себя проверил.
← →
Сорс (2006-05-13 03:24) [19]Виалэйшн Аксесс.
Дельфи 7 ?
← →
Сорс (2006-05-16 03:43) [20]Ап, понимаешь.
Страницы: 1 вся ветка
Текущий архив: 2006.06.11;
Скачать: CL | DM;
Память: 0.51 MB
Время: 0.074 c