Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 4698
Рейтинг: 426
#151: 2010-10-21 19:50:08 ЛС | профиль | цитата
Poputchik писал(а):
Идея то хорошая, но точку добавить наверное проще было бы и быстрее, с ней и компонент Type_RW новый не нужен

Вот только вопрос: куда я эту точку буду тыкать? В компоненте Type_Create некуда ее тыкать, вверх - нельзя, поскольку это может нарушить совместимость: сейчас еще можно создавать переменную с именем "VarList" и производные вроде "##VarList", а значит этого делать нельзя... Что до добавления метода... ну не знаю, мне это почему то не нравится, метод там, где ожидается взятие данных с точек... Как то не логично. Во-вторых, данный компонент упростит задачу добавления новых переменных с дефолтным значением МТ-потоком. В противном случае (сейчас) это делается 3-4 элемента.
карма: 10
0
Гость
Ответов: 17029
Рейтинг: 0
#152: 2010-10-21 20:01:31 правка | ЛС | профиль | цитата


Редактировалось 5 раз(а), последний 2021-06-22 14:58:43
карма: 0

0
Ответов: 413
Рейтинг: 57
#153: 2010-10-21 20:42:01 ЛС | профиль | цитата
Выше мое сообщение!
Assasin,
С потоком нельзя имя заносить в компонент?
Например в type add через точку doAdd?

P.S. Пока ни компонента, ни точки нет - хотел в массив загнать тип (по твоему примеру), а вот как его оттуда потом опять в тип превратить или сохранить и открыть, потом, не знаю. Тоже обходными путями?
карма: 0

0
Разработчик
Ответов: 4698
Рейтинг: 426
#154: 2010-10-22 14:08:47 ЛС | профиль | цитата
Poputchik писал(а):
С потоком нельзя имя заносить в компонент?

Нет, т.к в потоке берутся данные для вставки в переменную. Делай это через точку doName (квадратик слева от свойства Name)
Poputchik писал(а):
Пока ни компонента, ни точки нет - хотел в массив загнать тип (по твоему примеру), а вот как его оттуда потом опять в тип превратить или сохранить и открыть, потом, не знаю. Тоже обходными путями?

Не очень понял, Type_Array позволяет лишь работать с типом как с массивом, а не полностью заменяет тип. Т.е. после doLoad тип как был, так и остается существовать, просто теперь считыватьзаписывать значения можно как в массиве (изменения посредством массива будут сохраняться в типе): Вот пример: code_21166.txt
карма: 10
1
файлы: 1code_21166.txt [1.9KB] [443]
Голосовали:Poputchik
Ответов: 413
Рейтинг: 57
#155: 2010-10-22 14:15:35 ЛС | профиль | цитата
Assasin писал(а):
Делай это через точку doName

Я имел в виду имена переменных, а не типа ) (Думал может возможно реализовать задание имен переменных через разделитель в потоке, раз точку создавать не получается)
Assasin писал(а):
Type_Array позволяет лишь работать с типом как с массивом, а не полностью заменяет тип.
Тогда я не правильно понял как работать с массивом. Теперь ясно! спасибо!
карма: 0

0
Разработчик
Ответов: 4698
Рейтинг: 426
#156: 2010-10-22 14:19:24 ЛС | профиль | цитата
Poputchik писал(а):
Думал может возможно реализовать задание имен переменных через разделитель в потоке, раз точку создавать не получается

Нет, так с существующими компонентами делать нельзя, сейчас из потока берутся данные для переменных, а если сделаем по твоему, будет нарушения совместимости. Так можно делать разве что отдельным компонентом. Кстати, если делать создание типа с переменными указанными в списке (подавать список на точку), то лучше всего сделать компонент Type_CreateList (или что то в этом роде), где вообще не будет свойства Vars и точек верхних, соответственно, тоже, а будет лишь одна точка для задания списка
карма: 10
0
Ответов: 413
Рейтинг: 57
#157: 2010-10-22 14:26:55 ЛС | профиль | цитата
А сам то на чем остановился? Как планируешь поступить? Или оставишь все как есть?

Assasin писал(а):
после doLoad тип как был, так и остается существовать, просто теперь считыватьзаписывать значения можно как в массиве (изменения посредством массива будут сохраняться в типе)

А параллельно можно изменять переменные в массиве и в не массива? Или после перегонки в массив все изменения делать через компонент массив? Попробовал - вроде бы получается. Не скажется ли это у меня?

[flood]Net-Rooms не запускается.[/flood]
карма: 0

0
Разработчик
Ответов: 4698
Рейтинг: 426
#158: 2010-10-22 14:59:43 ЛС | профиль | цитата
Poputchik, все, что делает массив, это создает указатель на тип через массив, то есть работу с типом как с массивом, а не перегон типа в массив, поэтому после загрузки типа в массив ты можешь работать с типом и напрямую (через компоненты Type_XXXX) и через компоненты для работы с массивом, Type_Array создает что-то типа символической ссылки на тип (что это, читай в соседней теме Игра в слова -> (про жесткие диски))
------------ Дoбавленo в 14.59:
Poputchik писал(а):
А сам то на чем остановился? Как планируешь поступить? Или оставишь все как есть?

А я даже не знаю, если я сделаю оба компонента (Type_RW и Type_CreateFromList), ничего плохого не будет, nesco, Dilma?
карма: 10
0
Разработчик
Ответов: 26153
Рейтинг: 2127
#159: 2010-10-22 15:25:33 ЛС | профиль | цитата
Assasin писал(а):
Type_Array создает что-то типа символической ссылки на тип

Это называется указатель.
Assasin писал(а):
ничего плохого не будет

А что должно быть плохого, ты сам-то это плохое видишь
карма: 22

0
Разработчик
Ответов: 4698
Рейтинг: 426
#160: 2010-10-22 15:27:37 ЛС | профиль | цитата
nesco писал(а):
А что должно быть плохого, ты сам-то это плохое видишь

В том то и дело, что не вижу, но вдруг вы увидите
карма: 10
0
Разработчик
Ответов: 26153
Рейтинг: 2127
#161: 2010-10-22 15:32:32 ЛС | профиль | цитата
Если кому-то понадобилось создавать динамический тип, и это можно реализовать, то желательно сделать
карма: 22

0
Ответов: 413
Рейтинг: 57
#162: 2010-10-23 00:03:58 ЛС | профиль | цитата
Значение переменной может быть любым? Даже целый файл? Как правильно затолкать файлы в type и потом извлечь?

Пытался, но наверняка не правильно:

Add(MainForm,2953706,168,63)
{
Width=562
Height=629
}
Add(Edit,15659177,315,126)
{
Left=5
Top=30
Width=540
Text=""
link(onChange,1473513:doWork2,[])
}
Add(Edit,9823317,322,168)
{
Left=5
Top=85
Width=540
Text=""
link(onChange,1473513:doWork3,[(367,174)])
}
Add(Type_Create,9672655,308,210)
{
Vars=#4:File|85:Lic=D:ПрограмируемПишем программыСоздание инсталяторовЛицензионное соглашение.txt|73:Com=D:ПрограмируемПишем программыСоздание инсталяторовОсобенности.txt|
link(onCreate,16632832:doLoad,[])
link(Lic,15659177:Text,[])
link(Com,9823317:Text,[])
}
Add(FileStream,16378432,707,112)
{
link(onLoad,7209227:doEvent1,[])
}
Add(Type_Array,16632832,364,210)
{
UseName=0
Point(Name)
Point(NameArray)
Point(doUseName)
link(onLoad,15012779:doEnum,[])
}
Add(ArrayEnum,15012779,427,210)
{
link(onItem,16378432:doOpen,[(486,216)(486,118)])
link(onEndEnum,10958036:doEvent1,[])
link(Array,13772963:Array,[])
}
Add(Counter,5683992,609,203)
{
Max=100000
link(onNext,16580548:doStrCat,[])
}
Add(StrCat,16580548,658,203)
{
Str1="Files"
link(onStrCat,12090577:doAdd,[])
}
Add(LineBreakEx,7526858,364,259)
{
Caption="array"
Type=3
link(_Data,16632832:Array,[])
}
Add(MT_AddData,12090577,700,203)
{
link(onAdd,1179144:doValue,[])
link(Data1,10081507:Var,[])
link(Data2,16378432:Stream,[])
}
Add(MT_MTArrayRW,13516543,798,189)
{
link(Array,10096108:getVar,[])
link(Value,1179144:Value,[(818,175)(841,175)(841,247)(755,247)])
}
Add(MT_Memory,1179144,749,203)
{
link(onData,13516543:doAdd,[])
}
Add(LineBreakEx,10096108,798,154)
{
Caption="array"
Type=2
}
Add(LineBreak,12604177,658,245)
{
Caption="name"
Type=1
link(Data,16580548:Result,[])
Primary=[10081507,42,-70]
}
Add(Hub,7209227,749,112)
{
link(onEvent1,16378432:doClose,[(770,118)(770,101)(695,101)(695,125)])
link(onEvent2,5683992:doNext,[(775,125)(775,163)(597,163)(597,209)])
}
Add(Type_MultiData,1828217,609,322)
{
Vars=#9:##onError|6:Files1|6:Files2|
Point(GType)
link(Files1,8784943:doGet,[])
link(Files2,9987174:doGet,[(660,342)(660,391)])
link(GType,9672655:FType,[(615,304)(314,304)])
}
Add(Hub,10958036,511,217)
{
OutCount=3
link(onEvent1,5683992:doReset,[])
link(onEvent2,1828217:doSeparate,[(567,230)(567,328)])
link(onEvent3,3609753:doData,[(543,237)(543,482)])
}
Add(LineBreakEx,10729255,609,448)
{
Caption="array"
Type=2
}
Add(HilightMemo,9735630,735,301)
{
Left=5
Top=180
Width=520
Height=130
Font=[Courier New,8,0,0,1]
HilightFont=[Courier New,8,0,0,1]
}
Add(MT_MTArrayRW,11358255,609,476)
{
link(onRead,11137512:doGet,[])
link(Array,10729255:getVar,[])
}
Add(DataToFile,11137512,672,469)
{
link(onGet,12532478:doAdd,[(720,475)(720,476)])
link(Stream,11358255:Item,[(678,464)(646,464)(646,520)(615,520)])
}
Add(DataToFile,9987174,679,378)
{
Type=5
link(onGet,12572114:doConvert,[])
}
Add(DataToFile,8784943,679,322)
{
Type=5
link(onGet,9735630:doAdd,[(719,328)(719,307)])
}
Add(DoData,3609753,560,476)
{
Data=String(Files1)
link(onEventData,11358255:doRead,[])
}
Add(Convertor,12572114,728,378)
{
Mode=4
link(onResult,1003043:doAdd,[])
}
Add(HilightMemo,12532478,737,470)
{
Left=5
Top=460
Width=520
Height=130
Font=[Courier New,8,0,0,1]
HilightFont=[Courier New,8,0,0,1]
}
Add(InfoTip,16344736,504,273)
{
Info=#29:Наверно неправильно извлекаю?|
Width=344
Height=270
}
Add(InfoTip,13047264,581,70)
{
Info=#23:Или неправильно заношу?|
Width=288
Height=193
}
Add(Memo,1003043,784,378)
{
Left=5
Top=320
Width=520
Height=130
}
Add(Button,10965101,203,126)
{
Left=5
Top=5
Width=105
Caption="Выбрать файл1"
link(onClick,494420:doExecute,[])
}
Add(ODialog,494420,259,126)
{
Filter="txtfile|*.txt*"
link(onExecute,15659177:doText,[])
}
Add(Button,618268,203,168)
{
Left=5
Top=60
Width=105
Caption="Выбрать файл2"
link(onClick,7185496:doExecute,[])
}
Add(ODialog,7185496,259,168)
{
Filter="txtfile|*.txt*"
link(onExecute,9823317:doText,[])
}
Add(Button,16501287,203,210)
{
Left=5
Top=110
Width=105
Caption="Создать тип"
link(onClick,9672655:doCreate,[])
}
Add(StrList,13772963,413,126)
{
}
Add(HubEx,1473513,363,126)
{
link(onEvent,13772963:doAdd,[])
}


карма: 0

0
файлы: 1code_21192.txt [4.5KB] [535]
Разработчик
Ответов: 4698
Рейтинг: 426
#163: 2010-10-23 14:14:27 ЛС | профиль | цитата
Poputchik писал(а):
Пытался, но наверняка не правильно:

О, ты совершенно прав, вот только ошибка не в использовании типа,а в использовании конверторов потока, т.е ты оказывается не знаешь, как из Stream получить String
code_21203.txt
карма: 10
0
файлы: 1code_21203.txt [4.1KB] [439]
Ответов: 413
Рейтинг: 57
#164: 2010-10-23 15:04:15 ЛС | профиль | цитата
Assasin писал(а):
вот только ошибка в использовании конверторов потока
Как я только не мудрил, так он не заработал с конвертером.

Где взять конвертер который в твоем примере(В какой закладке)?
И второй вопрос - программа с ними не запускается! Они не входят в стандартный пакет?

------------ Дoбавленo в 15.04:
С компонентом конвертер тоже не работает (его только что обновил с SVN? такое впечатление,что не обновил а удалил)!
карма: 0

0
Разработчик
Ответов: 4698
Рейтинг: 426
#165: 2010-10-23 15:07:42 ЛС | профиль | цитата
Ах, да, забыл самое важное, так файл в тип записать не получится, поскольку тип полностью копирует поток, а в потоке обычно записывается указатель на Stream, а не сам файл, то есть когда ты открываешь элементом FileStream новый файл, Stream старого файла сотрется и в типе будет указатель на несуществующую Stream. Это можно решить через динамические контейнеры, в которых будут содержаться стримы на нужные файлы, или чтобы все разом (способ через дырку в заборе) - вот такой комбинацией:
code_21204.txt
карма: 10
1
файлы: 1code_21204.txt [603B] [367]
Голосовали:Poputchik
Сообщение
...
Прикрепленные файлы
(файлы не залиты)