从.FRX文件(专有VB二进制格式)读取信息到Java项目?

时间:2015-01-16 16:50:44

标签: java c# vb6 wrapping file-conversion

在我的工作中,我目前正在开发一个庞大的VB6到C#应用程序移植项目。我目前正在用Java完成一个设计器项目,为翻译的VB表单创建设计器文件。

我遇到的问题是图片和文字太大而无法放入VB表格中,因此存储在FRX文件中。我试图找到一种方法,不必在文本文件中手动编码这些数据,因为需要处理不断添加到VB项目中的新表单,因此不断为它们手动编码文本文件是不切实际的。

我知道VB6中的代码从FRX文件加载图片,并且相信我可以编写一个C#程序,它使用十六进制值从FRX文件中获取长文本,然后让Java加载一些C ++用于包装C#代码的DLL,但这看起来相当繁琐。

更简单的IMO将是使用Java的二进制读取方法,但是在尝试这样做时它会一直返回错误的字节。它可能(我认为)由于Java使用修改后的UTF-8编码,但我不完全确定。

我的问题是,有没有其他可行的方法可以让Java从FRX文件中读取信息而无需更复杂的解决方案?或者有没有人遇到类似的问题,并有一个更实际的解决方案?

非常感谢任何帮助!


问题更新

我现在有一个简单的C#程序,我认为它成功运行,并且我试图强制Java加载C ++ DLL来包装代码。这可能是最简单的解决方案,但我打开问题,因为我觉得必须有一个更简单的方法。 C#程序的示例代码:

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;

    public class GetFromFRX
    {
        public string getFromFRX(string filename, int pos)
        {
            StringBuilder buffer = new StringBuilder();
            using (BinaryReader b = new BinaryReader(File.Open("frmResidency.frx", FileMode.Open)))
            {
                try
                {
                    b.BaseStream.Seek(pos, SeekOrigin.Begin);
                    int length = b.ReadInt32();

                    for (int i = 0; i < length; i++)
                    {
                        buffer.Append(b.ReadChar());
                    }
                }
                catch (Exception e)
                {
                    return "Error obtaining resource\n" + e.Message;
                }

            }
            return buffer.ToString();
        }
    }

0 个答案:

没有答案