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 04-10-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
ejecutar codigo y si tiene valor nulo no de error

que hay amigos aqui con un pequeño problema resulta que tengo un edit en el cual mediante el evento keypress al meter un numero de codigo me trae el resultado a varios edit bueno hasta ahi todo bien, mi problema esta en que si en ese edit no le pongo ningun valor y le doy enter me arroja un error que dice
Código Delphi [-]
evariant invalid arg error with mensaje 'invalid argument'
entones lo intente con lo siguiente pero no me funciono porque pone el letrero pero no detiene el proceso:
Código Delphi [-]
 if(codigo.Text='')then
  Messagebox(Handle,PChar('el campo no puedo estar en blanco'),PChar('Atencion!!!'),Mb_ok);
__________________
saludos!!!
Responder Con Cita
  #2  
Antiguo 04-10-2012
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Este... sino detiene el proceso no es error de delphi sino de la capa 8 del modelo OSI

Seguramente tienes algo:

Código Delphi [-]
if edit1.text = ''
   then MessageBox(....);
Proceso;
Es evidente entonces el porqué continúa con el proceso ¿no?

Para que funcione deberías tener algo como:

Código Delphi [-]
if edit1.text = ''
   then MessageBox(...)
   else Proceso;

O en todo caso un:

Código Delphi [-]
if Edit1.Text = ''
   then begin
            MessageBox(...);
            Exit;
          end;

Yo me inclino por el if-then-else.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #3  
Antiguo 04-10-2012
edgar_prospero edgar_prospero is offline
Miembro
NULL
 
Registrado: mar 2012
Posts: 202
Poder: 13
edgar_prospero Va por buen camino
gracias por la respuesta pero sigue marcandome el erro acontinuackion agrego mi codigo a ver si ayuda un poco mas :

Código Delphi [-]
procedure TForm4.codigoKeyPress(Sender: TObject; var Key: Char);
var Total: double;
begin

 if Key = #13 then
  begin


       if codigo.Text='' then
    Messagebox(Handle,PChar('el campo no puedo estar en blanco'),PChar('Atencion!!!'),Mb_ok);

  end
else begin



    query2.Close;
    query2.SQL.Text := 'select * from productos where codigo=:codigo';
    query2.Params[0].Value := codigo.Text;

    query2.Open;


    descripcion.Text := query2.FieldByName('descripcion').asString;
    precio.Text := query2.FieldByName('precio').asString;
   //existencia.Text := query2.FieldByName('existencia').asString;

    form4.clientdataset1.Append;

  form4.clientdataset1['codigo'] := codigo.Text;
  form4.clientdataset1['descripcion'] := descripcion.Text;
  form4.clientdataset1['precio'] := precio.Text;
  form4.clientdataset1['cantidad'] := cantidad.Text;
  form4.clientdataset1['folio'] := folio.Text;
  form4.clientdataset1['fecha'] := fecha.Date;
  form4.clientdataset1['subtotal'] :=  floatToStr( StrTofloat(cantidad.Text) * StrTofloat(precio.Text) );

        form4.clientdataset1.Post;


  query2.Close;
     query2.SQL.Text:='SELECT folio FROM venta ORDER BY folio ASC LIMIT 1';
     query2.Open;
    folio.text := floatToStr( StrTofloat(folio.Text) + StrTofloat(numero.Text)) ;


          ClientDataSet1.First;
   while not ClientDataSet1.eof do begin
      total := total + clientdataset1.FieldByName('subtotal').AsFloat;

      ClientDataSet1.Next;

   end;

      total2.Caption := FormatFloat('###0.00', total);


    begin
      if Key = #13 then
      begin
        Key := #0;
        Perform(WM_NEXTDLGCTL, 0, 0);
        codigo.SetFocus;

      end

    end;

end;

end;
__________________
saludos!!!
Responder Con Cita
  #4  
Antiguo 04-10-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Parece que no estás poniendo el else en lugar adecuado. Tendría que estar como parte del if interno y no del externo.

// Saludos
Responder Con Cita
  #5  
Antiguo 04-10-2012
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Mi ojo compilador me dice que en este código hay un begin-end sobrantes:

Código Delphi [-]
begin
      if Key = #13 then
      begin
        Key := #0;
        Perform(WM_NEXTDLGCTL, 0, 0);
        codigo.SetFocus;

      end

    end;

Justamente el begin y el end exteriores.

En lo demás tendría que probarlo. Por otro lado: Sugiero empezar a identar de forma apropiada el código, por favor. Asi no hay quien le entienda.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #6  
Antiguo 04-10-2012
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por Delphius Ver Mensaje
[...]Sugiero empezar a identar de forma apropiada el código[...]
Sangrar o dar sangrado, mi estimado Delphius.
Responder Con Cita
  #7  
Antiguo 04-10-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Yo suelo usar "tabular".
¿De qué palabra habrá derivado "identar"?
Responder Con Cita
  #8  
Antiguo 04-10-2012
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por Al González Ver Mensaje
Sangrar o dar sangrado, mi estimado Delphius.
Cierto...
Esta palabra me cuesta acordármela. No me acostumbro, me recuerda a la sangre.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #9  
Antiguo 04-10-2012
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Yo suelo usar "tabular".
¿De qué palabra habrá derivado "identar"?
Tabular podría servir... uno de sus significados es justamente: accionar el tabulador de una máquina de escribir. Y justamente el teclado ha heredado de éste.

Identar posiblemente haya derivado del inglés... A mi me cuesta sacarme esta palabra.

EDITO: encima que no es correcta la palabra, ¡la digo mal! Es Indentar. Y según wikipedia es un anglicismo de Indentation.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]

Última edición por Delphius fecha: 04-10-2012 a las 21:48:57.
Responder Con Cita
  #10  
Antiguo 04-10-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Yo suelo usar "tabular".
¿De qué palabra habrá derivado "identar"?
Creo que tabular, si bien coincide con la segunda acepción registrada por la RAE

Cita:
2. tr. Accionar el tabulador de una máquina de escribir.
no sería lo más adecuado, pues sólo se refiere al mecanismo usado para lograr el efecto de sangrado en un ordenador, pero este sangrado no corresponde al de disponer los datos en una tabla.

El término indentar seguramente viene del ingles indent, que, presumiblemente deriva de dent, que significa abolladura. Figuradamente podría verse el sangrado como una abolladura en el margen izquierdo del texto.

Por otra parte, me cuesta mucho más trabajo entender el origen del término sangrado para estos menesteres.

Si bien trato de usar el español de forma correcta, también hay que entender que un lenguaje no es un ente estático, sino que evoluciona constantemente. En este caso específico, doy preferencia al anglicismo.

// Saludos
Responder Con Cita
  #11  
Antiguo 04-10-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Es que yo uso el tabulador de mi "máquina de escribir" electrónica
Responder Con Cita
  #12  
Antiguo 04-10-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Sí. Igualmente yo. Pero si usamos tabular por el hecho de accionar el tabulador, también podríamos usar control K I De hecho, en Delphi (al menos hasta la versión 7) a diferencia de entornos más modernos, la tecla TAB no sirve para indentar.

// Saludos
Responder Con Cita
  #13  
Antiguo 04-10-2012
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por roman Ver Mensaje
Por otra parte, me cuesta mucho más trabajo entender el origen del término sangrado para estos menesteres.
Es lo que me pasa a mi, no sólo me suena a sangre, sino que al asociarlo al concepto de sangría lo siento como ajeno... que no calza bien.

Cita:
Empezado por roman Ver Mensaje
Si bien trato de usar el español de forma correcta, también hay que entender que un lenguaje no es un ente estático, sino que evoluciona constantemente. En este caso específico, doy preferencia al anglicismo.
// Saludos
Pues si el español como cualquier otro idioma es vivo. De que hay que hacer un esfuerzo por tratar de hablar lo más apropiadamente posible hay ciertas palabras que ha decir verdad, uno se mal acostumbra...

El término correcto en nuestro idioma es sangría/sangrado. Y su concepto es justamente lo que hacemos... dar espacios en blanco para dar comienzo a un "párrafo". Asi que es lo más correcto, aunque a mi mente le suena raro.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #14  
Antiguo 04-10-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por roman Ver Mensaje
De hecho, en Delphi (al menos hasta la versión 7) a diferencia de entornos más modernos, la tecla TAB no sirve para indentar.
¿Cómo que no?, yo siempre he usado la tecla TAB para indentar/tabular/sangrar.

¿O he entendido otra cosa?
Responder Con Cita
  #15  
Antiguo 04-10-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Ja, ja. Debí ser más específico.

La tecla TAB en delphi, a diferencia de otros lenguajes, no sirve para indentar bloques de código.

Quizá con algún aditamento como cnpacks, pero no de caja.

// Saludos
Responder Con Cita
  #16  
Antiguo 04-10-2012
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 23
maeyanes Va por buen camino
Hola...

Acabo de probar en Delphi 2010 y si puedo "identar" bloques de código usando la tecla TAB (es una instalación nueva, sin asistentes ni nada).


Saludos...
__________________
Lee la Guía de Estilo antes que cualquier cosa. - Twitter
Responder Con Cita
  #17  
Antiguo 04-10-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por roman Ver Mensaje
La tecla TAB en delphi, a diferencia de otros lenguajes, no sirve para indentar bloques de código.
Ahora sí lo entiendo
Es como dices, sí.
Responder Con Cita
  #18  
Antiguo 05-10-2012
Avatar de kapcomx
kapcomx kapcomx is offline
Miembro
 
Registrado: jun 2007
Ubicación: Puebla México
Posts: 350
Poder: 17
kapcomx Va por buen camino
cnpack

Para evitar todo esto yo instalo en cnpack (buscar en google)
este pack dibuja lineas de diferentes colores en los begin y sus correspondientes end.


Saludos...
__________________
un tipo al cual la sociedad no le tiene el mas mínimo respeto no puede ser presidente....
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 delphi "valor no puede ser nulo nombre del parametro key" nickolas Varios 0 21-08-2012 02:07:45
Ejecutar codigo despues de insertar valor en columna el_barto Conexión con bases de datos 2 30-08-2005 23:20:57
Valor Nulo o en blanco y nil vtdeleon OOP 1 25-11-2004 05:41:50
Campo con valor nulo fjcg02 Conexión con bases de datos 4 10-11-2004 08:55:07
Valor nulo pache OOP 3 19-06-2003 08:39:13


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


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