実行時の入力からソースへの参照

解決


deldel3号  2009-04-21 06:09:42  No: 34143

また、よろしくお願い致します。
実行時の入力からソースに参照できるかという質問になります。
unit1がありフォーム1の中にedit1があります。そのTextには数字の5が
入っています。
そのunit1を実行しました。
実行してeditの中に数字の10を入力しました。
この場合プログラムを終了すると5のままになると思うのですが、
これを入力した10に変えて次回の実行は可能でしょうか?
つまり入力した値の10をそのままTextプロパティに
入れてソース自体を変更し、プログラムを終了することができるか
ということです。
自分でも何言ってるのかわかりませんが、方法としてはよくわからない
DBを使ってすることしかできませんでしょうか?


ofZ  2009-04-21 06:41:52  No: 34144

TiniFile, TMemIniFile, TRegistry, TRegIniFile
設定ファイル(*.ini)や、レジストリに保存する


Delphi大好き  2009-04-21 08:11:01  No: 34145

IniFileを使うと便利ですよ^^。
詳しくはヘルプと、以下を色々試してみてはどうでしょうか?
おまけで、Button1を押すと保存したIniファイルをMemo1に読み込むのを追加しました。
IniFileの理解になれば幸いです^^。

あと、強引にMemo2を自動保存に使ったやり方も書いてみました。
取り敢えず、凄く簡単です^^;。
お勧め出来る方法じゃないかもだけど^^;
自分は時々使ってはいますが^^;

以下は、
Memo二つ、Button一つ、Eidt二つ、  を配置します。
Edit1はIniファイルで、
Edit2はMemoコンポーネントを(強引に?)使って読み書きをします。

implementation
uses  inifiles;//←usesに登録
{$R *.DFM}

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
  inifile: tinifile;//←IniFileを使うときは宣言を忘れずに。
begin//終了時処理
  inifile := tinifile.Create(changefileext(paramstr(0), '.ini'));
  //↑上のコードの意味は、詳しくはヘルプで。  覚えると便利ですよ^^。
  inifile.writestring('edit1', 'text', edit1.Text);
  //↑INIファイルに書き込みます

  //↓iniFileを使わない方法(余りお勧めしないやり方だけど^^;取り敢えず簡単に出来ますw)
  memo2.Lines[0] := edit2.Text;//Memo2の0(1)行目にEdit2の中身をコピー
  memo2.Lines.SaveToFile(changefileext(paramstr(0), '.txt'));
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  inifile: tinifile;
begin//起動時処理
  inifile := tinifile.create(changefileext(paramstr(0),'.ini'));

  edit1.Text := inifile.readstring('edit1', 'text', '0');
  //↑Edit1に'edit1'の'text'を代入。読み込みに失敗した場合は、0を代入します。

  //↓Inifileを使わない方法
  memo2.Visible := false;//Memo2を見えなくする。
  try//読み込み開始
    memo2.Lines.LoadFromFile(changefileext(paramstr(0), '.txt'));
    edit2.Text := memo2.Lines[0]//0(1)行目を読み込む;
  except//もし読み込めなかったら0を代入。
    edit2.Text := '0';
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin//おまけ  INIファイルの中身をMemo1に表示します
  //Inifileは覚えると便利です。
  //詳しくはDelphiのヘルプと、色々設定を変えて試して見てください^^。
  memo1.Lines.LoadFromFile(changefileext(paramstr(0),'.ini'));
end;


KHE00221  2009-04-21 09:30:15  No: 34146

WritePrivateProfileString
GetPrivateProFileString
でいいやん


通りすがり  2009-04-23 00:38:42  No: 34147

ソースへの参照は実行環境にソースがないと無理だと思う。
コンパイラも無ければいけない。
テキストデータの読み書きなら TStringListなどで出来る。

FormCreateかconstructorで。場合によってはFormShowで。
with TStringList.Create do
try
  LoadFromFile(...);
  Edit1.Text:= Strings[0];
finally
  Free;
end;

FormCloseかdestructorで
with TStringList.Create do
try
  Add(Edit1.Text)
  SaveToFile(...);
finally
  Free;
end;

今後のためにも ini 使ったほうが良いとは思う。


deldel3号  2009-04-23 01:22:29  No: 34148

もとからあるソースを使用して.incファイルにデータを格納し、
無事できました。方法としてはいろいろな方法があるようで時間の
あるときにでも試してみたいと思います。ありがとうございました。


信じられない・・  2009-04-23 23:27:35  No: 34149

質問内容を見る限り、inc で解決できるとは思えません。
そもそもソースファイルがなくても exe 単体で動作しているものがどうやってソースを参照しているのでしょう?
教えてください。


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

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






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