Ignore:
Timestamp:
May 23, 2007, 9:33:58 PM (17 years ago)
Author:
NoWest
Message:

コンストラクタを整備

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Include/Classes/System/IO/FileStream.ab

    r256 r260  
    11
    2 /* ほんとはmiscかファイルを分けたほうがいいかもしれないが一先ず実装 */
     2/* ほんとはmiscに入れるかかファイルを分けたほうがいいかもしれないが一先ず実装 */
    33Enum FileOptions
    44    Asynchronous
     
    1717
    1818    /*
    19     ファイルハンドルからこれらを取得できれば入らないが
     19    ファイルハンドルからこれらを取得できれば、これらは入らないが
    2020    今のところは不明なので自前で実装するしかない
    2121    */
     
    3030
    3131Public
    32     /* コンストラクタ.NETと同じように実装は難しい、一先ず動くものを実装したが要変更だと思う */
     32    /* コンストラクタ.NETと同じように実装は難しい、一先ず動くものを実装したが変更が必要だと思う */
    3333    Sub FileStream(path As String, mode As FileMode, access As FileAccess, share As FileShare, options As FileOptions)
    34         Dim acc As DWord
    35         Dim mod As DWord
    36         Dim sha As DWord
    37         Dim opt As DWord
     34        Dim ac As DWord
     35        Dim mo As DWord
     36        Dim sh As DWord
     37        Dim op As DWord
    3838
    3939        Select Case access
    4040            Case FileAccess.Read
    41                 acc=GENERIC_READ
     41                ac=GENERIC_READ
    4242            Case FileAccess.ReadWrite
    43                 acc=GENERIC_READ or GENERIC_WRITE
     43                ac=GENERIC_READ or GENERIC_WRITE
    4444            Case FileAccess.Write
    45                 acc=GENERIC_WRITE
     45                ac=GENERIC_WRITE
    4646        End Select
    4747
    4848        Select Case share
    4949            Case FileShare.DeleteFile
    50                 sha=FILE_SHARE_DELETE
     50                sh=FILE_SHARE_DELETE
    5151            Case FileShare.None
    52                 sha=0
     52                sh=0
    5353            Case FileShare.Read
    54                 sha=FILE_SHARE_READ
     54                sh=FILE_SHARE_READ
    5555            Case FileShare.ReadWrite
    56                 sha=FILE_SHARE_READ or FILE_SHARE_WRITE
    57             Case Write
    58                 sha=FILE_SHARE_WRITE
     56                sh=FILE_SHARE_READ or FILE_SHARE_WRITE
     57            Case FileShare.Write
     58                sh=FILE_SHARE_WRITE
    5959        End Select
    6060
     
    7575
    7676        Select Case options
    77             Case FileOption.Asynchronous
    78                 opt=FILE_FLAG_OVERLAPPED
     77            Case FileOptions.Asynchronous
     78                op=FILE_FLAG_OVERLAPPED
    7979            Case FileOptions.DeleteOnClose
    80                 opt=FILE_FLAG_DELETE_ON_CLOSE
     80                op=FILE_FLAG_DELETE_ON_CLOSE
    8181            Case FileOptions.Encrypted
    8282            Case FileOptions.None
    83                 opt=0
     83                op=0
    8484            Case FileOptions.RandomAccess
    85                 opt=FILE_FLAG_RANDOM_ACCESS
     85                op=FILE_FLAG_RANDOM_ACCESS
    8686            Case FileOptions.SequentialScan
    87                 opt=FILE_FLAG_SEQUENTIAL_SCAN
     87                op=FILE_FLAG_SEQUENTIAL_SCAN
    8888            Case FileOptions.WriteThrough
    89                 opt=FILE_FLAG_WRITE_THROUGH
    90         End Select
    91 
    92         This.handle=CreateFile(path.Chars As PSTR,acc,sha,ByVal NULL,mo,opt,0)
    93         If This.handle=HANDLE_INVALIDATE Then
     89                op=FILE_FLAG_WRITE_THROUGH
     90        End Select
     91
     92        This.handle=CreateFile(path.Chars As PSTR,ac,sh,ByVal NULL,mo,op,0)
     93        If This.handle=INVALID_HANDLE_VALUE Then
    9494        'エラー処理
    9595        'Throw ArgumentException
    9696        'Throw IOException
    9797        'Throw System.IO.FileNotFoundException
     98            This.handle=0
    9899            Exit Sub
    99100        End If
    100101
    101         fileMode = mod
    102         fileAccess = acc
    103         fileShare = sha
    104         fileOptions = opt
     102        filePath = path
     103        fileMode = mo
     104        fileAccess = ac
     105        fileShare = sh
     106        fileOptions = op
     107    End Sub
     108    Sub FileStream(path As String, mode As FileMode, access As FileAccess, share As FileShare)
     109        FileStream(path,mode,access,share,FileOptions.None)
     110    End Sub
     111    Sub FileStream(path As String, mode As FileMode, access As FileAccess)
     112        FileStream(path,mode,access,FileShare.None,FileOptions.None)
    105113    End Sub
    106114    Sub FileStream(path As String, mode As FileMode)
    107         Dim acc As DWord
    108         Dim mo As DWord
     115        Dim access As FileAccess
    109116        Select Case mode
    110117            Case FileMode.Append
    111                 acc=GENERIC_WRITE
    112                 mo=OPEN_ALWAYS
    113 '               OutputDebugString(Ex"append\n")
     118                access=FileAccess.Write
    114119            Case FileMode.Create
    115                 acc=GENERIC_READ or GENERIC_WRITE
    116                 mo=CREATE_ALWAYS
    117 '               OutputDebugString(Ex"create\n")
     120                access=FileAccess.ReadWrite
    118121            Case FileMode.CreateNew
    119                 acc=GENERIC_READ or GENERIC_WRITE
    120                 mo=CREATE_NEW
    121 '               OutputDebugString(Ex"create new\n")
     122                access=FileAccess.ReadWrite
    122123            Case FileMode.Open
    123                 acc=GENERIC_READ or GENERIC_WRITE
    124                 mo=OPEN_EXISTING
    125 '               OutputDebugString(Ex"open\n")
     124                access=FileAccess.ReadWrite
    126125            Case FileMode.OpenOrCreate
    127                 acc=GENERIC_READ or GENERIC_WRITE
    128                 mo=OPEN_ALWAYS
    129 '               OutputDebugString(Ex"open or create\n")
     126                access=FileAccess.ReadWrite
    130127            Case FileMode.Truncate
    131                 acc=GENERIC_WRITE
    132                 mo=TRUNCATE_EXISTING
    133 '               OutputDebugString(Ex"truncate\n")
    134         End Select
    135 
    136         'ファイルを作成または開く
    137         This.handle=CreateFile(path.Chars As PSTR,acc,0,ByVal NULL,mo,0,0)
    138 
    139         'エラー処理
    140         'Throw ArgumentException
    141         'Throw IOException
    142         'Throw System.IO.FileNotFoundException
    143 
    144 
    145         'ファイルを作成または開いた後の処理
    146         If mode=FileMode.Append Then
    147             SetFilePointer(This.handle,0,NULL,FILE_END)
    148         End If
     128                access=FileAccess.Write
     129        End Select
     130        FileStream(path,mode,access,FileShare.None,FileOptions.None)
    149131    End Sub
    150132
Note: See TracChangeset for help on using the changeset viewer.