Ignore:
Timestamp:
Nov 9, 2008, 2:21:49 PM (15 years ago)
Author:
イグトランス (egtra)
Message:

#161完了。StreamReaderのUnicode対応。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ab5.0/ablib/src/Classes/System/IO/StringReader.ab

    r497 r655  
    2323            Throw New ArgumentNullException("str")
    2424        End If
    25         s = str
     25        Dim length = GetStr(str, s)
     26        If length > LONG_MAX Then
     27            Throw New ArgumentException("Must be Length <= LONG_MAX", "str")
     28        End If
     29        len = length As Long
    2630        i = 0
    2731    End Sub
     
    3236    */
    3337    Override Function Peek() As Long
    34         If i = s.Length Then
     38        If i = len Then
    3539            Peek = -1
    3640        Else
     
    4448    */
    4549    Override Function Read() As Long
    46         If i = s.Length Then
    47             Read = -1
    48         Else
    49             Read = s[i]
    50             i++
    51         End If
     50        Read = Peek()
     51        i++
    5252    End Function
    5353
     
    5656    @auther Egtra
    5757    */
     58/*
    5859    Override Function ReadToEnd() As String
    5960        ReadToEnd = s.Substring(i)
    6061        i = s.Length
    6162    End Function
    62 
     63*/
    6364Protected
    6465    /*
     
    7576    @auther Egtra
    7677    */
    77     Override Function ReadImpl(buffer As *Char, index As Long, count As Long) As Long
    78         ReadImpl = Math.Min(count, s.Length - i)
    79         ActiveBasic.Strings.ChrCopy(VarPtr(buffer[index]) As *Char, (StrPtr(s) + i * SizeOf (Char)) As *Char, ReadImpl As SIZE_T) 'ToDo: ポインタに対する+演算
     78    Override Function ReadImpl(buffer As *WCHAR, count As Long) As Long
     79        ReadImpl = Math.Min(count, len - i)
     80        ActiveBasic.Strings.ChrCopy(buffer, VarPtr(s[i]), ReadImpl As SIZE_T) 'ToDo: ポインタに対する+演算
    8081    End Function
    8182
    8283Private
    83     s As String
     84    s As *WCHAR
     85    len As Long
    8486    i As Long
    8587End Class
Note: See TracChangeset for help on using the changeset viewer.