Visual Foxpro.Net OpenSource

583 views
Skip to first unread message

Adalberto Rua

unread,
Jun 14, 2016, 12:16:21 PM6/14/16
to Comunidad de Visual Foxpro en Español
Hola, Todos

Quiero iniciar un proyecto para crear una versión de Visual Foxpro que se pueda ejecutar como un lenguaje mas en VS 2015. El código generado sera .NET

Los que quieran colaborar serán bienvenidos. Una ayuda importante en este momento seria responder estas dos preguntas.

1. cuales son los comandos/instrucciones que mas usan?

2. que destino prefieren 
          Winforms
          XAML
          Silverlight
           ASP.NET 
          ASP.NET MVC 6 
          Otro dotnet 


Ya tengo el parser para estas instrucciones hecho en GPPG (Garder Point Parser Generator) == YACC (Yet Another Compiler Compiler)

Command : DefineStm
| IncludeStm
| IfDefStm
| DefineClassStm
| DeclareVarStm
| AppendStm
| AssignStm
| DeleteStm
| DoFormStm
| DoWhileStm
| ExitStm
| ExprStm
| ForStm
| GoBottomInStm
| GoTopStm
| IfStm
| LabelFormStm
| LocateForStm
| PackStm
| ReturnStm
| ReleaseStm
| ReplaceStm
| ReportFormStm
| SelectStm
| SetStm
| SetToStm
| SkipInStm
| TryCatchStm
| UseStm
| WaitWindowStm
;


DefineClause : ProcedureDecl
| AddObjectStm
| AssignStm
;

Saludos

Suerte

VisualFoxpro9.Language.analyzer.lex
VisualFoxpro9.Language.grammar.y

Patricio Muñoz

unread,
Jun 14, 2016, 12:22:29 PM6/14/16
to publice...@googlegroups.com
Este tipo de proyectos no es nuevo en este grupo y hasta el dia de hoy no se ha hecho mucho. Disculpa mi pesimismo pero no creo que funcione.

Bendiciones
--
Patricio Muñoz
Pro&Tech
Analista en Sistemas

mapner

unread,
Jun 14, 2016, 6:11:01 PM6/14/16
to Comunidad de Visual Foxpro en Español
Adalberto,

Bienvenido el entusiasmo del ambicioso proyecto que planteas. Sin querer ser pesimista de mi parte veo que el problema es lo extenso y complejo de llevar a cabo:
- Definición de un lenguaje de programación determinado (xBASE Visual Foxpro)
- Comandos nativos
- Funciones nativas
- Manipulación de datos locales, tablas DBF y cursores, contenedores DBC, índices CDX
- Manipulación de datos remotos, vía ODBC, ADO, etc.
- Interfaz de usuario con las mismas clases bases
- Formularios SCX
- Clases visuales VCX
- Reportes FRX
- Diseñadores Visuales
- etc, etc, etc...

O sea, el tamaño del proyecto es más que grande para una sola persona y si se arma un equipo de personas, el tiempo que insume tamaño desarrollo demandaría una dedicación casi exclusiva cosa que nadie que actualmente trabaje puede aportar.
Mi pregunta es: Con la cantidad de lenguajes y entornos ya establecidos hoy en día en el mundo de desarrollo de software, no se puede continuar haciendo sistemas con otras herramientas?

Saludos

Adalberto Rua

unread,
Jun 14, 2016, 9:22:39 PM6/14/16
to publice...@googlegroups.com

Hola

La parte crítica es construir el parser y ya está hecho. Todas esas cosas que propones ya las tiene el dotnet excepto la parte visual los painters ide. Pero el vssdk tiene herramienta para ayudar a construir.
Como aclaración ese parser lo hice como parte de un proyecto de conversión que me pidió un cliente.
Gracias

francisco prieto

unread,
Jun 14, 2016, 9:30:33 PM6/14/16
to publice...@googlegroups.com
Adalberto,

A mi entender lo que hiciste simplemente es un interprete de comandos VFP usando comando .Net, pero VFP es mucho mas que eso, de hecho el IDE de VFP es mas simple y versatil que el de .Net.

Quizas seria mucho mejor exactamente al reves... es decir que desde VFP se pueda hacer en .Net todo aquello que le falta a VFP, pero ahi con un simple parser no alcanzaria.

Muy bueno de todos modos lo que comentas que has logrado.

Saludos,

Pancho
Cordoba
Argentina

Ernesto

unread,
Jun 15, 2016, 3:26:42 AM6/15/16
to Comunidad de Visual Foxpro en Español
Con todo respeto y sin animo de desanimar, "esto viene a ser reinventar la rueda", durante años se ha discutido la posibilidad de una renovación del viejo y querido Foxpro. Lo cierto es que ya existe una renovación se llama .NET y es a quien Microsoft decidió dar su apoyo total en detrimento del zorro, es decir que cualquier innovación que pensemos ya esta hecha en la plataforma .NET mejor y mas rápida de lo que podríamos imaginar.

He reiterado en este grupo que la mejor opción para migrar es y sigue siendo .NET me sorprende a veces lo fácil  que resulta programar en .NET con C# al punto que cosas que en FOXPRO hacia con n lineas en C# las hago con n/2 lineas de código, es decir la mitad del tiempo, por lo que a veces no dejo de preguntarme por que muchos todavía seguimos programando en FOXPRO, y la respuesta me temo es mas sencilla de lo que parece: "Temor al cambio."

Slds !
Ernesto Calderón 

Alfonso Arias Lemas

unread,
Jun 15, 2016, 6:00:47 AM6/15/16
to publice...@googlegroups.com

Con tres correos más así mejor cerramos este fórum…..

Carlos Miguel FARIAS

unread,
Jun 15, 2016, 7:21:33 AM6/15/16
to Grupo Fox
Ya hace un tiempo, se intento hacer un compilador Fox para correr en .NET, estaba bastante completo, tenía cosas interesantes, pero falto apoyo de la comunidad, no le aportaron plata.
Está este muchacho de no se que religión que quiere hacer también algo parecido a Fox (pero hace años que no avanza significativamente).
Hace unos cuantos años, hice un curso de pasar VFP a C# y teníamos que escribir muchísimo para lograr igualar lo que hacíamos con una mascara de Fox.
No se si eso mejoró.
Y si un equipo que trabajo varios años, no pudo instrumentar la herramienta, me parece bastante difícil que un solo programador, pueda lograr dicho objetivo.
Saludos: Miguel, La Pampa (RA)

Larga Vida y Prosperidad
Que la Fuerza los acompañe

Carlos Salcedo

unread,
Jun 15, 2016, 7:43:37 AM6/15/16
to visual fox
Yo le recomendaría que mejor realizara, algo dentro del NET, que facilite
la migración desde FOX hacia net
arrancando por la parte WEB, algo así  podría ser mas llamativo y seguro
consegiria ayuda.
algo como lo que hace http://vfpsteam.jimdo.com/ pero con csharp

Saludos
Carlos





From: carlosmig...@gmail.com
Date: Wed, 15 Jun 2016 08:21:30 -0300
Subject: Re: [vfp] Re: Visual Foxpro.Net OpenSource
To: publice...@googlegroups.com

Adalberto Rua

unread,
Jun 15, 2016, 11:40:53 AM6/15/16
to publice...@googlegroups.com
Hola, Carlos.

Ya tenemos un convertidor que hace eso. Es un convertidor personalizable que se ejecuta una vez y pasa tu codigo de VFP al destino que tu escojas.

Saludos

Suerte

Adalberto Rua

unread,
Jun 15, 2016, 11:55:07 AM6/15/16
to publice...@googlegroups.com
Hola, Carlos.

Por favor me puedes enviar los contactos de los que hicieron los compiladores. Para no duplicar trabajo.

Gracias.

Suerte

mapner

unread,
Jun 15, 2016, 12:57:50 PM6/15/16
to Comunidad de Visual Foxpro en Español
Ernesto,

Interesante tu opinión pero tengo mis dudas en cuanto a que en C# se escriba menos código que en VFP o en todo caso ver en que área se da eso.
Podrías exponer un ejemplo ?

Saludos

Alfonso Arias Lemas

unread,
Jun 15, 2016, 2:58:03 PM6/15/16
to publice...@googlegroups.com

Mi experiencia personal es la siguiente.

Yo ya no hago nada nuevo en VFP, me gusta el zorro pero esa es la vida. Estoy sumergido en Lazarus y Delphi e he conseguido maravilla pero a un costo alto, lo que puedo hacer en VFP de forma mas simple aquí tengo que escribir bastante y no solo escribir sino pensar como hacerlo.

Saludos.

 

 

De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] Em nome de mapner
Enviada: 15 de junho de 2016 15:58
Para: Comunidad de Visual Foxpro en Español
Assunto: [vfp] Re: Visual Foxpro.Net OpenSource

 

Ernesto,

Carlos Miguel FARIAS

unread,
Jun 15, 2016, 4:18:46 PM6/15/16
to Grupo Fox

Consulta etecnologia, 2011 o antes. Vfp visual studio.
Estuvieron varios años trabajando pero como en esa época estaba websofteando (PHP, MySQL) no lo probé.
Además estaba nivel alfabeta. Y a los gritos pidiendo $$$
Saludos: Miguel,

francisco prieto

unread,
Jun 15, 2016, 4:36:07 PM6/15/16
to Grupo Fox
Alfonso,

Hace un par de años me lance a desarrollar en FreePascal con Ide Lazarus. Es cierto que al principio he escrito mucho, pero de a poco estoy armando mis clases, que ya las tenia superoptimizadas en VFP, y en la medida que voy teniendo las clases escribo menos, de modo que es como siempre, una vez que tenes todas las herramientas de trabajo optimizadas escribis mucho menos...

Ya cuando me libere un poco, en el foro de FreePascal, voy a compartir el armado de una clase, y el uso de formularios genericos y hasta una seudo macrosustitucion... En fin tiene de todo, lo unico que no me gusta es el debuger, pero imagino que con los sucesivos trabajos lo ire domando.

Saludos,

Pancho
Cordoba
Argentina

g.quattrocchi g.quattrocchi

unread,
Jun 15, 2016, 4:58:53 PM6/15/16
to Comunidad de Visual Foxpro en Español

era un buen proyecto
http://guineu.foxpert.com
Se podría ir desde aquí ,
opensource

Alfonso Arias Lemas

unread,
Jun 15, 2016, 5:48:08 PM6/15/16
to publice...@googlegroups.com

Comparto tu opinion ….

Carlos Miguel FARIAS

unread,
Jun 16, 2016, 5:26:52 AM6/16/16
to Grupo Fox

Consulta etecnologia, 2011 o antes. Vfp visual studio.
Estuvieron varios años trabajando pero como en esa época estaba websofteando (PHP, MySQL) no lo probé.
Además estaba nivel alfabeta. Y a los gritos pidiendo $$$

Saludos: Miguel, La Pampa RA

El 15/06/2016 13:57, "mapner" <mpis...@gmail.com> escribió:

HernanCano

unread,
Jun 17, 2016, 1:47:48 PM6/17/16
to Comunidad de Visual Foxpro en Español
Adalberto:
Cordial saludo.

>>> Ya tenemos un convertidor que hace éso. Es un convertidor personalizable que se ejecuta una vez y pasa tu código de VFP al destino que tú escojas.

>>> Por favor: me puedes enviar los contactos de los que hicieron los compiladores. Para no duplicar trabajo.

Me agrada que tú también puedas desarrollar un proyecto así.
Te cuento que ((el colega al que se refiere Miguel --al que despectivamente se refiere con la frase 'no sé que qué religión es'--)) Rick C. Hodgin está desarrollando algo para el lenguaje que conocemos, y su ambiente de desarrollo es C++. 

Así que creo que ambos pueden compartir. Rick necesita alguien que le ayude con conocimientos en C++. ((sin ánimo de polemizar negativamente)) Considero que lo que tienes en C# puedes compartirlo con Rick, cuyo proyecto también es open source. considero que si se apoyan mutuamente, se podrá avanzar mejor.

Rick sólo habla en inglés, pero yo con mucho gusto te asisto en las traducciones necesarias (si lo requieres). Actualmente sólo otro colega italiano, Stefano D'Amico, ha aportado varias porciones de código (también he hecho algunas aportaciones de código, aunque mi conocimiento en C++ es mínimo).

Comandos y Funciones actualmente soportados (en constante actualización):

Archivos de VFrP en Español: http://sites.google.com/site/VisualFreePro

Portal original de VFrP en Inglés: Visual FreePro       http://www.visual-freepro.org/
Portal original de VJr  en Inglés: Visual FreePro, Jr.  http://www.visual-freepro.org/vjr

Grupo en Facebook - Visual FreePro:

Te invito a suscribirte al sitio VFrP en Español, y por ahí podremos avanzar de acuerdo a lo que indiques.

Chao.

HERNAN CANO M.
VFrP & VJr Contributor

Adalberto:
Creo entender que cuando hablas de "pasar tu código de VFP al destino que tú escojas", te refieres a que "tu código" es código VFP, y "el destino" es código .Net, ¿correcto?

Si lograste ésto, te felicito. Parece que te faltaría: (1) acceso a datos nativos en DBF/DBC, (2) Interfaz (asistentes) (¿se usarían los de .Net?), (3) manejo de reportes.... [[por dar una lista mínima]].

Considero que el acceso a datos DBF es muy complicado. Así que ... si se comparten experiencias.... mejoraremos!!!

Gracias, Adalberto por compartir la información que no estás dando.

Seguimos en contacto...


El miércoles, 15 de junio de 2016, 10:40:53 (UTC-5), Adalberto Rua escribió:
Hola, Carlos.

Ya tenemos un convertidor que hace éso. Es un convertidor personalizable que se ejecuta una vez y pasa tu código de VFP al destino que tú escojas.

Saludos

Suerte

HernanCano

unread,
Jun 17, 2016, 1:53:16 PM6/17/16
to Comunidad de Visual Foxpro en Español

Gracias, Adalberto por compartir la información que nos estás dando.

HernanCano

unread,
Jun 17, 2016, 1:55:00 PM6/17/16
to Comunidad de Visual Foxpro en Español
¿Los admores del foro me pueden ayudar a corregir el error de tipografía en el texto original?
¿Se puede?

Gracias.

Luiz Alexandre Ruiz

unread,
Jun 20, 2016, 8:51:15 PM6/20/16
to Comunidad de Visual Foxpro en Español
Não dá para corrigir, é preciso excluir o post e enviar um novo.

HernanCano

unread,
Jun 21, 2016, 5:52:38 PM6/21/16
to Comunidad de Visual Foxpro en Español
Gracias, Luiz.
Lo que pasa es que borrar un tema parece de mal gusto..... (esta forma de pensar es mía).....

Gracias, amigo.

Ernesto

unread,
Jun 26, 2016, 3:14:24 AM6/26/16
to Comunidad de Visual Foxpro en Español
Hace tiempo desarrolle un selector dinámico, es un textbox que al escribir en él te vaya mostrando los resultados que coinciden con los registros de una tabla, parecido a lo que sale cuando comienzas a escribir en google una busqueda 

para hacerlo se necesito también de un Listbox en cual mostrar los resultados, básicamente lo que hay que hacer es en el evento interactivechange del textbox crear un case que identifique las teclas pulsadas y el texto escrito y envíe las consultas a la tabla y luego llene el Listbox, este es el codigo:
LPARAMETERS nKeyCode, nShiftAltCtrl


DO CASE
CASE nKeyCode
=9 OR NKEYCODE=13  &&enter o tab
 THIS
.Parent.LIst1.LostFocus
 
this.Parent.activesearch=.F.
CASE NKEYCODE
=24 &&flecha abajo
 IF
this.Parent.ActiveSearch=.t.
 NODEFAULT
 THIS
.Parent.LISt1.ListIndex=THIS.Parent.LISt1.ListIndex+1
 ELSE
 IF
this.Parent.activesearchdefault=.t.
 
this.Parent.ActiveSearch=.t.
 ELSE
 
this.Parent.ActiveSearch=.F.
 ENDIF
 ENDIF
CASE NKEYCODE
=5 &&Flecha Arriba
 IF
this.Parent.activesearch=.t.
 NODEFAULT
 THIS
.Parent.LISt1.ListIndex=THIS.Parent.LISt1.ListIndex-1
 ELSE
 IF
this.Parent.activesearchdefault=.t.
 
this.Parent.ActiveSearch=.t.
 ELSE
 
this.Parent.ActiveSearch=.F.
 ENDIF
 ENDIF
CASE NKEYCODE
=27  &&Escape
 NODEFAULT
 THIS
.Parent.LISt1.Visible=.F.
 THIS
.PARENT.LIST1.Clear
 THIS
.Parent.LISt1.ListIndex=0
 
*this.parent.top=this.Parent.text1.Top
 
*this.parent.left=this.Parent.text1.left
 
this.parent.Width=this.Parent.text1.Width
 
this.parent.Height=this.Parent.text1.Height+5
 IF
this.Parent.activesearchdefault=.t.
 
this.Parent.ActiveSearch=.t.
 ELSE
 
this.Parent.ActiveSearch=.F.
 ENDIF


 
CASE NKEYCODE
=93 &&Menu
 
this.Parent.activesearch=.t.
 THIS
.InteractiveChange


OTHERWISE


ENDCASE


En C# este es el código del interactivechange que para el caso se llama evento UpandDownKey

                int intListItem = listBox1.SelectedIndex;
               
int intListItemCount = listBox1.Items.Count - 1;
                listBox1
.Visible = true;


               
if (e.KeyCode.ToString() == "Return")
               
{
                    txtDestino
.Text = listBox1.Text;
                    listBox1
.Visible = false;
               
}


               
if (e.KeyCode.ToString() == "Down")
               
{
                    intListItem
++;
                   
if (intListItem > intListItemCount)
                        intListItem
= 0;
               
}


               
if (e.KeyCode.ToString() == "Up")
               
{
                    intListItem
--;
                   
if (intListItem < 0)
                        intListItem
= intListItemCount;
               
}
                listBox1
.SelectedIndex = intListItem;

Para rellenar el listbox se le envía el texto digitado en el textbox a un método LlenarList de la clase, este es el código Foxpro:

lcValue=ALLTRIM(this.text1.Value)
lcFieldValue
=this.FieldValue
lcFieldDescrip
=this.FieldDescrip
lcTable
=this.Table
lnLargo
=LEN(lcValue)
lcAlias
=""
lcCriteria
="ALLTRIM(UPPER("+lcFieldValue+")+UPPER("+lcFieldDescrip+"))"
lcArray
="gaCombo"+this.Name
IF VARTYPE
(&lcArray)="U"
 lcArrayDeclare
="gaCombo"+this.Name+"(1)"
 PUBLIC ARRAY
&lcArrayDeclare
ENDIF
 SELECT
;
 ALLTRIM
(&lcFieldValue) as value,;
 ALLTRIM
(MAX(&lcFieldDescrip))as descrip;
 FROM
;
 
&lcTable;
 WHERE
;
 
&lcCriteria LIKE  "%"+UPPER(lcValue)+"%" ;
 GROUP BY
;
 
1;
 INTO ARRAY
;
 
&lcArray
 
 IF _TALLY
>0
 THIS
.LISt1.ColumnLines= .F.


 THIS
.LISt1.ColumnCount=2
 
this.list1.RowSourceType=5
 
this.list1.RowSource=lcArray
 
this.list1.BoundColumn=1
 
this.list1.VISIBLE=.T.
 
this.sizear
 ELSE
 
this.list1.VISIBLE=.T.
 THIS
.LIst1.RowSourceType= 0
 
this.list1.Clear
 
this.sizear
 ENDIF


THISFORM
.Cls


THIS
.ZOrder(0)
THIS
.List1.Refresh

En C# se hace lo mismo con el siguiente código 

        void SearchListbox(object sender, EventArgs e)
        {
            if (txtDestino.Text.Length > 0)
            {
                //realizando consulta que devuelve un reader listo  para cargar al listbox 
                SqlDataReader sql = Datos.VisitaLoad(txtDestino.Text.Trim());
                listBox1.Items.Clear();
                while (sql.Read())
                {
                    listBox1.Items.Add(sql[0]);
                }

                //seleccionado el item por default
                if (listBox1.Items.Count > 0)
                {
                    listBox1.SelectedIndex = 0;
                    listBox1.Visible = true;
                }
                else
                {
                    listBox1.SelectedIndex = -1;
                    listBox1.Visible = false;
                }
            }
            else {
                listBox1.Visible = false;
            }
        }

Quitando las llaves el código es realmente poco, sorprendente la verdad, por si fuera poco  C# te permite agregar ese método SearchListbox()  al evento textchanged() del textbox, con una simple sentencia 

            txtDestino.TextChanged += SearchListbox;

Se que en fox también existe la herramienta bindevents()  pero lo realmente bueno de c# es que puedes agregar cuantos métodos quieras a un evento, y se ejecutarían en orden una tras otro. 

He creado una entrada en mi blog tratando algunos otros aspectos por lo que creo que C# es el camino a seguir para cualquier foxero que quiera ir en busca de esa tierra prometida que fluye leche y miel de ceros y unos. Tratare de ir compartiendo mis experiencias poco a poco sobre como me va con este nuevo lenguaje de programación.

Slds !

Ernesto Calderón 

Luis la Romana

unread,
Jun 28, 2016, 6:40:15 PM6/28/16
to Comunidad de Visual Foxpro en Español
Ernesto, ese buscador está bueno, lo voy a usar, gracias por compartirlo.
Reply all
Reply to author
Forward
0 new messages