また、よろしくお願い致します。
実行時の入力からソースに参照できるかという質問になります。
unit1がありフォーム1の中にedit1があります。そのTextには数字の5が
入っています。
そのunit1を実行しました。
実行してeditの中に数字の10を入力しました。
この場合プログラムを終了すると5のままになると思うのですが、
これを入力した10に変えて次回の実行は可能でしょうか?
つまり入力した値の10をそのままTextプロパティに
入れてソース自体を変更し、プログラムを終了することができるか
ということです。
自分でも何言ってるのかわかりませんが、方法としてはよくわからない
DBを使ってすることしかできませんでしょうか?
TiniFile, TMemIniFile, TRegistry, TRegIniFile
設定ファイル(*.ini)や、レジストリに保存する
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;
WritePrivateProfileString
GetPrivateProFileString
でいいやん
ソースへの参照は実行環境にソースがないと無理だと思う。
コンパイラも無ければいけない。
テキストデータの読み書きなら 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 使ったほうが良いとは思う。
もとからあるソースを使用して.incファイルにデータを格納し、
無事できました。方法としてはいろいろな方法があるようで時間の
あるときにでも試してみたいと思います。ありがとうございました。
質問内容を見る限り、inc で解決できるとは思えません。
そもそもソースファイルがなくても exe 単体で動作しているものがどうやってソースを参照しているのでしょう?
教えてください。
ツイート | ![]() |