function SaveUnicode(s:string;b:boolean=true):string;
var
ms:TMemoryStream;
hs,Fresult:string;
ws:WideString;
FSS:AnsiString;
p: PAnsiChar;
begin
Result:='';
if s=''then exit;
ms:=TMemoryStream.Create;
try
if b then
begin
hs:=#$FF#$FE;
ms.Write(hs[1],2);
end;
ws:=WideString(s);
ms.Write(ws[1],Length(ws)*2);
ms.Position:=0;
Fresult := '';
if MS.Size > 0 then
begin
SetLength(Fresult, ms.Size);
Move(ms.Memory^, Fresult[1], ms.Size);
end;
finally
ms.Free;
end;
if Length(Fresult) > 0 then
result := Fresult;
end;