转成Delphi code ( 积分: 100 )

  • 主题发起人 主题发起人 strongburn
  • 开始时间 开始时间
S

strongburn

Unregistered / Unconfirmed
GUEST, unregistred user!
const&nbsp;WORD&nbsp;kwBaseOffset&nbsp;=&nbsp;0xAC00;&nbsp;&nbsp;//&nbsp;Hangul&nbsp;char&nbsp;range&nbsp;(AC00-D7AF)<br>LPWSTR&nbsp;EncodeID(ULONG&nbsp;cbEID,&nbsp;LPENTRYID&nbsp;rgbID)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;ULONG&nbsp;&nbsp;&nbsp;i&nbsp;=&nbsp;0;<br>&nbsp;&nbsp;&nbsp;&nbsp;LPWSTR&nbsp;&nbsp;pwzDst&nbsp;=&nbsp;NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;LPBYTE&nbsp;&nbsp;pbSrc&nbsp;=&nbsp;NULL;<br>&nbsp;&nbsp;&nbsp;&nbsp;LPWSTR&nbsp;&nbsp;pwzIDEncoded&nbsp;=&nbsp;NULL;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;rgbID&nbsp;is&nbsp;the&nbsp;item&nbsp;Entry&nbsp;ID&nbsp;or&nbsp;the&nbsp;attachment&nbsp;ID<br>&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;cbID&nbsp;is&nbsp;the&nbsp;size&nbsp;in&nbsp;bytes&nbsp;of&nbsp;rgbID<br><br>&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Allocate&nbsp;memory&nbsp;for&nbsp;pwzIDEncoded<br>&nbsp;&nbsp;&nbsp;&nbsp;pwzIDEncoded&nbsp;=&nbsp;new&nbsp;WCHAR[cbEID];<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(!pwzIDEncoded)&nbsp;return&nbsp;NULL;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i&nbsp;=&nbsp;0,&nbsp;pbSrc&nbsp;=&nbsp;(LPBYTE)rgbID,&nbsp;pwzDst&nbsp;=&nbsp;pwzIDEncoded;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;&lt;&nbsp;cbEID;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i++,&nbsp;pbSrc++,&nbsp;pwzDst++)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*pwzDst&nbsp;=&nbsp;(WCHAR)&nbsp;(*pbSrc&nbsp;+&nbsp;kwBaseOffset);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Ensure&nbsp;NULL&nbsp;terminated<br>&nbsp;&nbsp;&nbsp;&nbsp;*pwzDst&nbsp;=&nbsp;L'/0';<br><br>&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;pwzIDEncoded&nbsp;now&nbsp;contains&nbsp;the&nbsp;entry&nbsp;ID&nbsp;encoded.<br>&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;pwzIDEncoded;<br>}
 
这是加密过程,要相应的解密过程。实际这段代码就是将在每个BYTE前加上一个#AC,变成双字节,结果造成数字字符变成韩文码。把每个AC去掉即可。<br>现在的问题是加密后的字符是通过Select&nbsp;得到的只有在Excel中看的出来是韩文,其他地方都是?。直接将Select出的结果传进去分解后得到的都是‘?’(63),好像和系统支持的语言有关。只要一Select出来就已经将内码破坏了。&nbsp;请朋友们多指点指点。
 
解决了,够简单的。贴上来留给BBS吧。<br>function&nbsp;getEntryID(wsItemUrl:wideString):string;<br>var<br>&nbsp;&nbsp;i,intPos:integer;<br>&nbsp;&nbsp;wsEncodeEntryId:wideString;<br>&nbsp;&nbsp;strDecodeEntryId:string;<br>begin<br>&nbsp;&nbsp;while&nbsp;pos('/',wsItemUrl)&nbsp;&gt;&nbsp;0&nbsp;do<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;intPos:=pos('/',wsItemUrl);<br>&nbsp;&nbsp;&nbsp;&nbsp;wsItemUrl[pos('/',wsItemUrl)]:='0';<br>&nbsp;&nbsp;end;<br>&nbsp;&nbsp;wsEncodeEntryId:=copy(wsItemUrl,intPos+1,48);<br>&nbsp;&nbsp;for&nbsp;i:=1&nbsp;to&nbsp;length(wsEncodeEntryId)&nbsp;do<br>&nbsp;&nbsp;begin<br>&nbsp;&nbsp;&nbsp;&nbsp;strDecodeEntryId:=strDecodeEntryId+inttohex(byte(wsEncodeEntryId),2);<br>&nbsp;&nbsp;end;<br>&nbsp;&nbsp;result:=strDecodeEntryId;<br>end;
 
应该解释下哈。
 
^_^,好久没看到2002以前注册的用户了。
 
上上楼滴,把vb译成delphi行吗
 
public&nbsp;LoginResultDocument&nbsp;login(LoginDocument&nbsp;doc)&nbsp;throws&nbsp;SecurityException,&nbsp;ImplementationException&nbsp;{<br> logger.trace(&quot;login&nbsp;::&nbsp;enter&quot;);<br><br> Login&nbsp;l&nbsp;=&nbsp;doc.getLogin();<br> LoginResultDocument&nbsp;lrd&nbsp;=&nbsp;ale.login(l.getUsername(),&nbsp;l.getPassword());<br><br> logger.trace(&quot;login&nbsp;::&nbsp;exit&quot;);<br> return&nbsp;lrd;<br> }<br>能帮忙翻译一下JAVA的马?
 
后退
顶部