Article View: es.comp.os.linux.programacion
Article #1723Re: Como puedo hacer lo siguiente en pascal?
From: 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
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-mailReferences:
<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)