我正在將Delphi 5源代碼移植到Delphi 10 Berlin。我的項目中有很多導出函數的DLL。這些函數是從其他DLL中調用的。有兩個DLL我不能遷移到Delphi 10,但我仍然想在我的程序中使用它們。 下面一個例子:在不同的Delphi版本之間發送TStringList
function DoSomething(aList: TStringList): Boolean; external 'Delphi5.dll';
我想從我的德爾福10項目稱爲 「DoSomething的」。但問題是,Delphi 5中的TStringList與Delphi 10 Berlin(unicode)中的TStringList不兼容。它會工作,當DoSomething會有一個像「aString:AnsiString」的參數,因爲AnsiString在Delphi 5中與「字符串」兼容。
有沒有一種方法可以在這兩個Delphi版本之間發送列表?也許是TList或其他什麼?當然,我可以發送一個帶有字符串之間的分隔符的AnsiString來模擬一個列表,但我想要一個乾淨的解決方案,因爲我有很多這些導出函數。
謝謝!
該設計是主要缺陷。你永遠不應該永遠不會跨DLL邊界傳遞對象。如果這取決於我,我會完全重新設計這個來傳遞原始數據。也許甚至可以沿着FindFirst/FindNext的方向。 –
如果您的程序曾經工作過,那只是偶然。您需要重新設計界面。 –
更何況,你使用錯誤的調用約定。 –