Я переношу свой исходный код Delphi 5 в Delphi 10 Berlin. У меня есть много DLL в моем проекте, которые экспортируют функции. Эти функции вызывают из других DLL. Есть две библиотеки DLL, которые я не могу перенести на Delphi 10, но я все еще хочу использовать их в своей программе. Вот пример:Отправка TStringList между различными версиями Delphi
function DoSomething(aList: TStringList): Boolean; external 'Delphi5.dll';
Я хочу назвать "DoSomething" из моего Delphi 10 проекта. Но проблема в том, что TStringList в Delphi 5 не совместим с TStringList в Delphi 10 Berlin (unicode). Он работал бы, когда у DoSomething был бы такой параметр, как «aString: AnsiString», потому что AnsiString совместим с «string» в Delphi 5.
Есть ли способ отправить список между этими двумя Delphi-версиями? Возможно, TList или что-то еще? Конечно, я могу отправить AnsiString с разделителем между строками для имитации списка, но я хочу чистое решение, потому что у меня есть много этих экспортных функций.
Спасибо!
Дизайн сильно испорчен. Вы никогда не должны когда-либо пропускать объекты через границы DLL. Если бы это зависело от меня, я бы полностью перепроектировал это, чтобы передать необработанные данные. Возможно, даже что-то вроде «FindFirst»/'FindNext'. –
Если ваши программы когда-либо работали, это было только случайно.Вам нужно будет перепроектировать интерфейс. –
Не говоря уже о том, что вы используете неправильное соглашение о вызове. –