Search code examples
vb.netfilestream

Operator * Not Defined for types char and string


I added two vb files to a new vs project and I seem to be having a problem with the last line of the code below. I get an error: Operator '*' is not defined for types 'Char' and 'String'.

I don't know too much about vb so can someone explain to me whats going on in this last line and how I may fix the error? mStream is a FileStream

    Public Shared Function GetCharImage(Font As Integer, c As Char) As Bitmap
        If UnicodeFonts.mStream Is Nothing Then
            UnicodeFonts.Init()
        End If
        ' The following expression was wrapped in a checked-statement
        UnicodeFonts.mStream = UnicodeFonts.Stream(Font - 1)
        UnicodeFonts.mReader = UnicodeFonts.Reader(Font - 1)
        ' The following expression was wrapped in a checked-expression
        UnicodeFonts.mStream.Seek(CLng(c * ""), 0)

Edit *** the line that calls the above method is this:
array(i - 1) = UnicodeFonts.GetCharImage(Font, CharType.FromString(Strings.Mid(Text, i)))

from the following method:

    Public Shared Function GetStringImage(Font As Integer, Text As String) As Bitmap
        ' The following expression was wrapped in a checked-statement
        Dim array As Bitmap() = New Bitmap(Strings.Len(Text) - 1 + 1 - 1) {}
        Dim arg_19_0 As Integer = 1
        Dim num As Integer = Strings.Len(Text)
        Dim num2 As Integer
        Dim height As Integer
        For i As Integer = arg_19_0 To num
            array(i - 1) = UnicodeFonts.GetCharImage(Font, CharType.FromString(Strings.Mid(Text, i)))
            num2 += array(i - 1).Width
            If array(i - 1).Height > height Then
                height = array(i - 1).Height
            End If
        Next
        Dim bitmap As Bitmap = New Bitmap(num2, height, PixelFormat.Format32bppArgb)
        Dim graphics As Graphics = Graphics.FromImage(bitmap)
        Dim arg_8C_0 As Integer = 1
        Dim num3 As Integer = Strings.Len(Text)
        For j As Integer = arg_8C_0 To num3
            Dim num4 As Integer
            graphics.DrawImage(array(j - 1), num4, 0)
            num4 += array(j - 1).Width
        Next
        Dim arg_C4_0 As Integer = 1
        Dim num5 As Integer = Strings.Len(Text)
        For k As Integer = arg_C4_0 To num5
            array(k - 1).Dispose()
        Next
        graphics.Dispose()
        Return bitmap
    End Function

The code is working with a file containing fonts.


Solution

  • My best guess is that you're trying to find the data for a font character at a specific offset within a file, based on the character code.

    You could try something like:

    UnicodeFonts.mStream.Seek(CLng(c) * 4), 0)
    

    I've chosen 4 here, on the assumption whatever you're looking for is in a table of 4-byte integers.

    The change here is that I'm converting c to a number using CLng(c) first, then multiplying this by another number, instead of a string.