Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-06-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
Error: E2056 String literals may have at most 255 elements

que hay a ver quien puede echarme la mano tengo un codigo donde me marca string too long algo investigue de porque use mas de 255 caracteres a continuacion agrego el codigo para ver si puede orientarme de como puedo hacerle para tenerlo en varias lineas en la parte de tabla.sql.clear es en donde lo tengo en una sola linea


Código Delphi [-]
procedure TForm2.GuardarClick(Sender: TObject);
begin
tabla.SQL.Clear;
tabla.Close;

tabla.SQL.Add('insert into arm0062( codigo, nombre, departamento, folio, unidad, cant_piezas, cant_material, costo, total ) values( codigo,  : pnombre, : pdepartamento, : pfolio, : punidad, : pcant_piezas, : pcant_material, : pcosto, total) on duplicatekey update nombre= nombre, departamento= departamento, unidad= unidad, cant_piezas= cant_piezas, cant_material= : pcan_material, costo= : pcosto, total= total');

tabla.ParamByName('pcodigo').AsString: =codigo.Text;
tabla.ParamByName('pnombre').AsString: =nombre.Text;
tabla.ParamByName('pdepartamento').AsInteger: =departamento.Text;
tabla.ParamByName('pfolio').AsString: =folio.Text;
tabla.ParamByName('punidad').AsInteger: =unidad.Text;
tabla.ParamByName('pcant_piezas').AsInteger: =folio.Text;
tabla.ParamByName('pcant_material').AsInteger: =cant_material.Text;
tabla.ParamByName('pcosto').AsInteger: =costo.Text;
tabla.ParamByName('ptotal').AsInteger: =total.Text;


tabla.Execute;
Responder Con Cita
  #2  
Antiguo 08-06-2012
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

Prueba dividiendo la línea en varias:

Código Delphi [-]
tabla.SQL.Add('insert into  arm0062');
tabla.SQL.Add('(codigo, nombre, departamento...)');
tabla.SQL.Add('values(:pcodigo, :pnombre, :pdepartamento...)');


Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita
  #3  
Antiguo 08-06-2012
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.110
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Puedes partir la cadena que añades en "tabla.SQL.Add", puesto que no puede tener más de 255 caracteres. Podría quedarte algo como esto:

Código Delphi [-]
  tabla.SQL.Add
  (
    'insert into arm0062( codigo, nombre, departamento, folio, unidad, ' +
    'cant_piezas, cant_material, costo, total ) values( codigo,  : pnombre, ' +
    ': pdepartamento, : pfolio, : punidad, : pcant_piezas, : pcant_material, : ' +
    'pcosto, total) on duplicatekey update nombre= nombre, departamento= ' +
    'departamento, unidad= unidad, cant_piezas= cant_piezas, cant_material= : ' +
    'pcan_material, costo= : pcosto, total= total'
  );

Edito: O hacer lo que te ha propuesto el compañero más arriba.
Responder Con Cita
  #4  
Antiguo 08-06-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
excelentes respuestas las 2 probe con las 2 y me funcionaron bien gracias por su ayuda
Responder Con Cita
  #5  
Antiguo 08-06-2012
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

Ahora, el detalle con ese error no es que las cadenas de texto en Delphi tengan que ser de hasta 255 caracteres, sino que una línea en el editor de Delphi no debe contener más de 255 caracteres.


Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita
  #6  
Antiguo 08-06-2012
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.110
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Cita:
Empezado por maeyanes Ver Mensaje
Hola...

Ahora, el detalle con ese error no es que las cadenas de texto en Delphi tengan que ser de hasta 255 caracteres, sino que una línea en el editor de Delphi no debe contener más de 255 caracteres.


Saludos...
Eso no es del todo correcto. En realidad yo ignoro el porqué, pero, lo cierto es que no tiene que ver con el editor de Delphi. El caso es que no se pueden emplear "cadenas literales" de más de 255 caracteres. Puedes comprobarlo utilizando el compilador usando la "línea de comandos": si tratas de compilar un programa que contenga una cadena "literal" de más de 255 caracteres obtendrás el error "E2056 String literals may have at most 255 elements".
Responder Con Cita
  #7  
Antiguo 08-06-2012
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Hola...

Vaya, podría jurar que tenía que ver con el editor. Pero bueno, entonces el detalle es con las constantes (por decirlo de alguna forma) ya que una variable del tipo string si puede tener más de 255 caracteres.

Gracias por la aclaración...


Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita
  #8  
Antiguo 08-06-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Según entiendo, las constantes literales son tomadas por Delphi como ShortString (el viejo string de Turbo Pascal o Delphi 1).
El tipo string(viejo) esta representado por un arreglo de 256 bytes donde en el primer elemento reside el valor de la longitud de la cadena, por lo mismo tendríamos un error al intentar:
Código Delphi [-]
var
  s1: string[256]; // error, sólo hasta 255 ( 256 - 1er Byte)
En las versiones posteriores a Delphi 1, por defecto está activada la opción {$H+}, por lo que el el compilador interpreta el tipo string como AnsiString en las declaraciones; pero no es así con las constantes literales.
Código Delphi [-]
 
var
  s1: string; // AnsiString

Para el caso de edgar, la solución es cualquiera de las propuestas por maeyanes o Dec.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #9  
Antiguo 08-06-2012
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.110
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Gracias por la aclaración ecfisa.
Responder Con Cita
  #10  
Antiguo 09-06-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por dec Ver Mensaje
Hola,

Gracias por la aclaración ecfisa.
De nada Dec, es sólo una entre tantas que te debemos...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #11  
Antiguo 09-06-2012
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.110
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Cita:
Empezado por ecfisa Ver Mensaje
De nada Dec, es sólo una entre tantas que te debemos...

Saludos.
Nada... no digas eso, porque, no es verdad. Yo soy el que siempre estaré agradecido.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Error con Array of String orlando9427 Varios 1 25-01-2011 04:26:20
string literal may have at most 255 elements?? auxilio einarcito SQL 7 26-08-2008 01:26:15
Error al recorrer string creus Varios 6 16-11-2006 22:39:45
Error conversion from string '26/01/2006' ZRR Firebird e Interbase 5 27-01-2006 23:56:12


La franja horaria es GMT +2. Ahora son las 03:38:20.


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
Copyright 1996-2007 Club Delphi