Na http://4programmers.net/Delphi/Artykuły/Zabezpieczenie_prgramu_przed_kopiowaniem jest funkcja ID. Próbowałem ją stosować, i mam kłopoty. Pomóżcie mi to zrozumieć.
Powiedzmy, że źródło wygląda tak:
<span style="color: green">procedure TForm1.FormCreate(Sender: TObject);
begin Label2.Caption:=concat('Numer = ',ID);
ShowMessage(ID);
Label1.Caption:=ID;
Label3.Caption:=ID;
ShowMessage(ID);
end;</span>
Projekt mam na D:, tam kompiluję, wykonuję, wszystko działa dobrze. Mam na myśli to, że każde wywołanie funkcji ID zwraca ten sam numer.
Następnie plik exe kopiuję do jakiegoś folderu na D: i nadal wszystko działa dobrze.
Wreszcie kopiuję plik exe do jakiegoś folderu na C:
I wszystko się sypie. Funkcja ID wywołana parokrotnie zwraca różne numery, najczęściej JEDEN w pierwszej instrukcji, DRUGI w drugiej i 00000000 w kolejnych.
Ten JEDEN jest za każdym uruchomieniem exe z C: taki sam, ale po pierwsze jest inny, niż gdy program wykonuję z D:, a po drugie jeśli coś zmienię w programie, np. zmienię kolejność instrukcji albo po jednym Label3.Caption:=ID; dodam jeszcze dwa razy Label3.Caption:=ID;, to już otrzymam inny numer. Na C:, po skopiowaniu tam exe, bo na D: jest cały czas wszystko dobrze.
Proszę, napiszcie, dlaczego tak się dzieje, i pomóżcie jakoś temu zaradzić.