我正在尝试编写一个 VB6 dll 的替代品,该 DLL 被 c#.net 中的另一个 VB6 引用。
目前我们只能致力于后者,并且我在这方面取得了一些成功。除非我遇到了问题。
我的枚举被破坏,导致它被称为“A1BACSTrans_BACSAU”,而不是预期的“BACSAU”
遗留代码(显然)将不再编译。
这可以预防吗?如果是这样,怎么办?我听说过修改 IDL,但我在其中看不到对损坏名称的引用,只有未损坏的名称......
先感谢您!
我正在针对新的(呃)Sql Server 2008 环境重写一堆旧的、写得不好的 Oracle 查询。他们使用老式的 Oracle 连接语法,例如
select <whatever>
from Table1, Table2, Table3
where Table1.T1ID = Table2.T2ID -- old Oracle inner join
and Table2.T3ID = Table3.T3ID (+) -- old Oracle left join (I think)
Run Code Online (Sandbox Code Playgroud)
除了复杂得多。在这些事情中存在大量的混合连接、大量的嵌套以及大量的视图堆积在视图上。这并不漂亮。两台服务器之间的数据也不同,这使得测试变得很麻烦。
我认为最简单的复制方法是使查询在 Sql Server 中看起来尽可能相似(即使用相同样式的联接),然后在我确信它们是之后执行大量清理工作两者肯定都在做同样的事情,而且我没有在错误的地方加入(是的,我暂时设置了兼容模式来支持旧的加入)。
我知道 T-Sql 中内部联接的“旧”语法是
select <whatever>
from T1, T2
where T1.ID = T2.ID
Run Code Online (Sandbox Code Playgroud)
但是左外连接或右外连接的“旧”语法是什么?
任何推荐的清理"标头意大利面条"的做法都会导致编译时间极慢(Linux/Unix)?
与GCC有"#pragma once"等价吗?
(发现有关此事的相互矛盾的消息)
谢谢.
我正在使用一个旧表,其中包含varchar(40)字段.我希望它可以在该字段中插入更多字符,所以我想增加它的长度.
在增加长度之前,我是否应该考虑可能产生的负面影响?
我坐在那里需要将大量遗留的C代码转换为项目的Ruby.
我在网上看过Ruby to C的翻译,但不是相反.是否有一种简单的方法可以解决这个特殊问题?
我有一个旧的C++库,专为在单线程环境中使用而设计.
该库公开了用于初始化的接口,这些接口改变了库的内部数据结构,以及用法,它只读取数据并进行计算.
我的目标是在Windows多线程应用程序中使用此库,其中不同的线程调用使用不同数据初始化的dll实例.
假设重写dll以允许多线程将是禁止的,是否有一些方法让DLL的多个实例存在于同一进程中,具有单独的内存空间,或通过其他方式获得类似的结果?
我在C#中有一个很大的遗留代码.
我需要对其进行分析,以便推荐在程序中构建一些新功能的最佳方法.
是否有任何工具可以实现快速分析,并且能够以清晰的方式显示类关联,这有助于我尽快进入这个旧逻辑?
任何关于如何做到最好的经验故事或建议将不胜感激.
谢谢!
深入研究需要扩展的遗留项目(C++),我意识到大约有40个读/写/解析器类.它们用于以不同的文件格式(二进制,hdf5,xml,文本......)读写各种类型的数据(不同的对象); 一种类型的对象通常绑定到一种或两种文件格式.这些课程对大多数人来说都不了解其他课程.接口和继承显然是作者所不知道的,以及设计模式.
在我看来,这是一个可怕的混乱.另一方面,我不确定如何处理这种情况.我至少会提取接口.我还想看看我是否可以在某些父类中使用公共代码,例如hdf5读取器/写入器的特定代码.我还认为抽象的工厂模式可以提供帮助,但是我从读者那里得到的对象是完全不同的.
你会如何处理这种情况?你会如何设计课程?你会使用什么设计模式?你会把阅读和写作部分分开吗?
我已经得到了有条件的预处理如一些旧代码#ifdef,并#else在那里我发现使用的__attribute__宏.我做了一个快速研究,发现它是特定于GNU编译器的.我必须使用MSVC10编译器在Visual Studio 2010中使用此遗留代码,显然它在任何地方都在抱怨它看到属性((未使用)),即使它受到s #ifndef和#ifdefs的保护.一个例子是:
#ifdef __tone_z__
static const char *mcr_inf
#else
static char *mcr_inf
#endif
#ifndef _WINDOWS
__attribute__(( unused )) % this is causing all the problem!!
#endif
= "@(#) bla bla copyright bla";
#ifdef __tone_z__
static const char *mcr_info_2a353_id[2]
#else
static char *mcr_info_2a353_id[2]
#endif
__attribute__(( unused )) = { "my long copyright info!" } ;
Run Code Online (Sandbox Code Playgroud)
我真的很难理解它是否是非常糟糕的代码,或者只是我的误解.如何使用此__attribute__()指令避免常见的编译器和链接器错误?我已经开始收到C2061错误(缺少标识符/未知).我有所有必要的头文件,没有什么遗漏,可能是除了GNU编译器(我不想要!!).
此外,;当我在Windows中使用代码时,似乎行尾字符也被搞砸.... argh ....我的意思是UNIX行尾和Windows EOL如何在不使用此代码的情况下使用此代码修改正文....我可以在我的属性表中定义_WINDOWS thingy,但不能自动调整EOL字符识别.
非常感谢!谢谢.
legacy-code ×10
c# ×2
c++ ×2
c ×1
com ×1
file-format ×1
gcc ×1
interop ×1
java ×1
join ×1
macros ×1
mysql ×1
parsing ×1
ruby ×1
sql-server ×1
translation ×1
varchar ×1
vb6 ×1
windows ×1