[Mono-devel-list] RE: [mono-vb] VB Class status
Rob.Tillie@Student.tUL.EDU
Rob.Tillie@Student.tUL.EDU
Thu, 24 Jun 2004 22:03:44 +0200
I did a little test with the following sample:
Imports System
Imports Microsoft.VisualBasic
Module GetPutObject
Sub Main
Dim c As String
FileSystem.FileOpen(1, "GetPutObject.txt", OpenMode.Binary)
FileSystem.FilePutObject(1, "ABCDEF", -1)
FileSystem.Seek(1, 1)
FileSystem.FileGetObject(1, c, -1)
Console.WriteLine(c)
Dim arr(1) as Integer
arr(0) = 1
FileSystem.FileClose(arr)
End Sub
End Module
Concentrating on the FileOpen method, which has an extra 3 optional
parameters.
Compiler: Microsoft (R) Visual Basic .NET Compiler version 7.10.3052.4
Compiled using MS's MS.VB.dll, the IL to call the method looks like this:
IL_0000: ldc.i4.1
IL_0001: ldstr "GetPutObject.txt"
IL_0006: ldc.i4.s 32
IL_0008: ldc.i4.m1
IL_0009: ldc.i4.m1
IL_000a: ldc.i4.m1
IL_000b: call void
[Microsoft.VisualBasic]Microsoft.VisualBasic.FileSystem::FileOpen(int32,
string,
valuetype [Microsoft.VisualBasic]Microsoft.VisualBasic.OpenMode,
valuetype [Microsoft.VisualBasic]Microsoft.VisualBasic.OpenAccess,
valuetype [Microsoft.VisualBasic]Microsoft.VisualBasic.OpenShare,
int32)
Compiled using Mono's MS.VB:
IL_0000: ldc.i4.1
IL_0001: ldstr "GetPutObject.txt"
IL_0006: ldc.i4.s 32
IL_0008: ldc.i4.0
IL_0009: ldc.i4.0
IL_000a: ldc.i4.0
IL_000b: call void
[Microsoft.VisualBasic]Microsoft.VisualBasic.FileSystem::FileOpen(int32,
string,
valuetype [Microsoft.VisualBasic]Microsoft.VisualBasic.OpenMode,
valuetype [Microsoft.VisualBasic]Microsoft.VisualBasic.OpenAccess,
valuetype [Microsoft.VisualBasic]Microsoft.VisualBasic.OpenShare,
int32)
Obviously it is passing 0 for each default value, while this should be -1...
(I don't know anything about IL, but I guess m1 stands for -1)
Greetz,
-- Rob.