我在使用Memo控件的时候,发现用
Memo1.Lines.LoadFromFile(OpenDialog.FileName);
打开一些同类型的文档,有些文档可以打开,但是有些是乱码,请问是怎么回事?
Memo1.Lines.LoadFromFile(OpenDialog.FileName);
打开一些同类型的文档,有些文档可以打开,但是有些是乱码,请问是怎么回事?
解决方案 »
- [基础]C#的搞pascal,遇到点string拼接的疑问
- 本小姐是新手,请多指点
- 关于分割一串数字
- 一For循环的嵌套运用,基础算法,知道问题在哪里,但不知道怎样改
- 在CHART中我在CANVAS画了一条竖线(可以左右移动) 我又添了一条曲线SERIES1 我如何才能取到两条线的焦点坐标呢??
- 判断对象是否存在?(解决问题马上给分)
- 如何得到控件在屏幕上的坐标??
- 怎样设置QReport才能为报表加上表格线,或者什么组件可以,非常感谢
- 各位,请帮我解决这个问题,不然我整个系统没法进行.
- 各位好!我是delphi初学者请各位介绍几本优秀的delphi书:)
- 在DBGRID中的同一CELL中事件ONCELLCLICK不更新PICKLIST问题
- FastReport3报表打印时如何保存为Word或Excel格式?
//一般通过开始几个字节判断//Unicode存、取
procedure TForm1.Button1Click(Sender: TObject);
var
S: string;
W: WideString;
begin
if Memo1.Text = '' then Exit;
//存
with TMemoryStream.Create do try
S := #$FF#$FE;
Write(S[1], Length(S));
W := Memo1.Text;
Write(W[1], Length(W) * SizeOf(WideChar));
Position := 0;
SaveToFile('c:\temp\temp.txt');
finally
Free;
end;
end;procedure TForm1.Button2Click(Sender: TObject);
var
S: string;
W: WideString;
begin
//取
if not FileExists('c:\temp\temp.txt') then Exit;
with TMemoryStream.Create do try
LoadFromFile('c:\temp\temp.txt');
if Size < 4 then Exit;
SetLength(S, 2);
Read(S[1], Length(S));
if Copy(S, 1, 2) <> #$FF#$FE then Exit;
SetLength(W, (Size - 2) div SizeOf(WideChar));
Read(W[1], Length(W) * SizeOf(WideChar));
Memo2.Text := W;
finally
Free;
end;
end;//Utf8存、取
procedure TForm1.Button1Click(Sender: TObject);
var
S: string;
begin
//存
with TMemoryStream.Create do try
S := #$EF#$BB#$BF;
Write(S[1], Length(S));
S := AnsiToUtf8(Memo1.Text);
Write(S[1], Length(S));
Position := 0;
SaveToFile('c:\temp\temp.txt');
finally
Free;
end;
end;procedure TForm1.Button2Click(Sender: TObject);
var
S: string;
begin
//取
if not FileExists('c:\temp\temp.txt') then Exit;
with TMemoryStream.Create do try
LoadFromFile('c:\temp\temp.txt');
SetLength(S, Size);
Read(S[1], Length(S));
if Copy(S, 1, 3) <> #$EF#$BB#$BF then Exit;
Memo2.Text := Utf8ToAnsi(Copy(S, 4, MaxInt));
finally
Free;
end;
end;