Hi, you can use something like that: dclfunc function FBinReplace(sSource: string ; sSearch: string ; sReplace: string ): string var sLeft : string ; sRight : string ; nStartPos : number ; sUntouched : string ; sAlreadyReplaced: string ; begin sUnTouched := bin (sSource); sAlreadyReplaced := ""; nStartPos := BinSearch(sUntouched, binlen(sUntouched), sSearch, binlen(sSearch), STR_SEARCH_FIRST); if nStartPos 0 then while nStartPos 0 do GetMem( bin (sUntouched), 1, bin (sLeft), nStartPos-1); BinSetlen(sLeft, nStartPos-1); if nStartPos+BinLen(sSearch) = BinLen(sUntouched) then GetMem( bin (sUntouched), nStartPos+BinLen(sSearch), bin (sRight), BinLen(sUntouched)-nStartPos); BinSetlen(sRight, BinLen(sUntouched)-nStartPos); else sRight := ""; end ; BinAdd(sAlreadyReplaced, sLeft); BinAdd(sAlreadyReplaced, sReplace); sUnTouched := bin (sRight); nStartPos := BinSearch(sUnTouched, binlen(sUnTouched), sSearch, binlen(sSearch), STR_SEARCH_FIRST); end ; sSource := bin (sAlreadyReplaced) + bin (sRight); //to update also the first parameter FBinReplace := bin (sSource); end ; end FBinReplace; Regards, Thomas
↧