Я делаю некоторую работу с генерацией кода, и одна из вещей, которые мне нужно сделать, это создать вызов функции, где одним из параметров является вызов функции, например:
result := Func1(x, y, Func2(a, b, c));
TStringList.CommaText очень полезен для генерации списков параметров, но когда я пересекаю дерево для построения вызова внешней функции, то, что я в итоге получаю, выглядит так:
result := Func1(x, y, "Func2(a, b, c)");
Он цитирует третий аргумент, потому что он содержит запятые, и это приводит к неверному коду. Но я не могу сделать что-то упрощенное, например StringReplace, все двойные кавычки с пустыми строками, потому что вполне возможно, что аргументом функции может быть строка с двойными кавычками внутри. Есть ли способ сделать так, чтобы он не выходил за пределы строк, содержащих запятые?