پاسخ به : مشکل در لاگ گرفتن

#474
modir
سرپرست کل

ج 2 : وقتی فایل به درستی باز نشده باشد بهتر است به network آخر یعنی NOP جامپ کنید.
چون جامپ کردن به networkهای قبلی وقتی شرط مشخصی برای خروج نداشته باشد ممکن است یک حلقه بی نهایت ایجاد کند. در حالتی مثل نوشتن متغیرها در فایل که از جامپ به network قبلی استفاده کرده اید برنامه با رسیدن شاخص به 261 از حلقه خارج می شود و مشکلی نیست ولی در قسمت باز کردن فایل اگر به هر دلیلی نتواند فایل را ایجاد کند همیشه در این حلقه باقی می ماند و چون روال عادی برنامه است و دستگاه از کار نیافتاده، watch dog نیز عمل نخواهد کرد.

ج 3 : مثل اینکه من این قسمت را به درستی متوجه نشده بودم و تصورم این بود با درست نوشته شدن به network بسته شدن فایل جامپ می کنید ولی شما در صورتی که متغیری به درستی در فایل نوشته نشود از نوشتن بقیه صرف نظر می کنید.
به نظرم این کار لزومی ندارد؛ خوب ممکن است از تعداد زیاد متغیری که دارید تنها یکی از آنها به درستی نوشته نشود و بقیه کامل باشند. البته اگر فایل به درستی ایجاد شده باشد این مورد هم به ندرت پیش خواهد آمد .

ج 4 : شاید نتوان گفت که روش قبلی شما اشکال خاصی ندارد ولی اصلا بهینه نیست. شما به جای یک خط برنامه 150 خط نوشته اید؛ علاوه بر زمان بر بودن برای یک بار نوشتن حال تصور کنید می خواهید اصلاحی در این روند انجام دهید!

* اشتباه دیگری که در چند جای برنامه شما وجود دارد این است که در یک network متغیری را محاسبه می کنید و در همان network و به موازات آن محاسبه، متغیر را مثلا برای مقایسه استفاده می کنید. این کار به این دلیل اشتباه است که دو تابع که به موازات هم در یک network قرار می گیرند ترتیب مشخصی برای اجرا شدن ندارند و معلوم نیست که کدام یک قبل از دیگری اجرا می شود.
بنابراین دو تابعی را که یک متغیر مشابه دارند و نتیجه یکی در دیگری استفاده می شود اگر نمی توانید به صورت سری استفاده کنید، باید در دو network جداگانه و به ترتیب دلخواه قرار دهید.

یکی از این موارد در برنامه شما همان جایی است که error ناشی از نوشته نشدن درست متغیرها در فایل را با صفر مقایسه می کنید که ممکن است اول مقایسه انجام شود و بعد در تابع دیگر مقدار error محاسبه شود. یکی دیگر از موارد هم شکل زیر است:

متغیر های مشابه در یک نتورک
متغیرهای مشابه در یک نتورک