im lavorando su Delphi 7 e stavo lavorando su un corde, mi sono imbattuto in questocome possono delphi letterali 'stringa' essere più di 255?
Per una stringa di lunghezza predefinita, vale a dire, semplicemente dichiarato come stringa, la dimensione massima è sempre 255. A ShortString non è mai permesso che cresca a più di 255 caratteri.
una volta ho dovuto fare qualcosa di simile nel mio codice Delphi (che è stato per davvero un grande richiesta)
var
sMyStringOF256characters : string;
ilength : integer;
begin
sMyStringOF256characters:='ThisStringisofLength256,ThisStringisofLength256,.....'
//length of sMyStringOF256characters is 256
end;
ottengo questo errore
[Errore] u_home.pas (38): i valori letterali stringa possono avere al massimo 255 elementi.
ma quando provo questo
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;
e il risultato è
Come si può vedere la lunghezza del myExtremlyLongString è caratteri.
perché non è stato restituito alcun errore per indicare che la lunghezza è superiore a 255 per myExtremlyLongString?
EDIT ho usato
SetLength(sMyStringOF256characters,300);
ma doesnt lavoro.
Forse siete solo leggendo documenti sbagliati. A proposito, è davvero poco chiaro cosa intendi per "assegnato dinamicamente" al contrario di ... cosa? – OnTheFly
@ user539484: il significato durante il tempo di esecuzione durante un ciclo può essere strVal: = mystring, come un valore di loop che assegna alla variabile stringa – PresleyDias
ah, gratta "dinamicamente", quindi, relativo all'assegnazione rispetto a ** dichiarazione **. Quello che stai citando sopra riguarda le dichiarazioni, più specificamente - sulla limitazione del compilatore sul carattere ** letterali **. È stato collegato alle stringhe Turbo Pascal solo con mezzi storici. – OnTheFly