Дмитрий Дагаев писал(а):
Режет глаза немного использование PROCEDURE {code} String для сишной вставки
Ничего не поделаешь, это реализовано на уровне фронт-энда. CPfront использует ББ-шный фронт-энд.
Дмитрий Дагаев писал(а):
А 64-бита вы пробовали? В vishap работает.
Пробовали. В Ofront+ тоже работает. Есть нативные версии командной строки для 32 и 64 бит Linux и Windows. А в CPfront'е это появится не раньше, чем 64-битная версия ББ. По тем же причинам: внутри ББ есть много привязок к 32-битной разрядности указателей. И CPfront это унаследовал. Я хотел бы в итоге CPfront и Ofront+ слить в один проект, но это процесс долгий и сложный. Как пойдёт. Ну и — если будут какие-то финансовые возможности, это только в плюс.
По поводу моего исправления. Суть его в том, что мы с Йозефом ковыряли процедуру DevCPP.GetCode. Убирали лимит на размер кодовых процедур, ещё Йозеф сделал пару фич. И CPfront был несовместим с новой версией GetCode. А после фикса он стал несовместим со сборками типа OberonCore и старыми версиями ББ, где остался старый вариант процедуры. Но проблема ли это? Ведь всегда можно взять свежую сборку. В CPfront кодовые процедуры транслируются в сишные дефайны, так что иметь лимит в 254 байта на длину тела процедуры ещё более бессмысленно, чем в ББ.
Вот смотрите, я на этой задаче тестил данный код:
https://github.com/Oleg-N-Cher/OfrontPlus/issues/48Но сейчас Ofront+ фичастее, в том смысле, что умеет объявлять внешние процедуры ещё и с разными моделями вызова. В CPfront так пока нельзя — он не пускает 2 системных флага сразу:
Код: "OBERON"
PROCEDURE {code, callback} Abc ...
А в Ofront+ можно, только записывается вот так:
Код: "OBERON"
PROCEDURE- [stdcall] Abc ...
Я думаю, нужно уходить от идента callback — он неинформативен, даже сбивает с толку.