Ich habe es geschafft.
Die Variablen im record habe ich von string in PChar geändert.
Delphi-Quellcode:
rec_displaydevice = record
DeviceName:PChar;
DeviceString:PChar;
Monitorname:PChar;
end;
var displaydevice:array[1..4] of rec_displaydevice;
Das Kopieren in den Record geht jetzt so:
Delphi-Quellcode:
displaydevice[NumberDisplayDevice].DeviceName:=StrAlloc(32);
StrPCopy(displaydevice[NumberDisplayDevice].DeviceName,Info.DeviceName);
displaydevice[NumberDisplayDevice].DeviceString:=StrAlloc(128);
StrPCopy(displaydevice[NumberDisplayDevice].DeviceString,Info.DeviceString);
AdapterName := StrAlloc(SizeOf(Info.DeviceName));
StrCopy(AdapterName, Info.DeviceName);
EnumDisplayDevices(AdapterName, 0, Info, 0);
displaydevice[NumberDisplayDevice].Monitorname:=StrAlloc(128);
StrPCopy(displaydevice[NumberDisplayDevice].Monitorname,Info.DeviceString);
Ich kann nur hoffen, dass StrAlloc(32) bzw. StrAlloc(128) richtig ist, dadurch dass Info.DeviceName ein array[0..31] of Char bzw. Info.DeviceString ein array[0..127] of Char ist.