Delphi 7:如何将字符串拆分为TStringList

vpfxa7rd  于 2022-11-23  发布在  其他
关注(0)|答案(2)|浏览(184)

我需要把一个字符串拆分成几行。
具体地说,我有一个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货车多恩解决方案会起作用,所以他得到了答案。

webghufk

webghufk1#

把一个字符串转换成一个字符串列表很容易,你需要做的就是下面的步骤。

  • 剥离前导'
  • 将所有'#$D#$A'替换为#13#10(从而再次将字符串拆分为多行。
  • 删除尾部'#$D#$A

将产生的字串指派给StringList.Text属性,字串清单中的每一行现在都是DFM档案的一行。

dced5bon

dced5bon2#

让我们试试这个代码:
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后代来管理表单序列化,并使用它来封装表单对象的保存/加载逻辑。

相关问题