Thread View: es.comp.os.linux.programacion
12 messages
12 total messages
Started by lionheart
Sun, 17 Jul 2005 00:08
Como puedo hacer lo siguiente en pascal?
Author: lionheart
Date: Sun, 17 Jul 2005 00:08
Date: Sun, 17 Jul 2005 00:08
3 lines
1059 bytes
1059 bytes
Hola.Lo ke kiero hacer es un procedimiento q reciba un string por parametro y ese string sera el nombre de otro procedimiento el cual llamare desde el procedimiento 1�.Espero q me hallais entendido.
Re: Como puedo hacer lo siguiente en pascal?
Author: Pedro Maicas
Date: Sun, 17 Jul 2005 07:42
Date: Sun, 17 Jul 2005 07:42
26 lines
1933 bytes
1933 bytes
On Sun, 17 Jul 2005 02:08:37 +0200, lionheart <alvaro_m_r@ono.com> wrote: >Hola.Lo ke kiero hacer es un procedimiento q reciba un string por >parametro y ese string sera el nombre de otro procedimiento el cual >llamare desde el procedimiento 1�.Espero q me hallais entendido. Yo si, yo si ! creo que la "q" significa "que"; y "ke" tambien es "que"; y el "hallais" no es que hayas "encontrado" nada, sino que significa "hayais" del verbo haber. � tengo premio ? Bueno, es broma, pero es que el contenido tambien est� a la altura de la ortograf�a, ni siquiera dices el lenguaje de programaci�n que usas :-) Y puestos a adivinar, la respuesta es: "es imposible", hay pocos lenguajes de programaci�n que permitan hacer eso, quiz�s algun lenguaje interpretado ... Saludos :-) -Pedro- http://www.maicas.net/ e-mail en www.maicas.net
Re: Como puedo hacer lo siguiente en pascal?
Author: Pedro Maicas
Date: Sun, 17 Jul 2005 07:44
Date: Sun, 17 Jul 2005 07:44
15 lines
1477 bytes
1477 bytes
On Sun, 17 Jul 2005 09:42:55 +0200, Pedro Maicas <esta_no_es@jet.es> wrote: >ni siquiera dices el lenguaje >de programaci�n que usas :-) Y puestos a adivinar, la Aaaaaaaaaaaaaaaaah ! era pascal, pues es imposible, no conozco el "pascual" con detalle pero me apostar�a algo :-) Saludos :-) -Pedro- http://www.maicas.net/ e-mail en www.maicas.net
Re: Como puedo hacer lo siguiente en pascal?
Author: Zephryn Xirdal
Date: Sun, 17 Jul 2005 09:15
Date: Sun, 17 Jul 2005 09:15
43 lines
2542 bytes
2542 bytes
En Sun, 17 Jul 2005 09:44:35 +0200, Pedro Maicas <esta_no_es@jet.es> escribi�: > On Sun, 17 Jul 2005 09:42:55 +0200, Pedro Maicas <esta_no_es@jet.es> > wrote: > >> ni siquiera dices el lenguaje >> de programaci�n que usas :-) Y puestos a adivinar, la > > Aaaaaaaaaaaaaaaaah ! era pascal, pues es > imposible, no conozco el "pascual" con detalle > pero me apostar�a algo :-) > > > Saludos :-) -Pedro- > > http://www.maicas.net/ > > e-mail en www.maicas.net Exisit�a al menos un lenguaje que permit�a eso: clipper y sus bloques de c�digo, que se pasaban como cadenas y luego se conver�an en tiempo de ejecuci�n en P-CODE y era ejecutado. Ahora, el .NET lleva algo parecido, pues te permite compilar un bloque de c�digo en formato fuente y luego ejecutarlo. Lo que lionheart puede hacer es tomar un array de estructuras con el nombre de las posibles funciones almacenado en una cadena, y un puntero a la misma. Dentro de su funci�n, buscar�a el nombre pasado y ejecutar�a la funci�n. Aunque parece que lo que quiere es hacer alguna m�quina de estados o un int�rprete de comandos, y entonces hay mejores formas de hacerlo. -- Vencido por mis desdichas, reducido a la miseria a pesar del volumen enorme de mi trabajo realizado, con mi mujer loca en el hospital, sin poder pagar su pensi�n, me suprimo. -- Emilio Salgari, novelista, suicida -- ================================================================================== Powered by zxFortunes - It's free - http://sourceforge.net/projects/zxfortune
Re: Como puedo hacer lo siguiente en pascal?
Author: Abelazo
Date: Sun, 17 Jul 2005 15:36
Date: Sun, 17 Jul 2005 15:36
27 lines
1933 bytes
1933 bytes
Si no he entendido mal, eso con POSIX y C se puede hacer perfectamente (man exec). Ser�a algo as� como execlp (argv[1], argv[1], NULL); Ahora, en Pascal... lo siento, no llego a eso. ABEL Pedro Maicas wrote: > On Sun, 17 Jul 2005 09:42:55 +0200, Pedro Maicas <esta_no_es@jet.es> wrote: > > >>ni siquiera dices el lenguaje >>de programaci�n que usas :-) Y puestos a adivinar, la > > > Aaaaaaaaaaaaaaaaah ! era pascal, pues es > imposible, no conozco el "pascual" con detalle > pero me apostar�a algo :-) > > > Saludos :-) -Pedro- > > http://www.maicas.net/ > > e-mail en www.maicas.net
Re: Como puedo hacer lo siguiente en pascal?
Author: Zephryn Xirdal
Date: Sun, 17 Jul 2005 18:11
Date: Sun, 17 Jul 2005 18:11
36 lines
2296 bytes
2296 bytes
En Sun, 17 Jul 2005 17:36:51 +0200, Abelazo <abelQUTAMOSzo@TODASgmailLAS.MAYUSCULAScom> escribi�: > Si no he entendido mal, eso con POSIX y C se puede hacer perfectamente > (man exec). Ser�a algo as� como > > execlp (argv[1], argv[1], NULL); > > Ahora, en Pascal... lo siento, no llego a eso. > > ABEL > > Pedro Maicas wrote: >> On Sun, 17 Jul 2005 09:42:55 +0200, Pedro Maicas <esta_no_es@jet.es> >> wrote: >> >>> ni siquiera dices el lenguaje >>> de programaci�n que usas :-) Y puestos a adivinar, la >> Aaaaaaaaaaaaaaaaah ! era pascal, pues es >> imposible, no conozco el "pascual" con detalle >> pero me apostar�a algo :-) >> Saludos :-) -Pedro- >> http://www.maicas.net/ e-mail en www.maicas.net Eso es invocar a otro programa. A lo que se refiere es a llamar a otra funci�n a partir de una cadena de texto. El equivalente a funci�n en pascal se llama procedimiento (procedure en ingl�s). -- Si somos arrastrados a Cristo, creemos sin querer; se usa entonces la violencia, no la libertad. -- San Agust�n. (354-439) Obispo, fil�sofo y Padre de la Iglesia Latina. ================================================================================== Powered by zxFortunes - It's free - http://sourceforge.net/projects/zxfortune
Re: Como puedo hacer lo siguiente en pascal?
Author: Jose Antonio
Date: Sun, 17 Jul 2005 20:28
Date: Sun, 17 Jul 2005 20:28
20 lines
1840 bytes
1840 bytes
lionheart escribi�:
> Hola.Lo ke kiero hacer es un procedimiento q reciba un string por
> parametro y ese string sera el nombre de otro procedimiento el cual
> llamare desde el procedimiento 1�.Espero q me hallais entendido.
Si el conjunto de procedimientos es conocido y limitado con una
secuencia de if-else lo tienes resuelto:
if procName = 'foo' then
foo
else if procName = 'bar' then
bar;
...
Otra opci�n para evitarte tanto if-else es registrar cada funci�n
(usando punteros) en una estructura de datos tipo "map" y punteros a
funciones (imagino que pascal permite esto al igual que C).
Saludos.
Re: Como puedo hacer lo siguiente en pascal?
Author: lionheart
Date: Sun, 17 Jul 2005 22:15
Date: Sun, 17 Jul 2005 22:15
47 lines
2862 bytes
2862 bytes
Zephryn Xirdal escribi�: > En Sun, 17 Jul 2005 09:44:35 +0200, Pedro Maicas <esta_no_es@jet.es> > escribi�: > >> On Sun, 17 Jul 2005 09:42:55 +0200, Pedro Maicas <esta_no_es@jet.es> >> wrote: >> >>> ni siquiera dices el lenguaje >>> de programaci�n que usas :-) Y puestos a adivinar, la >> >> >> Aaaaaaaaaaaaaaaaah ! era pascal, pues es >> imposible, no conozco el "pascual" con detalle >> pero me apostar�a algo :-) >> >> >> Saludos :-) -Pedro- >> >> http://www.maicas.net/ >> >> e-mail en www.maicas.net > > > Exisit�a al menos un lenguaje que permit�a eso: clipper y sus bloques > de c�digo, que se pasaban como cadenas y luego se conver�an en tiempo > de ejecuci�n en P-CODE y era ejecutado. > > Ahora, el .NET lleva algo parecido, pues te permite compilar un bloque > de c�digo en formato fuente y luego ejecutarlo. > > Lo que lionheart puede hacer es tomar un array de estructuras con el > nombre de las posibles funciones almacenado en una cadena, y un puntero > a la misma. Dentro de su funci�n, buscar�a el nombre pasado y > ejecutar�a la funci�n. Aunque parece que lo que quiere es hacer alguna > m�quina de estados o un int�rprete de comandos, y entonces hay mejores > formas de hacerlo. > > es ke ese procedimiento lo necesito para ahorrar muchas lineas de codigo ya q tb estoy programando con gtk y lo necesito,q yo sepa no es para maquinas de estados ni para interprete de comandos veo q has pillao la idea a la ke me referia. Me podias poner un ejemplo no se como hacer lo ke dices es ke solo tengo un nivel principiante-medio de pascal de los punteros nmo tengo ni idea.Gracias por la ayuda
Re: Como puedo hacer lo siguiente en pascal?
Author: Zephryn Xirdal
Date: Mon, 18 Jul 2005 07:27
Date: Mon, 18 Jul 2005 07:27
85 lines
3701 bytes
3701 bytes
Te lo puedo explicar en C.
Defines una estructura:
struct tagArray
{
char szNombre[32]];
void (*pfnc)(int par);
};
struct tagArray Array[16];
Luego la rellenas:
strcpy(Array[i].szNombre,"fnc1");
Array[i].pfnc=&fnc1;
[Suponemos que tienes una funci�n llamada "void fnc1(int par);"
Cuando intentes llamar a la funci�n:
void execfnc(szCad *)
{
int i;
for(i=0;i<16;i++)
if(strcmp(Array[i].szNombre,szCad)==0)
Array[i].pfnc(par);
}
En Mon, 18 Jul 2005 00:15:37 +0200, lionheart <alvaro_m_r@ono.com>
escribi�:
> Zephryn Xirdal escribi�:
>> En Sun, 17 Jul 2005 09:44:35 +0200, Pedro Maicas <esta_no_es@jet.es>
>> escribi�:
>>
>>> On Sun, 17 Jul 2005 09:42:55 +0200, Pedro Maicas <esta_no_es@jet.es>
>>> wrote:
>>>
>>>> ni siquiera dices el lenguaje
>>>> de programaci�n que usas :-) Y puestos a adivinar, la
>>>
>>>
>>> Aaaaaaaaaaaaaaaaah ! era pascal, pues es
>>> imposible, no conozco el "pascual" con detalle
>>> pero me apostar�a algo :-)
>>>
>>>
>>> Saludos :-) -Pedro-
>>>
>>> http://www.maicas.net/
>>>
>>> e-mail en www.maicas.net
>> Exisit�a al menos un lenguaje que permit�a eso: clipper y sus bloques
>> de c�digo, que se pasaban como cadenas y luego se conver�an en tiempo
>> de ejecuci�n en P-CODE y era ejecutado.
>> Ahora, el .NET lleva algo parecido, pues te permite compilar un bloque
>> de c�digo en formato fuente y luego ejecutarlo.
>> Lo que lionheart puede hacer es tomar un array de estructuras con el
>> nombre de las posibles funciones almacenado en una cadena, y un puntero
>> a la misma. Dentro de su funci�n, buscar�a el nombre pasado y
>> ejecutar�a la funci�n. Aunque parece que lo que quiere es hacer alguna
>> m�quina de estados o un int�rprete de comandos, y entonces hay mejores
>> formas de hacerlo.
>>
>
> es ke ese procedimiento lo necesito para ahorrar muchas lineas de codigo
> ya q tb estoy programando con gtk y lo necesito,q yo sepa no es para
> maquinas de estados ni para interprete de comandos veo q has pillao la
> idea a la ke me referia.
>
> Me podias poner un ejemplo no se como hacer lo ke dices es ke solo
> tengo un nivel principiante-medio de pascal de los punteros nmo tengo ni
> idea.Gracias por la ayuda
--
Si somos arrastrados a Cristo, creemos sin querer; se usa entonces la
violencia, no la libertad.
-- San Agust�n. (354-439) Obispo, fil�sofo y Padre de la Iglesia Latina.
==================================================================================
Powered by zxFortunes - It's free -
http://sourceforge.net/projects/zxfortune
Re: Como puedo hacer lo siguiente en pascal?
Author: Pedro Maicas
Date: Mon, 18 Jul 2005 07:59
Date: Mon, 18 Jul 2005 07:59
32 lines
2429 bytes
2429 bytes
On Sun, 17 Jul 2005 11:15:09 +0200, "Zephryn Xirdal" <zephryn_xirdal@qutame.telefonica.net> wrote: >Exisit�a al menos un lenguaje que permit�a eso: clipper y sus bloques de >c�digo, que se pasaban como cadenas y luego se conver�an en tiempo de >ejecuci�n en P-CODE y era ejecutado. Si, cuando un programador de visual basic "necesita" hacer eso (por lo visto hay quien no puede vivir sin ello), es seguro que se trata de un ex-cliper :-) En C eso se soluciona pasando un puntero a la funcion, es decir la funcion no devolver� un nombre, sino un puntero. En C++ las funciones virtuales evitan ese "problema". En otros lenguajes, no queda m�s remedio que usar un switch aunque sea monstruoso de grande. Pero, en mi opini�n, en cualquier lenguaje compilado se pierden los nombres de las funciones en el proceso de compilaci�n, y por eso no se puede invocar una funcion por su nombre. Y, tambien en mi opini�n, si esa forma de trabajar fuera tan "imprescindible" como algunos creen, todos los lenguajes permitir�an hacerlo aunque fuera a costa de tener que incluir en el ejecutable el nombre de todas las funciones. Saludos :-) -Pedro- http://www.maicas.net/ e-mail en www.maicas.net
Re: Como puedo hacer lo siguiente en pascal?
Author: Zephryn Xirdal
Date: Mon, 18 Jul 2005 09:24
Date: Mon, 18 Jul 2005 09:24
52 lines
3165 bytes
3165 bytes
En Mon, 18 Jul 2005 09:59:53 +0200, Pedro Maicas <esta_no_es@jet.es> escribi�: > On Sun, 17 Jul 2005 11:15:09 +0200, "Zephryn Xirdal" > <zephryn_xirdal@qutame.telefonica.net> wrote: > >> Exisit�a al menos un lenguaje que permit�a eso: clipper y sus bloques de >> c�digo, que se pasaban como cadenas y luego se conver�an en tiempo de >> ejecuci�n en P-CODE y era ejecutado. > > Si, cuando un programador de visual basic "necesita" > hacer eso (por lo visto hay quien no puede vivir sin ello), > es seguro que se trata de un ex-cliper :-) > > En C eso se soluciona pasando un puntero a la funcion, > es decir la funcion no devolver� un nombre, sino un puntero. > En C++ las funciones virtuales evitan ese "problema". > En otros lenguajes, no queda m�s remedio que usar > un switch aunque sea monstruoso de grande. > > Pero, en mi opini�n, en cualquier lenguaje compilado se > pierden los nombres de las funciones en el proceso de > compilaci�n, y por eso no se puede invocar una funcion > por su nombre. Y, tambien en mi opini�n, si esa forma > de trabajar fuera tan "imprescindible" como algunos creen, > todos los lenguajes permitir�an hacerlo aunque fuera a costa > de tener que incluir en el ejecutable el nombre de todas > las funciones. Sip. El �nico motivo que veo para hacer algo de eso es en la construcci�n de un int�rprete (de comandos o de script o de lo que sea), pero en ese caso es infinitamente m�s f�cil (y r�pido) sustituyendo el nombre de la funci�n por el �ndice al array que contiene los punteros a los comandos durante la primera pasada por el c�digo. > > Saludos :-) -Pedro- > > http://www.maicas.net/ > > e-mail en www.maicas.net -- Si somos arrastrados a Cristo, creemos sin querer; se usa entonces la violencia, no la libertad. -- San Agust�n. (354-439) Obispo, fil�sofo y Padre de la Iglesia Latina. ================================================================================== Powered by zxFortunes - It's free - http://sourceforge.net/projects/zxfortune
Re: Como puedo hacer lo siguiente en pascal?
Author: lionheart
Date: Mon, 18 Jul 2005 13:38
Date: Mon, 18 Jul 2005 13:38
53 lines
3267 bytes
3267 bytes
Zephryn Xirdal escribi�: > En Mon, 18 Jul 2005 09:59:53 +0200, Pedro Maicas <esta_no_es@jet.es> > escribi�: > >> On Sun, 17 Jul 2005 11:15:09 +0200, "Zephryn Xirdal" >> <zephryn_xirdal@qutame.telefonica.net> wrote: >> >>> Exisit�a al menos un lenguaje que permit�a eso: clipper y sus bloques de >>> c�digo, que se pasaban como cadenas y luego se conver�an en tiempo de >>> ejecuci�n en P-CODE y era ejecutado. >> >> >> Si, cuando un programador de visual basic "necesita" >> hacer eso (por lo visto hay quien no puede vivir sin ello), >> es seguro que se trata de un ex-cliper :-) >> >> En C eso se soluciona pasando un puntero a la funcion, >> es decir la funcion no devolver� un nombre, sino un puntero. >> En C++ las funciones virtuales evitan ese "problema". >> En otros lenguajes, no queda m�s remedio que usar >> un switch aunque sea monstruoso de grande. >> >> Pero, en mi opini�n, en cualquier lenguaje compilado se >> pierden los nombres de las funciones en el proceso de >> compilaci�n, y por eso no se puede invocar una funcion >> por su nombre. Y, tambien en mi opini�n, si esa forma >> de trabajar fuera tan "imprescindible" como algunos creen, >> todos los lenguajes permitir�an hacerlo aunque fuera a costa >> de tener que incluir en el ejecutable el nombre de todas >> las funciones. > > > > Sip. El �nico motivo que veo para hacer algo de eso es en la > construcci�n de un int�rprete (de comandos o de script o de lo que > sea), pero en ese caso es infinitamente m�s f�cil (y r�pido) > sustituyendo el nombre de la funci�n por el �ndice al array que > contiene los punteros a los comandos durante la primera pasada por el > c�digo. > >> >> Saludos :-) -Pedro- >> >> http://www.maicas.net/ >> >> e-mail en www.maicas.net > > > > Por lo ke veo eso de los punteros es mu complicado por lo tanto me decantare por hacerlo con if else aunke me lleve mas lineas de codigo.Gracias por la ayuda soys geniales
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads