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

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

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

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

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

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

Код:
Type
  TTexture = Record
   Name   : PChar;
   Bitmap : HBitMap;
   Width  : LongInt;
   Height : LongInt;
   BType  : Word;
  End;
Вызываю:
Код:
VirtualDraw(Warehouse.Buffer.Tex, PChar(CurDir + '\Resource\Buffer.bmp'));

Код:
 Procedure VirtualDraw(Var Source : TTexture; Name : PChar);
  Var
   Bit     : BitMap;
   Loc     : HDC;
  Begin
   ...
   Source.Name := Name;
   ...                                                               LogS('VIRTUAL DRAW    = ' + Source.Name);ShowMe(Source.Name);
  End;
Здесь и лог и messagebox показывают правильно, CurDir + '\Resource\Buffer.bmp'.

Потом происходит закраска всех пикселей цветом:
Код:
UNTGraph.EffectFillAll(Warehouse.Buffer.Tex, $0);

Код:
Procedure EffectFillAll(Var T : TTexture; Color : Integer);
 ...                                                            ShowMe(T.Name);LogS('FILL ALL        = ' + T.Name);
 End;
А вот здесь показываются не имя, а предыдущий tick и сообщение, который записывался в логе.
Код:
 Procedure LogS(Mesg : String);
  Var
   S : String;
  Begin
   If LogMode Then
    Begin
     Str(GetTickCount - LogStartTick, S);
     While Length(S) <> 8 Do S := '0' + S;
     WriteLn(LogFile, S + ' ' + Mesg);
    End;
  End;
Цитата:
00001468 CREATING DC = ON
00001656 FILL ALL = 00001468 CREATING DC = ON
00001703 DRAW BUFFER = ON
___________________________________ ____

Выявил проблему. Но как решить не знаю.
Сейчас написано так:
Код:
VirtualDraw(Warehouse.DNABlock, PChar(CurDir + '\Resource\DNABlock.bmp'));
   VirtualDraw(Warehouse.Buffer.Tex, PChar(CurDir + '\Resource\Buffer.bmp'));
Буфер пишет нормальное имя в логе, DNA нет. Если их поменять местами, то будет наоборот- сдохнет имя буфера, а DNA будет нормально писаться в логах. листинг VirtualDraw есть выше.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ

Последний раз редактировалось Alex Cones; 11.07.2010 в 11:55.
Alex Cones вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
маленькая проблема передачи через сокеты. dj-botsman Работа с сетью в Delphi 0 17.05.2010 19:26
Макрос для передачи персанальных данных Evroclidon Microsoft Office Excel 19 01.02.2010 21:12
Локальные сети, алгоритм передачи данных Guliayka Помощь студентам 1 25.12.2009 16:26
Кодировка передачи данных в Word Flame_of_Death Общие вопросы Delphi 3 14.07.2009 12:25
сжатие при передачи данных Makarov Работа с сетью в Delphi 5 17.01.2008 21:41