Показать сообщение отдельно
  #6  
Старый 08.04.2012, 19:08
Аватар для R-18Rus
R-18Rus R-18Rus вне форума
Новичок
 
Регистрация: 08.04.2012
Сообщения: 68
Версия Delphi: Delphi 7
Репутация: 127
По умолчанию

У меня вопрос (если задаю не там, извините, я только зарегистрировался).

Сделал несколько 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 не работают.
__________________
Может быть, я и левша, но я всегда прав!
Ответить с цитированием