OberonCore https://forum.oberoncore.ru/ |
|
#006 ConsInterp.Call1 режет последнюю литеру у параметров https://forum.oberoncore.ru/viewtopic.php?f=134&t=6443 |
Страница 1 из 1 |
Автор: | Евгений Темиргалеев [ Четверг, 10 Октябрь, 2019 20:20 ] |
Заголовок сообщения: | #006 ConsInterp.Call1 режет последнюю литеру у параметров |
Код: NEW(par); par.text := m; par.beg := 0; par.end := m.Length() - 1;
DevCommanders.par := par |
Автор: | Alexander Shiryaev [ Четверг, 10 Октябрь, 2019 21:08 ] |
Заголовок сообщения: | Re: ConsInterp.Call1 режет последнюю литеру у параметров |
Почему DevCompiler, DevLinker, DevDebug работают с текущей реализацией правильно? Нужно пример, когда проявляется ошибка. |
Автор: | Евгений Темиргалеев [ Пятница, 11 Октябрь, 2019 12:49 ] |
Заголовок сообщения: | Re: ConsInterp.Call1 режет последнюю литеру у параметров |
В тексте содержится вся строка. DevXxx могут работать, потому что они некорректно читают параметры, вылезая за пределы диапазана [beg, end). Такое объяснение можно выдвинуть. Пример: Код: ./run-BlackBox <<DATA Если после ipui$ поставить пробел, то идет компиляция подсистемы. А если строка заканчивается на $, то идет компиляция модуля ipui.DevCompiler.CompileThis ipuiK20 ipuiK46 ipuiK299 ipuiK299.CompileThis ipui$ DATA Код: compiling
ok compiling "ipuiK20" 7600 12 compiling "ipuiK46" 584 4 compiling "ipuiK299" 6176 12 Не открылся документ 'Mod/ipui.odc' подсистемы 'System': локация или файл не найдены |
Автор: | Alexander Shiryaev [ Пятница, 11 Октябрь, 2019 21:38 ] |
Заголовок сообщения: | Re: ConsInterp.Call1 режет последнюю литеру у параметров |
Достаточно заменить Код: par.end := m.Length() - 1 на Код: par.end := m.Length() или что-то ещё нужно?
|
Автор: | Евгений Темиргалеев [ Пятница, 11 Октябрь, 2019 22:07 ] |
Заголовок сообщения: | Re: ConsInterp.Call1 режет последнюю литеру у параметров |
Да. |
Автор: | Alexander Shiryaev [ Пятница, 11 Октябрь, 2019 22:55 ] |
Заголовок сообщения: | Re: ConsInterp.Call1 режет последнюю литеру у параметров |
Исправил в репозитории BBCP. Из pack-dev0 убрал "~" в конце списка для DevPacker.PackThis. Когда исприавил всё так же в своём "старом" репозитории, почему-то стал зависать DevPacker в pack-dev0: Код: **** * BlackBox * keyboard interrupt - TextModels.StdReader.Pos (pc=00003F87, fp=CF7D3C10) - DevPacker.GetNextFileName (pc=000014BC, fp=CF7D3E30) - DevPacker.PackThis (pc=00001B2C, fp=CF7D4F80) - Kernel.Call (pc=00001D72, fp=CF7D4FAC) - Meta.Item.ParamCallVal (pc=00002B5F, fp=CF7D540C) - StdInterpreter.CallProc (pc=00000475, fp=CF7D5474) - StdInterpreter.Command (pc=00000A61, fp=CF7D550C) - StdInterpreter.CallHook.Call (pc=00000B0F, fp=CF7D56FC) - Dialog.Call (pc=00003644, fp=CF7D5724) - ConsInterp.Call1 (pc=00000179, fp=CF7D5754) - ConsInterp.Call0 (pc=0000024E, fp=CF7D5770) - ConsInterp.Call (pc=000003E3, fp=CF7D5788) **** Если в конце строки параметров добавить пробел: Код: ****
* BlackBox * keyboard interrupt - TextModels.StdReader.Read (pc=00003F8A, fp=CF7B9FB4) - DevPacker.RemoveWhiteSpaces (pc=000012CE, fp=CF7B9FC0) - DevPacker.GetNextFileName (pc=000014BC, fp=CF7BA1E0) - DevPacker.PackThis (pc=00001B2C, fp=CF7BB330) - Kernel.Call (pc=00001D72, fp=CF7BB35C) - Meta.Item.ParamCallVal (pc=00002B5F, fp=CF7BB7BC) - StdInterpreter.CallProc (pc=00000475, fp=CF7BB824) - StdInterpreter.Command (pc=00000A61, fp=CF7BB8BC) - StdInterpreter.CallHook.Call (pc=00000B0F, fp=CF7BBAAC) - Dialog.Call (pc=00003644, fp=CF7BBAD4) - ConsInterp.Call1 (pc=00000179, fp=CF7BBB04) - ConsInterp.Call0 (pc=0000024E, fp=CF7BBB20) **** |
Автор: | Евгений Темиргалеев [ Воскресенье, 13 Октябрь, 2019 03:02 ] |
Заголовок сообщения: | Re: ConsInterp.Call1 режет последнюю литеру у параметров |
Проверьте RemoveWhiteSpaces. B16 DevPacker.RemoveWhiteSpaces: зацикливается в конце текста viewtopic.php?f=116&t=3974 Код: PROCEDURE RemoveWhiteSpaces (rd: TextModels.Reader; end: INTEGER);
BEGIN WHILE ~rd.eot & (rd.Pos() <= end) & (rd.char <= 20X) DO GetCh(rd) END END RemoveWhiteSpaces; |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |