PB 電子会議室
| 発言No. | 更新日 | 題名(クリックすると発言内容と関連するコメントが表示されます) | 
|---|---|---|
| 9572 | 99/12/14 14:14:21 | RE(2):PB5.0.03: GetFileAttributesA(API)について By t-taka | 
| 9571 | 99/12/14 12:48:37 | RE(1):PB5.0.03: GetFileAttributesA(API)について By あすかちゃんの父 | 
| 9568 | 99/12/14 11:33:43 | PB5.0.03: GetFileAttributesA(API)について By t-taka | 
カテゴリ:PowerBuilderの開発環境
日付:1999年12月14日 11:33 発信者:t-taka
題名:PB5.0.03: GetFileAttributesA(API)について
  皆さんこんにちわ。
だれか、教えてください。
フロッピーや、ハードディスク内のフォルダーやファイルの属性を取得し、その属性で判断して削除を
行いたいのですが、うまく値が戻ってきません。
API関数のマニュアルにかかれている値と違うので判断がつきません。
フロッピーのルートに存在するフォルダーやファイルと、ハードディスクのフォルダー内の
サブフォルダーやファイルで、値が変わって戻ってきます。
関数の使い方が違うのでしょうか。
//グローバル外部関数
function long GetFileAttributesA( string s1 ) library \"kernel32.dll\"
//スクリプト
unsignedlong	ll_attr
long		ll_attr_flg[]
long	ll_con_attr[9]
long	ll_con_compress=800	//圧縮
long	ll_con_temp=100		//テンポラリ
long	ll_con_normal=80	//属性無し
long	ll_con_archive=20	//アーカイブ
long	ll_con_dir=10		//ディレクトリー
long	ll_con_sys=4		//システム
long	ll_con_hidden=2		//隠し
long	ll_con_rdonly=1		//読み取り専用
long	ll_con_offline		//不明
//固定値を配列に編集
ll_con_attr[1]	=	ll_con_compress
ll_con_attr[2]	=	ll_con_temp
ll_con_attr[3]	=	ll_con_normal
ll_con_attr[4]	=	ll_con_archive
ll_con_attr[5]	=	ll_con_dir
ll_con_attr[6]	=	ll_con_sys
ll_con_attr[7]	=	ll_con_hidden
ll_con_attr[8]	=	ll_con_rdonly
ll_con_attr[9]	=	ll_con_offline
ls_full_name	=	pm1_path_name + ls_file_nm[ll_cnt]
ll_attr		=	GetFileAttributesA(ls_full_name)
ll_idx	=	ll_cnt * 9 - 9
FOR ll_loop=1 TO 9
	If	ll_attr	>=	ll_con_attr[ll_loop]	Then
		ll_attr_flg[ll_idx + ll_loop]	=	1
		ll_attr				=	ll_attr	-	ll_con_attr[ll_loop]
	Else
		ll_attr_flg[ll_idx + ll_loop]	=	0
	End	If
NEXT
たとえば、ファイルの属性がアーカイブだけのとき、戻り値が32で、
「アーカイブの隠しのディレクトリ」として判断してしまいます。
付加情報:
PowerBuilder Version (記載なし)
Client SoftWare
OS Windows95
DBMS (記載なし)
Browser (記載なし)
Server SoftWare
OS (記載なし)
DBMS Oracle 7.3
WebServer (記載なし)
Copyright © 2013 Power Future Co., Ltd.




