Hola
Sin entrar a polemizar sobre la conveniencia del uso de variables globales ya que no conozco el caso, yo usaría long strings (
string) que son punteros y pueden incrementarse/decrementarse dinámicamente acorde a los valores asignados.
Para ellas, Delphi utiliza un contador de apuntadores que referencian al valor almacenado (
reference counter) y cuando este llega a 0 la memoria es liberada. Al ser apuntadores, copiar una variable tipo
string es más veloz que copiar una tipo
ShortString.
Y por último al ser un puntero, la declaración de una variable
string ocupa 4 bytes y la de una
string[4] ocupa 5 (en la posición cero almacena la longitud de la cadena), es fácil de comprobar:
Código Delphi
[-]
var
s4: string[4];
st: string;
implementation
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(Format('s4: %d bytes, st: %d bytes',[SizeOf(s4),SizeOf(st)]));
end;
Aunque a decir verdad, declarando todas las variables como
string[4] nunca superarás un uso de memoria de 5 * 120 = 600 bytes (los uses o no).
En cambio declarando todas como
string, si bién incialmente se consumen 4 * 120 = 580 bytes, el uso de memoria será mayor si les asignas más de 5 caracteres.
Un saludo.