Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FastReport 4: как узнать номер строки скрипта, в которой произошла ошибка? / 15 сообщений из 15, страница 1 из 1
02.03.2019, 23:50
    #39781428
Фэйтл Эра
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FastReport 4: как узнать номер строки скрипта, в которой произошла ошибка?
Ну, например, случилось обращение к несуществующему элементу массива. Высветилось сообщение - и все, привет.
А скрипт, зараза, здоровенный. И "отладчик" - слёзы. Поди найди, в какой строке сие произошло.

Не разбирался ли кто с данной "проблемой"?
...
Рейтинг: 0 / 0
03.03.2019, 00:39
    #39781435
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FastReport 4: как узнать номер строки скрипта, в которой произошла ошибка?
Код: pascal
1.
ShowMessage(Code.ErrorPos+':'+ Code.ErrorMsg);
...
Рейтинг: 0 / 0
03.03.2019, 01:20
    #39781440
asviridenkov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FastReport 4: как узнать номер строки скрипта, в которой произошла ошибка?
По хорошему им нужно сделать режим в котором при исключении на экран будет выводиться дебагер, аналогично IDE
...
Рейтинг: 0 / 0
03.03.2019, 01:26
    #39781441
Фэйтл Эра
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FastReport 4: как узнать номер строки скрипта, в которой произошла ошибка?
DimaBr
Код: pascal
1.
ShowMessage(Code.ErrorPos+':'+ Code.ErrorMsg);


Где это применить?
...
Рейтинг: 0 / 0
03.03.2019, 02:25
    #39781446
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FastReport 4: как узнать номер строки скрипта, в которой произошла ошибка?
В коде Delphi
...
Рейтинг: 0 / 0
03.03.2019, 02:34
    #39781447
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FastReport 4: как узнать номер строки скрипта, в которой произошла ошибка?
Если в отчёте, то выполняйте его в режиме отладки. Наставьте брейкпоинтов.
...
Рейтинг: 0 / 0
03.03.2019, 05:42
    #39781450
Фэйтл Эра
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FastReport 4: как узнать номер строки скрипта, в которой произошла ошибка?
DimaBrЕсли в отчёте, то выполняйте его в режиме отладки. Наставьте брейкпоинтов.
Да так и делаю, только скрипт длинный, по две-три тысячи строк. Откроешь древний отчет, а там жуть с рогами, какую-нибудь мелочь поменять непросто, в рантайме почти никакой диагностики. Номер строки, имя контрола, имя процедуры - почему бы не отображать?
...
Рейтинг: 0 / 0
04.03.2019, 00:13
    #39781654
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FastReport 4: как узнать номер строки скрипта, в которой произошла ошибка?
Фэйтл Эрав рантайме почти никакой диагностики. Номер строки, имя контрола, имя процедуры - почему бы не отображать?
Потому что сделано не для людей, к сожалению. Погремушка на коленке...
...
Рейтинг: 0 / 0
04.03.2019, 16:09
    #39782087
gpi
gpi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FastReport 4: как узнать номер строки скрипта, в которой произошла ошибка?
FR 6.3.1 FRDemo Calendar report
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
begin
  Year := 2014;

  Months[1] := 'January';
  Months[2] := 'February';
  Months[3] := 'March';
  Months[4] := 'April';
  Months[5] := 'May';
  Months[6] := 'June';
  Months[7] := 'July';
  Months[8] := 'August';
  Months[9] := 'September';
  Months[10] := 'October';
  Months[11] := 'November';
  Months[12] := 'December';
  ShowMessage(Months[13]);


...
Рейтинг: 0 / 0
04.03.2019, 22:34
    #39782267
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FastReport 4: как узнать номер строки скрипта, в которой произошла ошибка?
gpiFR 6.3.1 FRDemo Calendar report
Вам вопрос про FR4 задают, а не про последний билд.
...
Рейтинг: 0 / 0
04.03.2019, 22:49
    #39782270
Vlad F
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FastReport 4: как узнать номер строки скрипта, в которой произошла ошибка?
DimaBr,

А вы еще на Delphi 1 и его отчетники ссылайтесь. У меня как раз из его коробки осталась одна, теперь уже, однозначно коллекционная, книжка.
...
Рейтинг: 0 / 0
04.03.2019, 23:09
    #39782274
gpi
gpi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FastReport 4: как узнать номер строки скрипта, в которой произошла ошибка?
DimaBrgpiFR 6.3.1 FRDemo Calendar report
Вам вопрос про FR4 задают, а не про последний билд.
В FR 4 номер строки с ошибкой не отображается, в FR 5.6.18 - уже отображается
...
Рейтинг: 0 / 0
05.03.2019, 09:34
    #39782349
Фэйтл Эра
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FastReport 4: как узнать номер строки скрипта, в которой произошла ошибка?
gpiDimaBrпропущено...

Вам вопрос про FR4 задают, а не про последний билд.
В FR 4 номер строки с ошибкой не отображается, в FR 5.6.18 - уже отображается
И что?
Нафталина нет, возьмите гуталин?
...
Рейтинг: 0 / 0
05.03.2019, 10:47
    #39782383
DimaBr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FastReport 4: как узнать номер строки скрипта, в которой произошла ошибка?
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
procedure TForm1.FormCreate(Sender: TObject);
begin
  frxReport1.Script.OnRunLine := MyRunLine;
end;

procedure TForm1.MyRunLine(Sender: TfsScript; const UnitName, SourcePos: String);
begin
  Memo1.Lines.Add(SourcePos);
end;
...
Рейтинг: 0 / 0
05.03.2019, 14:12
    #39782503
gpi
gpi
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
FastReport 4: как узнать номер строки скрипта, в которой произошла ошибка?
Фэйтл Эраgpiпропущено...

В FR 4 номер строки с ошибкой не отображается, в FR 5.6.18 - уже отображается
И что?
Нафталина нет, возьмите гуталин?
Можно попробовать перетащить код из текущего FS в FS десятилетней давности
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
 Source/fs_iinterpreter.pas | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/Source/fs_iinterpreter.pas b/Source/fs_iinterpreter.pas
index 23e2785..abef546 100644
--- a/Source/fs_iinterpreter.pas
+++ b/Source/fs_iinterpreter.pas
@@ -175,6 +175,7 @@ type
     FIncludePath: TStrings;
     FUseClassLateBinding: Boolean;
     FEvaluteRiseError: Boolean;
+    FLastSourcePos : String;
     function GetItem(Index: Integer): TfsCustomVariable;
     procedure RunLine(const UnitName, Index: String);
     function GetVariables(Index: String): Variant;
@@ -3004,10 +3005,21 @@ procedure TfsStatement.Execute;
 var
   i: Integer;
 begin
+  FProgram.ErrorPos := '';
   for i := 0 to Count - 1 do
   begin
     if FProgram.FTerminated then break;
-    Items[i].Execute;
+    try
+      FProgram.FLastSourcePos := Items[i].FSourcePos;
+      Items[i].Execute;
+    except
+      on E: Exception do
+       begin
+         if FProgram.ErrorPos = '' then
+           FProgram.ErrorPos := FProgram.FLastSourcePos;
+         raise;
+       end;
+    end;
     if FProgram.FBreakCalled or FProgram.FContinueCalled or
       FProgram.FExitCalled then break;
   end;
@@ -3383,6 +3395,7 @@ begin
       begin
         FProgram.SetVariables('ExceptionClassName', E.ClassName);
         FProgram.SetVariables('ExceptionMessage', E.Message);
+        FProgram.ErrorPos := FProgram.FLastSourcePos;
         ExceptStmt.Execute;
       end;
     end;
@@ -3400,7 +3413,6 @@ begin
   end;
 end;


...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FastReport 4: как узнать номер строки скрипта, в которой произошла ошибка? / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]