実行ファイルと同じフォルダから、def.txtというファイルを取得して、読み込ませたいのですが、どうしたらよろしいのでしょうか?
Application.ExeNameに、アプリケーションのフルパスが入っています。
ExtractFilePathを使うと、例えば
C:\project\test\abc.exe
であれば、
C:\project\test\
を返します。
詳しくはヘルプを参照。
ExtractFilePathの他にも、便利な関数がたくさんあります。
FileName := ExtractFilePath(ParamStr(0))+'def.txt';
とか
FileName := ExtractFilePath(Application.ExeName)+'def.txt';
とかでしょうか。
ありがとうございます。取得できました。
その代わり別の問題が発生したので、質問よろしいでしょうか。
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 です。
> 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;
Halbowさんありがとうございます。
無事解決しました。
ツイート | ![]() |