|
![]() |
#1 |
Участник
|
Значение, установленное 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 |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|