Clipper/FiveWin - algun experto

 
Vista:

algun experto

Publicado por upliftmofopartyplan (3 intervenciones) el 01/08/2002 20:04:27
necesito alguien que pueda responderme una o todas mis dudas:

1) tengo un prgrama hecho todo por modulos(20 .prg)
el principal se llama pantalla.prg, que lo unico que hace es dibujar la pantalla y habilitar un menu tipo win que dice Archivo, clientes, consultas,
etc.
si le doy la opción "archivo", pantalla .prg llama a menuarch.prg haciendo un DO MENUARCH, que lo unico que hace es desplegar un menu que dice Abrir, cerrar, salir.
que a su vez cada opcion llama a otro .prg (si la opcion es salir, hace DO SALIR).loa mismo ocurre para cada opcion de menu y submenu.
ahora bien, en todos los casos tengo la funcion LASTKEY()=27 (TECLA ESC), que en caso de presionar la tecla escape hace DO <ANTERIOR>.
donde anterior es el .prg previo.
EJ: si estoy en el MENUARCH, y presiono ESC, hace DO PANTALLA.
SE ENTIENDE???
todo funciona OK, el problema es que despues de usarlo un tiempo sale al DOS y me aparece:
"processor stack fault..."
me dijeron que es por usar tantos DO, que debía usar RETURN, pero eso no me funciona.
les comento que los .prg no son procedures ni functions, son programas igual al principal.
como puedo arreglar esto??

2) como hago para dar la opcion de abrir BD de distintos nombres?
es decir:
un cartel que diga:"ingrese nombre del archivo:" "datos"
y que eso haga USE DATOS.DBF

3) muy similar con una opción de password.
como hago para que se pueda cambiar, y que quede guardado.

4)muy similar con guardar como...
que dé la opción de guardar un archivo con el nombre que yo quiera.

eso es todo, espero puedan ayudarme y desde ya gracias a todos.
saludos
Uplift
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:algun experto

Publicado por luis vasquez (67 intervenciones) el 01/08/2002 20:29:39
hola amigo:
creo que no tienes claro el orden en como van llamandose los modulos.
1. lo que debes hacer es poner un return al final de cada modulo, de esta forma el programa hará lo siguiente.
principal -> submenu -> principal
esto es, que el programa llamado al encontrarse con un return, se devuelve automaticamente al que lo llamo.
El error de stack es porque vuelves a llamar al programa principal.
2. para poder abrir una tabla mediante macro puedes hacer lo siguiente
ctabla = space( 8 )
input cTabla
xTabla = alltrim( ctabla ) + '.dbf'
use ( xtabla )
ojala te sirva.
saludos desde Chile
luis vasquez :-)


Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:algun experto

Publicado por byone (49 intervenciones) el 03/08/2002 00:33:55
No soy muy experto pero:
1.- Lo del stack (desbordamiento de pila) es porque cada vez que pulsas una tecla el valor de esta se almacena en una parte de la memoria.... eso creo, para evitar ese BUG debes poner un return al final de cada prosedimiento o programa:

Clear
// todo tu programa //
return

Cundo pulsan ESC el aChoice termina solo, y en tu caso solo debes de redibujar la pantalla para borrar los restos de aChoice()
Si quieres mas detalles escribeme y te mando un fragmento de programa que usa aChoice para crear menus.

2.- Supongo que esto te ha de servir:

cDataBase = SPACE(20)
@x,y SAY "Escriba el nombre de la base a abrir: " GET cDataBase
READ
IF FILE(ALLTRIM(cDataBase)) + ".dbf"
USE &cDataBase
ELSE
@x,y SAY cDataBase + ".DBF" no se encontro"
END IF

Deberas sustituir el x,y de los SAY's por las coordenadas donde aparecera el mensaje.

3.- No entiendo el post pero si quieres que salga un como "Inicio de sesion" espera el codigo, por ahi lo tengo arrunbado en mi computadora.

4.- Si es de texto usa la funcion MEMOWRIT(). Si es BD es un poco mas complejo.......


Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:algun experto

Publicado por Vladimir Inda (2 intervenciones) el 03/08/2002 19:23:57
lo que pasa en el problema 1 es que estas probocando un ciclo infinito, y saturas la memoria. checa bien el procedimiento.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Gracias a todos!!

Publicado por upliftmofopartyplan (3 intervenciones) el 05/08/2002 15:14:46
Garcias por la ayuda recibida.
probé todo y funciona OK!!
lo único que me queda es el password.
lo que quiero hacer con eso es definirlo, y darle la opción al usuario para cambiarlo y que ese cambio quede grabado, por ej.:

Xpass="password"

@ x,y say" ingrese nuevo password:" get Xpass...
si ingresa "nuevo password",entonces:
Xpass="nuevo password"

y esa nueva contraseña debe quedar para futuras operaciones.
se entiende?

saludos.
uplift
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar