Hallo
Ich habe folgendes Problem. Ich muss eine D5
DLL in ein D10.2 Projekt einbiden. An der D5
DLL kann ich nichts meh ändern. Die
DLL übergibt einen String (böse
Ich habe das ganze mal auf folgende Minimalkostellation zusammengestaucht um das Problem zu zeigen.
D5
DLL
(Sharemem ist als erstes in der Uses Klausel)
Delphi-Quellcode:
library Project_d5;
uses
sharemem,
SysUtils,
Classes;
function ExportString: string; export; forward;
function ExportString: string;
begin
result := 'Hallo';
end;
exports
ExportString;
end.
in D10.2:
Delphi-Quellcode:
unit DLL_string;
interface
uses
sharemem,
Winapi.Windows,
Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs,
Vcl.StdCtrls;
function ExportString: ansistring stcall;
external '
xxx\Project_d5.dll';
var
Form1: TForm1;
implementation
procedure TForm1.FormCreate(Sender: TObject);
var a: shortstring;
begin
a := Exportstring;
showmessage(a);
end;
Beim Start wird zwar "Hallo" agezeigt, aber wenn die die Prozedur FormCreate verlassen wird, wirft das Programm eine
Exception.
Hat jemand eine Idee, wie ich Strings aus D5 DLLs sauber einlesen kann?
PS. Falls das klappen sollte steht mir auch noch die Aufgabe bevor, StringLists aus D5 weier zu verarbeiten
Gruß Klaus