EXEと同じフォルダから特定のテキストファイルを取得するには?

解決


太郎衛門  2003-12-11 20:52:48  No: 6069

実行ファイルと同じフォルダから、def.txtというファイルを取得して、読み込ませたいのですが、どうしたらよろしいのでしょうか?


にしの  2003-12-11 20:55:36  No: 6070

Application.ExeNameに、アプリケーションのフルパスが入っています。
ExtractFilePathを使うと、例えば
C:\project\test\abc.exe
であれば、
C:\project\test\
を返します。
詳しくはヘルプを参照。
ExtractFilePathの他にも、便利な関数がたくさんあります。


通りすがり  2003-12-11 20:58:40  No: 6071

FileName := ExtractFilePath(ParamStr(0))+'def.txt';
とか
FileName := ExtractFilePath(Application.ExeName)+'def.txt';
とかでしょうか。


太郎衛門  2003-12-12 04:41:19  No: 6072

ありがとうございます。取得できました。
その代わり別の問題が発生したので、質問よろしいでしょうか。

var
  Form1: TForm1;
  def_file: Tstringlist;
  implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
FileName :string;
begin
FileName := ExtractFilePath(Application.ExeName)+'def.txt';
def_file.LoadFromFile(filename);
end;

end.

と記述し、コンパイルしたら
def_file.LoadFromFile(filename);
の部分でEaccessViolationクラスの例外を生成しましたとエラーが出てしまいます。原因が、まったく分かりません。どうすればいいのでしょうか。


Halbow  2003-12-12 04:58:06  No: 6073

Halbow です。

> def_file.LoadFromFile(filename);
> の部分でEaccessViolationクラスの例外を生成しましたとエラーが出てしまいます。

def_file は TStringLIst クラスの変数ですから、コンストラクタをつかって
インスタンスを作成しないと使えません。

procedure TForm1.FormCreate(Sender: TObject);
var
  FileName :string;
begin
  FileName := ExtractFilePath(Application.ExeName)+'def.txt';
  def_file := TStringList.Create; // ここで生成
  try
    def_file.LoadFromFile(filename);
    // ここで def_file を使った処理
  finally
    def_file.Free; // ここで破棄
  end;
end;


太郎衛門  2003-12-12 05:02:59  No: 6074

Halbowさんありがとうございます。
無事解決しました。


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

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






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