360ITO技术社区
  • 首页
  • 文章
  • 快讯
  • 讨论
  • 问答
  • 小贴士
  • 代码块
  • 开源
  • 老论坛
登录 | 注册

360ITO技术社区  > 问答

订阅问答
为你せ生
有用 0 无用

英文操作系统,用Clipboard.SetTextBuf 出现乱码了,怎么解决呢?

为你せ生 发布于 8年前  查看:12274

procedureTUIRegroup.OnCopyExecute(Sender:TObject);

var

   txt:String;

begin

   txt := ‘为啥乱码?’;

Clipboard.SetTextBuf(PChar(txt));

end;

上面这个代码在中文操作系统里是没有问题的,但是如果是英文操作系统就会出现乱码怎么解决呢?


delphi

共有2个答案 我要回答»

按时间排 按有用数排 按支持数排
红尘★笑
有用 0 无用
红尘★笑 8年前 | [引述]  [点评] 
0

给你一段代码,保证管用:

 


procedure SetClipboardText(AStr: string);
var
  Data: THandle;
  DataPtr: Pointer;
  Size: Integer;
  WStr: PWideChar;
begin
  Size := Length(AStr) * 4;
  WStr := AllocMem(Size);
  try
    // convert to Unicode
    StringToWideChar(AStr, WStr, Size);
    OpenClipboard(0);
    EmptyClipboard;
    Data := GlobalAlloc(GMEM_MOVEABLE+GMEM_DDESHARE, Size);
    try
      DataPtr := GlobalLock(Data);
      try
        Move(WStr^, DataPtr^, Size);
        SetClipboardData(CF_UNICODETEXT, Data);
      finally
        GlobalUnlock(Data);
      end;
    except
      GlobalFree(Data);
      raise;
    end;
  finally
    CloseClipboard;
    FreeMem(WStr);
  end;
end;

procedure TUIRegroup.OnCopyExecute(Sender:TObject);
var
    txt:String;
begin
SetClipboardText (‘为啥乱码?’);
end;

穆罕默德
有用 0 无用
穆罕默德 8年前 | [引述]  [点评] 
0

​ 

把输入法EN设置成CH问题就可以解决了,代码如下:

 


procedure TUIRegroup.OnCopyExecute(Sender:TObject);
var
  txt:String;
begin
  txt := ‘为啥乱码?’;
  ActivateKeyboardLayout(HKL_NEXT,KLF_REORDER);
  Clipboard.SetTextBuf(PChar(txt));
end;

 

 

网友回复/评论仅代表其个人看法,并不表明本社区同意其观点或证实其描述。

请尽量让自己的回复能够对别人有帮助

1.不欢迎无意义的回复/评论和类似“顶”、“沙发”之类没有营养的文字
如果只是想简单的表个态,请点 有用无用支持反对 等按钮
2.发言之前请再仔细看一遍文章,或许是您遗漏、误解了,理性讨论、切莫乱喷
3.严禁发布违法、违规的信息,请勿到处招贴广告、发布软文;
4.如果您发现自己的回复/评论不见了,请参考以上3条
5.不停制造违规、垃圾信息的,账户将被禁止

热门标签

  • android 23
  • Python 22
  • delphi 13
  • SQLite 8
  • Android Studio 8
  • 网络 4
  • MongoDB 4
  • Flask 4
  • Flash 3
  • JavaScript 3
  • Linux 3
  • C++ 2
  • vi/vim 2
  • uWSGI 2
  • PIL 2
  • GitHub 2
  • git 2
  • peewee 2
  • 无线网卡 2
  • 发送数据 2

相关文章

周热点

月热点

Copyright ©2011-2012 360ITO技术社区 All Rights Reserved. | 关于 | 联系我们 | 杭州精创信息技术有限公司 浙ICP备09019653号-26|
▲