home *** CD-ROM | disk | FTP | other *** search
/ HyperLib 1997 Winter - Disc 1 / HYPERLIB-1997-Winter-CD1.ISO.7z / HYPERLIB-1997-Winter-CD1.ISO / オンラインウェア / PRG / ListPrint.sit / ListPrint / File.c < prev    next >
Text File  |  1994-12-30  |  4KB  |  153 lines

  1. //******************************************************************************
  2. //*                                            *
  3. //*    Macintosh プログラム作成の勉強                    *
  4. //*    This Program is lesson for Macintohs.                    *
  5. //*                                            *
  6. //*    1994/ 9/23 By SAGAWA KAZUYOSHI                        *
  7. //*    1994/11/12 By SAGAWA KAZUYOSHI                        *
  8. //*                                            *
  9. //******************************************************************************
  10. /*
  11.  *    インクルード
  12.  */
  13. #include    "Constants.h"
  14. #include    "ListPrint.h"
  15.  
  16.  
  17. /**************************************************************************
  18.  *
  19.  *    FUC    選択ファイル情報をリスト構造のハンドルに保存
  20.  *
  21.  *    IN    FSSpec スクローリングリスト情報のポインタ
  22.  *    OT    無し
  23.  *    EX    無し
  24.  *
  25.  *************************************************************************/
  26. void    SelectFileSetUp(FSSpec fileSpec, ListInfoData *lP)
  27. {
  28.     int        i;
  29.     SelectFileInfoHandle    nextInfoHandle;
  30.  
  31.     if (lP->CellNum == 0) {                        /* セル数        */
  32.         (*lP->hStFl)->flSpec   = fileSpec;                /* 先頭データ        */
  33.         (*lP->hStFl)->nextFile = 0;
  34.     }
  35.     else {                                    /* 2番目以降のデータ    */
  36.         nextInfoHandle = lP->hStFl;                    /* 2番目のデータ    */
  37.         for (i = 1; i < lP->CellNum; i++) {
  38.             nextInfoHandle = (*nextInfoHandle)->nextFile;    /* 3番目以降のデータ    */
  39.         }
  40.         (*nextInfoHandle)->nextFile = (SelectFileInfo **) NewHandle(sizeof(SelectFileInfo));
  41.         (*(*nextInfoHandle)->nextFile)->flSpec   = fileSpec;
  42.         (*(*nextInfoHandle)->nextFile)->nextFile = 0;
  43.     }
  44. }
  45.  
  46. /**************************************************************************
  47.  *
  48.  *    FUC    選択ファイル情報をリスト構造のハンドルから削除
  49.  *
  50.  *    IN    削除セル スクローリングリスト情報のポインタ
  51.  *    OT    無し
  52.  *    EX    無し
  53.  *
  54.  *************************************************************************/
  55. void    SelectFileDelete(int DeleteCell, ListInfoData *lP)
  56. {
  57.     int    i;
  58.     SelectFileInfoHandle    nextInfoHandle, deleteHandle;
  59.  
  60.     nextInfoHandle = lP->hStFl;                        /* 先頭(親)リスト    */
  61.  
  62.     if (DeleteCell == 0) {                        /* 削除セル先頭    */
  63.         (*lP->hStFl)->flSpec   = (*(*nextInfoHandle)->nextFile)->flSpec;
  64.         (*lP->hStFl)->nextFile = (*(*nextInfoHandle)->nextFile)->nextFile;
  65.     }
  66.     else if (DeleteCell > 0) {                        /* 2番目以降のデータ    */
  67.         for (i = 1; i < DeleteCell; i++) {
  68.             nextInfoHandle = (*nextInfoHandle)->nextFile;
  69.         }
  70.         deleteHandle = (*nextInfoHandle)->nextFile;
  71.  
  72.         (*nextInfoHandle)->nextFile = (*deleteHandle)->nextFile;    /* 次→前につなぐ    */
  73.  
  74.         DisposeHandle((Handle)deleteHandle);            /* セル削除        */
  75.     }
  76. }
  77.  
  78. /**************************************************************************
  79.  *
  80.  *    FUC    選択ファイル情報をリスト構造のハンドルから全部削除
  81.  *        (親だけは残す)
  82.  *
  83.  *    IN    スクローリングリスト情報のポインタ
  84.  *    OT    無し
  85.  *    EX    無し        @@@ 未 完 成 @@@
  86.  *
  87.  *************************************************************************/
  88. void    SelectFileAllDelete(ListInfoData *lP)
  89. {
  90.     SelectFileInfoHandle    nextInfoHandle, deleteHandle;
  91.  
  92.  
  93.  
  94.     nextInfoHandle = lP->hStFl;                        /* 先頭(親)リスト    */
  95.  
  96.     while ( true ) {
  97.         nextInfoHandle = (*nextInfoHandle)->nextFile;
  98.  
  99.         if (nextInfoHandle == NULL) break;
  100.  
  101.         deleteHandle = (*nextInfoHandle)->nextFile;
  102.         DisposeHandle((Handle)deleteHandle);            /* セル削除        */
  103.     }
  104.  
  105.  
  106.  
  107. }
  108.  
  109. /**************************************************************************
  110.  *
  111.  *    FUC    ファイルデータ読み込み
  112.  *
  113.  *    IN    FSSpec
  114.  *    OT    読み込んだデータへのハンドル
  115.  *    EX    hFileIn
  116.  *
  117.  *************************************************************************/
  118. Handle    ReadFileData(FSSpec fileSpec)
  119. {
  120.     int        i, io, err;                /* ボリューム参照番号            */
  121.     short        refNum;
  122.     char        *p, buffer[256];
  123.     Size        BlkCount;                /* ファイルサイズ            */
  124.     long        count;                    /* データゲットカウント        */
  125.  
  126.     err = FSpOpenDF(&fileSpec, fsRdPerm, &refNum);
  127.  
  128.     err = GetEOF(refNum, &BlkCount);            /* ファイルサイズ取得            */
  129.  
  130.     HLock( (hFileIn = NewHandle(BlkCount)) );
  131.     p = (*hFileIn);
  132.  
  133.     do {
  134.         count = 256;
  135.         io    = FSRead(refNum, &count, buffer);
  136.         if (io == noErr || io == eofErr) {
  137.             for (i = 0; i < count; i++) {                /* データ展開    */
  138.                 *p++ = buffer[i];
  139.             }
  140.             *p = 0;
  141.         }
  142.     } while (io == noErr);
  143.  
  144.     HUnlock( hFileIn );
  145.     return ( hFileIn );
  146. }
  147. //        err = PtrAndHand(buffer, hFileIn, count);                /* データ展開    */
  148. //        err = PtrToXHand(buffer, hFileIn, count);                /* データ展開    */
  149. //        for (i = 0; i < rep.sfFile.name[0]; i++) {    c[i] = rep.sfFile.name[i+1];    }
  150. //-37        err = FSOpen(c, rep.sfFile.vRefNum, &refNum);
  151. //-43        err = FSOpen(rep.sfFile.name, rep.sfFile.vRefNum, &refNum);
  152. //-35        err = FSOpen(rep.sfFile.name, rep.sfFile.parID, &refNum);
  153.