А с кортежем у Вас не работало?
А скиньте ка .exe файл, который получается когда вы компилируете. Я попробую декомпилировать, возможно это даст всю необходимую информацию чтоб исправить.
{$platformtarget x86}
begin
var tupl := (1,2,[3,4,5]);
Print(tupl.Item1);
readln;
end.
Уточнение. Эта ошибка возникает только при компиляции на 32-битных платформах и с включенным ускорением запуска (с PABCRtl).
Вот две программы:
begin
var tupl := (1,2,[3,4,5]);
Print(tupl.Item1);
end.
и
begin
var tupl := new System.Tuple<integer,integer,TypedSet>(1,2,[3,4,5]);
Print(tupl.Item1);
end.
Отличие в генерируемом коде в одной строчке:
Tuple<int, int, TypedSet> tuple = Tuple.Create<int, int, TypedSet>(arg_5B_0, arg_5B_1, PABCSystem.CreateSet(Program.$intarr1).CloneSet());
Tuple<int, int, TypedSet> tuple = new Tuple<int, int, TypedSet>(arg_56_0, arg_56_1, PABCSystem.CreateSet(Program.$intarr1));
Может, ibond посмотрит, что может быть не так
Однако повреждённых частей .exe
я не нашёл. Декомпилятор не видит ничего странного. И у меня этот .exe
выполняется без ошибок.
Убрал галку в настройках “Опции компиляции>Ускорять запуск из под оболочки” и заработало, windows 64 разрядная. А вот еще вам скрин, таки что-то с кортежем из множеств не все в порядке. Интелисенс не предлагает по точке третий элемент и последующие элементы кортежа если в нем есть множество.
Да, я уже заметил и сделал #991. Анализатор кода сейчас вообще не умеет определять тип кортежа, когда 1 из элементов - множество. А первые 2 элемента всё же показывает только потому, что у всех кортежей есть 2 элемента, но у некоторых их может быть до 7 (или 6, или 8, там всё сложно).
Если тут открыть и сделать активным test.pas
, а затем открыть NN3Data
и запустить - получаем ошибку чтения .psu
. Если поставить всем модулям {$savepcu false}
- ошибка пропадает. Надо ли искать минимальный код? Или этого архива вам хватит?
Надо искать минимальный код - конечно!
А как я могу установить 64-битную платформу, если у меня приложение ставится само в
C:\Program Files (x86)\PascalABC.NET ?
Оно у всех туда ставится
Но это же папка для 32-битных приложений. Более того, когда я смотрю, можно ли запустить PascalABCNET.exe в режиме совместимости, мне предлагается список, начиная от Windows-95, т.е. приложение явно 32-битное.
Компилятор на 64-битных платформах генерит 64-битный код
Но сам при этом является 32-битным. Или там все еще сложнее: 32-битный загрузчик у 64-битного приложения.
Я не знаю, как еще определить, какой там код, но только что поотключал опции отладки, ускорения запуска - все одно windows код определяет, как 32-битный. Сгенерированный код.
Architecture: AnyCPU (64-bit preferred)
Вот что у меня показывает ILDasm
Нет у меня Visual Studio. Лицензионного ключа нет, а пиратку ставить не вижу смысла.
Ошибку при форматировании неймспейсов начали исправлять, что не может не радовать. Однако вместо желаемого:
NameSpace My;
получаем
NameSpaceMy
Ну, их всё ещё официально не объявили, мне кажется что всё ещё рано говорить об ошибках.
Но раньше было вот так:
libraryMy
Об этом, кстати, я уже писал на форуме. Работа ведётся.