unit MiscFunctions; interface uses SysUtils; function DoDoubleQuotes(InString : AnsiString;UpIt : boolean) : AnsiString; function DoSingleQuotes(InString : AnsiString;UpIt : boolean) : AnsiString; function DoCommas(InString : AnsiString;UpIt : boolean) : AnsiString; implementation function DoDoubleQuotes(InString : AnsiString;UpIt : boolean) : AnsiString; VAR Index, Position : integer; Begin IF UpIt THEN InString := UpperCase(InString); {remove a trailing comma, if any} IF InString[Length(InString)] = ',' THEN Delete(InString,Length(InString),1); {change all CRLF to commas} REPEAT Position := Pos(#13#10,InString); IF Position <> 0 THEN Begin Delete(InString,Position,2); Insert(',',InString,Position); End; UNTIL Position = 0; {remove any double commas} REPEAT Position := Pos(',,',InString); IF Position <> 0 THEN Begin Delete(InString,Position,1); End; UNTIL Position = 0; {change the commas to ","} FOR Index := Length(InString) DOWNTO 1 DO Begin IF InString[Index] =',' THEN Begin Insert('"',InString,Index); Insert('"',InString,Index+2); End; End; {remove spaces} REPEAT Position := Pos(' ',InString); IF Position <> 0 THEN Begin Delete(InString,Position,1); End; UNTIL Position = 0; {put a quote at each end} InString := '"'+InString+'"'; {remove any double quotes} REPEAT Position := Pos('""',InString); IF Position <> 0 THEN Delete(InString,Position,1); UNTIL Position = 0; Result := InString; End; function DoSingleQuotes(InString : AnsiString;UpIt : boolean) : AnsiString; VAR Index, Position : integer; Begin IF UpIt THEN InString := UpperCase(InString); {remove any trailing comma} IF InString[Length(InString)] = ',' THEN Delete(InString,Length(InString),1); {change CRLF to comma} REPEAT Position := Pos(#13#10,InString); IF Position <> 0 THEN Begin Delete(InString,Position,2); Insert(',',InString,Position); End; UNTIL Position = 0; {remove any double commas} REPEAT Position := Pos(',,',InString); IF Position <> 0 THEN Begin Delete(InString,Position,1); End; UNTIL Position = 0; {change commas to ','} FOR Index := Length(InString) DOWNTO 1 DO Begin IF InString[Index] =',' THEN Begin Insert('''',InString,Index); Insert('''',InString,Index+2); End; End; {remove spaces} REPEAT Position := Pos(' ',InString); IF Position <> 0 THEN Begin Delete(InString,Position,1); End; UNTIL Position = 0; {add a ' to each end} InString := ''''+InString+''''; {change double-' to '} REPEAT Position := Pos('''''',InString); IF Position <> 0 THEN Delete(InString,Position,1); UNTIL Position = 0; Result := InString; End; function DoCommas(InString : AnsiString;UpIt : boolean) : AnsiString; VAR Position : integer; Begin IF UpIt THEN InString := UpperCase(InString); {remove trailing commas} IF InString[Length(InString)] = ',' THEN Delete(InString,Length(InString),1); {change CRLF to a comma} REPEAT Position := Pos(#13#10,InString); IF Position <> 0 THEN Begin Delete(InString,Position,2); Insert(',',InString,Position); End; UNTIL Position = 0; {remove double commas} REPEAT Position := Pos(',,',InString); IF Position <> 0 THEN Begin Delete(InString,Position,1); End; UNTIL Position = 0; {remove spaces} REPEAT Position := Pos(' ',InString); IF Position <> 0 THEN Begin Delete(InString,Position,1); End; UNTIL Position = 0; {delete trailing comma} IF InString[Length(InString)] = ',' THEN Delete(InString,Length(InString),1); Result := InString; End; end.