[Delphi] Kodowanie pliku *.INI

0

Szukalem po Forum ale nie znalazlem tego co mnie interesuje... ;(

Pisze prace dyp. i utknalem :[
Mam plik *.INI i w nim przechowuje dane (pliczek wyglada nastepujaco):

[USTAWIENIA]
EGZAMINUJE=Mitring a jak :P
PYTAN=2
ODPOWIEDZI=4

[PYTANIE_1]
TRESC=Pytanie numer 1 i tresc
DOBRA=2
1=odp nr 1
2=odp nr 2
3=odp nr 3
4=odp nr 4

[PYTANIE_2]
TRESC=Pytanie nr 2 i jego tresc
DOBRA=4
1=odp nr 1
2=odp nr 2
3=odp nr 3
4=odp nr 4

Wiem, ze napiszecie "Dlaczego pliki INI ... ipt." ale jakos jestem do nich przekonany [rotfl]

I teraz finalne pytanie czy zna ktos sposob jak mozna zakodowac taki plik?

Osobiscie mialem XOR (znow smiechy slysze :D)

function CX(const TextIn: AnsiString; const Key: Byte) : AnsiString;
var
  I : Cardinal;
begin
  Result := TextIn;
  for I := 1 to Length(TextIn) do
  begin
    Result[I] := Chr(Ord(TextIn[I]) xor Key);
  end;
end;

procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
  INI := TINIFile.Create(ExtractFilePath(Application.ExeName)+'test.ini');
  try
    INI.WriteString(CX('WPIS',181),CX('PYTANIE',181),CX(Edit1.Text,181));
  finally
    INI.Free;
  end;
end;

Jezeli ma ktos pomysl na inny zapis pliku niz INI i jakies kodowanie to chetnie slucham ;)

Pozdrawiam

0

otwórz ten plik jako textowy i rób co chcesz (byle byś potem umiał/dało się rozkodować ) :D:D

0

Ja zaproponuje ci troszke inną metode. Koduj sobie xorem nie cały plik, a tylko sam tekst ktory masz przypisac do zmiennej, potem zapisuj jako tekst w postaci hexadecymalnej, zeby wyszło coś takiego (wartości przypadkowe) :

[USTAWIENIA]
EGZAMINUJE=123acd5ff07ff
PYTAN=23
ODPOWIEDZI=ed

[PYTANIE_1]
TRESC=5675adf879
DOBRA=98
1=876afedc
...

// co prawda zajmie ci troszke wiecej czasu konwersja liczby na tekst przy zapisie i potem powrotna konwersja tekstu na liczbe, ale ... efekt widać wyżej:] Poza tym, nie musisz kodowac i dekodowac całego pliku (wiec nie musisz zapisywać rozkodowanego pliku ini na dysku - bezpieczenstwo), dodatkowo zapis hex zamiast ciagu ascii nie spowoduje wystapienia komplikujacych ciagow znakow (np. crlf) w zakodowanym tekscie no i nadal plik obsługujesz jak normalne ini. Ponadto ja bym pozmieniał nazwy zmiennych, na takie, ktore nic nie będą mówiły h4xi0rom :> i wprowadzil gdzies sume kontrolną, zeby wiedzieć czy ktoś nie pozmieniał.

0

(...)Koduj sobie xorem (...), potem zapisuj jako tekst w postaci hexadecymalnej(...) :

Ciekawy pomysl ;) wielkie dzieki...

Tylko pytanko jeszcze zaeby zapisac w HEX musze miec Ord(...) liczby i wtedy zamienic liczbe na system HEX czy jak ...

Ale wielkie dzieki bardzo dobry pomysl ;)
[soczek]

0

Tylko pytanko jeszcze zaeby zapisac w HEX musze miec Ord(...) liczby i wtedy zamienic liczbe na system HEX czy jak ...

Ord(znak) zwraca numer znaku ASCII znaku .. teraz sobie można to zaHEX`ować .. - poszukaj sobie w gotowcach pewnie jest coś - zresztą tu nawet nie trzeba gotowca...

0

Musze ci powiedzieć, że ja kiedyś też napisałem taki program, który potrafi tworzyć pytania do programu. Następnie uczeń powinien je wczytać (pytania były oczywiście kodowane) i rozwiązać. Wszystkie odpowiedzi ładnie zapisywały się nauczycielowi w jednym folderze. Następnie nauczyciel brał program, w którym był kreator oceniania i na podstawie zaleceń z kuratorium program wystawiał piękne oceny.
Naprawdę spoko program. :]

0

wielkie dzieki :) wezme wszystko pod uwage :) jak by ktos mial jeszcze jakies pomysly chetnie poczytam :)

POZDRAWIAM
[browar]

0

Hmm... Pytałeś się o inne pliki zamiast INI, więc zaproponuję XML. Dlaczego? Bo jest zgodny z dzisiejszymi standartami. I nie chcę słyszeć, że ktoś nie lubi obsługi XML, woli INI, tylko jak tak jest, to ściagnijcie sobie XMLINI (autorstwa Ktosia) z http://txmlini.sourceforge.net/.

0

I nie chcę słyszeć, że ktoś nie lubi obsługi XML

Ja się spytam... Co takiego jest w XML, że jest on lepszy od INI ? Agresywna polityka marketingowa majkrosoftu ? Przecież:

  1. Taki sam plik xml zajmuje więcej miejsca
  2. Jest trudniejszy do sparsowania
  3. Jest absolutnie niepotrzebny w tym przypadku
  4. Jak się nie korzysta z najnowszych rozwiązań, to nie jest sie 'trendy' (a w ogóle ciekawa rzecz, ze do okresleń nowości używa się słów, ktorych pełnego znaczenia większość nie rozumie, notmiast łapie się na brzmienie, jak muchy na lep, nowomowa im mniej zrozumiała, tym wyżej wynosząca we własnym mniemaniu ;> Dokładnie ten sam chwyt w nazewnctwie się stosuje... xml jest bardziej haxiorskie od zwyklego spowszedniałego ini, którego nota bene znaczenie kazdy jest w stanie rozszyfrowac :d )
0

Zainstalowalem sobie TXMLINI i powiem tyle:

  1. fajna sprawa dla pisania .NET ;)
  2. jestem przekonany do INI i fakt popieram POSCIK u gory plik INI mniej zajmuje a wielkosc pliku ma znaczenie z tego co mi wiadomo

Ale wielkie dzieki za XMLINI pobawie sie tym bo fajna sprawa ale co do pracy dyp. to na INI zostane :]

0

Zainstalowalem sobie TXMLINI i powiem tyle:

  1. fajna sprawa dla pisania .NET ;)

zwłaszcza, że pod Delphi for .NET się XMLINI nie kompiluje poprawnie o ile pamiętam (i to od wersji 1.05 chyba :)). Ale to tak nawiasem :)

0

Co jest lepsze w XML? To, że:

  1. Jest międzyplatformowe (INI też jest wymysłem Microsoftu i do tego stworzone generalnie dla Windowsów. Nie widziałem żadnej aplikacji na Linuxa czy leszcze inne systemy obsługującej pliki INI)
  2. Ma dużo większe możliwości (W pliku INI masz tylko sekcje i w nich wartości. I to tyle, o możliwościach XML powstają całe książki, więc nie bardzo mam co tutaj pisać)
  3. Niezależnie od tego, kto go wymyślił, jest standartem i nie wygląda, żeby coś go miało na razie zastąpić.
    To, że coś jest trendy, to mnie akurat nie obchodzi. Zawsze używałem różnych starych technik, jak tylko nie potrzebowałem nowszych. Jeszcze ze 3 lata temu pisałem w DOS'owym Turbo Pascalu i byłem zadowolony, bo nic mi więcej do szczęścia potrzebne nie było. Odkąd potrzebuję czegoś więcej, przesiadłem się na Delphi i ostatnio Lazarusa. Na XML'a przesiadłem się bezpośrednio z plików tekstowych, plików INI nie używałem. Stosowałem zapis w postaci trudniejszych do rozszyfrowania plików, w których wszystko było na swoim miejscu i zmiana czegoś ręcznie często była trudna lub niemal niemożliwa. Odkąd przywiązuję dość dużą wagę do obowiązujących standartów, używam XML'a do zapisu danych.

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