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 >
Wrap
Text File
|
1994-12-30
|
4KB
|
153 lines
//******************************************************************************
//* *
//* Macintosh プログラム作成の勉強 *
//* This Program is lesson for Macintohs. *
//* *
//* 1994/ 9/23 By SAGAWA KAZUYOSHI *
//* 1994/11/12 By SAGAWA KAZUYOSHI *
//* *
//******************************************************************************
/*
* インクルード
*/
#include "Constants.h"
#include "ListPrint.h"
/**************************************************************************
*
* FUC 選択ファイル情報をリスト構造のハンドルに保存
*
* IN FSSpec スクローリングリスト情報のポインタ
* OT 無し
* EX 無し
*
*************************************************************************/
void SelectFileSetUp(FSSpec fileSpec, ListInfoData *lP)
{
int i;
SelectFileInfoHandle nextInfoHandle;
if (lP->CellNum == 0) { /* セル数 */
(*lP->hStFl)->flSpec = fileSpec; /* 先頭データ */
(*lP->hStFl)->nextFile = 0;
}
else { /* 2番目以降のデータ */
nextInfoHandle = lP->hStFl; /* 2番目のデータ */
for (i = 1; i < lP->CellNum; i++) {
nextInfoHandle = (*nextInfoHandle)->nextFile; /* 3番目以降のデータ */
}
(*nextInfoHandle)->nextFile = (SelectFileInfo **) NewHandle(sizeof(SelectFileInfo));
(*(*nextInfoHandle)->nextFile)->flSpec = fileSpec;
(*(*nextInfoHandle)->nextFile)->nextFile = 0;
}
}
/**************************************************************************
*
* FUC 選択ファイル情報をリスト構造のハンドルから削除
*
* IN 削除セル スクローリングリスト情報のポインタ
* OT 無し
* EX 無し
*
*************************************************************************/
void SelectFileDelete(int DeleteCell, ListInfoData *lP)
{
int i;
SelectFileInfoHandle nextInfoHandle, deleteHandle;
nextInfoHandle = lP->hStFl; /* 先頭(親)リスト */
if (DeleteCell == 0) { /* 削除セル先頭 */
(*lP->hStFl)->flSpec = (*(*nextInfoHandle)->nextFile)->flSpec;
(*lP->hStFl)->nextFile = (*(*nextInfoHandle)->nextFile)->nextFile;
}
else if (DeleteCell > 0) { /* 2番目以降のデータ */
for (i = 1; i < DeleteCell; i++) {
nextInfoHandle = (*nextInfoHandle)->nextFile;
}
deleteHandle = (*nextInfoHandle)->nextFile;
(*nextInfoHandle)->nextFile = (*deleteHandle)->nextFile; /* 次→前につなぐ */
DisposeHandle((Handle)deleteHandle); /* セル削除 */
}
}
/**************************************************************************
*
* FUC 選択ファイル情報をリスト構造のハンドルから全部削除
* (親だけは残す)
*
* IN スクローリングリスト情報のポインタ
* OT 無し
* EX 無し @@@ 未 完 成 @@@
*
*************************************************************************/
void SelectFileAllDelete(ListInfoData *lP)
{
SelectFileInfoHandle nextInfoHandle, deleteHandle;
nextInfoHandle = lP->hStFl; /* 先頭(親)リスト */
while ( true ) {
nextInfoHandle = (*nextInfoHandle)->nextFile;
if (nextInfoHandle == NULL) break;
deleteHandle = (*nextInfoHandle)->nextFile;
DisposeHandle((Handle)deleteHandle); /* セル削除 */
}
}
/**************************************************************************
*
* FUC ファイルデータ読み込み
*
* IN FSSpec
* OT 読み込んだデータへのハンドル
* EX hFileIn
*
*************************************************************************/
Handle ReadFileData(FSSpec fileSpec)
{
int i, io, err; /* ボリューム参照番号 */
short refNum;
char *p, buffer[256];
Size BlkCount; /* ファイルサイズ */
long count; /* データゲットカウント */
err = FSpOpenDF(&fileSpec, fsRdPerm, &refNum);
err = GetEOF(refNum, &BlkCount); /* ファイルサイズ取得 */
HLock( (hFileIn = NewHandle(BlkCount)) );
p = (*hFileIn);
do {
count = 256;
io = FSRead(refNum, &count, buffer);
if (io == noErr || io == eofErr) {
for (i = 0; i < count; i++) { /* データ展開 */
*p++ = buffer[i];
}
*p = 0;
}
} while (io == noErr);
HUnlock( hFileIn );
return ( hFileIn );
}
// err = PtrAndHand(buffer, hFileIn, count); /* データ展開 */
// err = PtrToXHand(buffer, hFileIn, count); /* データ展開 */
// for (i = 0; i < rep.sfFile.name[0]; i++) { c[i] = rep.sfFile.name[i+1]; }
//-37 err = FSOpen(c, rep.sfFile.vRefNum, &refNum);
//-43 err = FSOpen(rep.sfFile.name, rep.sfFile.vRefNum, &refNum);
//-35 err = FSOpen(rep.sfFile.name, rep.sfFile.parID, &refNum);