lisp2arx
Visual Programming for AutoLisp Mathématiques en programmation Lisp.. doc2cpp,doc2lsp, sld2lsp, bmp2dcl, free__GifCcapture for all-CAD'platforms..
Lista Forumurilor Pe Tematici
lisp2arx | Reguli | Inregistrare | Login

POZE LISP2ARX

Nu sunteti logat.
Nou pe simpatie:
Coco11
Femeie
25 ani
Constanta
cauta Barbat
27 - 65 ani
lisp2arx / Delphi , InnoPascal / Delphi32 - Fast NatCompare only setting extmin=1 or extmin=2  
Autor
Mesaj Pagini: 1
admin
Administrator

Din: Bucharest
Inregistrat: acum 13 ani
Postari: 515


Code:

Type pinteger=^integer'
Function php_strnatcmp(s191,s192:pchar;extmax:integer;extmin:byte):boolean;
Var divx,nth:integer;
Begin
      result:=(s191=nil) and (s192=nil); if (result) then exit;
      if (s191=nil) or (s192=nil) then exit;
      result:=(s191^=#0) and (s192^=#0); if (result) then exit;
      if ((extmin=1)or(extmin=4))and(extmax>3) then 
           Begin divx:=extmax div 4;
                 for nth:=divx downto 1 do
                     if (pinteger(s191))^<>(pinteger(s192)^) then exit
                        else Begin inc(s191);inc(s191);inc(s191);inc(s191);
                                   inc(s192);inc(s192);inc(s192);inc(s192);
                             End;

                 divx:=nth and 3;
                 for nth:=divx downto 1 do
                     if (s191^=#0) then break  else
                        if (s191^<>s192^) then exit else Begin inc(s191);inc(s192);End;
                 result:=true;exit;
          End;


      if (extmin=2)and(extmax>3) then 
           Begin divx:=extmax shr 2;
                 for nth:=divx downto 1 do
                     if (pinteger(s191))^<>(pinteger(s192)^) then exit
                        else Begin inc(s191);inc(s191);inc(s191);inc(s191);
                                   inc(s192);inc(s192);inc(s192);inc(s192);
                             End;
                 divx:=nth and 3;
                 for nth:=divx downto 1 do
                     if (s192^=#0) then break else
                        if (s191^<>s192^) then exit else Begin inc(s191);inc(s192);End;
                 result:=true;exit;
          End;
      if (extmax<256) and (extmax<>extmin) then exit;
      result:=CompareMem(s191,s192,extmax)
End;



_______________________________________


pus acum 4 ani
   
Pagini: 1  

Mergi la