Этот топик читают: Гость
|
Разработчик
Ответов: 4698
Рейтинг: 426
|
|||
|
Задумал было сделать несколько компонентов по созданию и работе с собственными типами переменных(как бы строка type для схемы, а не кода), но застрял в лифте, дальше подниматься не хочет, есть code_15372.txt(ShareMyType ищи в прищепке) и он не работает, выдает runtimeerror, причину нашел не хочет работать процедура SetLength() в процедуре ClearMyType(), вопрос почему
|
|||
| карма: 10 |
| ||
| файлы: 2 | mytype.rar [566B] [101], code_15372.txt [689B] [197] |
|
Ответов: 175
Рейтинг: 10
|
|||
|
не могу открыть code_15372.txt - судя по содержимому там даже связей нет.
может еще раз схему выложишь? |
|||
| карма: 1 |
|
|
Разработчик
Ответов: 4698
Рейтинг: 426
|
|||
|
С той проблемой разобрался(надо было при инициализации типа(ClearMyType(теперь IntMyType)) добавить new(dt)), теперь не знаю как это вывести в поток, чтобы можно было прочесть его и работать с ним, а то все та же ошибка вылетает(в схеме из архива в прищепке), что дальше делать не знаю
------------ Дoбавленo в 21.19: Да забыл упомянуть, в архиве компонент(тестовый, тот который не работает), его надо поставить для работы схемы |
|||
| карма: 10 |
| ||
| файлы: 1 | mytype.rar [2.2KB] [99] |
|
Ответов: 175
Рейтинг: 10
|
|||
|
Assasin, у меня мозга не хватает, извини за беспокойство..
странно, почему гуру молчат, наверное не видят перспективы? |
|||
| карма: 1 |
|
|
Разработчик
Ответов: 4698
Рейтинг: 426
|
|||
|
Да ничего, форум все-таки не вы так кто еще поможет.
"Гуру молчат" потому что нет свободного времени и нет желания, по причине не видят перспективы. ИМХО (не в обиду сказал) Да и самому допереть будет интереснее... |
|||
| карма: 10 |
|
|
Разработчик
Ответов: 26324
Рейтинг: 2147
|
|||
|
Assasin, ты создаешь структуру ( new(dt) ), отводишь под нее память, а удалять ее кто будет каждый раз, когда ты удаляешь, или очищаешь список ( dispose(dt) ) для каждого удаляемого элемента ). Второе: ты добавляешь новый пункт, а создавать новую структуру ( new(dt) ) кто будет
|
|||
| карма: 22 |
|
|
Разработчик
Ответов: 4698
Рейтинг: 426
|
|||
|
nesco, извиняюсь если разозлил. По делу: dispose(dt) стоит у меня в самом компоненте, пока одну эту строчку выносить в процедуру MTFree выводить причин не вижу, только не уверен, правильно ли я сделал очистку, чтобы вдруг невзначай не стереть данные перед их сохранением(например в memory, если я правильно понял, то надо писать для каждого PData, dt.varlist[i].value свой new() и dispose(), так
|
|||
| карма: 10 |
|
|
Разработчик
Ответов: 26324
Рейтинг: 2147
|
|||
|
Assasin писал(а): dt.varlist[i].valueЕсли в них хранятся указатели на структуру, то структура по этим указателям должна быть создана |
|||
| карма: 22 |
|
|
Ответов: 175
Рейтинг: 10
|
|||
|
извините за вешательство в полемику, но зачем создавать свой тип данных - после чего ты к этому пришел?
все задачи, которые я перед собой ставил решались методами hiasm без новых типов |
|||
| карма: 1 |
|
|
Разработчик
Ответов: 4698
Рейтинг: 426
|
|||
|
Вообще я сначала планировал как улучшение MT-потоков, чтобы можно было создавать MyType(MyType(MT-thread,MT,Mt...),MT,MyType(MT,MT)) где "," - разделитель значений, а скобки - начало или конец содержимого + им(потокам и типам) бы можно было давать имена(как видно из структуры varlist). Соблазнительно
|
|||
| карма: 10 |
|
|
Разработчик
Ответов: 26324
Рейтинг: 2147
|
|||
|
Assasin, я так понял, что хочется иметь что-то, типа -- именнованых МТ-потоков
|
|||
| карма: 22 |
|
|
Разработчик
Ответов: 4698
Рейтинг: 426
|
|||
|
Не только, несколько пояснений:
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 |
|
12



Поиск
Друзья
Администрация