OberonCore
https://forum.oberoncore.ru/

Lib: Вопрос про Log в LibMatrices
https://forum.oberoncore.ru/viewtopic.php?f=47&t=3112
Страница 1 из 1

Автор:  Иван Денисов [ Понедельник, 27 Декабрь, 2010 19:07 ]
Заголовок сообщения:  Lib: Вопрос про Log в LibMatrices

Не могу разобраться, почему так странно выводится матрица в пакете Lib :(
После вывода первой матрицы пишется строчка второй... пытался копаться в исходниках, подозреваю что дело в буфере, но опыта не хватает, чтобы поправить, подскажите, пожалуйста.
Программа:
Код:
MODULE DiaTest;
   IMPORT Out := StdLog, Mat := LibMatrices;
   PROCEDURE Do* ();
      VAR
         n, i: INTEGER;
         s: POINTER TO ARRAY OF REAL;
         A: Mat.Matrix;
   BEGIN
      n := 10;
      NEW(s, n);

      A := Mat.NewRC(n, n);
      FOR i := 0 TO n - 1 DO
         A[i][i] := 1;
      END;
      FOR i := 0 TO n - 2 DO
         A[i][i + 1] := - 1;
         A[i + 1][i] := - 1;
      END;
      Out.String(" -- 1 ВЫВОД -- "); Out.Ln;
      Mat.WrtL(A, 4, 1, 10);
      Out.String(" -- 2 ВЫВОД -- "); Out.Ln;
      Mat.WrtL(A, 4, 1, 10);
   END Do;
END DiaTest.

DiaTest.Do
Код:
 -- 1 ВЫВОД --
(-1. , 1. ,-1. , 0. , 0. , 0. , 0. , 0. , 0. , 0. )
( 0. ,-1. , 1. ,-1. , 0. , 0. , 0. , 0. , 0. , 0. )
( 0. , 0. ,-1. , 1. ,-1. , 0. , 0. , 0. , 0. , 0. )
( 0. , 0. , 0. ,-1. , 1. ,-1. , 0. , 0. , 0. , 0. )
( 0. , 0. , 0. , 0. ,-1. , 1. ,-1. , 0. , 0. , 0. )
( 0. , 0. , 0. , 0. , 0. ,-1. , 1. ,-1. , 0. , 0. )
( 0. , 0. , 0. , 0. , 0. , 0. ,-1. , 1. ,-1. , 0. )
( 0. , 0. , 0. , 0. , 0. , 0. , 0. ,-1. , 1. ,-1. )
( 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,-1. , 1. )
( 1. ,-1. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. )
 -- 2 ВЫВОД --
(-1. , 1. ,-1. , 0. , 0. , 0. , 0. , 0. , 0. , 0. )
( 0. ,-1. , 1. ,-1. , 0. , 0. , 0. , 0. , 0. , 0. )
( 0. , 0. ,-1. , 1. ,-1. , 0. , 0. , 0. , 0. , 0. )
( 0. , 0. , 0. ,-1. , 1. ,-1. , 0. , 0. , 0. , 0. )
( 0. , 0. , 0. , 0. ,-1. , 1. ,-1. , 0. , 0. , 0. )
( 0. , 0. , 0. , 0. , 0. ,-1. , 1. ,-1. , 0. , 0. )
( 0. , 0. , 0. , 0. , 0. , 0. ,-1. , 1. ,-1. , 0. )
( 0. , 0. , 0. , 0. , 0. , 0. , 0. ,-1. , 1. ,-1. )
( 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,-1. , 1. )

Автор:  Евгений Темиргалеев [ Понедельник, 27 Декабрь, 2010 19:21 ]
Заголовок сообщения:  Re: Вопрос про Log в LibMatrices

вроде видел (давно), что Lib-й вывод лезет в
Цитата:
VAR buf-: TextModels.Model
The buffer used internally for minimizing screen refreshes.
Попробуйте Out.Ln после Mat.WrtL(...

Автор:  Иван Денисов [ Понедельник, 27 Декабрь, 2010 19:30 ]
Заголовок сообщения:  Re: Вопрос про Log в LibMatrices

Евгений Темиргалеев писал(а):
вроде видел (давно), что Lib-й вывод лезет в
Цитата:
VAR buf-: TextModels.Model
The buffer used internally for minimizing screen refreshes.
Попробуйте Out.Ln после Mat.WrtL(...

Так пробовал, не помогало.

Ответ: оказалось, надо
LibFmtrs.logFmtr.SetToEnd;
Перед
Mat.WrtL(...);

Нашел только что в одном спрятанном примере в LibIMatrices, тему закрываю.
Хоть это и странно, что каждый раз придется так писать, но работает :)

Автор:  Александр Ильин [ Понедельник, 27 Декабрь, 2010 19:32 ]
Заголовок сообщения:  Re: Вопрос про Log в LibMatrices

divan писал(а):
Нашел только что в одном спрятанном примере в LibIMatrices, тему закрываю.
Может быть, достаточно Log.FlushBuf?

Автор:  Иван Денисов [ Понедельник, 27 Декабрь, 2010 21:31 ]
Заголовок сообщения:  Re: Вопрос про Log в LibMatrices

Александр Ильин писал(а):
divan писал(а):
Нашел только что в одном спрятанном примере в LibIMatrices, тему закрываю.
Может быть, достаточно Log.FlushBuf?
Не смог найти такого.

Автор:  Александр Ильин [ Вторник, 28 Декабрь, 2010 04:55 ]
Заголовок сообщения:  Re: Вопрос про Log в LibMatrices

divan писал(а):
Не смог найти такого.
В смысле? Пишете "Log", выделяете, в контекстном меню выбираете "Interface".

Автор:  Евгений Темиргалеев [ Вторник, 28 Декабрь, 2010 10:01 ]
Заголовок сообщения:  Re: Вопрос про Log в LibMatrices

Александр говорит про Log, а divan про StdLog.

Автор:  Иван Денисов [ Вторник, 28 Декабрь, 2010 18:37 ]
Заголовок сообщения:  Re: Вопрос про Log в LibMatrices

Александр Ильин писал(а):
divan писал(а):
Нашел только что в одном спрятанном примере в LibIMatrices, тему закрываю.
Может быть, достаточно Log.FlushBuf?
Вот такое не помогает.
Код:
Log.FlushBuf;
Out.String(" -- 1 ВЫВОД -- "); Out.Ln;
Log.FlushBuf;
Mat.WrtL(A, 4, 1, 10);
Log.FlushBuf;
Out.String(" -- 2 ВЫВОД -- "); Out.Ln;
Log.FlushBuf;
Mat.WrtL(A, 4, 1, 10);
Log.FlushBuf;

Автор:  Евгений Темиргалеев [ Среда, 29 Декабрь, 2010 09:35 ]
Заголовок сообщения:  Re: Вопрос про Log в LibMatrices

Если в Lib есть специальный модуль, который отвечает за вывод в лог
divan писал(а):
Ответ: оказалось, надо
LibFmtrs.logFmtr.SetToEnd;
то может и нужно его использовать? А не изобретать варианты с Log.

Автор:  Иван Денисов [ Среда, 29 Декабрь, 2010 09:46 ]
Заголовок сообщения:  Re: Вопрос про Log в LibMatrices

Евгений Темиргалеев писал(а):
Если в Lib есть специальный модуль, который отвечает за вывод в лог
divan писал(а):
Ответ: оказалось, надо
LibFmtrs.logFmtr.SetToEnd;
то может и нужно его использовать? А не изобретать варианты с Log.

Ну, интересно было проверить :) решение найдено одно, но каждую задачу разными способами интересно решить.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/