Пользовательская функция
У пользователей получаются сильно большие скрипты.
С одинаковыми вызовами фукции.
Возникают ошибки обработки в этой фукции.
Сейчас они вынуждены ставить точки остановки на каждом таком вызове фукции.
И по шагам проходить весь скрипт. (в нем уже почти 7 тыс строк...)
Было бы проще им выводить в качестве ошибки номер строки где произошла данная ошибка(В передаваемых данных).
Как узнать с какой именно строки пришел вызов данной функции?
С одинаковыми вызовами фукции.
Возникают ошибки обработки в этой фукции.
Сейчас они вынуждены ставить точки остановки на каждом таком вызове фукции.
И по шагам проходить весь скрипт. (в нем уже почти 7 тыс строк...)
Было бы проще им выводить в качестве ошибки номер строки где произошла данная ошибка(В передаваемых данных).
Как узнать с какой именно строки пришел вызов данной функции?
Комментарии
ListStack: TStringList;
В блоках
initialization
ListStack := TStringList.Create;
finalization
ListStack.Free;
procedure TfsScript.RunLine(const UnitName, Index: String);
ListStack.Add(Index);
ListStack.Add(UnitName);
.. Это для уменьшения - чтобы сильно не рас расход памяти
if ListStack.Count > 400 then
begin
ListStack.Delete(0);
ListStack.Delete(0);
end;
Во всех функциях (3) где происходит вызов скрипта типа:
procedure TfsScript.Execute;
ListStack.Clear;
try
finally
if ListStack.Count <> 0 then
with CoDOMDocument.Create do
begin
i := 0;
with appendChild(createElement('ROOT')) do
repeat
with appendChild(ownerDocument.createElement('ROW')) As IXMLDOMElement do
begin
setAttribute('SourcePos', ListStack.Strings);
Inc(i);
setAttribute('UnitName', ListStack.Strings);
Inc(i);
end;
until i >= ListStack.Count;
save(ExtractFilePath(ParamStr(0)) + 'ScriptStack.xml');
end;