porownanie plikow ini

Odpowiedz Nowy wątek
2006-08-01 22:52
0

Witam,
mam 2 pliki ini, jeden na serwerze a drugi lokalny
zawartosc pliku ini z serwera np:
[update]
0001=0001
0002=0002
0003=0003
zawartosc pliku ini lokalnego np:
[update]
0001=0001
0002=0002

w pliku ini na serwerze klucze dopisuje recznie i chodzi mi o to aby program sprawdzal czy dany klucz istnieje w pliku lokalnym, jesli nie istnieje to wykonywalby jakas tam procedurke oraz dopisywal brakujacy klucz

Pozostało 580 znaków

2006-08-01 23:23
0

najpierw upewnij się, że plik istnieje, potem:

a:= iniObj.readstring('update', '0001', '_error_');
if (a='_error_') then {klucz nie istnieje} 

Piszę programy w językach: C, C++, Java, Python, Bash, PHP, SQL.
Przyjmuję zlecenia

Pozostało 580 znaków

2006-08-02 09:18
0

Chcesz porównać zawsze jedną sekcje [update], czy wszystkie jakie się w pliku znajdują ? Jeśli to drugie to

  • wczytaj do posortowanych TStringList nazwy wszystkich sekcji

    Sekcje1, Sekcje2: TStringList;
    ...
    IniFile1.ReadSections(Sekcje1);
    IniFile2.ReadSections(Sekcje2);
  • dla każdej sekcji wczytaj jej wartości (ReadSectionValues) do jakiegoś TStringList, wynik możesz przechowywać w tablicy TStringList.Objects

    for i:= 0 to Sekcje1.Count do
    begin
    Sekcje1.Objects[i] := new TStringList;
    IniFile.ReadSectionValues(Sekcje1[i], Sekcje1.Objects[i]);
    end;
  • usuń puste sekcje

  • porównaj nazwy sekcji (Sekcje1.Equals(Sekcje2)), pamietaj aby listy były posortowane

  • jeśli sekcje są identyczne to możesz porównywać wartości kolejnych sekcji te zapisane w tablicy Objects,

    (Sekcje1.Objects[i] as TStrings).Equals(Sekcje2.Objects[i] as TStrings)

Pozostało 580 znaków

2006-08-02 11:36
0

tak dokladnie to chodzi mi o porownanie tylko jednej sekcji [update] program ma odczytac pierwszy klucz sekcji [update] w pliku na serwerze nastepnie sprawdzic czy taki klucz istnieje w pliku lokalnym , jesli istnieje to przejsc do nastepnego klucza i tak dalej a jesli nie istnieje to wykonac jakas tam procedurke i dopisac ten brakujacy klucz. moze tez byc taka sytuacja ze w pliku lokalnym bedzie brakowalo klucz niekoniecznie ostaniego a np 3

Pozostało 580 znaków

2006-08-02 13:44
0

To wczytaj tak jak pisałem wartości tych sekcji do dwóch posortowanych TStringList i je porównaj.

Aby porównać listy zadeklaruj dwa indeksy (np i1 i2) zaczynając od 0 i 0. W pętli porównuj elementy list (i1 z i2).

pętla dopóki i1 i i2 mieszczą sie w zakresie list:
Porównaj element i1 pierwszej listy z elementem i2 drugiej listy
Jeśli są równe - zwiększ obydwa ideksy
Jeśli i1 < i2 - oznacza to że elemntu i1 pierwszej listy nie ma w drugiej liście, zwiększ i1
Jeśli i1 > i2 - oznacza to że elemntu i2 drugiej listy nie ma w pierwszej liście, zwiększ i2
następna iteracja pętli

pozostałe elemnty jednej z list nie występują w drugiej

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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