[英]Delphi 7 : how to split a string into a TStringList
这是 Delphi 7 ,我需要将字符串分成几行。
具体来说,我有一个 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'
诶
回答:这对我来说几乎不是一个问题。 Delphi 自动将#$D#$A
视为 CR LF,因此我所要做的就是将字符串分配给 TStringlist 的 Text 属性(这也去除了每个#$D#$A
周围的单引号)。 所以,我只需要添加一行代码。
如果 Delphi 没有转换限制器,那么我认为@Roald van Doorn 解决方案会起作用,所以他得到了答案。
将字符串转换为字符串列表很容易,您需要做的就是以下步骤。
剥离前导'
将所有'#$D#$A'
替换为 #13#10 (从而将字符串再次拆分为行。
删除尾随'#$D#$A
将生成的字符串分配给StringList.Text
属性,字符串列表中的每一行现在都是 DFM 文件的一行。
让我们试试这段代码:
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后代,并使用它来封装表单对象的保存/加载逻辑。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.