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.