コード例 #1
0
        override public void Aktualisiire(
            IMemoryReader AusProzesLeeser,
            out bool Geändert,
            Int64 Zait,
            int?ZuLeeseListeOktetAnzaal = null)
        {
            Geändert = false;

            bool BaseGeändert;

            var ListeEntryAnzaalScrankeMax = this.ListeEntryAnzaalScrankeMax;

            var VorherObjektBegin = this.ObjektBegin;

            var VorherRef_ma_table = this.Ref_ma_table;

            base.Aktualisiire(AusProzesLeeser, out BaseGeändert, Zait, ZuLeeseListeOktetAnzaal);

            var NaacherObjektBegin = this.ObjektBegin;

            var Ref_ma_table = this.Ref_ma_table;

            var ma_mask = this.ma_mask;
            var ma_used = this.ma_used;
            var ma_fill = this.ma_fill;

            SictPyDictEntry32[] ListeDictEntry = null;

            try
            {
                if (null == AusProzesLeeser)
                {
                    return;
                }

                if (ma_mask < ma_fill)
                {
                    return;
                }

                if (0 != Ref_ma_table)
                {
                    var ListeEntryAnzaal = ma_mask + 1;

                    if (ListeEntryAnzaal < 0)
                    {
                        return;
                    }

                    if (ListeEntryAnzaalScrankeMax < ListeEntryAnzaal)
                    {
                        return;
                    }

                    var MaTableZwiscenscpaicer = this.MaTableZwiscenscpaicer;

                    if (null != MaTableZwiscenscpaicer)
                    {
                        if (MaTableZwiscenscpaicer.HerkunftAdrese != Ref_ma_table)
                        {
                            MaTableZwiscenscpaicer = null;
                        }
                    }

                    if (null == MaTableZwiscenscpaicer)
                    {
                        MaTableZwiscenscpaicer = new SictAuswertPyObj32Zuusctand(Ref_ma_table, Zait);
                    }

                    this.MaTableZwiscenscpaicer = MaTableZwiscenscpaicer;

                    var EntryListeOktetAnzaal = SictPyDictEntry32.EntryListeOktetAnzaal;

                    //	var ListeEntryListeOktet = AusProzesLeeser.ListeOktetLeeseVonAdrese(Ref_ma_table, ListeEntryAnzaal * EntryListeOktetAnzaal, false);

                    bool MaTableGeändert;

                    MaTableZwiscenscpaicer.Aktualisiire(AusProzesLeeser, out MaTableGeändert, Zait, ListeEntryAnzaal * EntryListeOktetAnzaal);

                    var MaTableZwiscenscpaicerVerarbaitetLezteListeOktetUndAnzaal = MaTableZwiscenscpaicer.AusScpaicerLeeseLezteListeOktetUndAnzaal;

                    var ListeEntryListeOktet = MaTableZwiscenscpaicerVerarbaitetLezteListeOktetUndAnzaal.Key;

                    if (null != ListeEntryListeOktet)
                    {
                        var ListeEntryListeOktetUnverändert = false;

                        {
                            //	Berecne ob Scpaicerinhalt bai Adrese Ref_ma_table sait lezter Aktualisatioon unverändert isc.
                        }

                        if (!ListeEntryListeOktetUnverändert)
                        {
                            //	Scpaicerinhalt wurde verändert, noies Array mit Entry anleege. (andere Funktioone di diises nuze werde di Identitäät des Array verwende um zu ermitle ob änderung Sctatgefunde hat.

                            var GeleeseListeEntryAnzaal = (int)(MaTableZwiscenscpaicerVerarbaitetLezteListeOktetUndAnzaal.Value / EntryListeOktetAnzaal);

                            var InternListeDictEntry = new SictPyDictEntry32[GeleeseListeEntryAnzaal];

                            var structHandle = GCHandle.Alloc(InternListeDictEntry, GCHandleType.Pinned);

                            try
                            {
                                Marshal.Copy(ListeEntryListeOktet, 0, structHandle.AddrOfPinnedObject(), InternListeDictEntry.Length * EntryListeOktetAnzaal);
                            }
                            finally
                            {
                                structHandle.Free();
                            }

                            ListeDictEntry = InternListeDictEntry;
                        }
                    }
                }
            }
            finally
            {
                this.ListeDictEntry = ListeDictEntry;
            }
        }