Вверх ↑
Этот топик читают: Гость
Ответов: 9906
Рейтинг: 351
#16: 2018-10-30 14:44:39 ЛС | профиль | цитата
nesco, мы не меняем FTCG_CodeGen.dpr
просто он в себе содержит в 588-й строке:
{$i direct.inc}
- который (и только его) мы и обновили. И который лежит где положено.
Так-что, причин для волнений/сомнений пока нет никаких.

Редактировалось 3 раз(а), последний 2018-10-30 15:06:18
карма: 9

0
Ответов: 4612
Рейтинг: 746
#17: 2018-10-30 15:08:06 ЛС | профиль | цитата
Раз уж затронули тему кодогенератора FTCG - поделюсь своими наблюдениями.

В файле FTCG_CodeGen.dpr есть объект типа TScData и указатель на него PScData.
Объекты в Delphi создаются либо по указателю с помощью оператора New(), либо прямо объявляя переменную этого типа. В обеих случаях память, выделенная под объект, не инициализируется 0-ми. Автор кода об этом знает, например, в этом месте, когда после New(Result) выполняет FillChar(Result^, sizeof(TScData), 0):
function MakeData(num:integer):PScData; overload;
begin
New(Result);
FillChar(Result^, sizeof(TScData), 0);
Result.SetValue(num);
end;
Но автор упустил обнуление памяти в других местах, как это:
function map_lower(parser:TParser; args:TArgs):TScData;
begin
Result.SetValue(LowerCase(args.Values[0].toStr()), args.Values[0].GetType);
end;
Переменная Result не заполняется 0-ми, потому что локальные переменные и результат функции автоматически не инициализируются. В результате этого метод полученного таким образом объекта, например
procedure TScData.Clear;
begin
if ldata <> nil then
dispose(ldata);
end;
может выдавать ошибку, потому что поле TScData.ldata <> nil (память созданного объекта изначально не была обнулена), но указывает оно в никуда, а следующий dispose(ldata) будет пробовать уничтожить непонятно что.
На данный момент оно работает - просто по чистой случайности компилятор Delphi 4 с текущими настройками размещает созданные таким образом объекты в обнуленных участках памяти. Но нет никакой гарантии, что после каких-либо незначительных изменений в каких-либо случаях на месте объекта не окажутся какие-либо числа.
Надо бы это как-то поправить или хотя бы принять к сведению.

Редактировалось 1 раз(а), последний 2018-10-30 15:24:27
карма: 26

0
Ответов: 9906
Рейтинг: 351
#18: 2018-10-30 15:19:59 ЛС | профиль | цитата
Netspirit, что по этим кодам надо ходить как по минному полю -- не есть для меня новость.
Плавали, знаем.........................
Но, все равно -- спасибо за предупреждение

Редактировалось 3 раз(а), последний 2018-10-30 15:21:51
карма: 9

0
Ответов: 4612
Рейтинг: 746
#19: 2018-10-30 15:23:15 ЛС | профиль | цитата
А я, собственно, сделал компиляцию обеих кодогенераторов новым FPC. Тогда с этим столкнулся и исправил.
карма: 26

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#20: 2018-10-30 16:45:06 ЛС | профиль | цитата
Пусть повисит до завтра, может еще чего найдется.
карма: 22

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#21: 2018-10-31 12:24:45 ЛС | профиль | цитата
Ну че, добавляем? Папку FTCG я вообще трогать не буду, меня туда не пускает, те файл CodeGen.dpr в папке FTCG останется оригинальным, меняю только все в папке delphi. Кстати, а что в комментах писать, че фиксим-то? Ну, вот это "fix: <бла-бла-бла>", желательно сразу на буржуйском?
карма: 22

0
Ответов: 4612
Рейтинг: 746
#22: 2018-10-31 12:58:17 ЛС | профиль | цитата
direct.inc: compilation errors with duplicated local variables in FTCG_Tools under some conditions
И что там ещё правилось в других компонентах.

Редактировалось 1 раз(а), последний 2018-10-31 13:00:55
карма: 26

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#23: 2018-10-31 13:49:36 ЛС | профиль | цитата
А че будем делать с hiFT_Math.hws, его надо обновлять или нет? Не нравится мне, что какими-то кусками правки делаются? Нельзя что ли все это одной кучей выложить?
карма: 22

0
Ответов: 9906
Рейтинг: 351
#24: 2018-10-31 15:43:02 ЛС | профиль | цитата
nesco писал(а):
Папку FTCG я вообще трогать не буду, меня туда не пускает

Да даже думать об этом не моги
Если уж и придется вносить изменения (не дай бог, конечно же) в сам CodeGen, то он (измененный) должен лежать в нашей папке. С изменениями в make.bat, естественно.

nesco писал(а):
Не нравится мне, что какими-то кусками правки делаются

У нас 42 hws-файла. И все они именно так и сделаны - "какими-то кусками"

Ну мне это тоже не нравится..........
Но я не могу уверенно шлифовать файлы, пока не владею инструментом в достаточной степени.
Ну не нравятся мне декларации локальных из Init.
Ну не знаю я чего делать с lang (в FT_For его тупо закомментировали), и в какое место его втулять надо по правильному.
Вот мы не стали добавлять hiMathParse в BLK_UNITS, а перенесли нужное в share. А чего делать, если без такого не обойтись -- не знаю пока.
Хотя, вообще-то, добавляют такое в uses из implementation а не из interface (т.е. - уже легкий глюк).
А если вдруг наш элемент решит (в силу своей гениальности) свой же event реализовать как приватный метод... Куда размещать - подготовлено: объявления в BLK_PRIV_MTD, реализацию в BLK_MTD_BODY.
А локальные куда, спрашивается -- не знаю пока.

Видишь ли nesco, исправления в direct.inc, EditMultiEx.hws -- это все шлифовка системы, это как укрепление фундамента, замена дефектных стропил, и т.п.
Коллега Netspirit говорит, что нужно бы какой-то свой share.hws завести (достойная мысль, между прочим).
Не самое удачное время для надстраивания новых комнат, и/или расширения старых.

Так что, бог с ним пока, с "не нравится". Главное, чтобы сейчас не нравилось меньше, чем не нравилось раньше.



--- Добавлено в 2018-10-31 15:50:26

Ах да, про FT_Math... Вот, случайно увидел:

Там в 27-м case неправильно стоит op2 (надо o2)
А в 33-м case неправильно стоит op1 (надо o1). И это почему вдруг Abs стал возвращать целое - тоже непонятно (надо sub(r, 7) делать)

Редактировалось 6 раз(а), последний 2018-10-31 16:00:29
карма: 9

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#25: 2018-10-31 16:03:44 ЛС | профиль | цитата
Galkov писал(а):
Ах да, про FT_Math (случайно увидел)

Так, пока воздержимся
Galkov писал(а):
Ну не знаю я чего делать с lang (в FT_For его тупо закомментировали), и в какое место его втулять надо по правильному.

Так, а с этим что делать, добавлять или тоже пока нафиг?

--- Добавлено в 2018-10-31 16:11:57

Пофиксил hiEditMultiEx.hws и direct.inc

Редактировалось 1 раз(а), последний 2018-10-31 16:11:57
карма: 22

0
Ответов: 9906
Рейтинг: 351
#26: 2018-10-31 16:13:13 ЛС | профиль | цитата
Да добавляй все.
Хоть и не нравится
Хуже-то уж точно не будет
карма: 9

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#27: 2018-10-31 16:31:08 ЛС | профиль | цитата
Galkov писал(а):
Да добавляй все

Выложи исправленную версию FT_Math.
карма: 22

0
Ответов: 9906
Рейтинг: 351
#28: 2018-10-31 16:37:46 ЛС | профиль | цитата
Легко.
((скажем так - немного исправленную))
карма: 9

0
файлы: 1hiFT_Math.rar [926B] [384]
Разработчик
Ответов: 26061
Рейтинг: 2120
#29: 2018-10-31 18:17:00 ЛС | профиль | цитата
Завтра добавлю.
карма: 22

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#30: 2018-11-01 15:14:20 ЛС | профиль | цитата
Пофиксил все, что выложили.
карма: 22

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)