It works like this, I click on the button, it shows how many times it has, it saves it to a file, after I close the program, when I re-enter it, it saves that value, but when I press the button again, the counter is reset, how to continue the counting?

unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; type TForm1 = class(TForm) Button1: TButton; Edit1: TEdit; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; type TData = record Number: Integer; end; var Form1: TForm1; i:integer; Data: TData; F: File of TData; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); type TData = record Number: Integer; end; var Data: TData; F: File of TData; begin edit1.Text:=IntToStr(i); i:=i+1; AssignFile(F, 'C:\Data.dat'); Reset(F); Data.Number := StrToInt(Edit1.Text); Write(F, Data); CloseFile(F); end; procedure TForm1.FormCreate(Sender: TObject); begin AssignFile(F, 'C:\Data.dat'); Reset(F); Read(F, Data); Edit1.Text := IntToStr(Data.Number); CloseFile(F); end; end. 
  • one
    @ man's friend If you want to accept the answer, just click on the check mark under the palm of your hand down to the left of the answer. - Nicolas Chabanovsky

2 answers 2

 procedure TForm1.FormCreate(Sender: TObject); begin AssignFile(F, 'C:\Data.dat'); Reset(F); Read(F, Data); **i:=Data.Number;** Edit1.Text := IntToStr(Data.Number); CloseFile(F); end; 

Most likely so here. assign the value to the variable i

 procedure TForm1.Button1Click(Sender: TObject); type TData = record Number: Integer; end; var Data: TData; F: File of TData; begin edit1.Text:=IntToStr(i); i:=i+1; AssignFile(F, 'C:\Data.dat'); Reset(F); Data.Number := i;//зачем делать перевод из текста в число, ведь у тебя это число уже есть! Write(F, Data); CloseFile(F); end; 
  • thanks a lot, helped))) - man's friend
  • I have added the answer correct. Get used to not making unnecessary gestures when you already have the data. and if the plus sign helped, we don’t forget to answer to the answer - Artem
  • I need 15 points for a plus! - man's friend
  • save points :) - Artem Nov.
  • The second option resets at the touch of a button! - man's friend

Keep it simple :)

 // глобальные var Counter: integer; const FILENAME_COUNTER = 'MyCounter.txt'; ... procedure LoadCounter; var f: file of integer; begin if FileExists(FILENAME_COUNTER) then begin AssignFile(f, FILENAME_COUNTER); Reset(f); Read(f, Counter); CloseFile(f); end else Counter := 0; end; procedure SaveCounter; var f: file of integer; begin AssignFile(f, FILENAME_COUNTER); Rewrite(f); Write(f, Counter); CloseFile(f); end; ... procedure TForm1.FormCreate(Sender: TObject); begin LoadCounter; Edit1.Text := IntToStr(Counter); end; procedure TForm1.FormDestroy(Sender: TObject); begin SaveCounter; end; procedure TForm1.Button1Click(Sender: TObject); begin inc(Counter); Edit1.Text := IntToStr(Counter); end; 
  • as an option by the way :) - Artem Nov.
  • so even better - man's friend
  • Over time, will come;) - Artem Nov.