Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 4698
Рейтинг: 426
#1: 2009-10-25 14:20:16 ЛС | профиль | цитата
Задумал было сделать несколько компонентов по созданию и работе с собственными типами переменных(как бы строка type для схемы, а не кода), но застрял в лифте, дальше подниматься не хочет, есть code_15372.txt(ShareMyType ищи в прищепке) и он не работает, выдает runtimeerror, причину нашел не хочет работать процедура SetLength() в процедуре ClearMyType(), вопрос почему
карма: 10
0
файлы: 2mytype.rar [566B] [101], code_15372.txt [689B] [197]
Ответов: 175
Рейтинг: 10
#2: 2009-10-25 21:07:26 ЛС | профиль | цитата
не могу открыть code_15372.txt - судя по содержимому там даже связей нет.
может еще раз схему выложишь?
карма: 1

0
Разработчик
Ответов: 4698
Рейтинг: 426
#3: 2009-10-25 21:15:14 ЛС | профиль | цитата
С той проблемой разобрался(надо было при инициализации типа(ClearMyType(теперь IntMyType)) добавить new(dt)), теперь не знаю как это вывести в поток, чтобы можно было прочесть его и работать с ним, а то все та же ошибка вылетает(в схеме из архива в прищепке), что дальше делать не знаю
------------ Дoбавленo в 21.19:
Да забыл упомянуть, в архиве компонент(тестовый, тот который не работает), его надо поставить для работы схемы
карма: 10
0
файлы: 1mytype.rar [2.2KB] [99]
Ответов: 175
Рейтинг: 10
#4: 2009-10-25 22:32:49 ЛС | профиль | цитата
Assasin, у меня мозга не хватает, извини за беспокойство..

странно, почему гуру молчат, наверное не видят перспективы?
карма: 1

0
Разработчик
Ответов: 4698
Рейтинг: 426
#5: 2009-10-26 13:12:16 ЛС | профиль | цитата
Да ничего, форум все-таки не вы так кто еще поможет.
"Гуру молчат" потому что нет свободного времени и нет желания, по причине не видят перспективы. ИМХО (не в обиду сказал)
Да и самому допереть будет интереснее...
карма: 10
0
Разработчик
Ответов: 26324
Рейтинг: 2147
#6: 2009-10-26 13:32:20 ЛС | профиль | цитата
Assasin, ты создаешь структуру ( new(dt) ), отводишь под нее память, а удалять ее кто будет каждый раз, когда ты удаляешь, или очищаешь список ( dispose(dt) ) для каждого удаляемого элемента ). Второе: ты добавляешь новый пункт, а создавать новую структуру ( new(dt) ) кто будет Да и destructor тут совсем не помешает, который будет делать очистку каждого элемента и каждого списка в элементе
карма: 22

0
Разработчик
Ответов: 4698
Рейтинг: 426
#7: 2009-10-26 13:48:08 ЛС | профиль | цитата
nesco, извиняюсь если разозлил. По делу: dispose(dt) стоит у меня в самом компоненте, пока одну эту строчку выносить в процедуру MTFree выводить причин не вижу, только не уверен, правильно ли я сделал очистку, чтобы вдруг невзначай не стереть данные перед их сохранением(например в memory, если я правильно понял, то надо писать для каждого PData, dt.varlist[i].value свой new() и dispose(), так ), если это верно то вижу причину создания MTFree(dt: PMyType).
карма: 10
0
Разработчик
Ответов: 26324
Рейтинг: 2147
#8: 2009-10-26 14:05:44 ЛС | профиль | цитата
Assasin писал(а):
dt.varlist[i].value

Если в них хранятся указатели на структуру, то структура по этим указателям должна быть создана
карма: 22

0
Ответов: 175
Рейтинг: 10
#9: 2009-10-26 14:38:39 ЛС | профиль | цитата
извините за вешательство в полемику, но зачем создавать свой тип данных - после чего ты к этому пришел?
все задачи, которые я перед собой ставил решались методами hiasm без новых типов
карма: 1

0
Разработчик
Ответов: 4698
Рейтинг: 426
#10: 2009-10-26 14:45:06 ЛС | профиль | цитата
Вообще я сначала планировал как улучшение MT-потоков, чтобы можно было создавать MyType(MyType(MT-thread,MT,Mt...),MT,MyType(MT,MT)) где "," - разделитель значений, а скобки - начало или конец содержимого + им(потокам и типам) бы можно было давать имена(как видно из структуры varlist). Соблазнительно
карма: 10
0
Разработчик
Ответов: 26324
Рейтинг: 2147
#11: 2009-10-26 14:55:20 ЛС | профиль | цитата
Assasin, я так понял, что хочется иметь что-то, типа -- именнованых МТ-потоков
карма: 22

0
Разработчик
Ответов: 4698
Рейтинг: 426
#12: 2009-10-28 01:00:55 ЛС | профиль | цитата
Не только, несколько пояснений:
1: возможность давать имя переменным, это дает преимущества, можно не выводить 65 точек от МТ-потока компонентом MT_MultiMem чтобы взять значение 65 элемента в потоке, а просто ввести его имя или индекс(будет зависеть от свойства NumORName(индекс или название)) в список переменных.
2: возможность давать имя самому типу, что делает возможным проверку на совместимость типов(например если .name <> _prop_name, то вывести ошибку).
3: Самое важное! Нельзя на данный момент объединить два МТ-потока в один, как два элемента, при извлечении значений будет извлекаться не два элемента, а все по порядку, данная задача уже часто мне попадалась и приходилось использовать string, а это лишняя суматоха с GetTok и уменьшение быстродействия(пример 1,2,3;4,5,6 в первом МТ-потоке [1][2][3], во 2 - [4][5][6], при скреплении и последующем разъединении он не выдаст 2 МТ-потока, а 6 элементов, а если надо наоборот?), а MyType УМЕЕТ соединять два МТ-потока (или два других типа, созданными им), как два элемента и выдавать при рассоединении как 2 элемента.
Только не уверен, сможет ли такая система использоваться для передачи пакетов через TCP. Да к недостаткам можно также отнести и увеличение памяти под MyType и уменьшение быстродействия, в отличии от МТ-потока, но иногда требуются жертвы.
------------ Дoбавленo в 01.22:
Да, 4: возможность посмотреть кол-во элементов в Типе, в МТ-потоке такого не находил, хотя реализовать думаю просто
карма: 10
0
12
Сообщение
...
Прикрепленные файлы
(файлы не залиты)