Avatar billede fun22 Nybegynder
17. april 2003 - 18:14 Der er 13 kommentarer og
1 løsning

ReadSectionValues

Hej

Er der ikke en funktion som denne: ReadSectionValues som kun tager value og ikke section??? Jeg har prøvet ReadValue og det virker ikke.
Avatar billede dkn Nybegynder
17. april 2003 - 19:54 #1
hvis vi taler ini kan du vel bare køre en read section og så copier fra den.
Ikke testet:

var
ini:tinifile;
st:Tstringlist;
i:integer;
begin
ini:=tinifile.Create('');

st := Tstringlist.Create;
ini.ReadSection('SECTION', st);

for I := 0 to st.count-1 do
st.Strings[I] := copy(st.Strings[I], pos('=', st.Strings[I])+1, length(st.Strings[I]));

showmessage(st.Text);
end;
Avatar billede fun22 Nybegynder
17. april 2003 - 20:13 #2
nope, virker ikke.
Men det skal også passe sammen med denne her:

ShellExecute(Handle,'open',PChar( ),pchar(''),pchar(''),SW_SHOWNORMAL);

Det skal være sådan at når man trykker op den kanp hvor overstående kode er i så udfører den det der står i value
Avatar billede fun22 Nybegynder
17. april 2003 - 20:15 #3
lige nu bruger jeg:
IniFile:= TInifile.create(ExtractFilePath(ParamStr(0))+'gamecontrole2.ini');
try
IniFile.ReadSectionValues('List',FlatListBox1.Items);
finally
    IniFile.Free;
end;
i onload og:
ShellExecute(Handle,'open',PChar( FlatListBox1.Items.Values[FlatListBox1.Items.names[FlatListBox1.ItemIndex]]),pchar(''),pchar(''),SW_SHOWNORMAL);
I knappens onclick
Avatar billede cooljay2000 Nybegynder
17. april 2003 - 23:32 #4
var
ini:tinifile;
st:Tstringlist;
i:integer;
begin
st := Tstringlist.Create;
IniFile:= TInifile.create(ExtractFilePath(ParamStr(0))+'gamecontrole2.ini');
try
IniFile.ReadSectionValues('List',st);
for I := 0 to st.count-1 do
FlatListBox1.Items.add( st.Values[I]);
finally
    IniFile.Free;
    St.free;
end;
end;

og:
ShellExecute(Handle,'open',PChar( FlatListBox1.Items[FlatListBox1.ItemIndex]),pchar(''),pchar(''),SW_SHOWNORMAL);
Avatar billede fun22 Nybegynder
18. april 2003 - 09:47 #5
FlatListBox1.Items.add(st.Values[I]);

Incombatible string and integer
Avatar billede cooljay2000 Nybegynder
18. april 2003 - 14:32 #6
FlatListBox1.Items.add(st.Values[st.Names[I]]); //eller st.Keys et eller andet
Avatar billede fun22 Nybegynder
21. april 2003 - 13:02 #7
Lige to ting til:
1. Kan man godt give section en anden måde end 0, 1, 2, 3 osv. alså nu ser min inifil sådan her ud:

[List]
0=dfsdfsd
1=sdfsdf
osv.

Kan man ikke få den til at se sådan her ud?

[List]
hej=dsfsdfsdf
dav=dfssdf
osv.

2. cooljay kan man ikke ændre din kode så den tager sectionen i stedet for value, og at den også virker på samme måde?? Alså kun hvis 1'eren kan lade sig gøre.
Avatar billede fun22 Nybegynder
22. april 2003 - 14:52 #8
???
Avatar billede cooljay2000 Nybegynder
22. april 2003 - 15:05 #9
1. Jo!

2. Jeg forstår ikke hvad du mener!
Avatar billede fun22 Nybegynder
22. april 2003 - 15:35 #10
Hvis jeg har det sådan her:

hej=dsfsdfsdf

Så viser den jo 'dsfsdfsdf' det jeg gerne vil er at den viser 'hej' i stedet for.
Avatar billede cooljay2000 Nybegynder
22. april 2003 - 15:52 #11
Som jeg svarede på et tidligere spørgsmål:
ini filer og listbox
...
Du skal blot have en tstringlist med indholdet af ini-filen og så nøjes med at vise navnet (tstringlist.names) i listboksen. Så kan slå programmet op i din egen
tstringlist på navnet...

unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Inifiles, shellapi;

type
  TIntArray = array of integer;

  TForm1 = class(TForm)
    ListBox1: TListBox;
    procedure ListBox1DblClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    st: tstringlist;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ListBox1DblClick(Sender: TObject);
begin
  ShellExecute(Handle, 'open', PChar(st.Values[ListBox1.Items[ListBox1.ItemIndex]]), pchar(''), pchar(''), SW_SHOWNORMAL);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  IniFile: TInifile;
  i: integer;
begin
  st := TStringList.Create;
  IniFile := TInifile.create('c:\my.ini');
  try
    IniFile.ReadSectionValues('List', st);
  finally
    IniFile.Free;
  end;
  for i := 0 to st.Count - 1 do
    ListBox1.Items.Add(st.names[i]);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  st.free;
end;

end.
Avatar billede fun22 Nybegynder
22. april 2003 - 16:00 #12
Jeg går ud fra at det skal se sådan her ud:

procedure TForm1.ListBox1DblClick(Sender: TObject);
var
st:Tstringlist;
begin
  ShellExecute(Handle, 'open', PChar(st.Values[FlatListBox1.Items[FlatListBox1.ItemIndex]]), pchar(''), pchar(''), SW_SHOWNORMAL);
end;

og

procedure TForm1.FormCreate(Sender: TObject);
var
  IniFile: TInifile;
  i: integer;
  st:Tstringlist;
begin
  st := TStringList.Create;
  IniFile := TInifile.create('c:\my.ini');
  try
    IniFile.ReadSectionValues('List', st);
  finally
    IniFile.Free;
  end;
  for i := 0 to st.Count - 1 do
    ListBox1.Items.Add(st.names[i]);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  st.free;
end;

Men den kommer med en fejl når jeg dblklikker på listboxen:

access violation. hvad skal jeg gøre ved det??
Avatar billede fun22 Nybegynder
22. april 2003 - 16:01 #13
Det var bare mig der havde lavet en fejl.
Avatar billede fun22 Nybegynder
06. maj 2003 - 07:59 #14
cooljay2000 >> Jeg får et "lille" problem. Det virker godt nok men, man skal genstarte programmet, ellers så når man starter aplicationen går den bare til den mappe hvor exe filen ligger. Kan man ikke gøre noget så man er fri for at genstarte programmet??
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester