![]() |
Demo mit Ini's
Hai,
wie schaffe ich es mit einer IniFile das Datum reinzuschreiben und dann z.B. nach 14 Tagen, sich das Programm nicht mehr starten lässt, sowas wie eine Demo..., also das er jedes mal überprüft wie viele Tage schon seit dem ersten Start des Programms vergangen sind...
Delphi-Quellcode:
Gruß Philipp
procedure evaluation;
var ini : TIniFile; begin ini := TIniFile.Create('Programmpfad'); ini.writedate('DATE', 'STARTDATE', Date); //??? Wie mache ich das mit das er überprüft wie viele Tage vergangen sind?? ini.free; end; |
Re: Demo mit Ini's
Du musst mit StrToDate das Datum in einen TDateTime Wert umwandeln. Mit DecodeDateTime kannst du den Wert in Tage, Stunden, Minuten, etc zerlegen.
Den Rest dürftest du ausrechnen können. Florian |
Re: Demo mit Ini's
Allerdings ist das mehr als unsicher. Jeder halbwegs intelligente User könnte das manipulieren.
|
Re: Demo mit Ini's
Ja, du hast Recht, aber ich wollte so was mal ausprobieren :stupid:
|
Re: Demo mit Ini's
also, bis jetzt bin ich so weit gekommen, aber das funzt nicht...
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var ini: TIniFile; begin ini:= TiniFile.Create('D:\config.ini'); ini.WriteDate('DATE', 'STARTDATE', Date); ini.Free; end; procedure TForm1.Button1Click(Sender: TObject); var ini: TiniFile; begin ini:= TiniFile.Create('D:\config.ini'); Label1.Caption:=ini.ReadString('DATE', 'STARTDATE', DateToStr(Date)); Label2.Caption:=ini.ReadString('DATE', 'STARTDATE', DecodeDateTime(Date)) //Undefinerter Bezeichner DecodeDateTime; |
Re: Demo mit Ini's
Zitat:
|
Re: Demo mit Ini's
Upps, vergessn
|
Re: Demo mit Ini's
Tutmir Leid aber ich komme echt nicht wieter...
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var ini: TIniFile; begin ini:= TiniFile.Create('D:\config.ini'); ini.WriteDate('DATE', 'STARTDATE', Date); ini.Free; end; procedure TForm1.Button1Click(Sender: TObject); var ini: TiniFile; jahr:word; begin ini:= TiniFile.Create('D:\config.ini'); Label1.Caption:=ini.ReadString('DATE', 'STARTDATE', DateToStr(Date)); Label2.Caption:= DaysBetween(DecodeDate(Jahr, Monat , Tag))-DaysBetween(now); //<< Hier komme ich nicht weiter end; |
Re: Demo mit Ini's
Jetzt schau doch mal in die OH, wie oft denn noch? Dann wüsstest du, dass DaysBetween 2 Parameter erwartet. Für das, was du da fabriziert hast, würde DaysBetween ja völlig witzlos sein.
|
Re: Demo mit Ini's
Hallo Philipp,
es macht keinen Sinn, dass du im Ereignis OnCreate() der Form das Startdatum überschreibst. Das Startdatum sollte einzig die Installationsroutine festlegen. Dein Programm sollte das gespeicherte Datum nur mit dem Tagesdatum vergleichen. Gibt es kein Startdatum, dann wurde nicht ordentlich installiert. Damit niemand durch tägliche Vorgabe eines passenden Datums deinen Schutz unterläuft, solltest du das Datum auch nicht im Klartext schreiben:
Delphi-Quellcode:
Ein richtiger Schutz ist das aber nicht - mehr eine Spielerei. Sobald du ein geniales Programm geschrieben hast, brauchst du einen richtigen Schutz. Ist das Programm nicht so genial, dann würde ich diesen Schutz nicht einbauen, sonst mag es niemand benutzen.
uses
DateUtils; const Section = 'Freischaltung'; Key = 'Testbeginn'; LuPhiCode = $9A53; TrialDays = 30; var StartDay: Word; begin StartDay := ini.ReadInteger(Section, Key, 0); if (StartDay = 0) or (DaysBetween(date, StartDay xor LuPhiCode) > TrialDays) then // Programm beenden else // Weiter ; end; Grüße vom marabu |
Re: Demo mit Ini's
Danke marabu,
aber wo genau, binde ich das ein? Ich will ja beim ersten Starten erstmal die ini schreiben, und dann überprüfen, wieviele Tage vergangen sind, nach dem ersten Start... Gruß Philipp |
Re: Demo mit Ini's
Zitat:
|
Re: Demo mit Ini's
OnCreate?
|
Re: Demo mit Ini's
Tätärätäääää! Der Kandidat hat 100 Punkte! :party:
|
Re: Demo mit Ini's
Zitat:
|
Re: Demo mit Ini's
Was steckt in LuPhiCode ?
Ich habe den Code so eingebaut, bekomme ich aber immer das 30 Tage Trial vorbei !!!
Delphi-Quellcode:
Waran liegt das ?
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DateUtils, StdCtrls, shellapi, IniFiles; const Section = 'Freischaltung'; Key = 'Testbeginn'; LuPhiCode = $9A53; TrialDays = 30; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; ini: TiniFile; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var StartDay: Word; begin Ini := TIniFile.Create(ExtractFilePath(ParamStr(0))+'config.ini'); StartDay := ini.ReadInteger(Section, Key, 0); if (StartDay = 0) or (DaysBetween(date, StartDay xor LuPhiCode) > TrialDays) then ShowMessage('30 Tage Trial vorbei') // Programm beenden else ShowMessage('Trial weiter'); end; // Weiter end. |
Re: Demo mit Ini's
Zitat:
Zitat:
|
Re: Demo mit Ini's
Eine Sicherung einer Demoversion per ini-datei ist nicht sehr sicher; man könnte so weit gehen zu sagen das deine Mühen umsonst sind
![]() |
Re: Demo mit Ini's
Zitat:
Und so sieht meine config.ini aus:
Code:
[DATE]
STARTDAY=28.10.2007 |
Re: Demo mit Ini's
Hi,
Zitat:
Die Prüfung liest das Startdate als (kodierten) Integer ein. Du musst eine Art "Installationsprogramm" schreiben, in dem der INI-Eintrag einmalig (kodiert) gesetzt wird... |
Re: Demo mit Ini's
Zitat:
|
Re: Demo mit Ini's
Setzte das datum nicht im Klartext sondern verschlüsselt. Und benenne den Schlüssel am Besten auch gleich in was nichtsagendes um.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz