2017-08-06 1 views
-4

Wie fügen Sie Abschnitte der INI-Datei ComboBox korrekt hinzu, abhängig von der Auswahl in den ComboBox-Schlüsselwerten in Label und shellExecute, um die ausgewählte Webseite zu öffnenWie Sie Abschnitte der INI-Datei korrekt zu ComboBox hinzufügen

Meine Ini-Datei

[Google] 
Adress=https://www.google.co.uk 
Description=Example description1 
[Ask] 
Adress=http://www.ask.com 
Description=Example description2 
[Bing] 
Adress=https://www.bing.com 
Description=Example description3 

Mein Code:

var 
    Form1: TForm1; 
    INI: TIniFile; 
implementation 

procedure TForm1.Button4Click(Sender: TObject); 
begin 
    INI := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'setup.ini'); 
    try 
    INI.ReadSections(ComboBox1.Items); 
    finally 
    INI.Free; 
    end; 
end; 

procedure TForm1.ComboBox1Change(Sender: TObject); 
    var 
    AdressIni:string; 
    begin 
    AdressIni := INI.ReadString(ComboBox1.Items[ComboBox1.ItemIndex],'Adress', ''); 
    Label1.Caption := INI.ReadString(ComboBox1.Items[ComboBox1.ItemIndex],'Description', ''); 
    ShellExecute(handle, 'open', 'AdressIni', nil, nil, sw_shownormal); 
    end; 
end. 
+0

Sie versuchen also, eine Combobox mit den Daten aus einem Ini zu füllen? –

+0

Ja. Und weiterhin den Schlüsselwert verwenden, Wie in dem Code – Arsik

+0

https://stackoverflow.com/q/9338283/62576 zeigt Ihnen, wie Sie die Combobox/Inifile Teile tun. –

Antwort

0

Sie passieren falsche Parameter ShellExecute Verfahren. Sie übergeben AdressIni als Zeichenfolge, die als erster Parameter (URL) übergeben wird, anstatt den Verweis auf Ihre AdressIni Variable zu übergeben.

Hier ist, wie Sie es tun können:

procedure TForm3.ComboBox1Select(Sender: TObject); 
var AdressIni: string; 
begin 
    Ini := TIniFile.Create('D:\Proba.ini'); 
    try 
    //Form3.Caption := INI.ReadString(ComboBox1.Items[ComboBox1.ItemIndex],'Adress', ''); 
    AdressIni := INI.ReadString(ComboBox1.Text,'Adress',''); 
    Form3.Caption := AdressIni; 
    ShellExecute(handle, 'open', PCHAR(AdressIni), nil, nil, sw_shownormal); 
    finally 
    INI.Free; 
    end 
end; 

Beachten Sie, dass ich ComboBox1.Text statt ComboBox1.Items[ComboBox1.ItemIndex] Lesen seit ComboBox1.Text Text des aktuell ausgewählten Elements enthält.

+0

Um nicht zu arbeiten.Aber Danke – Arsik

+0

Wie meinst du es funktioniert nicht? Ich habe dies auf meinem Computer vor der Veröffentlichung getestet und es hat gut funktioniert – SilverWarior

+0

Wie funktioniert das? wenn Sie Ihrer ComboBox keine INI-Datei hinzugefügt haben? Wenn ich hinzugefügt habe, wird anstelle der WWW-Seite das Projektfenster geöffnet. Und Label zeigt nichts an – Arsik

Verwandte Themen