🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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?
#1899
Author: lionheart
Date: Sun, 17 Jul 2005 00:08
3 lines
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?
#1902
Author: Pedro Maicas
Date: Sun, 17 Jul 2005 07:42
26 lines
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?
#1903
Author: Pedro Maicas
Date: Sun, 17 Jul 2005 07:44
15 lines
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?
#1904
Author: Zephryn Xirdal
Date: Sun, 17 Jul 2005 09:15
43 lines
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?
#1719
Author: Abelazo
Date: Sun, 17 Jul 2005 15:36
27 lines
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?
#1720
Author: Zephryn Xirdal
Date: Sun, 17 Jul 2005 18:11
36 lines
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?
#1721
Author: Jose Antonio
Date: Sun, 17 Jul 2005 20:28
20 lines
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?
#1722
Author: lionheart
Date: Sun, 17 Jul 2005 22:15
47 lines
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?
#1723
Author: Zephryn Xirdal
Date: Mon, 18 Jul 2005 07:27
85 lines
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?
#1724
Author: Pedro Maicas
Date: Mon, 18 Jul 2005 07:59
32 lines
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?
#1725
Author: Zephryn Xirdal
Date: Mon, 18 Jul 2005 09:24
52 lines
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?
#1726
Author: lionheart
Date: Mon, 18 Jul 2005 13:38
53 lines
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