ying32 / govcl

Cross-platform Go/Golang GUI library.
https://z-kit.cc
Apache License 2.0
2.25k stars 228 forks source link

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

Open fcying opened 1 month ago

fcying commented 1 month ago

测试代码, 就是按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

ying32 commented 1 month ago

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

fcying commented 1 month ago

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