<送分>关于文本文件(TXt文件)的处理(在线等).. 分不够可以加加. ( 积分: 50 )

  • 主题发起人 主题发起人 lovenj2008
  • 开始时间 开始时间
L

lovenj2008

Unregistered / Unconfirmed
GUEST, unregistred user!
我想将memo中的文字保存为TXT文件,但是保存的编码方式默认是ansi,我想将编码方式改变为我需要的UTF-8或者根据需求来改编码方式.请问怎么实现
 
temtxt := ExtractFilePath(Application.EXEName)+'32.txt';
memo1.Lines.SaveToFile(temtxt);
 
function GetFileText(const FileName: string): string;
var
hFile: DWORD;
iSize: DWORD;
sTemp: string;
begin
hFile := CreateFile(PChar(FileName), GENERIC_READ, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
iSize := GetFileSize(hFile, nil);
SetLength(sTemp, iSize + 2);
ReadFile(hFile, sTemp[1], iSize, iSize, nil);
CloseHandle(hFile);
sTemp[iSize + 1] := #0;
sTemp[iSize + 2] := #0;
if (sTemp[1] = #$FF) and (sTemp[2] = #$FE) then // UNICODE
begin
SetLength(Result, iSize);
WideCharToMultiByte(CP_ACP, 0, PWideChar(@sTemp[3]), -1, @Result[1], iSize, nil, nil);
end else
Result := sTemp;
Result := string(PChar(Result));
end;
 
to bjxiangshan
首先谢谢你 , 我想请问下你给我的这个函数,我传的参数是什么啊 ,文件名还是文件里面的内容啊,
 
bjxiangshan的
看上去是读取的
 
是的,不太了解,还有人懂啊 ,请指导下,分不够还可以加
 
Delphi中有相应的转换函数可以使用的,在System单元中就有AnsiToUtf8这个函数,楼主可以试一下。
 
to:ChrisMao
谢谢,这个函数我试过,我不是要的这种效果,我是要在保存txt文本文件是,将文本文件的编码改为u格式或者其他,现在的困难就是每次保存她都默认为ANsi格式.
 
var
astringlist: tstringlist;
astringList.assign(memo1.lines)
astringlist.text:=ansiToUtf8(astringlist.text);
astringlist.saveTofile('xxx.txt');
 
var
astringlist: tstringlist;
begin
astringList:=tstringlist.Create;
astringList.assign(memo1.lines);
astringlist.text:=ansiToUtf8(astringlist.text);
astringlist.saveTofile('D:/temp/temp.txt');
astringList.Free;
end;

但是中间还有空格,我知道空格在memo中是换行了,在astringlist是#$D#$A 谢谢,解决了
 
多人接受答案了。
 

Similar threads

回复
0
查看
1K
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部