Artículo original: PUTFILE function as originally typed (not in uppercase)
http://vfpimaging.blogspot.com/2021/01/putfile-function-as-originally-typed.html
Autor: Cesar Ch.
Traducido por: Google Translate
Como ya se ha discutido en Fox.Wikis: "VFP siempre ha sido un poco más gracioso con los casos de nombres de archivo. Más específicamente, no está documentado cómo funciona con el caso de nombres de archivo. Se traducirá los nombres de archivo a minúsculas en algunos casos, a mayúsculas en otros, y dejarlo igual en otros."
PUTFILE() está en esa lista de funciones extrañas, siempre devolviendo los nombres de archivo en MAYÚSCULAS. Así que aquí hay una pequeña función que he estado usando que devuelve el nombre de archivo elegido de la forma en que el usuario lo escribió.
Los parámetros y el uso son exactamente los mismos que los de la función PUTFILE() original de Visual FoxPro:
FUNCTION XPUTFILE(tcCustomText, tcFileName, tcFileExt) * Usage: * ? PUTFILE("Save file as...", "MyFile.PDF", "PDF;TXT;*") #DEFINE COMMDLOG_DEFAULT_FLAG 0x00080000 #DEFINE COMMDLOG_RO 4 #DEFINE COMMDLOG_MULTFILES 512 LOCAL lcSetDefa m.lcSetDefa = SET("Default") + CURDIR() LOCAL loDlgForm AS "Form" m.loDlgForm = CREATEOBJECT("Form") m.loDlgForm.ADDOBJECT("oleObject1", "oleComDialObject") LOCAL loDlg m.loDlg = m.loDlgForm.OleObject1 LOCAL lcFilter, lcFileExt, lnExtCount, N IF NOT EMPTY(tcFileExt) lnExtCount = GETWORDCOUNT(m.tcFileExt, ";") lcFilter = "" FOR N = 1 TO lnExtCount lcFileExt = GETWORDNUM(m.tcFileExt, N, ";") IF lcFileExt = "*" lcFilter = lcFilter + "All files|*.*" ELSE lcFilter = lcFilter + lcFileExt + " files|*." + lcFileExt && EVL(tcFileExt, "All files|*.*") ENDIF IF N < lnExtCount lcFilter = lcFilter + "|" ENDIF ENDFOR ELSE lcFilter = "*.*|*.*" && EVL(tcFileExt, "All files|*.*") ENDIF m.loDlg.FILTER = lcFilter m.loDlg.FileName = EVL(m.tcFileName, "") m.loDlg.DialogTitle = EVL(m.tcCustomText, "Save file as...") m.loDlg.FLAGS = COMMDLOG_RO + COMMDLOG_DEFAULT_FLAG m.loDlg.MaxFileSize = 256 LOCAL lnResult AS INTEGER, lcFileName * lnResult = loDlg.ShowOpen() m.lnResult = m.loDlg.ShowSave() * Restore the original directory SET DEFAULT TO (m.lcSetDefa) IF EMPTY(m.loDlg.FileTitle) && Clicked 'Cancel' m.lcFileName = "" ELSE m.lcFileName = m.loDlg.FileName ENDIF m.loDlgForm = NULL RETURN m.lcFileName DEFINE CLASS oleComDialObject AS OLECONTROL OLECLASS ="MSComDlg.CommonDialog.1" ENDDEFINE
No hay comentarios. :
Publicar un comentario
Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.