vectores resueltos matrices ejercicios ejemplos ejemplo dinamico declarar como array delphi

delphi - resueltos - ¿Es posible declarar una matriz constante que incluya otra matriz constante?



vectores en java ejemplos (4)

No lo creo. Tendrás que hacerlo en código. Si se trata de constantes globales, puede hacer la inicialización en la sección ''inicialización'' de la unidad.

Quiero hacer algo como esto:

const MyFirstConstArray: array[0..1] of string = (''Hi'', ''Foo''); MySecondConstArrayWhichIncludesTheFirstOne: array[0..2] of string = MyFirstConstArray + (''Bar'');

Básicamente quiero el siguiente resultado:

MyFirstConstArray -> (''Hi'', ''Foo''); MySecondConstArrayWhichIncludesTheFirstOne -> (''Hi'', ''Foo'', ''Bar'');

¿Es posible de alguna manera?


AFAIK, no puedes hacer eso.
Pero si el objetivo es garantizar que declare su cadena constante real solo una vez, le sugiero que declare las cadenas individuales y luego las agrupe en matrices:

const MyConst1 = ''Hi''; MyConst2 = ''Foo''; MyConst3 = ''Bar''; MyFirstConstArray: array[0..1] of string = (MyConst1, MyConst2); MySecondConstArrayWhichIncludesTheFirstOne: array[0..2] of string = (MyConst1, MyConst2, MyConst3);

Por cierto, tu sintaxis es incorrecta, tienes que precisar el tipo de elementos de la matriz.


En realidad, puedes hacerlo usando registros. Utilizo esta técnica a gran escala para crear definiciones para ciertos comportamientos de entidades en mi software. es una técnica muy poderosa:

type TPerson=record // generally you''d put all kinds of addition stuff here including enums, // sets, etc saPets:array[0..2] of string; end; const scDog=''Dog''; MyPeople:array[0..1] of TPerson= ((saPets:(scDog, ''Cat'', ''Fish''); ), (saPets:(''Iguana'', ''Tarantula'', ''''); )); begin ShowMessage(MyPeople[0].saPets[0]); end;

Una cosa que no puedes hacer es referirte a las cadenas de recursos. por lo tanto, cualquier traducción debe ser hecha por el código que recupera el valor. generalmente los indexo con enumeraciones; al hacerlo, puedo hacer que el software sea más fácil de modificar porque no se compilará si dejo algo importante fuera.


Si el orden no es relevante, entonces use conjuntos enumerados.

type TMyConsts = (tConstFoo, tConstHi, TConstBar); const MyFirstConstSet = [tConstFoo, tConstHi]; MySecondConstSet = MyFirstConstSet + [TConstBar]; MyConstStrings: array[TMyConsts] of string = (''Foo'', ''Hi'', ''Bar'');

Puede usar la matriz MyConstStrings para resolver sus enumeraciones en cadenas si lo desea. Depende de tu objetivo