Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Demoversion Programm beenden (https://www.delphipraxis.net/166123-demoversion-programm-beenden.html)

blondervolker 31. Jan 2012 10:34

Demoversion Programm beenden
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich bastle gerade an einem Beispiel um eine Demoversion zu erstellen.
Die Tools die man kaufen kann kosten richtig Kohle...

Aber mit meinem "Hobby-Wissen":-D:-D:-D komme ich nicht weiter.
Habe mal ein kleines Beispiel als Demo im Anhang.

In der Lektüre Grundlagen,Profiwissen,Kochbuch ist nix zu finden.:oops:

Vielleicht kann jemand helfen,wie man die die Daten in der Demo
auch speichern kann.

Code:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Button2: TButton;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);





  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  zaehler: Integer;

implementation

{$R *.dfm}





procedure TForm1.Button2Click(Sender: TObject);
begin
Inc(Zaehler);
  Edit1.Text := IntToStr(Zaehler);
  if Edit1.Text = '1' then Label1.Caption:='1.Versuch';
  if Edit1.Text = '2' then Label1.Caption:='2.Versuch';
  if Edit1.Text = '3' then Label1.Caption:='Testzeitraum ist beendet!';
  if Edit1.Text = '3' then Button2.Caption:='Ende!';
  if Edit1.Text = '4' then Form1.Close;

end;







procedure TForm1.FormActivate(Sender: TObject);
var f:TextFile; zahl:Integer;
begin
AssignFile(f,ExtractFilePath(Application.ExeName)+'tes.dat');
Reset(f);
Readln(f,zahl);
Inc(zahl);
CloseFile(f);
Rewrite(f);
Writeln(f,zahl);
CloseFIle(f);

Label2.Caption:='Du hast das Prog schon '+IntToStr(zahl)+' mal gestartet.Nun ist Feierabend';
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Zaehler := 0;
  Edit1.Text := IntToStr(Zaehler);

end;

end.

DeddyH 31. Jan 2012 10:39

AW: Demoversion Programm beenden
 
Mein Rat: vergiss es. Es gibt schon einige Threads hier dazu mit dem Fazit: man kann ein Programm nicht zu 100% schützen, man kann höchstens den Crack-Aufwand erhöhen. Und das ist mit externen Textdateien schon gar nicht zu erreichen. Inverstier daher Deine Zeit lieber in das eigentliche Programm, da hast Du mehr gekonnt.

blondervolker 31. Jan 2012 10:45

AW: Demoversion Programm beenden
 
Ja das stimmt.Aber ich schaue nicht nur durch das Delphi Rohr.
Die Mehrheit der Bevölkerung beschäftigt sich nicht mit dem Cracken und
Rückstellen von Systemzeiten...Die Mehrheit sind Anwender sind froh,wenn
sie ein Programm richtig bedienen können.:)
Ich denke da gerade an meine Frau...:)
Ich möchte nur Wissen wie ich oben schon genannt,die Anzahl der Programmaufrufe
speichern kann.:lol:

Steku 31. Jan 2012 10:46

AW: Demoversion Programm beenden
 
Zitat:

Zitat von DeddyH (Beitrag 1148483)
Mein Rat: vergiss es. Es gibt schon einige Threads hier dazu mit dem Fazit: man kann ein Programm nicht zu 100% schützen, man kann höchstens den Crack-Aufwand erhöhen. Und das ist mit externen Textdateien schon gar nicht zu erreichen. Inverstier daher Deine Zeit lieber in das eigentliche Programm, da hast Du mehr gekonnt.

Jo, ist wohl so...

Und als kleines Tool kannst du es ja mal damit versuchen...
http://sourceforge.net/projects/tponguard/

Grüße
Steku

Sir Rufo 31. Jan 2012 10:47

AW: Demoversion Programm beenden
 
Direkt in das Anwendungsverzeichnis zu schreiben ist eine ganz doofe Idee - oder muss der Anwender zwingend als Administrator arbeiten

Und das ist ja so durch die Brust ins Auge gehüpft und am Fuß wieder rausgesprungen:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
  // Zähler erhöhen, ok
  Inc(Zaehler);
  // Zähler in ein Edit-Feld schreiben (Int->Str) ... öh soll der User das ändern können???
  Edit1.Text := IntToStr(Zaehler);
  // Wieso denn jetzt wieder Str->Int, du hast doch Zugriff auf Zaehler???
  if Edit1.Text = '1' then Label1.Caption:='1.Versuch';
  if Edit1.Text = '2' then Label1.Caption:='2.Versuch';
  if Edit1.Text = '3' then Label1.Caption:='Testzeitraum ist beendet!';
  if Edit1.Text = '3' then Button2.Caption:='Ende!';
  // Form1 ist eher fehleranfällig. Besser:
  // HauptForm schließen: Application.MainForm.Close
  // Diese Form schließen: Self.Close oder einfach Close
  if Edit1.Text = '4' then Form1.Close;
end;
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
  Inc(Zaehler);
  Edit1.Text := IntToStr(Zaehler);
  case Zaehler of
    1: Label1.Caption:='1.Versuch';
    2: Label1.Caption:='2.Versuch';
    3:
      begin
        Label1.Caption:='Testzeitraum ist beendet!';
        Button2.Caption:='Ende!';
      end;
    4: Close;
  end;
end;

Sir Rufo 31. Jan 2012 10:51

AW: Demoversion Programm beenden
 
Zitat:

Zitat von blondervolker (Beitrag 1148485)
Ja das stimmt.Aber ich schaue nicht nur durch das Delphi Rohr.
Die Mehrheit der Bevölkerung beschäftigt sich nicht mit dem Cracken und
Rückstellen von Systemzeiten...Die Mehrheit sind Anwender die Fro sind,wenn
sie ein Programm richtig bedienen können.:)
Ich denke da gerade an meine Frau...:)
Ich möchte nur Wissen wie ich oben schon genannt,die Anzahl der Programmaufrufe
speichern kann.:lol:

Um eine unknackbare Demo-Version herzustellen solltest du einige Teile nicht in das Programm kompilieren.
Hat man eine Speicher-Routine, dann kann man diese in der Demo einfach ersetzen durch eine Hinweis-Box: "Wenn Sie das Programm kaufen, dann könnte ich auch speichern!"

Delphi-Quellcode:
{$DEFINE DEMO}

...

procedure SaveTheData;
begin
{$IFDEF DEMO}
  ShowMessage( 'Wenn Sie das Programm kaufen, dann könnte ich auch speichern!' );
{$ELSE}
  // Hier jetzt den echten Code zum speichern rein
{$ENDIF}
end;

blondervolker 31. Jan 2012 10:57

AW: Demoversion Programm beenden
 
Soweit bin ich noch nicht vorgedrungen.:roll:

Die "tes.dat" wird noch versteckt in einem anderen Ordner.
Dieses hier ist nur ein Beispiel.Und Windows hat viele Ordner:-D:-D:-D
Ein Dank an Bill Gates.:-D:-D:-D

Der Nutzer soll die Anwendung nur zeitlich oder als Beispiel 30 Programmaufrufe
nutzen können.

Ist es möglich den Nutzungszeitraum oder die Aurufe irgenwo direkt in der
Form zu speichern?

himitsu 31. Jan 2012 10:58

AW: Demoversion Programm beenden
 
Demos mit Zeitbegrenzung sind nicht sicher machbar.
- die Uhr kann man verstellen
- eine Uhrzeit aus dem Internetabfragen, kann man vergessen, da man meistens keinen aktiven Internetzugang voraussetzen kann und über diverse Tricks kann man sowas sowieso umgehen

Die einzig sichere Möglichkeit ist:
- bestimmten Code garnicht erst einzukompileren ('nen Button zu deaktivieren hildt nix, denn der läßt sich extrem einfach wieder aktivieren) und eine spezielle Demo-Version rauszubringen, welche sich nicht auf eine vollversion patchen läßt, da dieser nicht enthalten ist.
- also irgendwas weglassen, welchen einen dazu drängt sich dann doch mal die Vollversion zu besorgen

Zitat:

Die "tes.dat" wird noch versteckt in einem anderen Ordner.
Dieses hier ist nur ein Beispiel.Und Windows hat viele Ordner
Mir egal.
In vielen Ordner hat dein Programm sowieso keine Zugriffsrechte und verstecken kannst'e vor mir eh nix.
Und wenn sich dein Programm irgendwo an meinem System zu schaffen macht, mir dieses mutwillig zumüllen will, dann fliegt dein Programm von der Platte und ich nehm mir ein nettes Programm eines anderen Herstellers. (ich bin mir sicher, daß es besseren Alternativen geben wird)

PS: In der FORM speichern? In einer unverschlüsselten Resource, welche sich leicht ändern läßt. :lol:

Sir Rufo 31. Jan 2012 11:03

AW: Demoversion Programm beenden
 
Auch wenn ein Betriebssystem viele Ordner hat (das hat mit Bill Gates gar nichts zu tun), so haben die alle einen Sinn und Zweck - man muss sich nur damit befassen.

Es gibt zwar die Möglichkeit an eine Anwendung Daten zu hängen und dort die Anzahl der Aufrufe zu vermerken, allerdings reagieren da die Virenscanner etwas ungehalten.

Darlo 31. Jan 2012 11:22

AW: Demoversion Programm beenden
 
Ich nehme für sowas folgendes Verzeichnis:
C:\Users\[user]\AppData\Roaming

Den Ordner AppData findet ein normaler User eh nicht.
Da kannst Du ja ne verschlüsselte Datei reinlegen die die Aufrufe mitloggt. Setze bei der Datei einen bestimmten Timestamp der weit in der Vergangenheit liegt,
wenn dieser nicht mehr stimmt ist die Demoversion zu.

Um die Demo zu aktivieren muss bei mir eine Onlineverbindung bestehen und ich speichere die HDD-Id in eine Datenbank,
wenn die ID vorhanden, kann die Demo nicht mehr aktiviert werden.


Nicht 100 % sicher, aber für die meisten Anwender reicht es.

Gruß


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:35 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz