🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #1723

Re: Como puedo hacer lo siguiente en pascal?

#1723
From: 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
Technical Details
Message-ID: <op.st3lopqafc9mjw@red-mars.local.lan>
Path: arc1-ca.pugleaf.net!g2news1.google.com!news2.google.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail
References: <ykhCe.56911$US.45029@news.ono.com> <4h2kd1hgr6j9chb1cep65bnqfsg45l36ja@4ax.com> <113kd1dm0vdrnea2lc4bos0s8u1bef8dok@4ax.com> <op.st1vzjx2fc9mjw@red-mars.local.lan> <MMACe.50518$dr.38997@news.ono.com>

Show Full Headers
Complete Article Headers
X-Google-Thread: f86c8,2957caf3c3f0777a
X-Google-Attributes: gidf86c8,public
X-Google-Language: SPANISH,ASCII
Path: arc1-ca.pugleaf.net!g2news1.google.com!news2.google.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail
From: "Zephryn Xirdal" <zephryn_xirdal@qutame.telefonica.net>
Newsgroups: es.comp.os.linux.programacion
Subject: Re: Como puedo hacer lo siguiente en pascal?
Date: Mon, 18 Jul 2005 09:27:51 +0200
Organization: The Zephryn Xirdal Company
Lines: 85
Message-ID: <op.st3lopqafc9mjw@red-mars.local.lan>
References: <ykhCe.56911$US.45029@news.ono.com> <4h2kd1hgr6j9chb1cep65bnqfsg45l36ja@4ax.com> <113kd1dm0vdrnea2lc4bos0s8u1bef8dok@4ax.com> <op.st1vzjx2fc9mjw@red-mars.local.lan> <MMACe.50518$dr.38997@news.ono.com>
Mime-Version: 1.0
Content-Type: text/plain; format=flowed; delsp=yes; charset=iso-8859-15
Content-Transfer-Encoding: 8bit
X-Trace: individual.net zCjUG03xLff5RUu/0p+F4guNP65E+16qKjRQzOoY6kWD2X8cGn
User-Agent: Opera M2(BETA1)/8.02 (Win32, build 7668)