OLEオブジェクトを使用してDelphiXEからMATLAB関数を呼び出そうとしています。この関数には2つの文字列パラメータがあります。MATLAB(2008a)自体でMATLABコードを試してみると、すべて問題ありませんが、何らかの理由で、DelphiXEからMATLABへの入力パラメーターを取得できません。どうすればこれを達成できますか?
私のコードでわかるように、ワークスペースで変数を設定することも試みました。これは私にとって許容できる回避策です。
function Matlab_DoIt(const aInput, aOutput: string): string;
var
vMatlab, vInput: Variant;
begin
vInput := aInput;
vMatlab := CreateOleObject('matlab.application');
vMatlab.visible := 1;
vMatlab.Execute('cd c:\localdata\LSCT\Matlab');
// vMatlab.Execute('input=' + aInput); // nothing happens
// vMatlab.PutCharArray('input', 'base', aInput); // nothing happens
// vMatlab.PutCharArray('input', 'base', vInput); // bad variable type error
// vMatlab.PutCharArray('input', 'global', aInput); // nothing happens
// vMatlab.PutWorkspaceData('input', 'base', aInput); // nothing happens
// vMatlab.PutWorkspaceData('input', 'base', vInput); // bad variable type error
// vMatlab.PutWorkspaceData('input', 'global', aInput); // nothing happens
// vMatlab.Execute(Format('LSCT_tool_run(%s,%s)', [aInput, aOutput])); // nothing happens
// vMatlab.Execute(Format('LSCT_tool_run(''%s'',''%s'')', [aInput, aOutput])); // nothing happens
// vMatlab.Execute(Format('LSCT_tool_run("%s","%s")', [aInput, aOutput])); // nothing happens
vMatlab.Execute('LSCT_tool_run'); // creates the file, but it is empty
end;
MATLABコードは、次の2つのパラメーターを含むtxtファイルを書き込みます。
function LSCT_tool_run(input_path, output_path)
diary ([c:\localdata\LSCT\Matlab\MyFile.txt]);
diary on;
% fprintf(input); Only when I try to set the input variable.
fprintf(inpput_path);
fprintf(output_path);
diary off;