Page 1 of 1
El nombre de un archivo puede ser variable?
Posted: Wed Apr 23, 2008 12:02 am
by Lupita
Hola buenas tardes
Estoy definiendo el uso de un archivo ascii al inicio, segun lo muestra este codigo
function Main()
local oWnd, oGet1, oGet2 ,oGet3
LOCAL cVar1 := SPACE( 20 )
LOCAL nVar2 := 0.00
LOCAL nVar3 := 0.00
local hFile := FCreate( CurDir() + "\compra1.txt" )
Despues de la captura del registro se guarda con la instruccion definida en el evento "Nuevo", como puedo lograr que me pregunte el nombre del archivo?
@ 7, 2 BUTTON "Nuevo" SIZE 80, 20 ;
ACTION ( FWrite( hFile, AllTrim( cVar1 ) + "," + Str( nVar2, 8, 2 ) + "," + Str( nVar3, 8, 2 ) + CRLF ),;
cVar1 := Space( 20 ), nVar2 := 0.00, nVar3 := 0.00,;
oGet1:Refresh(), oGet2:Refresh(), oGet3:Refresh(), /* MiFuncionDeMedir(), */;
oGet1:SetFocus() )
Posted: Wed Apr 23, 2008 9:28 pm
by Antonio Linares
Si usas "compra1.txt" al principio luego no podrás cambiarle el nombre, salvo que lo cierres (FClose()) y lo renombres (FRename()).
Si podrías preguntar el nombre antes de crearlo, mostrando una caja de diálogo en donde pidas el nombre. Es esto lo que deseas hacer ?
Posted: Fri Apr 25, 2008 7:07 pm
by Lupita
Antonio buenas tardes,
Si, eso es lo que necesito que me pregunte el como se llamara el archivo, la variable q guardara este nombre de archivo como se define para que no sea local o no importa que sea local.
Posted: Mon Apr 28, 2008 12:00 pm
by Antonio Linares
Lupita,
Aqui tienes un ejemplo:
Code: Select all
#include "FWCE.ch"
//----------------------------------------------------------------------------//
function Main()
local oWnd, oGet1, oGet2
LOCAL cVar1 := SPACE( 20 )
LOCAL nVar2 := 0.00
local hFile
DEFINE WINDOW oWnd TITLE "Captura Inventarios"
// MiFuncionDeMedir()
@ 1, 1 SAY "Codigo:";
SIZE 70, 20
@ 1, 10 GET oGet1 VAR cVar1;
SIZE 140, 20
@ 5, 1 SAY "Cantidad:";
SIZE 70, 20
@ 5.7, 10 GET oGet2 VAR nVar2;
SIZE 140, 20 PICTURE "999.99"
@ 7, 2 BUTTON "Nuevo" SIZE 80, 20 ;
ACTION ( FWrite( hFile, AllTrim( cVar1 ) + CRLF + Str( nVar2, 6, 2 ) + CRLF ),;
cVar1 := Space( 20 ), nVar2 := 0.00,;
oGet1:Refresh(), oGet2:Refresh(), /* MiFuncionDeMedir(), */;
oGet1:SetFocus() )
@ 9, 2 BUTTON "Salir" SIZE 80, 20 ACTION oWnd:End()
ACTIVATE WINDOW oWnd ;
VALID MsgYesNo( "¿ Quiere terminar ?" ) ;
ON INIT hFile := PreguntaFichero( oWnd )
FClose( hFile )
return nil
function PreguntaFichero( oWnd )
local oDlg, cNombre := Space( 20 )
DEFINE DIALOG oDlg TITLE "Fichero a crear" SIZE 190, 100 OF oWnd
@ 0.2, 2 SAY "Nombre:" OF oDlg SIZE 80, 8
@ 1.2, 1.5 GET cNombre OF oDlg
@ 1.8, 3.3 BUTTON "Continuar" OF oDlg ACTION oDlg:End()
ACTIVATE DIALOG oDlg CENTERED
if ! Empty( cNombre )
return FCreate( CurDir() + "\" + AllTrim( cNombre ) )
endif
return 0
Posted: Tue Apr 29, 2008 3:44 am
by Lupita
Hola Buenas tardes
Eso era lo que necesitaba hacer muchas gracias, le hice algunas modificaciones para q por default pusiera la extencion TXT al archivo y fuera creando un renglon por registo.
Solo tengo una duda que diferencia hay entre la instruccion RETURN NIL y RETURN 0.
@ 7, 2 BUTTON "Nvo Prod" SIZE 80, 20 ;
ACTION ( FWrite( hFile, AllTrim( cVar1 ) + "," + Str( nVar2, 8, 2 ) + "," + Str( nVar3, 8, 2 ) + CRLF ),;
cVar1 := Space( 20 ), nVar2 := 0.00, nVar3 := 0.00,;
oGet1:Refresh(), oGet2:Refresh(), oGet3:Refresh(), /* MiFuncionDeMedir(), */;
oGet1:SetFocus() )
@ 9, 2 BUTTON "Salir" SIZE 80, 20 ACTION oWnd:End()
ACTIVATE WINDOW oWnd ;
VALID MsgYesNo( "¿ Quiere terminar ?" ) ;
ON INIT hFile := PreguntaFichero( oWnd )
FClose( hFile )
return nil
function PreguntaFichero( oWnd )
local oDlg, cNombre := Space( 20 )
DEFINE DIALOG oDlg TITLE "Compra a" SIZE 190, 100 OF oWnd
@ 0.2, 2 SAY "Nombre:" OF oDlg SIZE 80, 8
@ 1.2, 1.5 GET cNombre OF oDlg
@ 1.8, 3.3 BUTTON "Continuar" OF oDlg ACTION oDlg:End()
ACTIVATE DIALOG oDlg CENTERED
if ! Empty( cNombre )
return FCreate( CurDir() + "\" + Alltrim( cNombre ) + ".txt")
endif
return 0
Posted: Tue Apr 29, 2008 7:37 am
by Antonio Linares
return 0 devuelve el número cero.
return nil devuelve un valor "nil". Consulta la documentación del lenguaje Clipper
Posted: Tue Apr 29, 2008 2:45 pm
by Lupita
Ok, muchas gracias.
Saludos!