![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибка
Evgeniy_K © (2004-07-22 16:19:00)Что-то я забыл :)
function DrawChar(Surface: IDirectDrawSurface7; ch: char; x,y: integer; size: Byte): HResult;
var
Source: TRect;
p: Integer;
begin
Result:= DD_OK;
if not Assigned(TextMatrix) then begin
Result:= DD_FALSE;
exit;
end;
// "mask"
p:= ord(ch) - 32;
with Source do begin
Left:= (p mod 16) * 15;
Right:= Left + 15;
Top:= (p div 16) * 15;
Bottom:= Top + 15;
end;
Result:= Surface.BltFast(x, y, TextMatrix, @Source, DDBLTFAST_WAIT or DDBLTFAST_SRCCOLORKEY);
end;
Эта функция ничего не нарисует. Если yfgнаписать так:
function DrawChar(out Surface: IDirectDrawSurface7; ch: char; x,y: integer; size: Byte): HResult;
то будет ошибка, мол FFFFFF Что я где забыл? Заранее спасибо.
Anton_K (2004-11-08 17:08:00) [1]Хотя, out лучше всё-таки не писать. :-)
Anton_K (2004-11-08 16:58:00) [2]ИМХО, ошибка не в этой функции. А var, out, const тут никакой роли не играют, так как Surface здесь интерфейс, то есть Pointer.
NikeOLD (2004-11-08 16:11:00) [3]
> Evgeniy_K (22.07.04 17:51) [3]
> Var и Out - одно и тоже.
Не одно и тоже.
Белый Крыс (2004-07-22 18:31:00) [4]function DrawChar( constSurface: IDirectDrawSurface7; ch: char; x,y: integer; size: Byte): HResult;
Может так. Проверь, точно ли загружается графика. У тебя именно через 15 пикселей идут буквы?
Evgeniy_K (2004-07-22 18:01:00) [5]он на входе говорит, что я обращаюсь к несуществующей поверхности
Evgeniy_K (2004-07-22 17:51:00) [6]Var и Out - одно и тоже. TextMatrix не кривой! Если все это перенести в тот же объект, где эта поверхность, то будет работать. Мне надо же чтобы было в отдельном модуле.
cyborg (2004-07-22 17:42:00) [7]function DrawChar( VarSurface: IDirectDrawSurface7; ch: char; x,y: integer; size: Byte): HResult;
TextMatrix может кривой.
Evgeniy_K (2004-07-22 17:26:00) [8]Никто что лли не знает? =(