im trabajando en delphi 7 y yo estaba trabajando en una cadenas, me encontré con este¿cómo puede delphi 'cadena' literales ser más de 255?
Para una cadena de longitud por defecto, es decir, declararon simplemente como una cadena, el tamaño máximo es siempre 255. Un ShortString nunca se permite crecer a más de 255 caracteres.
vez que tenía que hacer algo como esto en mi código de Delphi (que era para una consulta muy grande)
var
sMyStringOF256characters : string;
ilength : integer;
begin
sMyStringOF256characters:='ThisStringisofLength256,ThisStringisofLength256,.....'
//length of sMyStringOF256characters is 256
end;
consigo este error
[Error] u_home.pas (38): Los literales de cadena pueden tener como máximo 255 elementos.
pero cuando intento esta
var
iCounter : integer;
myExtremlyLongString : string;
begin
myExtremlyLongString:='';
Label1.Caption:='';
for iCounter:=0 to 2500 do
begin
myExtremlyLongString:=myExtremlyLongString+inttostr(iCounter);
Label1.Caption:=myExtremlyLongString;
end;
Label2.Caption:=inttostr(length(myExtremlyLongString));
end;
y el resultado es
Como se puede ver la longitud de myExtremlyLongString es caracteres.
¿por qué Delphi no dio ningún error al decir que la longitud está más allá de 255 para myExtremlyLongString?
EDITAR he usado
SetLength(sMyStringOF256characters,300);
pero no funciona.
Tal vez usted se acaba de leer documentos equivocadas. Por cierto, no está claro a qué te refieres con "asignados dinámicamente" en lugar de ... ¿qué? – OnTheFly
@ user539484: significa que durante el tiempo de ejecución durante un ciclo puede ser strVal: = mystring, como un valor de ciclo asignado a la variable de cadena – PresleyDias
ah, rayar "dinámicamente", es sobre asignación frente a ** declaración **. Lo que está citando arriba se trata de declaraciones, más específicamente: acerca de la limitación del compilador en el carácter ** literales **. Se ha conectado a cadenas de Turbo Pascal solo por medios históricos. – OnTheFly