> For the complete documentation index, see [llms.txt](https://docs.augelab.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.augelab.com/arabic/alblwkat-alwzyfyh/blocks-reference/data-logic/data-operations/data-memory.md).

# Data Memory

هذا البلوك الوظيفي يحتفظ بقيمة في الذاكرة ويقوم بتحديثها اختياريًا عند الطلب. مفيد للحفاظ على آخر قيمة معروفة عبر مرات التشغيل أو لتجميد قيمة حتى يتم إجراء تحديث صريح.

## 📥 المدخلات

`Generic`\
مدخل عام لتخزينه في الذاكرة. يمكن أن يكون أي نوع من البيانات (أرقام، نص، صورة، قوائم، قواميس، إلخ).

`Update Data`\
مدخل منطقي (Boolean) يحدد ما إذا كانت البيانات الواردة يجب أن تحل محل القيمة المخزنة أم لا.

## 📤 المخرجات

`Generic`\
القيمة المخزنة حاليًا. إذا لم يتم تحديثها أبدًا، فقد تكون فارغة/None.

## 🕹️ الضوابط

لا يحتوي هذا البلوك على عناصر واجهة إضافية. يتم التحكم في سلوكه عبر الموصلين (sockets) المذكورين أعلاه.

## 🎯 الميزات

* ذاكرة متجددة ضمن التدفق: يحتفظ بقيمة عبر التقييمات ولا تتغير إلا عندما يكون `Update Data` صحيحًا.
* يقبل أي نوع بيانات عبر الموصل `Generic`.
* آلية تجميد/إلغاء تجميد بسيطة: اضبط `Update Data` على False لتجميد القيمة المخزنة، وعلى True للسماح بالتحديثات.

## 📝 تعليمات الاستخدام

1. أدخل القيمة التي تريد الاحتفاظ بها في المدخل `Generic`.
2. قم بتفعيل `Update Data` (اضبطها على True) عندما تريد أن يقبل الذاكرة الإدخال الجديد.
3. اضبط `Update Data` على False لتجميد القيمة المخزنة؛ سيستمر البلوك في إخراج تلك القيمة حتى يُسمح بتحديث جديد.

## 📊 التقييم

في كل عملية تقييم، يتحقق البلوك من حالة المدخل `Update Data`. إذا كان True، يخزن المدخل الحالي من `Generic` ويخرجه. إذا كان False، يخرج القيمة المخزنة سابقًا دون تغيير.

## 💡 نصائح وحيل

* استخدم مع `Is None` لاكتشاف المدخلات المفقودة قبل الكتابة إلى الذاكرة، للحماية من الكتابة العرضية لقيمة None.
* اقتران مع `Replace None` لتوفير بيانات بديلة عندما يكون الإدخال فارغًا، ثم تحكم في الكتابة عبر `Update Data`.
* اجمع معه `Data Read Local` / `Data Write Local` أو `Data Read Global` / `Data Write Global` للمشاركة الدائمة بين أجزاء مختلفة من التدفق.
* استخدم مع `Debug Input` لتسجيل القيم المخزنة أثناء التطوير والتحقق متى تحدث تحديثات الذاكرة.
* عند معالجة دفعات (batches)، انسق مع `Batch Processing`, `Get Batch Size`, أو `Batch Concatenation` لتحديد ما إذا كانت الذاكرة ستخزن الدُفعات كاملة أم عناصر فردية.
* لتسجيل أو تصدير، غذّ مخرج البلوك إلى `CSV Export`, `Image Logger` أو غيرها من بلوكات التصدير لتسجيل البيانات المحفوظة فقط عند حدوث تحديث مؤكد.

## 🛠️ استكشاف الأخطاء وإصلاحها

* إذا لم يتغير الإخراج أبدًا، تأكد من أن المدخل `Update Data` يتم ضبطه على True عند توقعك لتحديث.
* إذا أصبحت القيمة المخزنة None بشكل غير متوقع، راجع البلوكات الصاعدة (upstream) بحثًا عن مخرجات None وفكر في استخدام `Replace None` قبل الكتابة للذاكرة.
* إذا احتاجت مناطق متعددة من التدفق لنفس القيمة، فضّل استخدام بلوكات القراءة/الكتابة المحلية أو العالمية لتجنب التكرار وضمان تحديثات متسقة.
