Function URLEncoding(vstrIn)
strReturn = ""
For i = 1 To Len(vstrIn)
ThisChr = Mid(vStrIn,i,1)
If Abs(Asc(ThisChr)) < &HFF Then
strReturn = strReturn & ThisChr
Else
innerCode = Asc(ThisChr)
If innerCode < 0 Then
innerCode = innerCode + &H10000
End If
Hight8 = (innerCode And &HFF00)\ &HFF
Low8 = innerCode And &HFF
strReturn = strReturn & "%" & Hex(Hight8) & "%" & Hex(Low8)
End If
Next
URLEncoding = strReturn
End Function
Function bytes2BSTR(vIn)
strReturn = ""
For i = 1 To LenB(vIn)
ThisCharCode = AscB(MidB(vIn,i,1))
If ThisCharCode < &H80 Then
strReturn = strReturn & Chr(ThisCharCode)
Else
NextCharCode = AscB(MidB(vIn,i+1,1))
strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
i = i + 1
End If
Next
bytes2BSTR = strReturn
End Function 谁能将上面的代码转换成delphi的!高手快出手

解决方案 »

  1.   

    uses IdURI.pas;
    IdURI.URLEncode(xxxxx)
      

  2.   

    Low8 = innerCode And &HFF
    strReturn = strReturn & "%" & Hex(Hight8) & "%" Hex(Low8)
    这个怎么改
    to
    hellolongbin(一个人[终不似,少年游]) 
     
      

  3.   

    Function URLEncoding(vstrIn:string):string;
    var
      Low8,Hight8,innerCode,i:integer;
      strReturn:string;
      ThisChr:char;
    begin
        strReturn := '';    For i := 1 To Length(vstrIn) do
        begin
           ThisChr := vstrIn[i];       If Abs(ord(ThisChr)) < $FF Then
              strReturn := strReturn + ThisChr
           Else begin
             innerCode := ord(ThisChr);
             If innerCode < 0 Then innerCode := innerCode + $10000;
             Hight8 := (innerCode And $FF00) div $FF;
             Low8 := innerCode And $FF;
             strReturn := strReturn + '%' + inttohex(Hight8,1) + '%' + inttohex(Low8,1);
           End;
        end;    URLEncoding := strReturn;
    end;