[Lazarus] [resulved] How to use TRegExpr class (in synregexpr.pas)

FreeMan freeman35 at delphiturkiye.com
Thu Oct 24 16:15:41 CEST 2013


Yes Mark, you rigth.

This code is working now, Problem was space char in EDT_IP.Text, it 
comes from format. This is normal, but at this time, why "Trim" function 
NOT DELETE space char ????? is this bug ?


var Q : String;
Const WhiteSpace = [#0..' '];

     function My_Trim(S : string): String;
     var I: Integer;
     begin
       Result := S;
       Try
        I := 1;
        while I<Length(S)do Begin
         if S[I]in WhiteSpace then Delete(S,I,1)
         else Inc(I,1);
        end;    // while
        Result := S;
       Except
       end;
     end;

//copied from /fpc271/rtl/objpas/sysutils/sysstr.inc  line 524
     function Trim_(const S: string): string;
     var Ofs, Len: integer;
     begin
       len := Length(S);
       while (Len>0) and (S[Len] in WhiteSpace) do
        dec(Len);
       Ofs := 1;
       while (Ofs<=Len) and (S[Ofs] in WhiteSpace) do
        Inc(Ofs);
       result := Copy(S, Ofs, 1 + Len - Ofs);
     end ;
begin
   Q := Trim(EDT_IP.Text);// space not deleted
   Q := Trim_(EDT_IP.Text);// space not deleted
   Q := My_Trim(EDT_IP.Text); // space DELETED
   if IP4OK(Q)then begin
..............




24-10-2013 16:18 tarihinde, Mark Morgan Lloyd yazdı:
> FreeMan wrote:
>> Hello,
>> Lazarus Revision 43315
>> TRegExpr class in "/opt/lazarus/components/synedit/synregexpr.pas"
>>
>>  I need check IP address, my IP4OK function for this. If I sent 
>> variable result is false, but sent parameter like '127.0.0.1' result 
>> is true, what is wrong?
>>
>>
>> EDT_IP: TMaskEdit;
>> ......
>> EDT_IP.EditMask:= '!999.999.999.999;1; ';
>
> I'd suggest checking /exactly/ what you're passing in the initial test 
> case, i.e. make sure there's no leading spaces etc.
>




More information about the Lazarus mailing list