Вверх ↑
Разработчик
Ответов: 26151
Рейтинг: 2127
#1: 2008-03-22 18:50:03 ЛС | профиль | цитата
Тюфу, ну я так и хотел, так и у меня было, так я и задумывал, почему и добавил условие инициализации массива. Вот, пока, мой рабочий вариант:


procedure ParseIconsIdx(var s:string; IconsIdx:TIconsIdx; init:boolean=false);
const _dlm = ',';
var sint, parse:string;
i:integer;
begin
if init then for i:=0 to high(IconsIdx) do IconsIdx[i] := I_SKIP;
if (s = '') or (s[1] <> '<') or (Pos('>',s)=0) then exit;
Delete(s,1,1);
parse := GetTok(s,'>') + _dlm;
Replace(parse, ' ' ,'');
i:=0; repeat
sint := gettok(parse, _dlm);
if sint <> '' then IconsIdx[i] := str2int(sint);
inc(i);
until (parse = '') or (i > high(IconsIdx));
end;


------------ Дoбавленo:


Galkov писал(а):
Нет блин, надо еще и морочиться - а какой тут у нас shift
Ну так я же про это -- shift должен быть внутри компонента, понял.

------------ Дoбавленo:


Galkov, вот скажи, а нельзя ли MakeArrayIcon сделать общим и поместить в Share

------------ Дoбавленo:


Из-за того, что все пришлось привести к одному типу -- integer, то теперь приходится лепить вот такую муть



   ind_0 := Control.TVItemImage[prn];
if (Hiword(ind_0 shl 1) > 0) then ind_0:= ind_0 or $FFFF0000;
if ind_0 < 0 then sind_0 := '' else sind_0 := int2str(ind_0);

А иначе, выдает 65534 вместо -2

карма: 22

0