lazarus处理汉字

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lazarus处理汉字相关的知识,希望对你有一定的参考价值。

我想用lazarus从文本文件(text)中读取汉字,然后放到memo里面。

我想用string读,然后memo.append,乱码。

我该怎么做?是不是有专门读汉字的数据类型?
我用utf8string读utf-8编码的文件,然后append,发现显示正常,但是其他编码不行。

有会delphi的也说说吧

感谢 free_sh 的回答 再问一下 只能转成utf-8做吗

参考技术A lazarus的memo内码是utf8的,所以只认utf8编码的中文字符串。用Sys2UTF8等方法转为UTF8编码就能正常处理。
内码是utf8这个事实无法改变,不过utf8内码挺好的啊,支持各国语言。文本文件可以存为ANSI编码或其他编码,只不过读取时多费一步编码转换。本回答被提问者采纳
参考技术B 必须做内码转换了。
utf8toansi
ansitoutf8

:)

Lazarus - SelectFirst 给出错误

【中文标题】Lazarus - SelectFirst 给出错误【英文标题】:Lazarus - SelectFirst Gives Error 【发布时间】:2013-06-05 11:58:25 【问题描述】:

我正在尝试制作一个组合框,在更改后选择第一个项目。我的操作系统是 Ubuntu 12.04。我的代码:

unit Unit1; 

$mode objfpc$H+

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  Buttons, Menus;

type

   TForm1 

  TForm1 = class(TForm)
    ComboBox1: TComboBox;
    Edit1: TEdit;
    Label1: TLabel;
    Memo1: TMemo;
    procedure ComboBox1Change(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
     private declarations 
  public
     public declarations 
  end; 

var
  Form1: TForm1; 

implementation

$R *.lfm

 TForm1 

procedure TForm1.ComboBox1Change(Sender: TObject);
var Text2:String;
begin
  if (Combobox1.ItemIndex = 1) Then
  begin
    Text2 := Memo1.SelText;
    Edit1.Text := Memo1.SelText;
    Memo1.SelText := '[artist]' + Text2 + '[/artist]';
  end;
  if (Combobox1.ItemIndex = 2) Then
  begin
  if (Edit1.Text = '') Then
    ShowMessage('Artist name is not defined') Else
    begin
      Text2 := Memo1.SelText;
      Memo1.SelText := '[album artist=' + Edit1.Text + ']' + Text2 + '[/album]';
    end;
  end;
  if (ComboBox1.ItemIndex = 3) Then
  begin
  if (Edit1.Text = '') Then
    ShowMessage('Artist name is not defined') Else
    begin
      Text2 := Memo1.SelText;
      Memo1.SelText := '[track artist=' + Edit1.Text + ']' + Text2 + '[/track]'
    end;
  end;
  if (ComboBox1.ItemIndex = 4) Then
  begin
    Text2 := Memo1.SelText;
    Memo1.SelText := '[label]' + Text2 + '[/label]';
  end;
  if (ComboBox1.ItemIndex = 5) Then
  begin
    Text2 := Memo1.SelText;
    Memo1.SelText := '[tag]' + Text2 + '[/tag]';
  end;
  Combobox1.SelectFirst;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Memo1.Text := 'Select an item';
end;

end.

这给出了一个错误:unit1.pas(74,13) 错误:标识符 idents no member "SelectFirst"

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

组合框没有这个程序 如果你想要第一个项目以这种方式选择它

ComboBox1.ItemIndex := 0

【讨论】:

以上是关于lazarus处理汉字的主要内容,如果未能解决你的问题,请参考以下文章

lazarus 的用法

Lazarus是啥?

lazarus安装

用 Lazarus 开发 OPC Client 2 (关于Lazarus 编译器)

Lazarus Reading XML- with TXMLDocument and TXPathVariable

用 Lazarus 开发 OPC Client 1 (关于字符集)