[delphi]pliki ini i TStringList

0

Witam
Mam taki maly problemik:

var ini:TIniFile;
 str:TStringList;
...
Ini.ReadSections(str); //wczytuje nazwy sekcji do zmiennej str
//kazda linia to nazwa sekcji
...
//tu nastepuje modyfikacja danych zawartych w str
// np. str.Strings[i]:='inna nazwa sekcji';
...

i teraz pytanie: czy da sie zrobic tak, aby sekcje w pliku ini zostaly zmienione z danych w str ?
Zeby zamienic same nazwy sekcji, ale zawartosc tychze sekcji juz nie.

0

nie - musisz stworzyć nową sekcję i przenieść tam zawartość starej a następnie starą skasować.
tak - otwórz plik jako znakowy, poszukaj sekcji i zastąp jej nazwę inną (nazwa nowa musi być <= nazwy starej)
tak - otwórz plik jako textowy, przekopiuj wszystko aż do szukanej sekcji do nowego pliku, potem nową nazwe sekcji a potem resztę starego pliku. Stary usuń zmień nazwe nowego na stary
tak - wczytaj plik do tstringlist, znajdz nazwe sekcji, zamień i zapisz tstringlist

0

hm nie sprecyzowalem pytania, wiec to robie:
mam plik ini, w nim sekcje
1
2
3
4
usuwam teraz np. sekcje nr 2 ( ini.EraseSection('2') ), zostaje
1
3
4
i teraz chodzi mi o to, zeby zmniejszyc liczby, ktore sa wieksze od tej 2, zeby bylo
1
2
3
probowalem robic to wlasnie poprzez wczytanie sekcji do StringList i zmiane; innymi sposobami mi to nie wychodzi ... :|

0

Nie widziałem w classie TIniFiles żeby udostępniała zmianę nazwy sekcji, tak więc pozostaje reczna metoda.

Mi przychodzą do głowy 2.
1: Ta którą ty używasz TStringsList
2: Bezpośredni odczyt z pliku, obróbka i zapis do pliku tymczasowego i podmiana.

Nie wiem jak ty ale ja jak dawniej pisałem program z bazą tipsów i solucji do gier opartą na plikach ini to miałem taki problem: Classa ini nie chciała mi odczytać listę sesji w pliku ini jak było ich więcej niż 1000 z hakiem, po prostu ucinała (a moze to była winna listboxa). Zresztą zastanawiałeś się czy nie użyć innego sposobu przechowywania informacji np. XML lub coś innego....

1 użytkowników online, w tym zalogowanych: 0, gości: 1