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

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


Где это применить?
...
Рейтинг: 0 / 0
FastReport 4: как узнать номер строки скрипта, в которой произошла ошибка?
    #39781446
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В коде Delphi
...
Рейтинг: 0 / 0
FastReport 4: как узнать номер строки скрипта, в которой произошла ошибка?
    #39781447
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если в отчёте, то выполняйте его в режиме отладки. Наставьте брейкпоинтов.
...
Рейтинг: 0 / 0
FastReport 4: как узнать номер строки скрипта, в которой произошла ошибка?
    #39781450
Фэйтл Эра
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBrЕсли в отчёте, то выполняйте его в режиме отладки. Наставьте брейкпоинтов.
Да так и делаю, только скрипт длинный, по две-три тысячи строк. Откроешь древний отчет, а там жуть с рогами, какую-нибудь мелочь поменять непросто, в рантайме почти никакой диагностики. Номер строки, имя контрола, имя процедуры - почему бы не отображать?
...
Рейтинг: 0 / 0
FastReport 4: как узнать номер строки скрипта, в которой произошла ошибка?
    #39781654
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фэйтл Эрав рантайме почти никакой диагностики. Номер строки, имя контрола, имя процедуры - почему бы не отображать?
Потому что сделано не для людей, к сожалению. Погремушка на коленке...
...
Рейтинг: 0 / 0
FastReport 4: как узнать номер строки скрипта, в которой произошла ошибка?
    #39782087
gpi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
FastReport 4: как узнать номер строки скрипта, в которой произошла ошибка?
    #39782267
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gpiFR 6.3.1 FRDemo Calendar report
Вам вопрос про FR4 задают, а не про последний билд.
...
Рейтинг: 0 / 0
FastReport 4: как узнать номер строки скрипта, в которой произошла ошибка?
    #39782270
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBr,

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

Вам вопрос про FR4 задают, а не про последний билд.
В FR 4 номер строки с ошибкой не отображается, в FR 5.6.18 - уже отображается
И что?
Нафталина нет, возьмите гуталин?
...
Рейтинг: 0 / 0
FastReport 4: как узнать номер строки скрипта, в которой произошла ошибка?
    #39782383
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
FastReport 4: как узнать номер строки скрипта, в которой произошла ошибка?
    #39782503
gpi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фэйтл Эра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
15 сообщений из 15, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FastReport 4: как узнать номер строки скрипта, в которой произошла ошибка?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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