Como puedo indicarle a cGetFile32() que le ponga autom谩ticamente la extensi贸n al archivo.
Seg煤n encontr茅 en internet ser铆a con la bandera:
define OFN_ADDEXTENSION 32
pero, o no he atinado donde meterla, o no funciona.
Quique
Como puedo indicarle a cGetFile32() que le ponga autom谩ticamente la extensi贸n al archivo.
Seg煤n encontr茅 en internet ser铆a con la bandera:
pero, o no he atinado donde meterla, o no funciona.
Gracias, pero no me sirvi贸 de mucho, no se C, asi que ni para monitorear, aunque lo intent茅 con la funci贸n cgetfile de fivewin y con la que pusieron en el foro para multiples archivos, con ninguna funcion贸.
Quique
A mi la funcion cGetFile32( "*.PRG", "Fichero", 1, ".\" ) me devuelve el fichero seleccionado con el PATH y la Extension del fichero
Si lo que necesitas es que ponga la extension del fichero seleccionado en el dialogo de seleccion, creo que eso es una propiedad de las carpetas de Windows ("Ocultar Extensiones de Ficheros conocidos" o algo asi.
Seguramente no te he entendido lo que necesitas
Un saludo
Nop, lo que necesito es que me ponga la extensi贸n autom谩ticamente, por ejemplo, si en word indico que el archivo se llame miArchivo, lo guarda autom谩ticamente con la extensi贸n miArchivo.doc o la extensi贸n del formato que haya seleccionado en el dialogo de buscar archivo.
En el caso de fivewin no le pone la extensi贸n, y no se que extensi贸n es la que se seleccione, ahorita si el archivo no tiene extensi贸n se la pongo manualmente, pero no puedo dar a escoger extensiones porque no sabr铆a cual poner.
Seg煤n lo que he encontrado en internet, deber铆a poderse pero con fivewin no lo he conseguido.
聽 ofn.Flags 聽 聽 聽 聽 聽 = OFN_PATHMUSTEXIST | OFN_NOCHANGEDIR | OFN_ADDEXTENSION |
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 IF( bSave, OFN_HIDEREADONLY, 0 ) |
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 IF( bLongNames, OFN_LONGNAMES, 0 );cFile := cGetFile( 聽 聽"HOJA EXCEL (*.xls)| *.xls|" 聽;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 ,"Por Favor Seleccione el archivo xls" )Antonio, no funciona, sigue devolviendo nombre sin extensi贸n.
Carlos, sip, lo hago de manera parecida, la idea es que si le pongo como nombre hoja, autom谩ticamente me devuelva hoja.xls.
REDEFINE BTNGET oGet VAR cFile ID 100 OF oDlg RESOURCE "Buscar" UPDATE;
PICTURE "@!K";
ACTION (cFile := ALLTRIM(cGetFile("*.Txt","Seleccione el archivo a importar",1,".\Importar")),;
oDlg:UPDATE())aunque no le indiques la extensi贸n del archivo?
por ejemplo, en lugar de seleccionar el archivo con el rat贸n escribes en donde indicas el archivo miArchivo, te devuelve "miArchivo.txt" o simplemente "miArchivo"
Quique:
Tienes raz贸n, si escribo solo el nombre no me devuelve la extensi贸n
Saludos
// Shows how to change from Oem to Ansi and viceversa
/*
脷脛 Programa 脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛驴
鲁 Aplicaci垄n: Cambia de Formato Oem a Ansi y viceversa 鲁
鲁 Fichero: DBFW.PRG 鲁
脌脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脛脵
*/
#include "fivewin.ch"
#define OEM_TO_ANSI 1
#define ANSI_TO_OEM 2
#define MAX_CHECK 10
Static oWnd, oMeter, oAtoO, oOtoA
Static nActual := 0
//----------------------------------------------------------------------------//
FUNCTION Main()
LOCAL oIcon
DEFINE ICON oIcon RESOURCE "ICON_DBFW"
//MsgInfo( If( IsAnsi( "Hola" ), "Ok", "No" ) )
DEFINE WINDOW oWnd FROM 1, 1 TO 12, 60 ;
TITLE OemToAnsi("Conversi垄n de Ficheros DBF") ;
ICON oIcon ;
BORDER NONE ;
COLOR "B/W" ;
NOZOOM
WndCenter(oWnd:hWnd)
ACTIVATE WINDOW oWnd ;
ON INIT Showcontrols()
RETURN (NIL)
//----------------------------------------------------------------------------//
STATIC FUNCTION ShowControls()
@ 02,01 METER oMeter VAR nActual TOTAL 100 ;
SIZE 455,20 ;
OF oWnd
@ 5,12 BUTTON oOtoA PROMPT "&Oem to Ansi" ;
DEFAULT ;
OF oWnd ;
ACTION Conversion(OEM_TO_ANSI) ;
SIZE 100,25
@ 5,40 BUTTON oAtoO PROMPT "&Ansi to Oem" ;
DEFAULT ;
OF oWnd ;
ACTION Conversion(ANSI_TO_OEM) ;
SIZE 100,25
RETURN (NIL)
//----------------------------------------------------------------------------//
STATIC FUNCTION Conversion(nType)
LOCAL aData
LOCAL bBlock
LOCAL cFichero, cCaption
LOCAL nTotal, nMeter
cFichero := GetFichero()
IF empty(cFichero)
RETURN NIL
ENDIF
oAtoO:disable()
oOtoA:disable()
cCaption := oWnd:cCaption
oWnd:cTitle({"Oem to Ansi","Ansi to Oem"} [nType] + ;
": ["+SubStr(cFichero, Rat("\",cFichero)+1)+"]")
IF nType == OEM_TO_ANSI
bBlock := {|val,elem| iif(Valtype(Val)=="C" ,;
Fieldput(elem,OemtoAnsi(val)) ,;
NIL ) }
ELSE
bBlock := {|val,elem| iif(Valtype(Val)=="C" ,;
Fieldput(elem,AnsitoOem(val)) ,;
NIL ) }
ENDIF
USE (cFichero) NEW EXCLUSIVE
SET INDEX TO
IF CheckRec(nType,cFichero)
oWnd:cTitle(cCaption)
oAtoO:enable()
oOtoA:enable()
CLOSE ALL
RETU NIL
ENDIF
GO TOP
nTotal := lastrec()
oMeter:nTotal = RecCount()
DO WHILE !EOF()
aData := Scatter()
Aeval(aData ,bBlock)
SKIP
oMeter:Set( RecNo() )
SysRefresh()
ENDDO
GO TOP
BROWSE()
CLOSE ALL
MsgBeep()
oMeter:Set(0)
oWnd:cTitle(cCaption)
oAtoO:enable()
oOtoA:enable()
RETURN (NIL)
//----------------------------------------------------------------------------//
STATIC FUNCTION GetFichero()
LOCAL cFile //:= ""
LOCAL cDbfNome := "CUSTOMER" + ".DBF"
cFile := cFilePath( cDbfNome ) //+ cFileNoExt( cDbfNome )
cFile := ALLTRIM( cFile )
/*
cFile := cGetFile("*.dbf" ,;
"Elija la base de datos")
*/
cFile := cGetFile( cDbfNome )
IF "*"$cFile .OR. !file(cFile)
cFile := ""
ENDIF
Return (cFile)
//----------------------------------------------------------------------------//
STATIC Function scatter()
local fvals := {} , fnum := 1
Asize(fvals,fcount())
aeval(fvals, {|| fvals[fnum++] := fieldget(fnum)})
Return(fvals)
//----------------------------------------------------------------------------//
STATIC Function CheckRec(nType, cFichero)
LOCAL aData
LOCAL bBlock
LOCAL nCounter := 0
LOCAL lAlert := .F.
IF nType == OEM_TO_ANSI
bBlock := {|val| iif(Valtype(Val)=="C" .AND. IsAnsi(val) ,;
lAlert := .T. ,;
NIL ) }
ELSE
bBlock := {|val| iif(Valtype(Val)=="C" .AND. IsOem(val) ,;
lAlert := .T. ,;
NIL ) }
ENDIF
CursorWait()
DO WHILE !Eof() .OR. nCounter <= MAX_CHECK
aData := Scatter()
Aeval(aData ,bBlock)
IF lAlert
EXIT
ENDIF
SKIP
nCounter++
ENDDO
GO TOP
CursorArrow()
IF lAlert
lAlert := !MsgYesNo(OemtoAnsi("篓Ya esta en formato ")+;
{"Ansi","Oem"}[nType]+", desea Continuar?",;
cFichero)
ENDIF
RETURN lAlert
//----------------------------------------------------------------------------//Mismo resultado, no pone extensi贸n por defecto, aunque con solo ver el c贸digo era de esperar, lo prob茅 tal como lo pusiste y tambi茅n utilizando el cGetFile que tienes comentado.
Tal como lo tienes es m谩s l贸gico que no la ponga, porque utilizas un nombre completo, en el segundo caso se utiliza *.dbf, que ser铆a la extensi贸n tendr铆a que a帽adir si no se especifica, pero no lo hace.
Quique:
Una chapuza, si despu茅s de recibir el nombre del archivo validas si trae extensi贸n, en caso de que
no la traiga, se la pegas !.
Saludos
Eso es f谩ci si solamente tienes una opci贸n ("Proyectos (.pry)|.pry|Todos|.") 驴pero que pasa si tienes varias opciones ("Fuentes (.prg)|.prg|Cabecera (.ch)|.ch|Recursos (.rc)|.rc|Todos|.")?