govcl icon indicating copy to clipboard operation
govcl copied to clipboard

RichEdit.Text() 无法正确返回中文, RichEdit.Lines().Text()正常

Open fcying opened this issue 1 year ago • 2 comments

测试代码, 就是按btn后, 打印RichEdit内容, RichEdit.Text()无法正确显示, 感觉是长度不对? RichEdit.Lines().Text() 能正常显示, 这两个有什么差别吗?

type TMainForm struct {
	*vcl.TForm
	Open        *vcl.TButton
	Input       *vcl.TRichEdit
	splitter    *vcl.TSplitter
	Output      *vcl.TRichEdit
}

var (
	mainForm         *TMainForm
	inputPlaceholder string = "123中文测试456"
)

	f.Input = vcl.NewRichEdit(mainForm)
	f.Input.SetParent(rightPane)
	f.Input.SetMaxLength(1000)
	f.Input.SetAlign(types.AlTop)
	f.Input.SetTextBuf(inputPlaceholder)
}

func (f *TMainForm) onOpenClick(sender vcl.IObject) {
	fmt.Printf("len:%d data:%s lineData:%s\n", f.Input.GetTextLen(), f.Input.Text(), f.Input.Lines().Text())
}

image

fcying avatar Oct 07 '24 12:10 fcying

如果数据量不大,可以用用lines.text的,另一方法本来是为了解决超大字符串的,以前测试过没啥问题,不知道咋的,看你这个又出现问题了,我到时候看看是什么问题。

ying32 avatar Oct 07 '24 16:10 ying32

看来昨晚碰到的 access violation 是字符串太长的问题了.... 大概 1M 的数据, Lines().Text() 就会报这个错误了.

fcying avatar Oct 07 '24 23:10 fcying