相关疑难解决方法(0)

从Delphi 2006中的WideString中删除空字符

我有一个包含一些数据的WideString变量,但是当字符串被分配了一些额外的空值时,在数据中或多或少的随机位置添加.我现在需要从变量中删除这些空值.如果它是一个字符串我会检查每个Char以查看Char(x)= 0但是因为这是一个WideString我不认为这个工作?我怎样才能最好地解决这些问题呢?

我正在使用Delphi 2006

delphi unicode

4
推荐指数
2
解决办法
3885
查看次数

无法使用UTF-8编码

我使用这段代码加载一个文本文件(我的文件编码是UTF-8)(如何在Delphi中读取包含'NULL CHARACTER'的文本文件?):

uses
IOUtils;

var
  s: string;
  ss: TStringStream;
begin
  s := TFile.ReadAllText('c:\MyFile.txt');
  s := StringReplace(s, #0, '', [rfReplaceAll]);  //Removes NULL CHARS
  ss := TStringStream.Create(s);

  try
    RichEdit1.Lines.LoadFromStream(ss, TEncoding.UTF8); //UTF8
  finally
    ss.Free;
  end;

end;
Run Code Online (Sandbox Code Playgroud)

但我的问题是,RichEdit1不加载整个文本.这不是因为空字符.这是因为编码.当我使用此代码运行应用程序时,它会加载整个文本:

uses
IOUtils;

var
  s: string;
  ss: TStringStream;
begin
  s := TFile.ReadAllText('c:\MyFile.txt');
  s := StringReplace(s, #0, '', [rfReplaceAll]);  //Removes NULL CHARS
  ss := TStringStream.Create(s);

  try
    RichEdit1.Lines.LoadFromStream(ss, TEncoding.Default);
  finally
    ss.Free;
  end;

end;
Run Code Online (Sandbox Code Playgroud)

我换TEncoding.UTF8TEncoding.Default.加载了整个文本,但它的格式不正确,并且不可读.

我猜有些字符是UTF 8不支持的.因此,加载过程在想要加载该char时停止.

请帮忙.任何解决方法?

****编辑:**

我确定它 …

delphi delphi-2010

3
推荐指数
1
解决办法
3794
查看次数

无法从字符串中删除"空字符"

几个月前我问了一个类似的问题.感谢Rob Kennedy,我可以把我的整个文本加载到Richedit 但是我无法删除Null chars.因为我用过,我可以加载我的文本Stream.


现在在这段代码中:

var
  strm : TMemorystream;
  str  : UTF8string;
  ss   : TStringstream;

begin
  strm := tmemorystream.Create;

  try
    strm.LoadFromFile('C:\Text.txt');
    setstring(str,PAnsichar(strm.Memory),strm.Size);
    str := StringReplace(str, #0, '', [rfReplaceAll]);  //This line doesn't work at all
    ss  := tstringstream.Create(str);
    Richedit1.Lines.LoadFromStream(ss);
  finally
    strm.Free;
    ss.Free;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

我转换TMemorystreamstring删除Null Chars,StringReplace()然后再将其转换TStringstream为加载它Richedit.lines.LoadFromStream.

但我的问题是我无法删除Null Character使用StringReplace().我可以替换其他角色但不能#0.

有没有办法直接删除null charcters TMemorystream并将其加载到Richedit …

delphi null character delphi-xe4

3
推荐指数
2
解决办法
3614
查看次数

标签 统计

delphi ×3

character ×1

delphi-2010 ×1

delphi-xe4 ×1

null ×1

unicode ×1