FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour O.T. preprocesador
Posts: 1088
Joined: Fri Oct 07, 2005 03:33 PM

O.T. preprocesador

Posted: Sat Nov 02, 2013 02:41 AM

Hola foro,

tengo un consulta como podría un comando (preprocesador) con texto con mas de una linea, ejemplo

COMANDO comando ;
TEXTO linea1
linea2
linea3
...
linean ;
OPCION1 op1 ;
OPCION2 op2

como cualquier comando de [x]Hb o FW, pero con una opción con un texto de varias líneas, espero este clara la idea

saludos

Marcelo

Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

Re: O.T. preprocesador

Posted: Sat Nov 02, 2013 10:15 AM

Marcelo,

Si pudieses especificar una coma despues de cada línea, entonces podrias usar una regla como hacemos en FWH con los ITEMS (ComboBox, etc) que acaban siendo guardados en un array:

[ <it: PROMPTS, ITEMS> <aItems> ] ;
... =>
<aItems>

busca ITEMS en FiveWin.ch :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 817
Joined: Sun Jun 15, 2008 07:47 PM

Re: O.T. preprocesador

Posted: Sat Nov 02, 2013 02:04 PM

Ya existe un comando en harbour para los textos:

TEXT
...
ENDTEXT

______________________________________________________________________________

Sevilla - Andalucía
Posts: 1088
Joined: Fri Oct 07, 2005 03:33 PM

Re: O.T. preprocesador

Posted: Sat Nov 02, 2013 04:22 PM

Hola,

gracias por las respuestas,

Antonio, no deseo perturbar el texto, por lo tanto no quisiera utilizar , (comas) ya que podría ser parte del texto

Manuel,

si TEXT ... ENDTEXT me sirve, pero el tema es como aumento algo mas a eso, es decir:

COMANDO <Comm>
TEXT
ENDTEXT
PARAMETRO <par1>

algo así, necesito algo mas que solo el texto

Gracias

Marcelo

Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

Re: O.T. preprocesador

Posted: Sat Nov 02, 2013 08:33 PM

Marcelo, Manuel,

la cuestión es que TEXT ... ENDTEXT no lo procesa el preprocesador, sino el propio compilador, asi que no podemos ampliarlo.

Si pudieses situar cada línea entre comillas (simples, en caso de que se usen las dobles en el texto), y añadiendo la coma final que te comentaba, entonces el preprocesador podría servirte.

No podrias leer el texto desde un fichero externo ? O generarlo temporalmente ?

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1088
Joined: Fri Oct 07, 2005 03:33 PM

Re: O.T. preprocesador

Posted: Sun Nov 03, 2013 04:39 PM

Antonio,

gracias por responder, el tema es que quiero simplificar las llamadas a sentencias SQL algo asi:

EXECUTESQL select *
from clientes
where estado = '$1'
and salario > $2
and gestion = $3
PARAMETERS 'A', 1000, 2012
SAVETOARRAY aSet
...

es la idea, ya lo tengo como función, pero sería mucho mas claro si lo podría hacer así

Muchas gracias por la ayuda

saludos

Marcelo

Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

Re: O.T. preprocesador

Posted: Mon Nov 04, 2013 09:17 AM
Marcelo,

Asi compila bien:

marcelo.prg
Code (fw): Select all Collapse
#xcommand EXECUTESQL <cSqlSentence> ;
             [ PARAMETERS <params,...> ] ;
             [ SAVETOARRAY <aArray> ] ;
       => ;
          TuFuncion( <cSqlSentence>, [<params>], [<aArray>] )

function Main()

   EXECUTESQL "select * " + ; 
      "from clientes " +  ;
      "where estado = '$1' " + ;
      "and salario > $2 " + ;
      "and gestion = $3" ;
   PARAMETERS 'A', 1000, 2012 ;
   SAVETOARRAY aSet

return nil
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1088
Joined: Fri Oct 07, 2005 03:33 PM

Re: O.T. preprocesador

Posted: Tue Nov 05, 2013 02:04 AM

Estimado Antonio,

tu propuesta es funcional y ya había probado algo así, pero mi intención era evitar las comillas ("") y los + ; para que sea mas legible y sencillo de escribir, pero por lo visto creo que no será posible salvo utilizando TEXT ENDTEXT de manera previa y esa variable pasarla al comando.

Muchas gracias

Marcelo

Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

Re: O.T. preprocesador

Posted: Tue Nov 05, 2013 02:02 PM

Marcelo,

No logro imaginar como vas a usar TEXT ... ENDTEXT para lo que quieres hacer.

De todas formas, si lo consigues será interesante ver como lo has hecho :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com

Continue the discussion