El nombre de un archivo puede ser variable?

El nombre de un archivo puede ser variable?

Postby Lupita » Wed Apr 23, 2008 12:02 am

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() )
Lupita
 
Posts: 13
Joined: Wed Apr 09, 2008 4:46 pm

Postby Antonio Linares » Wed Apr 23, 2008 9:28 pm

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 ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42107
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Lupita » Fri Apr 25, 2008 7:07 pm

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.
Lupita
 
Posts: 13
Joined: Wed Apr 09, 2008 4:46 pm

Postby Antonio Linares » Mon Apr 28, 2008 12:00 pm

Lupita,

Aqui tienes un ejemplo:
Code: Select all  Expand view  RUN
#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   

Image
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42107
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Lupita » Tue Apr 29, 2008 3:44 am

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
Lupita
 
Posts: 13
Joined: Wed Apr 09, 2008 4:46 pm

Postby Antonio Linares » Tue Apr 29, 2008 7:37 am

return 0 devuelve el número cero.

return nil devuelve un valor "nil". Consulta la documentación del lenguaje Clipper :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42107
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby Lupita » Tue Apr 29, 2008 2:45 pm

Ok, muchas gracias.

Saludos!

:D
Lupita
 
Posts: 13
Joined: Wed Apr 09, 2008 4:46 pm


Return to FiveWin para Pocket PC

Who is online

Users browsing this forum: No registered users and 7 guests