2015-01-10 3 views
1

새 vs 프로젝트에 두 개의 vb 파일을 추가했는데 아래 코드의 마지막 줄에 문제가있는 것 같습니다. 오류가 발생합니다 : 연산자 '*'가 'Char'및 'String'유형에 대해 정의되지 않았습니다.Operator * 형식 char 및 문자열에 대해 정의되지 않았습니다.

VB에서 너무 많이 알지 못해서 누군가이 마지막 줄에서 무슨 일을하는지 설명하고 오류를 해결할 수 있습니까? = UnicodeFonts.GetCharImage (폰트, CharType.FromString (Strings.Mid (텍스트 -
어레이 (1 전)는 mStream하여 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) 

편집 *** 상기 메소드를 호출 라인이입니다 , I))) 이하의 방법에서

:

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 

코드 폰트 파일을 포함하는 작업을한다.

+3

수행 할 코드는 무엇입니까? 누군가가 Seek 명령을 오해했을 수도 있습니다 (검색 기능이 아닙니다). 실제 오류는 c를 ""로 곱한 결과입니다. 이는 의미가 없습니다. – Alan

+1

코드에서 주석을 기반으로, 나는 이것이 C#에서 번역 된 것인데,이 경우 일부 포인터 작업의 일부일 수 있습니다. – Plutonix

+1

* 지금 * 번역 된 코드의 VB 번역처럼 보입니다. 번역은 여전히 ​​... 불완전 해 보입니다. 아마도 우리가 뭘 하려는지 알았다면 ... – Plutonix

답변

2

가장 좋은 추측은 문자 코드를 기준으로 파일 내의 특정 오프셋에서 글꼴 문자의 데이터를 찾으려고한다는 것입니다. 난 당신이 4 바이트 정수의 테이블에 찾고있는 어떤 가정에서, 여기에 4를 선택한

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

:

당신은 뭔가를 시도 할 수 있습니다.

여기에서 변경 사항은 c를 먼저 CLng(c)을 사용하여 숫자로 변환 한 다음 문자열 대신 다른 숫자로 곱하는 것입니다.

+0

감사합니다. 앨런, 나는 당신이 옳을 수도 있고 위의 내 게시물을 더 많은 정보로 편집했다고 믿습니다. 코드 줄을 시험해보고 코드의 작동 방식과 작동 방식을 확인합니다. – roadmaster

+0

그것은 그대로 사용하지는 않았지만 선을 수정했으며 이제는 잘 작동합니다. 감사합니다 ... 수정 된 선이 있습니다. UnicodeFonts.mStream.Seek (CLng (AscW (c) * 4), 0) – roadmaster

1

문제는 문자와 문자열을 곱하려고하는 것입니다. c * "" 문자와 문자열은 숫자가 아니므로 곱할 수 없습니다.