Stringlib
//+------------------------------------------------------------------+
//| stringlib.mqh |
//| Copyright Bogdan Caramalac |
//| http://mqlmagazine.com |
//+------------------------------------------------------------------+
#property copyright "Bogdan Caramalac"
#property link "http://mqlmagazine.com"
string ANSI2UNICODE(string s)
{
ushort mychar;
long m,d;
double mm,dd;
string img;
string res="";
if (StringLen(s)>0)
{
string g=" ";
for (int i=0;i<StringLen(s);i++)
{
string f=" ";
mychar=ushort(StringGetCharacter(s,i));
mm=MathMod(mychar,256);
img=DoubleToString(mm,0);
m=StringToInteger(img);
dd=(mychar-m)/256;
img=DoubleToString(dd,0);
d=StringToInteger(img);
if (m!=0)
{
StringSetCharacter(f,0,ushort(m));
StringSetCharacter(f,1,ushort(d));
StringConcatenate(res,res,f);
}//if (m!=0)
else
break;
}//for (int i=0;i<StringLen(s);i++)
}//if (StringLen(s)>0)
return(res);
}
string UNICODE2ANSI(string s)
{
int leng,ipos;
uchar m,d;
ulong big;
leng=StringLen(s);
string unichar;
string res="";
if (leng!=0)
{
unichar=" ";
ipos=0;
while (ipos<leng)
{ //uchar typecasted because each double byte char is actually one byte
m=uchar(StringGetCharacter(s,ipos));
if (ipos+1<leng)
d=uchar(StringGetCharacter(s,ipos+1));
else
d=0;
big=d*256+m;
StringSetCharacter(unichar,0,ushort(big));
StringConcatenate(res,res,unichar);
ipos=ipos+2;
}
}
return(res);
}