IMatrix.ChangeValueFlag

Синтаксис Fore

ChangeValueFlag(FlagFrom: Integer; FlagTo: Integer);

Синтаксис Fore.NET

ChangeValueFlag(FlagFrom: integer; FlagTo: integer);

Параметры

FlagFrom - флаг изменившихся элементов, для которого необходимо установить новое значение.

FlagTo - новое значение флага изменившихся элементов.

Описание

Метод ChangeValueFlag осуществляет изменение флага, используемого для отметки изменившихся значений.

Комментарии

Для определения значения флага используйте свойство IMatrix.ValueFlag.

Пример Fore

Для выполнения примера добавьте ссылку на системную сборку «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(09);
        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(110);
    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". Значения элементов и соответствующие им флаги будут выведены в консоль среды разработки.

Пример Fore.NET

Для выполнения примера добавьте ссылку на системную сборку «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(09);
        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(110);
    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;

См. также:

IMatrix