Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Bei ComboBox Auswahl Daten aus INI-File in StringList lesen (https://www.delphipraxis.net/16181-bei-combobox-auswahl-daten-aus-ini-file-stringlist-lesen.html)

Helpliner 12. Feb 2004 02:49


Bei ComboBox Auswahl Daten aus INI-File in StringList lesen
 
Hallo Leute,

ich habe eine Programmoberfläche die nur aus einer ComboBox (mit den Einträgen Abschnitt1; Abschnitt2 und Abschnitt3) und einer Stringlist besteht.
Weiterhin habe ich eine INI Datei die wie folgt aussieht:

Code:
[Abschnitt1]
1=wert1
2=wert2
3=wert3

[Abschnitt2]
1=wert1
2=wert2
3=wert3

[Abschnitt3]
1=wert1
2=wert2
3=wert3
Ich möchte nun das bei der ComboBox Auswahl "Abschnitt1, die Werte aus Abschnitt1 der Inidatei in die Stringlist eingelesen werden, bei Auswahl von Abschnitt2 die Werte aus Abschnitt2 etc.
Das Problem bei der Sache ist das nicht jeder Abschnitt unbedingt gleichviele Werte enthält - kann mir jemand sagen wie ich das machen muss?

Danke schonmal im vorraus.

Luckie 12. Feb 2004 03:03

Re: Bei ComboBox Auswahl Daten aus INI-File in StringList le
 
Kuck mal in der Hilfe zu TIni unter ReadSection, ReadSections, ReadSectionValues.

Helpliner 12. Feb 2004 03:36

Re: Bei ComboBox Auswahl Daten aus INI-File in StringList le
 
Okay, danke erstmal für die schnelle Antwort (und das um diese Uhrzeit), der für mich richtige Befehl wäre dann ja ReadSectionValues.
Jetzt habe ich für das OnSelect Ereigniss folgende Routine geschrieben:

Code:
uses IniFiles

procedure TForm1.ComboBox1Select(Sender: TObject);
var
Ini : TIniFile;
begin
  Ini := TIniFile.Create('C:\ets.ini');
    if ComboBox1.ItemIndex = 5
      then
        Ini.ReadSectionValues('Konti6',ListBox1.Items);
          end;
  Ini.Free;
end;
Allerdings bekomme ich beim Versuch die Anwendung zu kompilieren die FM:

Delphi-Quellcode:
  [Fehler] Unit1.pas(36): Deklaration erwartet, aber Bezeichner 'Ini' gefunden
  [Fehler] Unit1.pas(37): '.' erwartet, aber ';' gefunden
  [Fataler Fehler] Project1.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden
Kann mir jemand sagen welche Deklaration Ihm noch fehlt?

yogie 12. Feb 2004 06:03

Re: Bei ComboBox Auswahl Daten aus INI-File in StringList le
 
Das End hinter dem
Ini.ReadSectionValues('Konti6', ListBox1.Items);
ist überflüssig.

Ini.ReadSectionValues erwartet als ersten Parameter einen
String also 'Konti6' als Section und dann
eine Stringlist zur Aufnahme aller Weter dieser Section.
Da vorher mit einer ComboBox gearbeitet wurde, meine ich mal,
dass es
Ini.ReadSectionValues('Konti6', ComboBox1.Items);
heißen sollte.

Helpliner 12. Feb 2004 11:16

Re: Bei ComboBox Auswahl Daten aus INI-File in StringList le
 
So das Semikolon am Ende der entsprechenden Zeile habe ich entfernt, die Fehlermeldung bleibt aber identisch.

Die Angabe von ListBox1.Items ist so schon richtig, weil ich die ComboBox nur zur Auswahl der Sektion der Ini-Datei nehme und je nach Auswahl die Werte in die ListBox eingetragen werden sollen.

APP 12. Feb 2004 11:37

Re: Bei ComboBox Auswahl Daten aus INI-File in StringList le
 
Hallo Helpliner,

Delphi-Quellcode:
PROCEDURE TForm1.ComboBox1Select(Sender: TObject);
VAR
  Ini                             : TIniFile;
BEGIN
  Ini := TIniFile.Create('C:\ets.ini');
  TRY
    IF ComboBox1.ItemIndex = 1 THEN
      Ini.ReadSectionValues('Abschnitt2', ListBox1.Items);
  FINALLY
    Ini.Free;
  END;
END;

Inhalt von C:\ets.ini
Code:
[Abschnitt1]
1=wert1 
2=wert2 
3=wert3 

[Abschnitt2]
1=wert1 
2=wert2 
3=wert3 

[Abschnitt3]
1=wert1 
2=wert2 
3=wert3
funktioniert.


p.s. Beachte den Resourcen-Schutzblock (TRY/FINALLY) -sollte beim "Createn" immer dabei sein, auch wenn er in der D5-OH unter "ReadSectionValues" fehlt :shock:


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:53 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz