Вверх ↑
Этот топик читают: Гость
Ответов: 9906
Рейтинг: 351
#31: 2006-10-02 21:05:51 ЛС | профиль | цитата
Если такие данные появились, то это ошибка компонента, который смог сделать такой поток
либо под одним и тем же мы понимаем разные вещи....
но у нас хватает мест, где data_type := data_null безо всякой озабоченности про ldata

[size=-2]------ Добавлено в 21:05
у меня-то, кстати, таких мест нет - в силу первого поста этого топика.....
карма: 9

0
Администрация
Ответов: 15294
Рейтинг: 1518
#32: 2006-10-02 22:00:33 ЛС | профиль | цитата
действительно нехватает, а вот насчёт остального: подумай, что будет, если в MT-данных где-нибудь (например вначале) появятся данные типа data_null

Я так понимаю речь идет о такой скажем ситуации:
мт поток:
...
data_int 3
data_null
data_str 'test'
data_str 'asdadad'
...
т.е. поток якобы состоит из 4х элементов и второй его элемент равен data_null. Так вот моё утверждение состоит в том, что такой ситуации в hiasm быть не должно и это ошибка компонента, сформировавшего этот поток. Поле data_type однозначно определяет содержимое полей в таком стиле:
data_null - ни одно поле не содержит валидных данных
data_int - поле idata и ldata обязаны содержать валидные данные
data_str - поле sdata и ldata обязаны содержать валидные данные
...
и т.д.
карма: 26
0
Ответов: 2125
Рейтинг: 159
#33: 2006-10-02 22:25:27 ЛС | профиль | цитата
Ок. Уговорили.
карма: 1

0
Ответов: 9906
Рейтинг: 351
#34: 2006-10-02 22:31:47 ЛС | профиль | цитата
BTW:
я вот у себя в share еще такой вариант _Debug-а имею:
..........  
//!!! используется в элементе Debug и отладочных _Debug
DataNames:array[0..17]of string =
(
'NULL',
'Integer',
'String',
'Data',
'Combo',
'StrList',
'Icon',
'Real',
'Color',
'Script',
'Stream',
'Bitmap',
'Wave',
'Array',
'ComboEx',
'Font',
'Matrix',
'Jpeg'
);
..........
function GetString(var _Data:TData):string; //!!! генерация текста с значением из TData
procedure _Debug(const info:string); overload;
procedure _Debug(info:integer); overload;
procedure _Debug(var _Data:TData; ident:string='Data-Debug'); overload; //!!! отладка для MT
..........
procedure _Debug(var _Data:TData; ident:string='Data-Debug'); //!!! мои вставки
function GetStr(var _Data:TData):string;
begin
Result := GetString(_Data);
if _Data.data_type<=high(DataNames) then
begin
if Result<>'' then Result := ':'#9+Result;
Result := DataNames[_Data.data_type] + Result;
end
else Result := 'Unknown: '+int2str(_Data.data_type);
end;
begin
{$ifdef MT_ENABLED}
if (_Data.data_type=data_null)or(_Data.ldata=nil) then
MessageBox(0,PChar(GetStr(_Data)),PChar(ident),MB_OK)
else if MessageBox(0,PChar(GetStr(_Data)),PChar(ident),MB_YESNO)=IDYES then
_Debug(_Data.ldata^,ident);
{$else}
MessageBox(0,PChar(GetStr(_Data)),PChar(ident),MB_OK)
{$endif}
end;

function GetString(var _Data:TData):string; //!!! мои вставки
var Bmp:PBitmap;
begin
Result := '';
case _Data.Data_type of
data_null : Result := 'NULL';
data_int : Result := int2str(_Data.idata);
data_str : Result := '"' + _Data.sdata + '"';
data_real :
begin
Result := double2str(_Data.rdata);
if Pos('.',Result) = 0 then Result := Result + '.0';
end;
data_array:
begin
Result := 'Count: ' + int2str(PArray(_data.idata)._Count);
end;
data_stream:
begin
if pointer(_data.idata) = nil then
Result := 'none'
else Result := 'Size=' + int2str(PStream(_data.idata).Size)
+', Position=' + int2str(PStream(_data.idata).Position);
end;
data_bitmap:
begin
Bmp := pointer(_data.idata);
if bmp = nil then
Result := 'none'
else Result := 'Size: ' + int2str(bmp.width)+'x'+int2str(bmp.Height);
end;
end;
end;
..........
DataNames и GetString использует еще элемент Debug...


это я провожу сравнение с пристрастием своих кодов с SVN...



[size=-2]------ Добавлено в 22:31
tsdima, не оставлять 2-е св-во пустым
Но подобная фича тоже не бесполезна
покажи ее пользу...
карма: 9

0
34
Сообщение
...
Прикрепленные файлы
(файлы не залиты)