CSharp - C# 是否有方法以编程方式将VB6格式字符串转换为. NET 格式字符串?

  显示原文与译文双语对照的内容
  • 是否有人知道对VB6格式字符串有很好的引用?
  • 有人知道从VB6格式化字符串到. NET 字符串的转换器?

我正在为. NET 移植一个大型的VB6代码库。 数据库是以数据库为中心的软件,数据库本身保存了VB6格式字符串,稍后加载并用于显示数据库中的其他数据。

我的问题是,本文的是如何移植。 然而,针对这个问题选择的答案对于我的需求是不够的。 我不舒适的依赖于专门设计为向后兼容于我被专门雇用的语言的库。

时间:

VB6使用的格式化例程实际上是内置到操作系统中的。 Oleaut32.dll,的VarFormat() 功能,它已经存在 15年了,考虑到代码依赖于多少代码。 试图将格式字符串转换为. NET 复合格式字符串是一个没有前途的任务。 仅使用操作系统功能。

下面是使用链接线程中的示例执行这里操作的示例程序:


using System;


using System.Runtime.InteropServices;



class Program {


 static void Main(string[] args) {


 Console.WriteLine(Vb6Format("hi there",">"));


 Console.WriteLine(Vb6Format("hI tHeRe","<"));


 Console.WriteLine(Vb6Format("hi there",">!@@@... not @@@@@"));


 Console.ReadLine();


 }



 public static string Vb6Format(object expr, string format) {


 string result;


 int hr = VarFormat(ref expr, format, 0, 0, 0, out result);


 if (hr!= 0) throw new COMException("Format error", hr);


 return result;


 }


 [DllImport("oleaut32.dll", CharSet = CharSet.Unicode)]


 private static extern int VarFormat(ref object expr, string format, int firstDay, int firstWeek, int flags,


 [MarshalAs(UnmanagedType.BStr)] out string result);


}



...