Hola.
Pareciera que el problema es el valor que lee del archivo 'fichero' en la variable 's' cosa que sin el archivo no es posible asegurar.
Modifiqué un poco el código (en negrita) sin alterar el funcionamiento original para que visualice el valor de 's' y puedas evaluarlo:
Código Delphi
[-]
procedure inidir;
var
s:string;
i,j:byte;
Inx: Integer;
begin
TotalCheck:=0;i:=0;
IF NOT FileExists(extractfiledir(application.exename)+'\inidir.ini') THEN exit;
assign(fichero,extractfiledir(application.exename)+'\inidir.ini');
Reset(FICHERO);
readln(fichero,s);
with Form1 do
begin
radiogroup1.itemindex:= strtoint(s);
readln(fichero,s);
CheckBox1.Checked:= StrToBool(s);
readln(fichero,s);
CheckBox2.Checked:= StrToBool(s);
readln(fichero,dirE);
readln(fichero,dirt);
readln(fichero,dirM);
edit4.text:= dirM;
readln(fichero,s);
Inx := StrToInt(s);
ShowMessage('Valor del indice: ', IntToStr(Inx));
FileListBox1.FileName := FileListBox1.Items[Inx]; readln(fichero,s);
repeat
CheckListBox1.Items.Add(copy(s,3,length(s)));
if strtoint(copy(s,0,1))=1 then
begin
CheckListBox1.Checked[CheckListBox1.count-1]:=true;
Inc(TotalCheck);
end;
readln(fichero,s);
until pos(':',s)=0;
while not eof(fichero) do
begin
CheckListBox2.Checked[i]:= StrToBool(s);
inc(i);
readln(fichero,s);
end;
close(fichero);
statusbar1.Panels[3].Text:= inttostr(TotalCheck)+'/'+inttostr(CheckListBox1.Count);
edit1.text:=dirE;
edit2.text:=dirT;
end;
end;
Si funciona, sólo elimina la línea del
ShowMessage.
Saludos.