Ну что же придется в который раз объяснять элементарные вещи
Посмотри на коды твоих двух процедур
procedure TForm1.Timer1Timer(Sender: TObject);
var
a:integer;
config:tinifile; // Обрати внимание на эту переменную
begin
config:=TiniFile.Create(extractfilepath(paramstr(0))+'test.ini');
a:=config.ReadInteger('conf','form2',0);
if a=1 then begin
form3.AlphaBlendValue:=255;
form1.Visible:=false;
end
else begin
form2.visible:=true;
form1.Visible:=false;
end;
timer1.Enabled:=false;
end;
procedure TForm2.Button1Click(Sender: TObject);
var
config:tinifile; // И на эту переменную
begin
config.writeinteger('conf','form2',1);
timer1.Enabled:=true;
end;
И так в первом случае ты объявляешь локальную переменную (надеюсь ты знаешь что это)
и в коде ты ее инициализируешь
config:=TiniFile.Create(extractfilepath(paramstr(0))+'test.ini');
И у тебя все прекрасно работает
Теперь вспоминаем что локальные переменные доступны только тем процедурам и функциям в которых они используются. А теперь посмотри что ты делаешь во второй процедуре- ты снова объявляешь переменную с таким же именем и типом НО она ни как не связана с ервой твоей переменной и дальше ты пишешь
config.writeinteger('conf','form2',1);
хотя вторая твоя переменная не инциализированна вот поэтому у тебя и возникает ошибка