![]() |
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. |
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.
|
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: |
AW: Demoversion Programm beenden
Zitat:
Und als kleines Tool kannst du es ja mal damit versuchen... ![]() Grüße Steku |
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; |
AW: Demoversion Programm beenden
Zitat:
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; |
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? |
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:
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: |
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. |
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 04:51 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