
Denis
09.05.2018
09:06:26
а ну понятно, это не код же, а описание
а вы там присваиваите
т.е. это не функция которая выполняться же будет?
если написать последнюю строку в main() то всё сработает думаю

Google

Denis
09.05.2018
09:07:32
> Error: need this for pMenu of type CMenu *
читать как:
Error: need "this" pointer for pMenu of type CMenu *
не очень удачная формулировка сообщения тут

White_116
09.05.2018
09:08:34
gCMenuPool.pMenu.interaction[12].Menu = 2;
вызываю из под функции, запись в память приложения.

Denis
09.05.2018
09:09:18
https://run.dlang.io/ сюда запостите код - это онлайновый компилятор

White_116
09.05.2018
09:16:27
https://run.dlang.io/is/qOcCdO

Denis
09.05.2018
09:17:22
> rdmd playground.d
Error: program killed by signal 11
совсем другая ошибка
gCMenuPool = cast(CMenuPool*) 0x5352231;
вот эта строка вообще сильная
она что делать должна?
показать в случайное место памяти наобум? она это делает и в следующей строке ОС её убивает за такое

White_116
09.05.2018
09:19:48
в памяти приложения по "условному" адресу 0x5352231 лежит структура CMenuPool

Denis
09.05.2018
09:19:56
откуда ты знаешь что она там лежит?

White_116
09.05.2018
09:22:21
адрес тут прописан на шару, по факту структура верная, адрес верный, на С++ проблем не возникало.
Сейчас с переходом на D я немогу обращатся к памяти через структуры, компилятор меня посылает с ошибкой Error: need this for ...

Google

Denis
09.05.2018
09:22:30
https://run.dlang.io/is/vk2H0C
мой вариант
или вообще?
я так понимаю ты просто в левую память пытаешься обратиться и с некоей большой вероятностью попадаешь в невыделенную тебе память

White_116
09.05.2018
09:24:01
меня компилятор не пропускает, я плагин скомпилировать не могу.

Denis
09.05.2018
09:24:28
какой?

White_116
09.05.2018
09:25:33
dmd 2.079.1

Denis
09.05.2018
09:25:51
плагин какой? этот код оттуда?

Dmitry
09.05.2018
09:28:39
у меня компилирует. dmd 2.078.1

Denis
09.05.2018
09:28:55

White_116
09.05.2018
09:28:58
обычная dll которая цепляется к приложению и имеет возможность манипулировать памятью приложения. На данном этапе требуется читать память через структуры.

Denis
09.05.2018
09:29:35
а ну тут ты памяти приложения не имеешь, обращаешься в невыделенную тебе память и оно поэтому падает
т.е. всё работает корректно

White_116
09.05.2018
09:29:59
т.е. я скомпилировать не могу...
?

Denis
09.05.2018
09:30:22
https://run.dlang.io/is/n8IaRd ну тут вот код компилится

Dmitry
09.05.2018
09:32:36
Не компилится именно приведенный пример, или твой код плагина?

Denis
09.05.2018
09:37:06
интрига сохраняется)

White_116
09.05.2018
09:40:26
минуту

Google

White_116
09.05.2018
09:53:59
магия какая-то, пересобрал во второй проект, ошибки нет.
простоя невнимательность.
Запись была
CMenuPool.pMenu.interaction[12].Menu
нужно было gCMenuPool.pMenu.interaction[12].Menu
Всем спасибо.

Pavel
09.05.2018
11:51:41
У меня mecca не собирается :(
А обещали nogc файберы
Но код там крутой, интересно почитать

Dark
09.05.2018
12:22:30
Это что?

Denis
09.05.2018
12:31:05
https://habr.com/post/358154/

Pavel
09.05.2018
12:33:49
Это что?
https://github.com/weka-io/mecca

Denis
09.05.2018
12:38:51
dub run —config=mecca-ut # так работает?

Dark
09.05.2018
12:56:54

Pavel
09.05.2018
12:57:22
Ну типа event loop

Dark
09.05.2018
12:58:27
А почему "типа"?

Pavel
09.05.2018
13:04:17
Типа потому
Что реактор и event loop это все же разные понятия
А вот собранный sleeper валится с segmentation fault
А когда я попробовал их логгер использовать у себя в проекте то у меня просто не слинковалось, вывалилось с какой-то ошибкой про кавычки
Уже не говоря о том что я там нашел диковинные конструкции
static ubyte[] f() @nogc {
//new ubyte[100];
return as!"@nogc"({return new ubyte[100];});
}

Google

Pavel
09.05.2018
15:00:00
Типа динамически берем кусок кода и насильно ему присваиваем атрибут nogc. Хотя он аллоцирует. Как при этом будет действовать GC вообще не понятно.

Denis
09.05.2018
15:04:55
lol

NullSanya
09.05.2018
15:05:29
Может это временно?

Pavel
09.05.2018
15:06:43
Конкретно этот кусок из юнит теста
Но там as! сделана как конструкция из модуля reflection то есть они сознательно такое написали чтобы давать себе возможности отстрелить ноги. Потом неудивительно что segfault вываливается.

Denis
09.05.2018
15:13:27
а какой датой датирована эта конструкция?
сделали бы её опциональной что ли, через version

Pavel
09.05.2018
15:23:50
Где-то полугодичная давность или свежее
https://github.com/weka-io/mecca/commits/7f34a0a54438d3ce78010d51d9b9d27a87048f7d/src/mecca/lib/reflection.d

Admin
ERROR: S client not available

Denis
09.05.2018
15:24:51
ну раз сами хавают то может оно норм?

Pavel
09.05.2018
15:26:59
им то норм но смысл тогда выкладывать в паблик
Скорее всего у них какие-то специфичные случаи под специфичные компиляторы. А когда выкладываешь в паблик то сразу ответственности прибавляется на порядок. И чтобы на разных компиляторах собиралось, и чтобы пользователи не могли отстрелить себе ноги, и чтобы документация с примерами хорошими и объяснением зачем сделано так а не иначе.
Хотя конечно от версии 0.0.2 чего ждать :)

Denis
09.05.2018
15:29:08
кaбутта у нас компиляторов 20 штук
Главред радио «Говорит Москва» Сергей Доренко встретил на параде в честь Дня победы главу Роскомнадзора и спросил, можно ли ему писать в Telegram. «Запросто», — ответил Александр Жаров.

Pavel
09.05.2018
15:33:24

Denis
09.05.2018
15:33:47
а он сильно отстаёт, тоже выпилил его отовсюду

Dark
09.05.2018
15:43:33

Pavel
09.05.2018
15:50:35
Ктонить реализовывал кольцевой буфер?

Google

Denis
09.05.2018
15:51:01

Pavel
09.05.2018
15:51:19
Как его можно использовать в случае если в него пишется довольно большой кусок? Получается что мы не можем записать данные в один заход
Например, есть буфер в 100 байт. 90 байт мы записали. Потом прочитали 10 байт. У нас образовалась дырка в начале 10 байт и в конце 10 байт
Если мы захотим дописать в буфер 15 байт то не сможем сделать это за один read()
Придется читать 10 байт в конец буфера и 5 байт в начало.

Igor
09.05.2018
16:36:35

Pavel
09.05.2018
16:36:51
В betterc режиме? )

Igor
09.05.2018
16:36:54
нет
хотя там вообще никаких аллокаций и т.д.

Pavel
09.05.2018
16:37:31
Может создать организацию для betterc библиотек, а то столько всякого добра требуется

Igor
09.05.2018
16:38:17
я в описанном случае использую другую схему правда она для brtterc не годится
храню принятые куски данных в виде immutable(ubyte)[][]

Denis
09.05.2018
16:39:51

Pavel
09.05.2018
16:47:21
О! Я же могу использовать pipe(2) как кольцевой буфер!
Хотя не, не могу же

Igor
09.05.2018
16:48:35

Pavel
09.05.2018
16:48:53
мне надо из одного сокета читать а в другой писать

Igor
09.05.2018
16:49:17
а почему не сделать колцевой буфер кусочков данных?

Pavel
09.05.2018
16:49:22
Неблокирующе

Igor
09.05.2018
16:49:48
ну типа кольцевой буфер указателей на принятые буфера

Denis
09.05.2018
16:50:01