PRB: Creators and Types Are Reset After Transport to Macintosh

Last reviewed: June 3, 1996
Article ID: Q114999
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
   ************************************************************************

REFERENCES

For more information about FOXTOOLS.MLB, see the FoxTools ReadMe file in the GOODIES:MISC folder.

"Developer's Guide," version 2.5b, pages 402-403

"Language Reference," version 2.5b, pages 868-869


Additional reference words: FoxMac 2.50b 2.50c
KBCategory: kbprg kbprb kbcode
KBSubcategory:


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: June 3, 1996
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.