source: Include/com/bstring.ab@ 138

Last change on this file since 138 was 138, checked in by イグトランス (egtra), 17 years ago

#75 bstring.ab [137]で送信漏れ

File size: 1.7 KB
Line 
1' com/bstring.ab
2
3#require <ole2.ab>
4#require <oleauto.ab>
5
6Class BString
7Public
8 Sub BString()
9 bs = 0
10 End Sub
11
12 Sub BString(len As DWord)
13 bs = SysAllocStringLen(len)
14 End Sub
15
16 Sub BString(ByRef s As BString)
17 BString(s.bs, s.Length)
18 End Sub
19
20 Sub BString(s As LPCOLESTR)
21 bs = SysAllocString(s)
22 End Sub
23
24 Sub BString(s As LPCOLESTR, len As DWord)
25 bs = SysAllocStringLen(s, len)
26 End Sub
27
28 Sub BString(s As PCSTR)
29 BString(s, lstrlenA(s))
30 End Sub
31
32 Sub BString(s As PCSTR, len As DWord)
33 Dim lenBS = MultiByteToWideChar(CP_THREAD_ACP, 0, s, len, 0, 0)
34 bs = SysAllocStringLen(0, lenBS)
35 MultiByteToWideChar(CP_THREAD_ACP, 0, s, len, bs, lenBS)
36 End Sub
37
38 Sub BString(ByRef s As String)
39 BString(s.StrPtr, s.Length As DWord)
40 End Sub
41
42 Sub Operator =(ByRef bstr As BString)
43 ~BString()
44 BString(bstr)
45 End Sub
46
47 Sub ~BString()
48 Clear()
49 End Sub
50
51 Sub Clear()
52 If bs <> 0 Then
53 SysFreeString(bs)
54 bs = 0
55 End If
56 End Sub
57
58 Sub Attach(bstr As BSTR)
59 Clear()
60 bs = bstr
61 End Sub
62
63 Function Detach() As BSTR
64 Detach = bs
65 bs = 0
66 End Function
67
68 Function BStr() As BSTR
69 BStr = bs
70 End Function
71
72 Const Function Length() As DWord
73 Length = SysStringLen(bs)
74 End Function
75
76 Const Function Operator [](i As SIZE_T)
77#ifdef _DEBUG
78 If i > Length Then
79 'Throw OutOfRangeException
80 End If
81#endif
82 Return bs[i]
83 End Function
84
85 Sub Operator []=(i As SIZE_T, c As OLECHAR)
86#ifdef _DEBUG
87 If i > Length Then
88 'Throw OutOfRangeException
89 End If
90#endif
91 bs[i] = c
92 End Sub
93
94 Override Function ToString() As String
95 Dim s As String(bs, Length)
96 Return s
97 End Function
98
99Private
100 bs As BSTR
101End Class
102
Note: See TracBrowser for help on using the repository browser.