У меня вопрос (если задаю не там, извините, я только зарегистрировался).
Сделал несколько TStringList в разных unit'ах. С процедурой Add проблем нет - всё работает как надо. А вот Insert почему-то не хочет, выскакивает ошибка: "list index out of bounds (1)", и ещё Free тоже не работает и тоже выскакивает ошибка.
Код:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm2 = class(TForm)
Label1: TLabel;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
CheckBox3: TCheckBox;
CheckBox4: TCheckBox;
Button1: TButton;
Button2: TButton;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
end;
var
Form2: TForm2;
ts:TStringList;
implementation
uses unit1;
procedure TForm2.Button2Click(Sender: TObject);
begin
//ts.Free;
Close;
end;
procedure check;
begin
with Form2, unit1.Form1 do
begin
Label3.Visible:=CheckBox1.Checked;
Label8.Visible:=CheckBox1.Checked;
Label4.Visible:=CheckBox2.Checked;
Label9.Visible:=CheckBox2.Checked;
Label2.Visible:=CheckBox3.Checked;
Label7.Visible:=CheckBox3.Checked;
Label1.Visible:=CheckBox4.Checked;
Label6.Visible:=CheckBox4.Checked;
end;
end;
procedure TForm2.Button1Click(Sender: TObject);
begin
check;
ts.Clear;
ts.Add(BoolToStr(CheckBox1.Checked));
ts.Add(BoolToStr(CheckBox2.Checked));
ts.Add(BoolToStr(CheckBox3.Checked));
ts.Add(BoolToStr(CheckBox4.Checked));
ts.SaveToFile('Settings\Config.cfg');
//ts.Free;
Form2.Close;
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
ts:=TStringList.Create;
if FileExists('Settings\Config.cfg')=false
then Form2.Button1Click(Sender)
else begin
ts.LoadFromFile('Settings\Config.cfg');
CheckBox1.Checked:=StrToBool(ts.Strings[0]);
CheckBox2.Checked:=StrToBool(ts.Strings[1]);
CheckBox3.Checked:=StrToBool(ts.Strings[2]);
CheckBox4.Checked:=StrToBool(ts.Strings[3]);
Form2.Button1Click(Sender);
end;
end;
end.
на Free ошибка.
Код:
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm4 = class(TForm)
LabeledEdit1: TLabeledEdit;
LabeledEdit2: TLabeledEdit;
LabeledEdit3: TLabeledEdit;
Button1: TButton;
Button2: TButton;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
end;
var
Form4: TForm4;
tar:TStringList;
implementation
procedure TForm4.Button2Click(Sender: TObject);
begin
Close;
end;
procedure TForm4.Button1Click(Sender: TObject);
begin
tar:=TStringList.Create;
tar.Clear;
if (LabeledEdit1.Text<>'') then tar.Insert(0,LabeledEdit1.Text);
if (LabeledEdit2.Text<>'') then tar.Insert(1,LabeledEdit2.Text);
if (LabeledEdit3.Text<>'') then tar.Insert(2,LabeledEdit3.Text);
tar.SaveToFile('Settings\Tarif.cfg');
//tar.Free;
end;
end.
Тут Insert и Free не работают.