0

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;
4

1 に答える 1

0

Mathworks に相談したところ、これは不可能であることがわかりました。リリース 2012 は、この点で再び使用可能になります。

于 2012-09-25T12:06:43.593 に答える