function OnReplaceFilenameLeftToRight(const FileName: UnicodeString; const isFolder: Boolean):UnicodeString; var i,keeplen:Integer; Dash,NameNoExt,Hash,FileExt:UnicodeString; begin if isFolder or (Length(FileName)<12) or // performance optimization (Length(FileName)+Length(CurrentSubPath)+Length(RightBasePath)<=250) or (Length(FileName)-Length(ExtractFileExt(FileName))<12) then Result:=FileName else begin NameNoExt:=ChangeFileExt(FileName,''); Hash:=UnicodeStringCRC32Base64(NameNoExt); while (Hash[Length(Hash)]='=') do SetLength(Hash,Length(Hash)-1); Hash:=StringReplace(Hash,'/','$',false); FileExt:=ExtractFileExt(FileName); keeplen:=250-Length(CurrentSubPath)-Length(RightBasePath)-Length(FileExt); Dash:='-'; Result:=Copy(NameNoExt,1,keeplen)+Dash+Hash+FileExt; end; end;