[fpc-devel] FExpand function

Michael Van Canneyt michael at freepascal.org
Sat Mar 4 22:24:29 CET 2006



On Sat, 4 Mar 2006, Joao Morais wrote:

>
> Hello,
>
> Should this comparison (!) be fixed? Seeing that this code is going to
> be changed, what about change Pa[I] assignment from a variable to a
> constant?

The comparison can be fixed.

In fact I think the code can be reduced to a single loop:

if (DirectorySeparator='\') or (DirectorySeparator='/') then
  for I:=1 to Length(PA) do
    if (Pa[I] in ['\','/']) and (PA[I]<>DirectorySeparator) then
      Pa[I]:=DirectorySeparator;

Could you test this, please ?

Michael.

>
> <<rtl/inc/fexpand.inc>>
>
>   (* Allow both '/' and '\' as directory separators *)
>   (* by converting all to the native one.           *)
>       if DirectorySeparator = '\' then
>       {Allow slash as backslash}
>         begin
>           for I := 1 to Length (Pa) do
>             if Pa [I] = '/' then
>               Pa [I] := DirectorySeparator
>         end
>       else
> !      if DirectorySeparator = '\' then
>       {Allow backslash as slash}
>           begin
>             for I := 1 to Length (Pa) do
>               if Pa [I] = '\' then
>                 Pa [I] := DirectorySeparator;
>           end;
>
> Thanks,
> --
> Joao Morais
> _______________________________________________
> fpc-devel maillist  -  fpc-devel at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-devel
>



More information about the fpc-devel mailing list