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 (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.