Porównywane dwóch plików z efektem

0

Chciałbym porównć dwa pliki (rejestru wiec to duże pliki tekstowe), jednak chciałbym zobaczyć co się w tym rejestrze zmieniło. (żeby potem tych wpisów użyć). Najlepiej gdyby to były fragmenty kodu bo zapewne cięzko bedzie mi to zrozumieć.

0

Hejka!

Dużo kodowania, ale dość standardowe, myślę, że sobie poradzisz... :)

Robisz tak:

  1. Tworzysz TStringList i wczytujesz do niego klucze
  2. Jako obiekt podpięty (TObject of course ;)) do konkretnego stringa wczytujesz wszystkie elementy z klucza
  3. Drugi rejestr wczytujesz w ten sam sposób
  4. Puszczasz pętle (np. for) od 0 do StringList.Count i masz fajna funkcję IndexOf, czyli:
    JedenRejestr.IndexOf(DrugiRejestr.Strings[I]
    gdzie Jeden i Drugi rejestr to obiekty TStringList, a I to liczba z pętli
  5. Jeśli zwróci -1 to element z drugiego rejestru nie występuje w pierwszym -> masz różnice
  6. Jeśli będzie co innego niż -1 to jest, więc musisz wyciągnąć obiekty i je porównać. Jeśli się różnią -> masz różnicę.
  7. I to chyba tyle, życzę powodzenia!

Pozdrawiam, Kubryk ;-) ;-)

0

Kiedyś coś pisałem takiego, nie wiem jak sobie poradzi z Twoim problemem, ale możesz ort! :

http://ge0dezja.republika.pl/files/textcomp100.zip

0

Hehm, zatrzymałem sie na 1 punkcie polecenia, No stwarza sie TString List i co dalej bo tego nie rozumiem reszta jeszcze jako tako. Patrz mój podpis...

0

Heh...

var
  PierwszyRegList : TStringList;
  DrugiRegList : TStringList;

procedure Wczytaj;
begin
  PierwszyRegList := TStringList.Create;
  CzytajZPlikuKluczIJegoElementy;
  PierwszyRegList.AddObject(Klucz, TObject(ElementyRejestru); //klucz to string, a ElementyRejestru to np. StringList

  DrugiRegList := TStringList.Create;
  CzytajZPlikuKluczIJegoElementy;
  DrugiRegList.AddObject(Klucz, TObject(ElementyRejestru); //klucz to string, a ElementyRejestru to np. StringList

  for I := 0 to (DrugiRegList.Count-1) do
  begin
    if PierwszyRegList.IndexOf(DrugiRegList.Strings[I])<0 then
       ZapiszRóżnicę
    else
       porównaj elementy stringlist i jeśli się różnią to ZapiszRóżnicę;
  end;
end;

To dość pobieżnie, ale resztę (to zresztą też) znajdziesz w Helpie. Przecież tam jest wszystko jasno na białym. Poczytaj o:
TStringList i o plikach rejestru (moze tam są jakies fajne procedury)

Pozdrawiam, Kubryk

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