Jeg er igang med at lave et program hvor man kan tilføje et navn og en sti til en inifil. jeg vil gerne have det sådan at når man tilføjer skal den gemme stien i en INI fil og tilføje navnet i en listbox. Når man så dobbeltklikker på navnet i listboxen, skal den loade den sti i INI filen som passer til.
Lige nu har jeg lavet en if-else sætning, som tjekker hvor mange items der er i listboxen og så finder den korrekte variabel at skrive til.
Problemet er bare at når jeg tilføjer nr 2. navn i listboxen, overskriver den, den gamle og overskriver også INI filen.
Når man dobbeltklikker på den i listboxen skriver den:
"List index out of bounds(1)".
Hvis der er nogen der gider at ændre min kode så den gør det rigtigt så får i 50 point. 
Jeg håber at i forstod hvad jeg mente for det var lidt svært at skrive det.
Det skal lige siges at min kode nok er meget uoverskulig men jeg håber i kan finde vej i den, ellers kan i bare spørge.
Form1:
unit prog2;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ActnList, ExtActns, Shellapi;
type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Button1: TButton;
    ActionList1: TActionList;
    ListControlDeleteSelection1: TListControlDeleteSelection;
    Action1: TAction;
    
    procedure Button1Click(Sender: TObject);
    procedure ListBox1DblClick(Sender: TObject);
  private
  public
    sti1,sti2,sti3,sti4,sti5,sti6 : String;
  end;
var
  Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Form2.Show;
end;
var
nr:integer;
procedure TForm1.ListBox1DblClick(Sender: TObject);
begin
nr := listbox1.Items.count;
 if nr = 0 then
 begin
        if listbox1.Selected[0] then
        begin
         ShellExecute(handle, 'open', PChar(sti1), nil, nil, SW_SHOW);
        end;
  end
  else if nr = 1 then
  begin
        if listbox1.Selected[1] then
        begin
         ShellExecute(handle, 'open', PChar(sti2), nil, nil, SW_SHOW);
        end;
  end
  else if nr = 2 then
  begin
        if listbox1.Selected[2] then
        begin
         ShellExecute(handle, 'open', PChar(sti3), nil, nil, SW_SHOW);
        end;
  end
  else if nr = 4 then
        begin
        if listbox1.Selected[3] then
        begin
         ShellExecute(handle, 'open', PChar(sti5), nil, nil, SW_SHOW);
        end;
  end
  else if nr = 5 then
        begin
        if listbox1.Selected[4] then
        begin
         ShellExecute(handle, 'open', PChar(sti6), nil, nil, SW_SHOW);
        end;
  end;
end;
end.
Form2:
unit Unit2;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Buttons, INIFiles;
type
  TForm2 = class(TForm)
    LabeledEdit1: TLabeledEdit;
    LabeledEdit2: TLabeledEdit;
    OpenDialog1: TOpenDialog;
    BitBtn1: TBitBtn;
    Button1: TButton;
    procedure BitBtn1Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form2: TForm2;
implementation
uses prog2;
{$R *.dfm}
procedure TForm2.BitBtn1Click(Sender: TObject);
begin
 if opendialog1.Execute then
     begin
    LabeledEdit2.Text := OpenDialog1.FileName;
    end;
end;
procedure TForm2.Button1Click(Sender: TObject);
Var
  MyINI: TINIFile; // TINIFile objektet
  PathToINIFile: String;
  nr:integer;
begin
  Form1.listbox1.Items[form1.listbox1.ItemIndex] := LabeledEdit1.Text;
  
  PathToINIFile := IncludeTrailingBackslash(ExtractFilePath(ParamStr(0)))+'shortcuts.ini';
  {Skab objektet}
  MyINI := TINIFile.Create(PathToINIFile);
  nr := form1.listbox1.Items.count;
 if nr = 0 then
  begin
  form1.sti1 := LabeledEdit2.Text;
  //procedure WriteString(const Section, Ident, Value: String);
  MyINI.WriteString('1', 'sti', form1.sti1);
  end
  else if nr = 1 then
  begin
   form1.sti2 := LabeledEdit2.Text;
        //procedure WriteString(const Section, Ident, Value: String);
  MyINI.WriteString('2', 'sti', form1.sti2);
  end
  else if nr = 2 then
  begin
   form1.sti3 := LabeledEdit2.Text;
       //procedure WriteString(const Section, Ident, Value: String);
  MyINI.WriteString('3', 'sti', form1.sti3);
  end
  else if nr = 3 then
  begin
     form1.sti4 := LabeledEdit2.Text;
        ///procedure WriteString(const Section, Ident, Value: String);
  MyINI.WriteString('4', 'sti', form1.sti4);
  end
  else if nr = 4 then
  begin
        form1.sti5 := LabeledEdit2.Text;
       //procedure WriteString(const Section, Ident, Value: String);
  MyINI.WriteString('5', 'sti', form1.sti5);
  end
  else if nr = 5 then
  begin
         form1.sti6 := LabeledEdit2.Text;
        //procedure WriteString(const Section, Ident, Value: String);
  MyINI.WriteString('6', 'sti', form1.sti6);
     end;
  
MyINI.Free;
end;
end.
-----
Et liv uden PHP er et liv uden liv
[Redigeret d. 11/01-04 16:29:03 af PHP-nørden]