PWideChar und PInteger im Record geht sowieso nicht, da sonst alle Zeiger auf den selben temporären Buffer in der
DLL verweisen, der eventuell schon nicht mehr gültig ist.
Ist sichergestellt das
DLL und Anwendung den selben Speichermanager verwenden?
Sonst gibts später noch Probleme mit dem SetLength und der Freigabe des Arrays.
Delphi-Quellcode:
TDeviceInfo = record
DeviceName : WideString;
DeviceID : Integer;
end;
{...}
SetLength(DeviceInfo, 0);
Device:= 0;
case Driver of
{...}
while {...} do
begin
{Länge des Arrays erhöhen}
SetLength(DeviceInfo, Device + 1);
DeviceInfo[Device] {...};
Inc(Device);
end;