EAccessViolation ----- オブジェクト宣言ミス?

解決


momo  2002-09-12 19:26:20  No: 1477

いつも参考にさせていただいております、momoと申します。
何分初心者なので、怪しい記述があると思われますが、
よろしくお願いします。

今回、下記のソースを実行したときにEAccessViolationエラーが出てる
のですが、フォーム上でExcelApplicationオブジェクトを配置していたとき
には起きなかったエラーだったので、フォームの無いunitファイル化した
ソースでオブジェクトの宣言ができていないのかなと漠然と思っております。
アドバイスを頂けたらと思います。
以下ソースを。

--------------------------------------------------------------------
unit untInputData;

interface

uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls, Registry, Excel97, OleServer, Db, DBTables;

type
    TInputData = class(TObject)

    {エクセルのオブジェクトを宣言}
    ExcelApplication1: TExcelApplication;
    ExcelWorksheet1  : TExcelWorksheet;
    ExcelWorkbook1   : TExcelWorkbook;

private
    { Private 宣言 }

public
    { Public 宣言 }

    //データの取り込み
    function InputData (ORDER_ID: String; PORT_NO: String) : boolean;

end;

var

    InputData : TInputData;
  
implementation

uses ComObj,untDaM;

//取り込み(CSV)
function TInputData.InputData (ORDER_ID: String; PORT_NO: String) : boolean;
var
    ・
    ・
    ・  
begin

    //ExcelApplication1 := TExcelApplication.Create(self);
    ExcelApplication1:= TExcelApplication.Create(nil);

    with ExcelApplication1 do begin          ←---------- ここです  (^^;)

    Connect;
    Visible[0] := False; //エクセルの可視/不可視

    //ファイルオープン
    Workbooks.Open('\\Yoshida\Project1\センコー\2 ソース\FrmInput\SampleData.xls',
                    EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,
                    EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,0);

    ExcelWorkbook1.ConnectTo(ActiveWorkbook as _workbook);
    ExcelWorksheet1.ConnectTo(ExcelWorkbook1.activesheet as _worksheet);
    ExcelSheet := ExcelWorkbook1.activeSheet;


にしの  2002-09-13 03:28:10  No: 1478

こちらでは問題なく動いているようです。
確認ですが、TInputData のオブジェクトは作成していますよね?


momo  2002-09-13 18:26:27  No: 1479

遅くなりました、momoです。

>type
>    TInputData = class(TObject)

この辺で実現させてたつもりだったのですが。。
的外れでしょうか。。


にしの  2002-09-13 18:29:51  No: 1480

typeにかかれているのはあくまでも「定義」です。
ちゃんと、
InputData := TInputData.Create;
としないと、InputDataの実体はありません。
InputDataがなければ、ExcelApplication1の部分も実体がないため、TExcelApplication.Create(nil)の入れ物がない状態です。


momo  2002-09-17 18:37:40  No: 1481

すいません、遅くなりました。

その通りでした。
宣言だけしてモノがないということでした。

初心者ならではのミスでした。。。

ありがとうございました。


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加