Ver Mensaje Individual
  #2  
Antiguo 19-08-2007
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Reputación: 20
cHackAll Va por buen camino
Y bueno, en primer lugar el ShortString (cadena corta), puede contener 255 caracteres como máximo; la misma proviene de las antiguas versiones de Pascal como el Turbo Pascal. el método que utilizaron entonces fue un primer caracter que contenía el tamaño y los restantes 255 (el máximo numero posible del tamaño) de datos.

Delphi trajo consigo nuevas cosas como ser un string que soporta (en teoría) 4294967295 ~ 4Gb, digo en teoría porque en tal caso tendrías una variable que estaría consumiendo tal espacio en memoria y muy probablemente las PCs no tengan más de uno o dos Gb de RAM y algo parecido de memoria Virtual.

La lógica es la misma sin embargo cambia el indicador del tamaño, ya no es un byte (8 bits), ahora es un dword (double word = 32 bits). De ahí su máxima capacidad. Internamente tambien cambió algo; ántes asignaba los 256 bytes utilizados al inciar la aplicación; ahora solo 4 (el tamaño), cuando se va cambiando el tamaño de la cadena; entonces tambien se cambia la cantidad de bytes localizados en memoria... al darse tal eventualidad los diseñadores del Delphi utilizaron una tecnica ingeniosa que lastimosamente no es compatible en el paso de variables en una DLL (por ejemplo).

Pero bueno, al grano te doy los casos
-En una DLL solo puedes utilizar PChar o ShortString
-WideString, soporta UNICODE de hasta 4 Gb (teoricos) de caracteres (8Gb en memoria)
-AnsiString, soporta hasta 4 Giga caracteres.
-ShortString, soporta hasta 255 caracteres.

String puede tomar dos tipos de variables;
String = AnsiString si la directiva {$H+} ha sido definida.
String = ShortString si la directiva {$H-} ha sido definida.

Por último debes saber que si defines un tipo de variable nueva como:

Código Delphi [-]
type TNombre = string[300];

no funcionará, pues el Delphi soporta en tales definiciones de tipos nuevos como clase "base" la ShortString (como máximo 255 caracteres).

Espero haya sido lo que buscabas, saludos.
Responder Con Cita