Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   tamaño string (https://www.clubdelphi.com/foros/showthread.php?t=9135)

davidgaldo 15-04-2004 08:59:58

tamaño string
 
hola , como puedo hacer para almacenar más de 255 caracteres en una variable tipo string, gracias

__cadetill 15-04-2004 09:40:49

Símplemente añadiendo carácteres :D

Ahora, si te refieres en que no puedes en la misma instrucción, prueba a dividirlo en varias.

Código:

var
  str := string;
begin
  str := 'mi super long string de menos de 255 caracteres';
  str := str + ' más la concatenación que lo hace mayos a 255';

Pruebalo, verás como funciona ;)

davidgaldo 15-04-2004 09:43:30

si, pero el problema es que no conozco la longitud, ya que se modifica en ejecución y no se como hacer.

__cadetill 15-04-2004 09:45:54

Pon algo de código a ver si podemos ayudarte a partir esas asignaciones

davidgaldo 15-04-2004 09:49:10

unidades:='!!Alarma: Reponer =';
adotalm.first;
while not adotalm.Eof do begin
if adotalm['UNIDADES']<adotalm['MIN'] then
begin
alarma:=true;
unidades:=unidades+'//'+adotalm['REF'];
end;
adtalm.next;
end;

__cadetill 15-04-2004 09:56:42

Pero, a ver, esto te da algún error? Si es así, cuál?

Lo que "impide" Delphi es la asignación de un string de más de 255 caracteres, pero con concatenaciones como la que haces.... nunca he tenido problemas (bueno, tampoco se si he superado alguna vez los 255)

Bueno, acabo de hacer esta prueba y sin problemas:

Código:

var
  str: string;
  i: integer;
begin
  str := '';
  for i := 1 to 270 do
    str := str + IntToStr(i);
  showmessage(str);

Uno de los problemas que podrías tener es que adotalm['REF'] ocupara más de 255 caracteres, pero eso lo puedes controlar de forma fácil

Código:

if length(adotalm['REF']) <= 255 then
  unidades := unidades + '//' + adotalm['REF']
else
  unidades := unidades + '//' +
        copy(adotalm['REF'], 0, 250) +
        copy(adotalm['REF'], 250, length(adotalm['REF']));

Bueno, lo he hecho de cabeza, quizás haya que retocar algo ;)

davidgaldo 15-04-2004 10:03:50

adotalm['REF'] tiene como mucho 6 caracteres, pero lo que crece mucho es
unidades que va sumando de 6 en 6.

davidgaldo 15-04-2004 10:07:10

y al final lo quiero mostrar por pantalla, pero creo que con showmessage no puedo, no?, como hago?

__cadetill 15-04-2004 10:34:21

Pero aún no has dicho el error que te da.

Y sí, sí puedes mostrarlo en un ShowMessage. Fíjate en el ejemplo que te he puesto en el mensaje anterior, el del bucle de 1 a 270, lo que pasa es que si no pones ningún salto de linea (#13), te aparecerá en una sola linea saliéndose de pantalla.

davidgaldo 15-04-2004 10:56:52

me puedes poner un ejemplo de como introducir el salto de linea en el showmessage?

davidgaldo 15-04-2004 10:57:54

o mejor dicho en el messagedlg?

tcp_ip_es 15-04-2004 11:32:32

Concatenando al string #13 provocas un salto de linea.
Con el siguiente ejemplo tendrías tres lineas....

Código:

showmessage(str + #13 'bla bla bla' + #13 + 'bla bla bla');


La franja horaria es GMT +2. Ahora son las 05:05:23.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi