|
09.06.2006, 17:52 | #1 |
Участник
|
InfoLog Trouble
Может кто-то разъяснить мне, почему так происходит?
Код: setPrefix("Prefix 1"); for (i = 1; i < 2; i++) { setPrefix('method1'); method1(); } for (i = 1; i < 2; i++) { setPrefix('method2'); method2(); } Если же пишу без цикла (если заметили, он вызывается только 1 раз) Код: setPrefix("Prefix 1"); setPrefix('method1'); method1(); setPrefix('method2'); method2(); P.S. А если не указать первый самый префикс (Prefix 1), то второй префикс методов (method2) вообще не выводится, все сообщения выводятся под первым префиксом. |
|
09.06.2006, 18:11 | #2 |
Участник
|
вынести в функцию или добавлять \t
http://erpkb.com/Axapta/infolog X++: void test1() { setPrefix('method1'); info('test'); } void test2() { setPrefix('method2'); info('test2'); } ; setPrefix("Prefix 1"); test1(); test2(); Последний раз редактировалось belugin; 09.06.2006 в 18:14. |
|
|
За это сообщение автора поблагодарили: decoder (1). |
09.06.2006, 18:45 | #3 |
Участник
|
Так а почему так происходит?
У меня на самом деле они устанавливаются в методе, который вызывается из метода method1() и method2() - и вызывается один и тот же метод. (с разными параметрами) И вот при этом я получил такую фигню. |
|
10.06.2006, 09:48 | #4 |
Участник
|
Значение, установленное SetPrefix(), автоматически сбрасывается при выходе за пределы блока, в котором оно было установлено. Блок - это набор инструкций, находящийся в теле функции или цикла. Для цикла каждая итерация считается за отдельный блок.
Например, X++: SetPrefix("Prefix"); for (i=1;i<=10;i++) { SetPrefix("Block " + int2str(i)); info("Блок выполнен"); } Проследить, что происходит при вызове SetPrefix() и выходе из предела блока можно с помощью функции GetPrefix(). Она возвратит последовательный набор значений, установленный предыдущими вызововами SetPrefix(), разделенными табуляцией. Infolog при показе сообщений, по умолчанию, прицепляет значение, возвращаемое GetPrefix() впереди текста сообщения и по разделителям (табуляции), строит дерево сообщений. На этом основана возможность строить дерево сообщений без вызова SetPrefix() просто вставляя "\t" в текст. В приведенных выше примерах в первом случае при выходе из пределов блока, ограниченного циклом, значение префикса возвращается в "Prefix 1" и при последующем вызове новое значение прибавляется к нему. Во втором примере новый префикс добавляется к уже существующему, по-этому получается вложенность. В случае, если SetPrefix() вызывается во вложенной функции, то при возврате из нее этот префикс сбрасывается. Надо устанавливать префикс либо в вызвающей функции либо в функции более высокого уровня
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: belugin (2), denilson (0), Jackally (1), SVlk (1). |
Теги |
info, infolog, setprefix |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|