Microsoft KB Archive/114999

{| = PRB: Creators and Types Are Reset After Transport to Macintosh =
 * width="100%"|

ID: Q114999

2.50b 2.50c 3.00b MACINTOSH

kbprb The information in this article applies to:
 * Microsoft FoxPro for Macintosh, versions 2.5b, 2.5c

SYMPTOMS
After you have transported an application from FoxPro for Windows or FoxPro for MS-DOS to FoxPro for Macintosh, the icons, file types, and creators appear to be incorrect for all the files in the application.

NOTE: This behavior does not occur under Visual FoxPro for Macintosh.

CAUSE
The creator, type, and subsequent icon are determined by the application that created the file on the Macintosh. When an application is transported, the creator may become Apple File Exchange or another program instead of FoxPro for Macintosh.

However, using the code example below, you can programmatically change the creator and type for an entire folder of files at a time.

RESOLUTION
The following program will change all files with standard FoxPro extensions, within a single folder, to a creator of "FOXX". Files without standard FoxPro extensions will be ignored.

The code example below uses the FxSetType function in FOXTOOLS.MLB to change the creator and type for the files. The SYS(2027) syntax returns the filenames in Macintosh notation. Both FxFileType and FxSetType require the filename to be specified in Macintosh notation.

*********************************************************************  * Begin Code Example * Variables used * dochange       Logical     Flag to indicate whether to change * filetype       Character   New type of file * filecreator    Character   FOXX as new creator type * i              Numeric     Counter for FOR loop * filearray      Array       File information for folder * searchfld      Character   Name of folder to search * fileext        Character   File extension for comparison *********************************************************************

SET LIBRARY TO foxtools filetype = "" filecreator = "FOXX" dochange = .T.  searchfld = "" fileext = ""

* Obtain folder name searchfld = GETDIR("Folder to search")

* Create array of filenames in folder =ADIR(filearray,searchfld + "*.*")

* Replace filename if necessary FOR i = 1 TO ALEN(filearray,1) fileext = RIGHT(filearray(i,1),4) dochange = .T.     DO CASE CASE fileext = ".FPT" * FoxPro Memo file filetype = "F+DT" CASE fileext = ".DBF" * DBF file filetype = "F+DB" CASE fileext = ".SCX" * screen file filetype = "F+FR" CASE fileext = ".SCT" * screen memo file filetype = "FSCT" CASE fileext = ".FRX" filetype = "F+RP" * Report File CASE fileext = ".FRT" filetype = "FFRT" * report memo file CASE fileext = ".MNX" filetype = "FMNX" * menu file CASE fileext = ".MNT" * menu memo file filetype = "FMNX" CASE fileext = ".PJX" * project file filetype = "FPJX" CASE fileext = ".PJT" * project memo file filetype = "FPJT" CASE fileext = ".CDX" * compound index file filetype = "FCDX" CASE fileext = ".PRG" * program source code filetype = "F+PR" CASE fileext = ".FXP" * compiled .PRG filetype = "FFXP" CASE fileext = ".QPR" * Query program filetype = "F+QU" CASE fileext = ".APP" * compiled application filetype = "FAPP" CASE fileext = ".SPX" * compiled screen program filetype = "FSPX" CASE fileext = ".MPX" * compiled menu program filetype = "FMPX" OTHERWISE dochange = .F.     ENDCASE IF dochange = ; FxSetType(SYS(2027,searchfld+filearray(i,1)), ;              filetype,filecreator) ENDIF ENDFOR

* End Code Example ************************************************************************