p := 0; k := 0; ini.ReadInteger('mon', '10', p); // возвращает p = 1000 k := strtoint(edit11.Text); // edit11.Text = 12 p := p + k; ini.WriteString('mon', '10', inttostr(p)); //по идее записаться должно 1012
The problem is that writing to the ini-file is done without adding variables, that is, 1000.
Help to understand, please.
Added.
procedure tform1.FormCreate(Sender: TObject); begin ini := TIniFile.Create('./set.ini') // ini.WriteString('mon', '10', '7531'); работает отлично, но после //этого значение не изменяется при новом вводе end; procedure tform1.Button1Click(Sender: TObject); var p,k:i integer; begin p := 0; k := 0; ini.ReadInteger('mon', '10', p); k := strtoint(edit11.Text); p:= p + k; ini.WriteString('mon', '10', inttostr(p)); end; procedure tform1.FormClose(Sender: TObject); begin ini.Free; end.
In general, such a code.
Added.
I tried your way, that's what happened:
procedure TForm2.Button7Click(Sender: TObject); var po, ki, toc: integer; begin if edit6.Text <> '' then begin po := 0; ki := 0; ini := TIniFile.Create('./settings.ini'); ini.ReadInteger('Купюры', '5000', po); ini.Free; ki := strtoint(edit6.Text); toc := po + ki; ini := TIniFile.Create('./settings.ini'); ini.WriteString('Купюры', '5000', inttostr(toc)); ini.Free end else begin MessageDlg('Сначала введите количество купюр.', mtError, [mbOk], 0); edit6.Clear; edit6.SetFocus; end; if edit7.Text <> '' then begin po := 0; ki := 0; ini := TIniFile.Create('./settings.ini'); ini.ReadInteger('Купюры', '1000', po); ini.Free; ki := strtoint(edit7.Text); toc := po + ki; ini := TIniFile.Create('./settings.ini'); ini.WriteString('Купюры', '1000', inttostr(toc)); ini.Free end else begin MessageDlg('Сначала введите количество купюр.', mtError, [mbOk], 0); edit7.Clear; edit7.SetFocus; end; if edit8.Text <> '' then begin po := 0; ki := 0; ini := TIniFile.Create('./settings.ini'); ini.ReadInteger('Купюры', '500', po); ini.Free; ki := strtoint(edit8.Text); toc := p + k;//разобрался, надо было изменить переменные на po и ki ini := TIniFile.Create('./settings.ini'); ini.WriteString('Купюры', '500', inttostr(toc)); ini.Free end else begin MessageDlg('Сначала введите количество купюр.', mtError, [mbOk], 0); edit8.Clear; edit8.SetFocus; end; if edit9.Text <> '' then begin po := 0; ki := 0; ini := TIniFile.Create('./settings.ini'); ini.ReadInteger('Купюры', '100', po); ini.Free; ki := strtoint(edit9.Text); toc := po + ki; ini := TIniFile.Create('./settings.ini'); ini.WriteString('Купюры', '100', inttostr(toc)); ini.Free end else begin MessageDlg('Сначала введите количество купюр.', mtError, [mbOk], 0); edit9.Clear; edit9.SetFocus; end; if edit10.Text <> '' then begin po := 0; ki := 0; ini := TIniFile.Create('./settings.ini'); ini.ReadInteger('Купюры', '50', po); ini.Free; ki := strtoint(edit10.Text); toc := po + ki; ini := TIniFile.Create('./settings.ini'); ini.WriteString('Купюры', '50', inttostr(toc)); ini.Free end else begin MessageDlg('Сначала введите количество купюр.', mtError, [mbOk], 0); edit10.Clear; edit10.SetFocus; end; if edit11.Text <> '' then begin po := 0; ki := 0; ini := TIniFile.Create('./settings.ini'); ini.ReadInteger('Купюры', '10', po); ini.Free; ki := strtoint(edit11.Text); toc := po + ki; ini := TIniFile.Create('./settings.ini'); ini.WriteString('Купюры', '10', inttostr(toc)); ini.Free end else begin MessageDlg('Сначала введите количество купюр.', mtError, [mbOk], 0); edit11.Clear; edit11.SetFocus; end; ini := TIniFile.Create('./settings.ini'); label18.Caption := '5000 = ' + ini.ReadString('Купюры', '5000', '') + ' шт.'; label19.Caption := '1000 = ' + ini.ReadString('Купюры', '1000', '') + ' шт.'; label20.Caption := '500 = ' + ini.ReadString('Купюры', '500', '') + ' шт.'; label21.Caption := '100 = ' + ini.ReadString('Купюры', '100', '') + ' шт.'; label22.Caption := '50 = ' + ini.ReadString('Купюры', '50', '') + ' шт.'; label23.Caption := '10 = ' + ini.ReadString('Купюры', '10', '') + ' шт.'; ini.Free; end;
actually nothing happened. moreover, the problem remains (it does not add the amount, but only the value entered into the edit), so one was added - no matter how many entered into edit8, the file 500 = 0 is still
I am learning, so do not judge strictly my code.
waiting for help! :)
ini.Free
going on or something else? Does the same work if, afterini.Create
you do not doReadInteger
, and immediatelyWriteString
with some special number, such as7531
? - RodionGork