[Lazarus] CreateRelativePath document error.

Mattias Gärtner nc-gaertnma at netcologne.de
Tue Feb 9 13:02:40 CET 2010


Zitat von Juha Manninen <juha.manninen at phnet.fi>:

> Hi!
>
>> FPC RTL comes with ExtractRelativePath. I still use my own code because
>> Delphi's didn't work properly either. It seems FPC's ExtractRelativePath
>> is much shorter than mine. If someone can confirm it works well that
>> would be great (no time now to test thoroughly).
>
> ExtractRelativePath seems to work well, thanks.
>
> Now, damn, it seems that FileUtil.CreateRelativePath works correctly, too.

:)
It is used at a lot of places in the IDE.


> I was testing it in Lazarus Converter code and it used a version in
> lazarus/ide/ideprogs/ instead of FileUtil, even though FileUtil is higher in
> "uses" list.

Both CreateRelativePath functions are the same.
And 'higher' in uses list means more to the end (right, down).


> I think there is some redundant and useless code in Lazarus, but it is
> understandable in such a big project.

The ideprocs version is a simple alias. I will delete it.
The codetools and lcl are separate and independent things (by license  
and by directory).


> So, these 2 work identically in my tests and you should be able to use them,
> too:
>
>     RelPath:=FileUtil.CreateRelativePath(PasFile, ABasePath);
>     RelPath:=ExtractRelativePath(ABasePath, PasFile);

No.
ExtractRelativePath works case insensitive, even under Linux.
CreateRelativePath expects trimmed filenames. That means no double  
slashes '//'. I will change it, so that it also works with untrimmed  
filenames.


Mattias







More information about the Lazarus mailing list