繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM