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 06-01-2011
phirum1984 phirum1984 is offline
Miembro
NULL
 
Registrado: ene 2011
Posts: 13
Poder: 0
phirum1984 Va por buen camino
Question Caracter de continuacion de linea en el codigo fuente

Hola, saludos a todos los expertos de Delphi.

Quiero saber si en Delphi (uso la version Delphi 7) existe algún caracter de continuacion de linea para el codigo fuente, es decir en el compilador, nada de cadenas ni nada parecido, sino para las instrucciones que se escriben en la ventana del compilador.

Para quien conozca VB el equivalente al guion de subrayado para escribir sentencias e instrucciones en varias lineas.
He buscado por todos lados y no encuentro nada.

Ya se que para una cadena no hay problema y se puede poner en varias líneas, pero me gustaria poder hacerlo en el compilador para tener mas limpios ciertos trozos del codigo.
Por ejemplo lo quiero para instrucciones muy largas que se salen de la pantalla hacia la derecha poder ponerlas en varias lineas que se veria mucho mejor.

En una cadena puedo escribir varias lineas sin problemas como sigue en el ejemplo:

Código Delphi [-]
var texto: String;
texto:='SELECT * FROM tabla ' 
        +     'WHERE Pais=''Spain''';


Pero no sirve para cualquier instrucción como por ejemplo una comprobacion con IF, algo así como:

Código Delphi [-]
if (num1>0) AND (num2>10) //Esta instruccion en varias lineas no sirve
  AND (num3=1) then begin  //<-Esta parte no la toma en cuenta ...


Pongo como ejemplo Visual Basic que recuerdo que el caracter de continuacion de linea era el guion de subrayado "_".
Alguien sabe por favor si existe la forma y como sería?. Gracias por adelantado.
---

Última edición por ecfisa fecha: 06-01-2011 a las 03:23:11. Razón: Etiquetas
Responder Con Cita
  #2  
Antiguo 06-01-2011
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 phirum1984 y bienvenido al ClubDelphi.

Al menos yo, no conozco ningún separador en la sintáxis de Delphi. El codigo que adjuntas debería trabajar correctamente.

Para que salgas de dudas, te pongo un ejemplo donde el condicional ocupa 4 líneas:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var
  n1,n2,n3,n4,n5: Integer;
begin
  n1:= 2;
  n2:= 4;
  n3:= 6;
  n4:= 8;
  n5:= 10;
  if (n5 > n4) and (n4 > n3) and
     (n3 > n2) and (n2 > n1) and
     (n5 mod 2 = 0) and (n4 mod 2 = 0) and
     (n3 mod 2 = 0) and (n2 mod 2 = 0) then
   Caption:= 'condición cumplida'
  else
   Caption:= 'condición no cumplida';
end;

Te muestra: 'condicion cumplida'.

Probá ahora de asígnar algún valor impar (n2:=5 por ej.), o romper la condición de mayor que (n1:= 18) ,
y te mostrará: 'condición no cumplida'.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 06-01-2011 a las 03:45:31.
Responder Con Cita
  #3  
Antiguo 06-01-2011
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
Hola phirum1984,

Delphi no cuenta (al menos las versiones previas a 2006, desconozco si las siguientes tienen algo como esto) con esa característica de VB porque no la necesita. Si deseas partir una línea en varias líneas puedes hacerlo mientras no rompas con la gramática. Esto se debe a que el compilador elimina todo carácter de espacio. Por ejemplo:

Código Delphi [-]
function UnProcedimientoLargo(Param1, Param2: integer; var Param3: boolean): integer;

Puede reemplazarse como:

Código Delphi [-]
function UnProcedimientoLargo(Param1, Param2: integer; 
var Param3: boolean): integer;

Como se ve, el punto y coma da fin a la declaración de los parámetros Param1 y Param2. En la segunda línea comienza el resto.

También es legal incluso esto:


Código Delphi [-]
function UnProcedimientoLargo(Param1, 
Param2: integer; var Param3: boolean): integer;
Haciendo que el "separador" sea la coma.

Como he dicho, la gracia está en que el compilador elimina esos espacios en blanco.

Respecto a ese ejemplo del IF es totalmente válido. Quizá el problema esté en otro lado o tienes mal escrito tu código o no has sabido terminar adecuadamente la instrucción:

Código Delphi [-]
if ((variable1 = 10) AND (variable2 >= 100 )) OR (variable3 < 1000)
   then begin
            // aqui las sentencias
          end; // este ; da el fin del if

Es equivalente a esta:

Código Delphi [-]
if ((variable1 = 10) AND 
   (variable2 >= 100 )) OR 
   (variable3 < 1000)
   then begin
            // aqui las sentencias
          end; // este ; da el fin del if

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #4  
Antiguo 06-01-2011
phirum1984 phirum1984 is offline
Miembro
NULL
 
Registrado: ene 2011
Posts: 13
Poder: 0
phirum1984 Va por buen camino
Eso es lo que yo pensaba, pero ayer hice la prueba en una instrucción IF con 2 lineas para comprobar unos datos y se saltaba la condicion de la segunda linea.
Era algo asi como:
Código Delphi [-]
var
   qry: TQuery;
   sentencia: String;
...
qry.SQL.Clear;
sentencia:='La sentencia SQL, que estaba comprobada que era correcta por cierto';
qry.SQL.Add(sentencia);
qry.Open;
if (qry.RowsAffected=1) 
AND (qry.FieldByName('Usuario').AsString=txt_Usuario.Text)) 
AND (qry.FieldByName('Password').AsString=txt_Password.text) then begin 
   ... //Aqui irian las instrucciones
end
else //ERROR;


El codigo este es inventado, es como ejemplo explicativo de lo que se hacia con datos diferentes. Pues el caso es que la condicion de la comprobacion de las lineas por encima de la primer en el ejemplo no la hacia, solo comprobaba las condiciones de la primera linea.

De todas formas voy a probar a ver, posiblemente es que yo me equivocaria en alguna parte de la comprobacion y por eso no lo daba por bueno. Os diré si funciona enseguida.

Última edición por phirum1984 fecha: 06-01-2011 a las 11:45:58.
Responder Con Cita
  #5  
Antiguo 06-01-2011
phirum1984 phirum1984 is offline
Miembro
NULL
 
Registrado: ene 2011
Posts: 13
Poder: 0
phirum1984 Va por buen camino
[SOLUCIONADO]
Ah pues teneis razón, de hecho es como yo pensaba y tal y como decís arriba se puede hacer sin problemas, acabo de probar y ademas de que el codigo esta mucho mas ordenado lo hace perfectamente.
Con razon no encontraba nada al respecto por ahi jajaja.

Pues supongo que seria yo que tendria algun error en la comprobacion cuando lo probé ya que no me hacia comprobacion de las lineas adicionales, pero como digo seria error de la programacion entonces.

Muchas gracias por haberme ayudado, lo cierto es que entraba muchas veces a consultar esta fantastica pagina pero no habia escrito, y hace mucho tiempo me registre pero no tengo el usuario, asi que me he hecho este nuevo asi que posiblemente vuelva a escribir por aqui.
De nuevo muchas gracias.
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
Parsear caracter una linea desde TStrings.... namtaxonlabs Varios 0 07-12-2010 20:01:51
Convertir caracter a codigo ASCII Tecnic2 OOP 13 28-03-2009 15:07:09
leer caracter por caracter, una linea de un memo douglas OOP 1 05-10-2007 06:59:31
Como imprimir por canvas un caracter de salto de linea buitrago Impresión 3 30-08-2004 11:10:05
Posición del primer caracter de linea en un RichEdit SCH Varios 0 22-09-2003 20:51:32


La franja horaria es GMT +2. Ahora son las 16:54:02.


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