ListBox w INI
vecco
Poniżej przedstawione zostały funkcje, które mogą posłużyć do zapisania i odczytania elementów komponentu ListBox do wybranej sekcji pliku INI.
Zapis:
uses IniFiles;
//Parametry:
// FileName: nazwa pliku INI, w którym elementy zostaną zapisane
// Section: sekcja, w której wartości zostaną zapisane
// ListBox: komponent, z którego elementy zostaną zapisane
//
//Funkcja zwraca wartość logiczną, oznaczającą powodzenie zapisu.
//Podczas zapisywania elementów, usuwa całą poprzednią zawartość sekcji pliku INI.
function WriteToIni(const FileName:TFileName; const Section:string; const ListBox:TListBox):boolean;
var IniFile:TIniFile;
i:integer;
begin
result:=TRUE;
IniFile:=TIniFile.Create(FileName);
try
IniFile.EraseSection(Section);
for i:=0 to ListBox.Items.Count-1 do
IniFile.WriteString(Section, IntToStr(i), ListBox.Items[i]);
except
result:=FALSE;
IniFile.Free;
end;
end;
Odczyt:
uses IniFiles;
//Parametry:
// FileName: nazwa pliku INI, z którego elementy zostaną odczytane
// Section: sekcja, z której wartości zostaną odczytane
// ListBox: komponent, do którego elementy zostaną odczytane
//
//Funkcja zwraca wartość logiczną, oznaczającą powodzenie odczytu.
//Podczas odczytywania elementów usuwa całą poprzednią zawartość ListBox.
function ReadFromIni(const FileName:TFileName; const Section:string; const ListBox:TListBox):boolean;
var IniFile:TIniFile;
i:integer;
begin
result:=TRUE;
IniFile:=TIniFile.Create(FileName);
ListBox.Items.BeginUpdate;
ListBox.Items.Clear;
try
i:=0;
while IniFile.ValueExists(Section, IntToStr(i)) do
begin
ListBox.Items.Insert(i, IniFile.ReadString(Section, IntToStr(i), ''));
inc(i);
end
except
result:=FALSE;
IniFile.Free;
end;
ListBox.Items.EndUpdate;
end;
Szczawik wiesz jak dla mnie super, bez żadnych wodotrysków, skondensowane i praktyczne, wielkie dzięki !!!
Spoko - a tak na poważnie, jak piszesz artykuł czy jakiś inny tekst, to zadbaj o jego formę i treść. W przypadku twojego dzieła, ani do jednego, ani drugiego nie przyłożyłeś żadnej wagi.
Po pierwsze, po co zapisywać ilość elementów w pliku, skoro jesteś w stanie ją odczytać z niego samego, po drugie, po twoim zapisie zostaje śmietnik w pliku, bo jeśli chwilę wcześniej zapisałeś 9 elementów, a potem 3, to w pliku będzie zapisanych 9: 0-2 nowe, a 3-8 stare; tylko dodatkowo licznik się zmieni. No zupełnie bez sensu. Natworzyłeś też jakieś zmienne pomocnicze, bóg wie komu potrzebne (yy, x, s); sam licznik dla pętli wystarczy. Poza tym to dział gotowce, a nie FAQ, więc pisz teksty w takiej postaci, jak się robi gotowce, a nie objaśnianie osobno tworzenia sekcji, osobno zapisu, osobno wszystkiego.
Pamiętaj: jakość i treść. Przede wszystkim.
Szczawik .... No wielkie dzięki ... :|
"Nie jest to najlepszy sposób odczytu i zapisu wartości z ListBoxa do INI ... " - To po co to w ogóle?