【发布时间】:2010-06-10 17:57:15
【问题描述】:
我正在做一些代码生成工作,我需要做的一件事是创建一个函数调用,其中一个参数是函数调用,如下所示:
result := Func1(x, y, Func2(a, b, c));
TStringList.CommaText 对于生成参数列表非常有用,但是当我遍历树构建外部函数调用时,我最终得到的结果如下所示:
result := Func1(x, y, "Func2(a, b, c)");
它引用了第三个参数,因为它包含逗号,并且产生了无效代码。但是我不能做一些简单的事情,比如 StringReplace all double quotes with empty strings,因为函数参数很可能是一个带有双引号的字符串。有什么办法让它不逃避包含逗号的行吗?
【问题讨论】:
-
你可以用正则表达式解析它吗?
-
...然后我会遇到两个问题。 :P
-
@Remko,他在生成代码,而不是解析它。如果您通常的做法是立即解析刚刚生成的代码,那您就错了。
-
我相信内置代码的 TStringList 是“接近,但没有雪茄”。说“自己写”的答案非常简单。 :-)
-
@Rob:没错。我将解析这段代码,但要等到以后。
标签: delphi code-generation escaping tstringlist