Hier ein Tipp wie man den Inhalt einer ListBox, einer Memo, einer StringList oder jeder anderen Eigenschaft die TStrings benutzt in eine Ini speichern kann und/oder wieder laden. 
Es werden zwei Funktionen benötigt. Eine für Speichern und eine für Laden.
Funktion zum Speichern einen TStrings in eine Ini:
Es werden drei Parameter benötigt:
- Pfad der Ini-Datei
 
- Sektion in der Ini in die gespeichert werden soll
 
- Der Inhalt in Form einer TStrings
Es gibt ein True zurück wenn alles geklappt hat und ein False wenn es Probleme gab.
Hinweis: beim Speichern wird der ganze Inhalt der Sektion gelöscht und neu geschreiben. Es sollte also eine eigene Sektion für den Inhalt genommen werden.
		                     
             Delphi-Quelltext
                        Delphi-Quelltext                    
           	 										| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 
 | function SaveListBoxToIni(const IniPath, Section: String;List: TStrings): Boolean;
 var
 k: Integer;
 begin
 with TIniFile.Create(IniPath) do try
 EraseSection(Section);
 
 for k := 0 to List.Count - 1 do
 WriteString(Section, IntToStr(k), Format('"%s"', [List[k]]));
 
 Result := True;
 finally Free end;
 end;
 | 
		
	  
Beispiel:
Hier wird der Inhalt der ListBox1 in die Ini gesichert:
		                     
             Delphi-Quelltext
                        Delphi-Quelltext                    
           	 										| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 
 | procedure TForm1.Button1Click(Sender: TObject);var
 IniPath: String;
 begin
 IniPath := ChangeFileExt(Paramstr(0), '.ini');
 if SaveListBoxToIni(IniPath, 'ListBox1', ListBox1.Items) then
 ShowMessage('Alles gespeichert!');
 end;
 | 
		
	  
Funktion zum Laden eines TStrings Inhalts aus einer Ini:
Es werden drei Parameter benötigt:
- Pfad der Ini-Datei
 
- Sektion in der Ini aus der geladen werden soll
 
- Der Behälter für den Inhalt in Form einer TStrings
Es gibt ein True zurück wenn alles geklappt hat und ein False wenn es Probleme gab.
												| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 9:
 10:
 11:
 12:
 13:
 14:
 15:
 16:
 17:
 18:
 19:
 20:
 21:
 22:
 23:
 24:
 25:
 26:
 27:
 28:
 29:
 30:
 31:
 32:
 33:
 34:
 35:
 36:
 37:
 38:
 39:
 
 | function LoadListBoxFromIni(const IniPath, Section: String;List: TStrings): Boolean;
 var
 k: Integer;
 MissingStr: Boolean;
 s, ErrorCode: String;
 sl: TStringList;
 begin
 MissingStr := False;
 ErrorCode := DateToStr(Now);
 
 with TIniFile.Create(IniPath) do try
 sl := TStringList.Create;
 try
 ReadSections(sl);
 sl.Text := AnsiLowerCase(sl.Text);
 
 if sl.IndexOf(AnsiLowerCase(Section)) > -1 then begin
 ReadSection(Section, sl);
 
 List.Clear;
 
 for k := 0 to sl.Count - 1 do begin
 s := ReadString(Section, sl.Strings[k], ErrorCode);
 if IntToStr(k) <> sl.Strings[k] then MissingStr := True;
 if s = ErrorCode then MissingStr := True else List.Add(s);
 end;
 end;
 finally sl.Free end;
 
 Result := True;
 if MissingStr then Result := False;
 
 finally Free end;
 end;
 | 
		
	  
Beispiel:
Hier wird der Inhalt aus der Ini in die ListBox1 geladen:
		                     
             Delphi-Quelltext
                        Delphi-Quelltext                    
           	 										| 1:2:
 3:
 4:
 5:
 6:
 7:
 8:
 
 | procedure TForm1.Button2Click(Sender: TObject);var
 IniPath: String;
 begin
 IniPath := ChangeFileExt(Paramstr(0), '.ini');
 if LoadListBoxFromIni(IniPath, 'ListBox1', ListBox1.Items) then
 ShowMessage('Alles geladen!');
 end;
 |