这是Delphi 七 ,我将字符串拆分成行。
具体来说,我有一个DFM作为字符串(从MySql数据库中提取),我想将它拆分成TStringList中的行。
它看起来像这样......
'Oject Form1: TScriptForm'#$D#$A' Left = 0'#$D#$A' Top = 0'#$D#$A' Align = alClient'#$D#$A' BorderStyle = bsNone'#$D#$A' ClientHeight = 517'#$D#$A' ClientWidth = 993'#$D#$A' Color = clBtnFace'#$D#$A' Font.Charset = DEFAULT_CHARSET'#$D#$A' Font.Color = clWindowText'#$D#$A' Font.Height = -11'#$D#$A' Font.Name = 'MS Sans Serif''#$D#$A' Font.Style = []'#$D#$A' OldCreateOrder = False'#$D#$A' SaveProps.Strings = ('#$D#$A' 'Visible=False')'#$D#$A' PixelsPerInch = 96'#$D#$A' TextHeight = 13'#$D#$A'
呃
Anser:对我来说,这对我来说几乎不是问题。 Delphi自动将#$D#$A
视为CR LF,因此我所要做的就是将字符串分配给TStringlist的Text属性(这也剥离了每个#$D#$A
周围的单引号)。所以,我只需添加一行代码。
如果限制器没有被Delphi转换,那么我认为@Roald van Doorn 解决方案可行,所以他获得了答案。
答案 0 :(得分:5)
将字符串转换为字符串列表很容易,您需要做的就是以下步骤。
删除前导'
用#13#10替换所有'#$D#$A'
(从而将字符串再次分成行。
删除尾随'#$D#$A
将结果字符串分配给StringList.Text
属性,stringlist中的每一行现在都是DFM文件的一行。
答案 1 :(得分:2)
让我们试试这段代码: http://www.delphi3000.com/articles/article_4028.asp
另一件事:我看到你正在使用TScriptForm对象。给这个对象序列化/反序列化功能是件好事。
例如,读取此元代码: tscriptform:myform; the_stream:tstream;
myForm会:= tscriptform.create; the_stream.create(....) myform.unserialize(the_stream);
实践中:创建一个tstream后代,管理表单的序列化,并使用它来封装表单对象的保存/加载逻辑。