Ничего, что out-параметр - это
выходной параметр, а вы в него пытаетесь значение передать?
function CheckXML(aXML: PChar; out aResult: PChar): PChar;
var
R1: LongInt;
R2: LongInt;
aLength: LongInt;
XML: String;
Res: Pointer;
begin
// ShowMessage('CheckXML');
aLength := Length(aXML);
SetLength(XML, aLength);
XML:=String(aXML);
R1 := ExecDataProc(':KB', @XML[1], aLength, Res, 0);
// ... в описании ExecDataProc должно быть написано, как работать с Res и как его освободить, когда он больше не нужен
Result := '-1';
end;