Index: trunk/Include/basic/command.sbp
===================================================================
--- trunk/Include/basic/command.sbp	(revision 300)
+++ trunk/Include/basic/command.sbp	(revision 303)
@@ -7,4 +7,5 @@
 #require <windows.sbp>
 #require <Classes/System/Environment.ab>
+#require <Classes/ActiveBasic/Windows/Windows.ab>
 
 Const _System_Type_SByte = 1
@@ -65,17 +66,8 @@
 '----------------
 
-Function _System_MessageBox(hw As HWND, s As PCSTR, t As PCSTR, b As DWord) As DWord
-	Return MessageBoxA(hw, s, t, b)
-End Function
-
-Function _System_MessageBox(hw As HWND, s As PCWSTR, t As PCWSTR, b As DWord) As DWord
-	Return MessageBoxW(hw, s, t, b)
-End Function
-
 Macro MSGBOX(hwnd As HWND, str As String)(title As String, boxType As DWord, ByRef retAns As DWord)
+	Dim ret = ActiveBasic.Windows.Detail._System_MessageBox(hwnd, ToSCStr(str), ToSCStr(title), boxType)
 	If VarPtr(retAns) Then
-		retAns = _System_MessageBox(hwnd, ToSCStr(str), ToSCStr(title), boxType)
-	Else
-		_System_MessageBox(hwnd, ToSCStr(str), ToSCStr(title), boxType)
+		retAns = ret
 	End If
 End Macro
@@ -424,8 +416,7 @@
 Macro FIELD(FileNumber As Long, FieldSize As Long)
 	FileNumber--
-
 	_System_FieldSize(FileNumber)=FieldSize
 End Macro
-Macro GET(FileNumber As Long, RecodeNumber As Long, ByRef lpBuffer As String)
+Macro GET(FileNumber As Long, RecodeNumber As Long, ByRef buffer As String)
 	Dim dwAccessByte As DWord
 
@@ -434,11 +425,13 @@
 
 	SetFilePointer(_System_hFile(FileNumber), SizeOf (StrChar) * RecodeNumber * _System_FieldSize(FileNumber), 0, FILE_BEGIN)
-	lpBuffer = ZeroString(_System_FieldSize(FileNumber))
-	ReadFile(_System_hFile(FileNumber), StrPtr(lpBuffer), SizeOf (StrChar) * _System_FieldSize(FileNumber), VarPtr(dwAccessByte),ByVal 0)
-	If Not dwAccessByte=_System_FieldSize(FileNumber) Then
-		lpBuffer = Left$(lpBuffer, dwAccessByte)
+	Dim t = ZeroString(_System_FieldSize(FileNumber))
+	ReadFile(_System_hFile(FileNumber), StrPtr(t), SizeOf (StrChar) * _System_FieldSize(FileNumber), VarPtr(dwAccessByte), ByVal 0)
+	If dwAccessByte = _System_FieldSize(FileNumber) Then
+		buffer = t.ToString
+	Else
+		buffer = Left$(t.ToString, dwAccessByte)
 	End If
 End Macro
-Macro PUT(FileNumber As Long, RecodeNumber As Long, ByRef lpBuffer As String)
+Macro PUT(FileNumber As Long, RecodeNumber As Long, buffer As String)
 	Dim dwAccessByte As DWord
 
@@ -447,5 +440,5 @@
 
 	SetFilePointer(_System_hFile(FileNumber), SizeOf (StrChar) * RecodeNumber*_System_FieldSize(FileNumber), 0, FILE_BEGIN)
-	WriteFile(_System_hFile(FileNumber), StrPtr(lpBuffer),SizeOf (StrChar) * _System_FieldSize(FileNumber), VarPtr(dwAccessByte), ByVal 0)
+	WriteFile(_System_hFile(FileNumber), StrPtr(buffer), SizeOf (StrChar) * _System_FieldSize(FileNumber), VarPtr(dwAccessByte), ByVal 0)
 End Macro
 
Index: trunk/Include/basic/function.sbp
===================================================================
--- trunk/Include/basic/function.sbp	(revision 300)
+++ trunk/Include/basic/function.sbp	(revision 303)
@@ -1019,4 +1019,8 @@
 End Function
 
+Function _System_PtrObj(p As VoidPtr) As Object
+	SetPointer(VarPtr(_System_PtrObj), p)
+End Function
+
 '--------
 ' 文字列関数その2
