ChangeValueFlag(FlagFrom: Integer; FlagTo: Integer);
ChangeValueFlag(FlagFrom: integer; FlagTo: integer);
FlagFrom - флаг изменившихся элементов, для которого необходимо установить новое значение.
FlagTo - новое значение флага изменившихся элементов.
Метод ChangeValueFlag осуществляет изменение флага, используемого для отметки изменившихся значений.
Для определения значения флага используйте свойство IMatrix.ValueFlag.
Для выполнения примера добавьте ссылку на системную сборку «MathFin» и «Matrix».
Sub UserProc;
Var
M: Matrix[2];
Mm: IMatrix;
Iter: IMatrixIterator;
Coord: IMatrixCoord;
x, y: Integer;
Begin
For x := 0 To 4 Do
For y := 0 To 4 Do
M[x, y] := Math.RandBetweenI(0, 9);
End For;
End For;
Mm := M As IMatrix;
Debug.WriteLine("Исходная матрица");
Iter := Mm.CreateIterator;
Iter.Move(IteratorDirection.First);
While Iter.Valid Do
Debug.WriteLine(Iter.Value + " " + Iter.ValueFlag.ToString);
Iter.Move(IteratorDirection.Next);
End While;
Mm.ValueFlag := 1;
Coord := Mm.CreateCoord;
Coord.Item(0) := 0;
Coord.Item(1) := 0;
Mm.Item(Coord) := 11;
Coord.Item(0) := 2;
Coord.Item(1) := 2;
Mm.Item(Coord) := 13;
Mm.ValueFlag := 2;
Coord.Item(0) := 1;
Coord.Item(1) := 1;
Mm.Item(Coord) := 12;
Coord.Item(0) := 3;
Coord.Item(1) := 3;
Mm.Item(Coord) := 14;
Debug.WriteLine("До изменения флага");
Iter.Move(IteratorDirection.First);
While Iter.Valid Do
Debug.WriteLine(Iter.Value + " " + Iter.ValueFlag.ToString);
Iter.Move(IteratorDirection.Next);
End While;
Mm.ChangeValueFlag(1, 10);
Debug.WriteLine("После изменения флага");
Iter := Mm.CreateIterator;
Iter.Move(IteratorDirection.First);
While Iter.Valid Do
Debug.WriteLine(Iter.Value + " " + Iter.ValueFlag.ToString);
Iter.Move(IteratorDirection.Next);
End While;
End Sub UserProc;
После выполнения примера будет создана матрица, содержащая случайные значения. В данной матрице будут изменены значения четырех диагональных элементов. Значения будут изменяться с различным флагом. После этого для элементов, измененных с флагом матрицы "1" будет изменено значение флага на "10". Значения элементов и соответствующие им флаги будут выведены в консоль среды разработки.
Для выполнения примера добавьте ссылку на системную сборку «MathFin», «Matrix» и «ForeSystem».
Imports Prognoz.Platform.Interop.ForeSystem;
Imports Prognoz.Platform.Interop.MathFin;
Imports Prognoz.Platform.Interop.Matrix;
…
Public Shared Sub Main(Params: StartParams);
Var
M: Array;
Mm: IMatrix;
Iter: IMatrixIterator;
Coord: IMatrixCoord;
Math: MathClass = New MathClass();
x, y: Integer;
Begin
For x := 0 To 4 Do
For y := 0 To 4 Do
M[x, y] := Math.RandBetweenI(0, 9);
End For;
End For;
Mm := M As IMatrix;
System.Diagnostics.Debug.WriteLine("Исходная матрица");
Iter := Mm.CreateIterator();
Iter.Move(IteratorDirection.itdFirst);
While Iter.Valid Do
System.Diagnostics.Debug.WriteLine(Iter.Value + " " + Iter.ValueFlag.ToString());
Iter.Move(IteratorDirection.itdNext);
End While;
Mm.ValueFlag := 1;
Coord := Mm.CreateCoord();
Coord.Item[0] := 0;
Coord.Item[1] := 0;
Mm.Item[Coord] := 11;
Coord.Item[0] := 2;
Coord.Item[1] := 2;
Mm.Item[Coord] := 13;
Mm.ValueFlag := 2;
Coord.Item[0] := 1;
Coord.Item[1] := 1;
Mm.Item[Coord] := 12;
Coord.Item[0] := 3;
Coord.Item[1] := 3;
Mm.Item[Coord] := 14;
System.Diagnostics.Debug.WriteLine("До изменения флага");
Iter.Move(IteratorDirection.itdFirst);
While Iter.Valid Do
System.Diagnostics.Debug.WriteLine(Iter.Value + " " + Iter.ValueFlag.ToString());
Iter.Move(IteratorDirection.itdNext);
End While;
Mm.ChangeValueFlag(1, 10);
System.Diagnostics.Debug.WriteLine("После изменения флага");
Iter := Mm.CreateIterator();
Iter.Move(IteratorDirection.itdFirst);
While Iter.Valid Do
System.Diagnostics.Debug.WriteLine(Iter.Value + " " + Iter.ValueFlag.ToString());
Iter.Move(IteratorDirection.itdNext);
End While;
End Sub;
См. также: