التحقق من صحة البريد الإلكتروني الأساسية داخل البرنامج النصي Inno Setup

StackOverflow https://stackoverflow.com/questions/2001255

  •  18-09-2019
  •  | 
  •  

سؤال

أريد أن أقوم بإجراء التحقق من صحة السلسلة الأساسية داخل برنامج نصي إعداد Inno لبعضها نسبيا أن السلسلة هي عنوان بريد إلكتروني. أريد فقط أن أرى أن هناك شخصية "@" تليها "." شخصية وأن هناك حرف واحد على الأقل على جانبي هذه. شيء مشابه لهذا التعبير العادي:

[^@]+@.+\.[^\.]

إن الافتقار إلى التعبيرات العادية ووظائف سلسلة محدودة متوفرة في كائن Pascal تسبب لي الحزن. سيكون بسيطا بما يكفي لعكس السلسلة، وإيجاد الأول "." و "@ 'ثم قم ببعض المقارنات، ولكن لا توجد وظيفة عكسية (سلسلة) متاحة.

أعلم أنني أستطيع أن أسمي وظيفة تصديرها من المساعد DLL أكتب، لكنني كنت آمل أن أتجنب هذا الحل.

أي اقتراحات أخرى؟

هل كانت مفيدة؟

المحلول

سؤال ممتاز! اسمح لي أن أقترح إجابة ...

function ValidateEmail(strEmail : String) : boolean;
var
    strTemp  : String;
    nSpace   : Integer;
    nAt      : Integer;
    nDot     : Integer;
begin
    strEmail := Trim(strEmail);
    nSpace := Pos(' ', strEmail);
    nAt := Pos('@', strEmail);
    strTemp := Copy(strEmail, nAt + 1, Length(strEmail) - nAt + 1);
    nDot := Pos('.', strTemp) + nAt;
    Result := ((nSpace = 0) and (1 < nAt) and (nAt + 1 < nDot) and (nDot < Length(strEmail)));
end;

ترجع هذه الوظيفة TRUE إذا لم تكن هناك مسافات في عنوان البريد الإلكتروني، فإنه يحتوي على "@" متبوعا ب "."، وهناك حرف واحد على الأقل على جانبي "@" و ".". إغلاق ما يكفي للعمل الحكومي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top