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]