نمایش نتایج 1 تا 1 از 1

نام تاپیک: آموزش چک کردن نام وب سايت با Delphi و چند نکته

  1. #1

    آموزش چک کردن نام وب سايت با Delphi و چند نکته

    با سلام
    ابتدا روي فرم يک Edit و يک Button قرار دهيد.
    داخل رويداد onclick مربوط به Button اسکريپت زير را مي نويسيم.

    var c:TComponent;
    i:Integer;

    begin
    for i := 0 to Self.ComponentCount - 1 do
    begin
    c:=Components[i];
    if c is TEdit then TEdit(c).Text:=Trim(TEdit(c).Text);
    end;
    end;


    خوب کد بالا تمامي edit هاي فرم را پيدا کرده و کاراکتر فاصله را از دو طرف متن آن ها پاک مي کند.
    دستور trim کار پاک کردن متن ها را انجام مي دهد. شما مي توانيد از Ltrim يا Rtrim نيز استفاده کنيد.
    کد ما در دلفي 7 به خوبي کار خواهد کرد اما بهتر است کد خود را مختصر تر و زيبا تر در دلفي هاي ورژن بالاتر از 2005 به صورت زير بنويسيم:

    var c:TComponent;
    begin
    for c in self do
    if c is TEdit then TEdit(c).Text:=Trim(TEdit(c).Text);
    end;

    در دلفي به جاي for each از دستور for in استفاده کرديم و سعي مي کنيم در دستورهاي بعدي بيشتر هم استفاده کنيم.
    حالا به قسمت چک کردن نام وب سايت مي رسيم.
    در ابتدا تابعي مي نويسيم که يک رشته به عنوان نام سايت دريافت کند و بگويد که کاراکتر هاي به کار رفته در آن صحيح است يا خير.

    Function IsCorrectWebsite(s:string):Boolean;
    var k:Char;
    begin
    Result:=False;
    for k in s do
    if not (UpCase(k)in ['A'..'Z','0'..'9','-','.']) then Exit;
    Result:=True;
    end;

    کار UpCase در کد بالا بزرگ کردن کاراکتر هاست، شما مي تونيد از UpperCase براي بزرگ کردن کاراکترهاي يک رشته استفاده کنيد.
    حالا به ادغام کد ها مي رويم
    کد مربوط به Button خود را به کد زير تغيير مي دهيم:

    var c:TComponent;
    begin
    for c in self do
    if c is TEdit then TEdit(c).Text:=Trim(TEdit(c).Text);
    if not IsCorrectWebsite(Edit1.Text) then
    Raise Exception.Create('Website Error');
    end;

    در کد بالا به جاي نوشتن Raise Exception مي توانستيد از showmessage نيز استفاده کنيد.
    Exception ها هنگامي اتفاق مي افتند که يک runtime error در نرم افزار اتفاق افتاده باشد(مثلا تقسيم بر صفر). اين خطا ها را شما مي توانيد با ApplicationEvents کنترل کنيد و پيغام سيستم را مديريت نماييد. فرض کنيد شما مي خواهيد نرم افزار حسابداري تهيه کنيد،
    حال بايد شما هميشه مواظب باشيد خطاي تقسيم بر صفر اتفاق نيفتد يا کاربر اعداد را به درستي وارد نمايد و ...
    شما با اضافه نمودن ApplicationEvents به فرم خود خطا را گرفته و آن را تحليل مي کنيد و پيغام مناسب را به کاربر نمايش مي دهيد! ( براي توضيحات بيشتر تلاش کنيد!!! )

    خوب برگرديم سر اصل مطلب

    حالا براي کامل تر شدن کد مربوط به چک کردن نام وب سايت ، کد تابع IsCorrectWebsite رو به کد زير تغيير مي دهيم:


    Function IsCorrectWebsite(s:string):Boolean;
    var k:Char;
    begin
    Result:=False;
    if RightStr(s,1)='.' then Exit;
    if Pos('.',s)<=1 then Exit;
    if AnsiStartsText('http://',s) then s:=Copy(s,8,length(s));
    for k in s do
    if not (UpCase(k)in ['A'..'Z','0'..'9','-','.']) then Exit;
    Result:=True;
    end;

    راستي StrUtils رو به Uses اضافه کنيد تا بتونيد از RightStr استفاده کنيد.
    کار RightStr : به تعداد دلخواه کاراکتر از سمت راست رشته جدا کرده و برمي گرداند که در مثال ما چک مي شود که اگر کاراکتر شماره 1 از راست رشته مساوي نقطه نباشد.(آخر سايت نبايد نقطه باشد.)
    خوب تقريبا برنامه ما کامل شد و مي تونه 99% خطاها رو بگيره!
    100% رو چکار کنيم؟
    خوب اين کار رو خود دلفي براي ما انجام مي ده ديگه!!!
    کد IsCorrectWebsite رو به کد زير تغيير بديد:

    Function IsCorrectWebsite(s:string):Boolean;
    begin
    Result:=PathIsURL(pchar(s));
    end;

    يادتون نره shlwapi رو به Uses اضافه کنيد.

    مطلبي که خونديد نوشته Henk Schreij بود البته با کمي تغييرات در نحوه گفتار.
    اميدوارم اين مطلب مورد توجهتون قرار گرفته باشه
    موفق و پيروز باشيد
    يا علي
    فایل های ضمیمه فایل های ضمیمه

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •