Ja, es ist weniger geworden.
Ich glaube
im Compiler existiert ein Limit von etwa 64KB für lokale Konstanten. Dies ist gleichgeblieben, aber die Stringkonstanten benötigen seit D2009 den doppelten Platz.
Nein, es gibt keine schöne Lösung im Quellcode, außer die Strings auszulagern ... z.B. in die Ressourcen oder in andere Prozeduren.
Delphi-Quellcode:
procedure blablaA(Result: TStrings);
begin
...
Result.Add('blabla');
Result.Add('blabla');
Result.Add('blabla');
...
end;
procedure blablaB(Result: TStrings);
begin
...
Result.Add('blabla');
Result.Add('blabla');
Result.Add('blabla');
...
end;
function blabla: TStrings
begin
...
blablaA(Result);
blablaB(Result);
...
end;
Es muss keine separate Prozedur/Funktion sein - nested Prozeduren zu verwenden geht auch
Delphi-Quellcode:
function blabla: TStrings;
procedure blablaA;
begin
...
Result.Add('blabla');
Result.Add('blabla');
Result.Add('blabla');
...
end;
procedure blablaB;
begin
...
Result.Add('blabla');
Result.Add('blabla');
Result.Add('blabla');
...
end;
begin
...
blablaA;
blablaB;
...
end;