كيف يمكنني تعطيل تحذير "قيمة الإرجاع مؤقتًا"؟
-
25-09-2019 - |
سؤال
أرغب في تعطيل تحذير محدد (W1035) في الكود الخاص بي ، لأنني أعتقد أن المترجم مخطئ في هذا التحذير:
function TfrmNagScreen.Run: TOption;
begin
if ShowModal = mrOk then
Result := TOption(rdgAction.EditValue)
else
Abort
end;
لا توجد طريقة يمكن أن تكون النتيجة غير محددة ، منذ ذلك الحين Abort
رميات EAbort
.
حاولت:
{$WARN 1035 Off}
: يبدو أن هذا لا يعمل إلا لبعض الأخطاء المحددة (انظر توثيق){$W-1035}
: لا شيء على الإطلاق
أعلم أنه يمكنني إيقاف التحذير على مستوى العالم في خيارات المشروع ، أو باستخدام {$WARNINGS OFF}
, ، لكن هذا ليس هو المقصود هنا.
تحرير: لقد قمت بهذا الآن إلى هذا #89744.
المحلول
لا يمكنك تعطيل هذا التحذير على مستوى العالم ، ولكن يمكنك استخدام {$WARN NO_RETVAL OFF}
لتعطيل التحذير محليا.
{$WARN NO_RETVAL OFF}
function TfrmNagScreen.Run: TOption;
begin
if ShowModal = mrOk then
Result := TOption(rdgAction.EditValue)
else
Abort
end;
{$WARN NO_RETVAL ON}
نصائح أخرى
ليس لدي برنامج التحويل البرمجي Delphi متاح في الوقت الحالي ، ولكن إعادة ترتيب الكود لإزالة if..else
قد يجعل التحذير يختفي:
function TfrmNagScreen.Run: TOption;
begin
if ShowModal <> mrOk then
Abort;
Result := TOption(rdgAction.EditValue);
end;
أنظر أيضا كيفية تعطيل تحذير في دلفي حول "قيمة الإرجاع ... قد تكون غير محددة"؟.
يمكنك استخدام خدعة أنيقة لخداع المترجم. حدد وظيفة المكتبة على النحو التالي:
procedure Abort(var X);
begin
SysUtils.Abort;
end;
يمكنك بعد ذلك كتابة وظيفتك على النحو التالي:
if ShowModal = mrOk then
Result := TOption(rdgAction.EditValue)
else
Abort(Result)
يعتقد المترجم أنك كتبت للنتيجة لأنها معلمة var وتتوقف عن التثبيت.