文档章节

WinAPI 字符及字符串函数(14): CharToOem、OemToChar

涂孟超
 涂孟超
发布于 2014/09/26 15:37
字数 293
阅读 9
收藏 0
CharToOemBuff、OemToCharBuff 与 CharToOem、OemToChar 的区别只是前者可以指定要转换的字符数.
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  Buf: PWideChar;
  AnsiBuf: array[0..255] of AnsiChar;
begin
  Buf := '万一的 Delphi 博客';
  CharToOem(Buf, AnsiBuf);
  ShowMessage(string(AnsiBuf)); {万一的 Delphi 博客}

  FillChar(AnsiBuf, Length(AnsiBuf), #0);

  CharToOemBuff(Buf, AnsiBuf, 6);
  ShowMessage(string(AnsiBuf)); {万一的 De}
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  str: string;
  p: PAnsiChar;
begin
  str := '万一的 Delphi 博客';

  p := GetMemory(256);
  CharToOem(PChar(str), p);
  ShowMessage(string(p)); {万一的 Delphi 博客}
  FreeMemory(p);

  p := GetMemory(256);
  CharToOemBuff(PChar(str), p, 6);
  ShowMessage(string(p)); {万一的 De}
  FreeMemory(p);
end;

procedure TForm1.Button3Click(Sender: TObject);
var
  AnsiBuf: PAnsiChar;
  Buf: array[0..255] of Char;
begin
  AnsiBuf := '万一的 Delphi 博客';
  OemToChar(AnsiBuf, buf);
  ShowMessage(string(Buf)); {万一的 Delphi 博客}

  FillChar(Buf, Length(Buf), #0);

  OemToCharBuff(AnsiBuf, buf, 6);
  ShowMessage(string(Buf)); {万一的}
end;

procedure TForm1.Button4Click(Sender: TObject);
var
  AnsiStr: AnsiString;
  p: PChar;
begin
  AnsiStr := '万一的 Delphi 博客';

  p := StrAlloc(256);
  OemToChar(PAnsiChar(AnsiStr), p);
  ShowMessage(string(p)); {万一的 Delphi 博客}
  StrDispose(p);

  p := StrAlloc(256);
  OemToCharBuff(PAnsiChar(AnsiStr), p, 6);
  ShowMessage(string(p)); {万一的}
  StrDispose(p);
end;

end.

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2008/11/06/1328362.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
Win32多语言IME应用程序编程接口(API)

十三、IMM函数 1、IMM用户界面函数 以下是用户界面窗口可以使用的输入法管理器函数。应用程序也可以使用它们改变输入法的状态。 ImmGetCompositionWindow ImmSetCompositionWindow ImmGetCa...

yousss
04/25
0
0
vc编程的ime输入法菜单开发

WINDOWS 下 IME 编程 IME 编程心得 第一章 Windows9x 系统下汉字输入法的基本原理 第二章 Windows9x 系统提供的 ime 管理函数 第三章 ime 文件中必须使用的结构 自由拼音输入法的测试 输入法...

crossmix
2014/12/07
0
3
[Beautifulzzzz的博客目录] 快速索引点这儿O(∩_∩)O~~,红色标记的是不错的(⊙o⊙)哦~

3D相关开发 [direct-X] 1、direct-X最小框架 [OpenGL] 1、环境搭建及最小系统 [OpenGL] 2、企业版VC6.0自带的Win32-OpenGL工程浅析 51单片机 [51单片机] 1602液晶显示控制代码 [51单片机] 1...

史迪奇2号
2017/08/01
0
0
C语言中的字符串处理

•字符串字面量(字符串常量,在C标准中称为,字符串字面量) 如何存储字符串字面量 从本质上而言,C语言把字符串字面量作为字符数组来处理。当C语言编译器在程序中遇到长度为n的字符串字面量时...

晨曦之光
2012/03/09
328
0
WindowsAPI每日一练(2) 使用应用程序句柄

WindowsAPI每日一练系列 :https://www.cnblogs.com/LexMoon/category/1246238.html  WindowsAPI每日一练(1) WinMain   WindowsAPI每日一练(2) 使用应用程序句柄 从上面这段程序就可以看...

奶berber
07/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

技术工坊|如何开发一款以太坊钱包(深圳)

【好消息!】HiBlock区块链技术工坊已经成功举办了26期,其中北京1期,西安1期,成都2期,上海22期。经常有社区的小伙伴问定期举办技术工坊的除了上海以外,其他城市有没有?现在区块链技术工...

HiBlock
昨天
1
0
Redis 梳理笔记

安装 安装gccyum install gcc-c++下载传输到服务器上解压tar -xzvf *.tar.gzcd redis-3.2.9编译make安装 make PREFIX=/usr/local/redis install将配置文件拷贝出来cp redis...

晨猫
昨天
0
0
PyCharm flask 'Debug mode off' 调试模式关闭的解决方法

flask的几种debug模式的方法 # 1.app.run 传参debug=trueapp.run(debug=True) #2 设置app的配置app = Flask(__name__)app.config['DEBUG'] = True #3 配置文件方式# config.py中添加d...

yimingkeji
昨天
1
0
聊聊storm TridentWindowManager的pendingTriggers

序 本文主要研究一下storm TridentWindowManager的pendingTriggers TridentBoltExecutor.finishBatch storm-core-1.2.2-sources.jar!/org/apache/storm/trident/topology/TridentBoltExecut......

go4it
昨天
1
0
java实现多线程两种基本方式

我们在开发当中经常会使用到多线程,这里我们来写两个小案例通过最基本的两种方式继承Thread类或实现Runnable接口来实现一个多线程。 继承Thread类 我们可以通过继承Thread类,并重写run()方...

王子城
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部