Вверх ↑
Этот топик читают: Гость
Ответов: 262
Рейтинг: 6
#1: 2006-10-17 14:10:14 ЛС | профиль | цитата
HIVarArray - делал давно. Просто массив именованных разнотипных переменных. На основе стандартного TArray.
HIArrayer - Вариант ArrayRW с абсолютно другим принципом работы каждая точка DPLElement-а обращение к данным в массиве(по имени или индексу). Один Arrayer может заменить десяток ArrayRW(или больше
см. пример, внимательно читайте описание !
карма: 0

0
Ответов: 9906
Рейтинг: 351
#2: 2006-10-17 14:32:04 ЛС | профиль | цитата
Не понимаю
procedure SetData(dst, src: PData);
begin
dst:=src;
dst.ldata:=nil;
case src.data_type of
data_font: Begin
dst.idata:=integer(new(PFontRec));
PFontRec(dst.idata):=PFontRec(src.idata);
end;
data_bitmap: begin
dst.idata:=integer(NewBitmap(0,0));
PBitmap(dst.idata).Assign(PBitmap(src.idata));
end;
data_icon: begin
dst.idata:=integer(NewIcon);
PIcon(dst.idata).Handle:=PIcon(src.idata).Handle;
end;
data_rect: Begin
dst.idata:=integer(new(PRect));
PRect(dst.idata):=PRect(src.idata);
end;
end;
end;
карма: 9

0
Администрация
Ответов: 15295
Рейтинг: 1519
#3: 2006-10-17 21:01:17 ЛС | профиль | цитата
procedure Zaplatka(l: PStrList);[/code]
правильнее писать так:
procedure Patch(l: PStrList);[/code]
карма: 27
0
Ответов: 262
Рейтинг: 6
#4: 2006-10-18 05:51:57 ЛС | профиль | цитата
Dilma, 1. я расчитывал вообще удалить заплатку к следующей версии HIAsm. Ведь можно убрать ограничение на одинаковые имена точек на разных гранях элемента ?
2. И, я конечно не смею надеятья, немножко доработать DPLElement чтобы можно было добавлять статические методы на те грани которые не описаны, если Sub=doWrite,,Read, то на _event и _data можно бы было добавить методы в секции [Methods]
3. И в codegen строка 136. функция ArrayToRes.
if p = '' then p := '0';
а почему собственно p:='0'? В случае с VarArray по крайне мере должно быть вроде p:='_data_Empty'.

Galkov, ':=' как называется эти символы ? Вот и SetData это присваивание TData; Только в случае a:=b; полного присваивания не происходит. Поэтому спец типы присваиваются (или копируются) отдельно. Создается полная индентичность данных. т.е. при "смерти" src, dst продолжает жить и здравствовать. Вот собственно идея такова. Правда надо доописать все остальные типы данных. Вот Вам существующий пример того самого
function THIBitmapArray.DataToPointer;
var bmp:PBitMap;
begin
if Data.Data_type = data_bitmap then
begin
bmp := NewBitmap(0,0);
bmp.Assign(PBitmap( data.idata) );
Result := integer(bmp);
end
else result := 0;
end;
карма: 0

0
Ответов: 9906
Рейтинг: 351
#5: 2006-10-18 09:00:29 ЛС | профиль | цитата
Блин - дурдом на каникулах

Попробую конкретизировать вопрос: чем
PRect(dst.idata):=PRect(src.idata);[/code] отличается от
dst.idata:=src.idata;[/code]

:?: :?: :?:
карма: 9

0
Ответов: 262
Рейтинг: 6
#6: 2006-10-18 09:39:22 ЛС | профиль | цитата
Galkov, доброе утро ? А вот про ету строчку не забыл ?
dst.idata:=integer(new(PRect));[/code]здесь idata указатель.

[size=-2]------ Добавлено в 09:18 [/size]
упсс может надо было крыжик добавить ^
смысл в присвоении PRect(dst.idata).top:=PRect(src.idata).top; и так далее.

[size=-2]------ Добавлено в 09:39 [/size]
точно нужен ^, проверка проста. :)
 Var a,b:PRect; 
begin 
new(a);new(b);
a.top:=10;a.left:=50;b^:=a^;
dispose(a);
msgok(int2str(b.top+b.left));
карма: 0

0
Ответов: 9906
Рейтинг: 351
#7: 2006-10-18 11:51:56 ЛС | профиль | цитата
1) Именно упсс, и начиная с первой строки, и т.д...
2) Мог бы обратить внимание, что если в строке есть что-то типа [code], то ничего дальше не парсится ((экспериментальный факт - я не виноват))
3) Ну у нас то давно обед... Хотя у нас же, когда встал - тогда и доброе утро
карма: 9

0
Ответов: 262
Рейтинг: 6
#8: 2006-10-18 13:45:01 ЛС | профиль | цитата
1. Galkov СтРаШнЫй человек оппонент уж упал и ошибку понял и исправил даже, а он ногой по почкам.
2. есть непонятно мне о чем речь
3. Просим Dilma добавить в Профиль поле "Город". И выводить его под званием в топиках. А потом на глобусе HIAsm-а точки расставлять
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#9: 2006-10-18 16:50:34 ЛС | профиль | цитата
1) Нельзя.
2) возможно
3) вот так сходу не отвечу почему...
карма: 27
0
Ответов: 9906
Рейтинг: 351
#10: 2006-10-18 18:50:28 ЛС | профиль | цитата
1) Ну в каком-то виде я должен же был сказать, что конкретно PRect - это мелкий частный случай...
2) Chesh, смотри : правлю твой пост



А вообще, Chesh, кончай комплексовать.
Скажем так, я настаиваю, что ПРАВИЛЬНОЕ отношение к делу - именно такое:
  1. Самое лучшее - не делать ошибок. Но это - недостижимый идеал
  2. Делать ошибки - еще не есть плохо. Не ошибается тот, кто ничего не делает
  3. ПЛОХО - это только когда не умеешь (не желаешь) исправить свою ошибку

ИМХО. Хотя проверено, и может быть потверждено примерами с данного форума
карма: 9

0
Администрация
Ответов: 15295
Рейтинг: 1519
#11: 2006-10-18 20:26:42 ЛС | профиль | цитата
Да и еще: в справке этого нет пока, но прямое использование полей TData в своих компонентах строго не рекомендуется.
карма: 27
0
Ответов: 262
Рейтинг: 6
#12: 2006-10-19 05:29:40 ЛС | профиль | цитата
Dilma, сейчас я это знаю. Более того поддерживаю на 100%. Если ты о ShareDT, то я специально вынес эти процедуры в отдельный юнит дабы подчеркнуть что они на уровень "ниже" компонента. И могут быть использованы в других компонентах, как и основной Share.
Единственный случай когда в последнее время пришлось использовать поля TData был когда я хотел вывести MT через onEvent. a.ldata:=@b; И вопрос остался открыт. Я задам его на форуме.

Galkov, ну что ж присвоим тебе звание Старшего Воспитателя И Духовного Наставника.
ЗЫ: а если честно, то раздел Компоненты не место для наставлений. Указал ошибку - спасибо. Я исправлю и выложу. Прочее только мешает всем остальным А вот в "Игре в слова" я все выслушаю и отвечу и поспорю и историями поделюсь
карма: 0

0
Ответов: 262
Рейтинг: 6
#13: 2006-10-21 19:23:00 ЛС | профиль | цитата
Доработанный VarArray. Теперь поддерживает добавление переменных, сохранение, загрузку всего массива в файл. Позволяет добавлять в массив переменные содержащие MT цепочки. Добавлен интерфейс для обращения к именам переменных. Добавлен тип Stream. Исправлены ошибки.
Файл перемещен.
карма: 0

0
Ответов: 3655
Рейтинг: 69
#14: 2006-10-21 19:44:02 ЛС | профиль | цитата
Chesh,
При UseName=true имена переменных, при=false индексы в массиве. |5|
И где это UseName
карма: 0

0
Ответов: 262
Рейтинг: 6
#15: 2006-10-22 09:05:30 ЛС | профиль | цитата
Вячеслав, UseName - это свойство TArray(share.pas), VarArray его наследовал. А находиться в редакторе свойств компонента.
карма: 0

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