Avatar billede fun22 Nybegynder
14. april 2003 - 14:58 Der er 12 kommentarer og
1 løsning

ini filer og listbox

Hej

Hvordan starter jeg det markeret i en listbox?? JEg har en ini fil der ser sådan her ud:

[List]
1=c:\programmer\...

Og så vil jeg gerne have at når jeg trykker i min listbox på den der har id 1 så skal den starte det der står ud for 1 tallet i ini filen.

Hvordan gør jeg det??
Avatar billede cooljay2000 Nybegynder
14. april 2003 - 16:41 #1
Slå TIniFile op i hjælpen og brug ReadSectionValues('List', ListBox1.Items) til at læse værdierne ind i din TListBox.
Avatar billede fun22 Nybegynder
14. april 2003 - 17:23 #2
kan du så ikke lige fortælle mig hvad der er galt her??

procedure TForm1.FlatButton1Click(Sender: TObject);
var
  AppIni: TIniFile;
begin
ShellExecute(Handle,'open',PChar(AppIni.ReadSection('List', FlatListBox1.Items)),pchar(''),pchar(''),SW_SHOWNORMAL);
AppIni.Free;
end;
Avatar billede fun22 Nybegynder
14. april 2003 - 17:24 #3
Fejl: Invalid typecast
Avatar billede cooljay2000 Nybegynder
14. april 2003 - 18:03 #4
Jeg har åbenbart ikke helt forstået dit spørgsmål.

For det første skal du AppIni.ReadString('List',1,'') i stedet for AppIni.ReadSection('List', FlatListBox1.Items) når du vil bruge den på den måde.
Desuden skal du have initialiseret din ini-fil - det er noget med
AppIni:=TINIFile.create
og
AppIni.loadfromfile('<IniFilePathAndName>')
men kig i hjælpen!!
Avatar billede fun22 Nybegynder
14. april 2003 - 20:22 #5
jeg kan ikke fåe det til at virke :( kan du ikke brygge en kode sammen.
Avatar billede cooljay2000 Nybegynder
15. april 2003 - 09:28 #6
Du er godt nok ikke særlig god til at lære selv!!

Delphi's hjælp er et fremragende middel til selvhjælp!

unit Unit2;

interface

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

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

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  IniFile: TInifile;
begin
IniFile:= TInifile.create('c:\my.ini');
try
IniFile.ReadSectionValues('List',ListBox1.Items);
finally
    IniFile.Free;
end;
end;

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

end.
Avatar billede fun22 Nybegynder
15. april 2003 - 10:27 #7
Det virker!!! men kan man ikke fåe den til at vise et andet navn end stien til det program man har skrevet i ini filen???
Avatar billede cooljay2000 Nybegynder
15. april 2003 - 10:59 #8
Man kan som regel alt, når det drejer sig om programmering, men du får mig ikke til at lave mere kode!

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.

Jasper
Avatar billede fun22 Nybegynder
15. april 2003 - 11:25 #9
ok. kan du så svare mig på hvorfor den tager talet fra inifilen med? eks

0=c:\prog...

Hvorfor tager den nullet med når det er ReadSectionValues så burde det jo kun være det efter = tegnet, ikk??
Avatar billede cooljay2000 Nybegynder
15. april 2003 - 13:38 #10
Hvis man læser i hjælpen, så kan man se at ReadSectionValues tager både navn og værdi!
Avatar billede fun22 Nybegynder
15. april 2003 - 14:22 #11
Ved du om det er muligt kun at vælge value og ikke section?
Avatar billede cooljay2000 Nybegynder
15. april 2003 - 14:38 #12
Du er ikke meget for at bruge Delph's hjælp:

In TIniFile

DeleteKey
EraseSection
ReadSection
ReadSections
ReadSectionValues
ReadString
UpdateFile
WriteString

Derived from TCustomIniFile

Create
ReadBinaryStream
ReadBool
ReadDate
ReadDateTime
ReadFloat
ReadInteger
ReadTime
SectionExists
WriteBinaryStream
WriteBool
WriteDate
WriteDateTime
WriteFloat
WriteInteger
WriteTime
ValueExists


function ReadString(const Section, Ident, Default: String): String; override;

Retrieves a string value from an INI file.

Description

Call ReadString to read a string value from an INI file. Section identifies the section in the file that contains the desired key. Ident is the name of the key from which to retrieve the value. Default is the string value to return if the:

Section does not exist.
    Key does not exist.
    Data value for the key is not assigned.
Avatar billede fun22 Nybegynder
15. april 2003 - 14:46 #13
det har jeg godt nok læst i hjælpen, men den siger at det ikke er en valid string et eller andet når jeg bruger readstring
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