![]() |
Lizenzabfrage vor Programmstart
Hallo,
Mein Problem besteht in folgendem: Ich habe meine Anwendung jetzt so weit Fertig, das mir nur noch die Lizenzabfrage fehlt. Ich weiß, das hier schon des öfteren darauf hingewiesen worden ist, das das eh nichts bringt, weiß ich auch, möchte sie jedoch trotzallem in meinem Programm implementieren. Ich habe die Lizenzdaten verschlüsselt fertig und habe auch das einlesen und soweiter schon realiseirt und geprüft. Jetzt möchte ich eigendlich nur noch eins. Die Lizenzdaten nicht bei Form.Create einlesen, sondern nach dem Doppelklick auf meine EXE Datei soll sich einen Form Öffne, in die der Nutzer seinen Lizenznummer eingeben muss. Hat er diese einmalig eingegeben, soll das Programm natürlich beim nächsten Start nicht mehr Fragen. Diese Ganzen Sachen, mit dem Abfragen, denke kriege ich hin. Was mir fehlt und wo ich hoffe, das mir dabei jemand helfen kann, wie bekomme ich es hin, das nicht mein Programm sondern erst diese Lizenzform Startet. Vielen Dank schon mal. Gruß Jens :hi: :hi: :cheer: |
Re: Lizenzabfrage vor Programmstart
Du könntest die Projektdatei editieren.
|
Re: Lizenzabfrage vor Programmstart
In das Hauptform könnste ja im OnShow einfach folgendes reinschreiben:
Delphi-Quellcode:
Form1.Visible := false;
Form2.Show; |
Re: Lizenzabfrage vor Programmstart
Dann hast bei jedem OnShow die Lizenz, doll ;)
Projektdatei ist ein guter Ort dafür. |
Re: Lizenzabfrage vor Programmstart
Larsi, mal versucht?
|
Re: Lizenzabfrage vor Programmstart
Öhm wo is das Problem? Du prüfst bei Programmstart ob eine gültige Lizenz vorliegt, wenn ja startet dein Programm normal. Wenn nein, sperrst du das Hauptform und lässt den Lizenzdialog anzeigen. Das alles kann man FormCreate des Hauptforms passieren.
|
Re: Lizenzabfrage vor Programmstart
Was bitte heißt Larsi mal versucht.
Also ich bastel gerate an dem Form.Show und das Funtz mal noch nicht so richtig. |
Re: Lizenzabfrage vor Programmstart
Vergiss das von Larsi!
|
Re: Lizenzabfrage vor Programmstart
Liste der Anhänge anzeigen (Anzahl: 1)
Also, mit dem Form.Visible und Show gibt auf jedenfall folgende Fehlermeldung.
|
Re: Lizenzabfrage vor Programmstart
Deswegen ja meine Frage an Larsi :mrgreen:
|
Re: Lizenzabfrage vor Programmstart
So leider ist das so eine Fehlanzeige, im OnShow kann man die Eigenschaft von Visible nicht verändern und im Oncreate kommt es zu der oben genannten Fehlerursache.
Habe leider momentan keinerlei Ideen. Und das mit Larsi immer noch nicht verstanden MFG Jens |
Re: Lizenzabfrage vor Programmstart
Zitat:
|
Re: Lizenzabfrage vor Programmstart
Ich hoffe nicht das du was verpasst hast.
Ich habe deine Aussage mit Larsi nicht verstanden. Wer oder was ist das. Und wenn die andere Möglichkeit Funktionieren sollte, bekomme ich sie nicht hin. MFG Jens |
Re: Lizenzabfrage vor Programmstart
Larsi hat Dir in
![]() |
Re: Lizenzabfrage vor Programmstart
Zitat:
|
Re: Lizenzabfrage vor Programmstart
Manchmal ist es besser man steht mal auf und geht an die frische Luft.
Man was habe ich mir gerade auf der Leitung gestanden. Aber dafür habe ich ja wenigsten selber gemerkt das es nicht geht. Hat denn vieleicht jemand einen Ansatz für mich. |
Re: Lizenzabfrage vor Programmstart
ich hätte da noch einen anderen Vorschlag... 8)
- eine Lizenzdatei :thumb: mit den Verschlüsselten Informationen - da kann sich der User das Eintippen schenken - keine zusätzliche Form - keine Datei ---> Demostatus - Datei vorhanden - Informationen können entschlüsselt werden ---> entsprechende Version - Datei vorhanden - Informationen können nicht entschlüsselt werden ---> Demostatus ...nur so als Idee :wink: |
Re: Lizenzabfrage vor Programmstart
Zitat:
|
Re: Lizenzabfrage vor Programmstart
Das könnte so aussehen:
Delphi-Quellcode:
Könnte man auch eleganter machen, aber so sollte es schon einmal funktionieren.
program ProjectLizenzTest;
uses Forms, Controls, UnitMain in 'UnitMain.pas' {FormMain} UnitLizenz in 'UnitLizenz.pas' {FormLizenz}; {$R *.res} begin Application.Initialize; Application.MainFormOnTaskbar := True; if NoLicence then begin FormLizenz:= TFormLizenz.Create(Application); try if FormLizenz.ShowModal = mrOK then begin Application.CreateForm(TFormMain, FormMain); Application.Run; end; finally FormLizenz.Release; end; end else begin Application.CreateForm(TFormMain, FormMain); Application.Run; end; end. |
Re: Lizenzabfrage vor Programmstart
Hallo nochmal,
Also habe jetzt gebastelt und alles soweit realisiert. Ich habe nur noch das Problemn die Variable aus der Application Programm Lizenziert an meine Hauptfenster zu übergeben. Besser gesagt ich erstell in meiner Application eine Variable KeyLiz, diese Kann ich allerdings in meinem Hauptfenster nicht abfragen. Vieleicht noch eine Idee. Hier mein Quellcode:
Delphi-Quellcode:
Sonst erst schon mal herzlichen Dank DeddyH
var
Key : String; LIZENZ : String; Reg : TRegistry; KeyLizApp : Integer; begin LIZENZ := 'DEMOVERSION'; Reg := TRegistry.Create; // Registry-Objekt erzeugen Reg.RootKey := HKEY_LOCAL_MACHINE; if Reg.KeyExists ('\SOFTWARE\HU\PRINTSAVE\LIZENZ') = TRUE then begin if Reg.OpenKey('\SOFTWARE\HU\PRINTSAVE\LIZENZ',TRUE) = TRUE then Key := Reg.ReadString('LIZENZ') else Key := 'DEMOVERSION'; end; Reg.Free; Application.Initialize; if LIZENZ = KEY then begin TFLizenz := TTFLizenz.Create(Application); if TFLizenz.ShowModal = mrOK then begin Application.CreateForm(TForm1, Form1); Form1.EDKey.Text := 'Lizenz ist OK'; Application.Run; end else Application.CreateForm(TForm1, Form1); Form1.EDKey.Text := 'DEMOVERSION'; Application.Run; end; end. Gruß Jens |
Re: Lizenzabfrage vor Programmstart
variable bei public reinschreiben
EDIT: Weisste wie ich meine? |
Re: Lizenzabfrage vor Programmstart
Ja gute Idee, werde ich heute Abend ausprobieren,
Gruß Jens |
Re: Lizenzabfrage vor Programmstart
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo nochmal zusammen,
Habe jetzt alles so gemacht und die Lizezabfrage soweit am laufen. Sie Quellcode:
Delphi-Quellcode:
Leider wird mir bei dem Zuweisen der Variablen immer noch der Fehler (siehe Anhang) beim Compelieren gemeldet.
Application.Initialize;
if Lizenzkey = 'Lizenznummer: Demoversion' then begin TFLizenz := TTFLizenz.Create(Application); if TFLizenz.ShowModal = mrOK then begin Form1.Lizenznummer := True; Application.CreateForm(TForm1, Form1); Application.Run; end else begin if TFLizenz.ShowModal = mrCancel then Form1.Lizenznummer := False; Application.CreateForm(TForm1, Form1); Application.Run; end; end; end. Woran könnte das noch liegen? MFG Jens |
Re: Lizenzabfrage vor Programmstart
Und wenn Du die Zeilen mit "Form1" mal auskommentierst?
|
Re: Lizenzabfrage vor Programmstart
Wenn ich die Zeile auskommentiere, ist der Fehler nicht mehr da und mein Programm läuft.
Allerdings, hat meine Programm ja jetzt leider den Übergabe Wert das eine gültige Lizenz vorhanden ist nicht. MFG Jens |
Re: Lizenzabfrage vor Programmstart
Mein obiger Beispielcode war so gedacht, dass das Lizenzformular nur dann mrOK zurückgibt, wenn die Lizenznummer stimmt. Ansonsten bräuchtest Du z.B. eine globale Variable (*pfui*), in der Du Dir merkst, ob die Lizenz gilt.
|
Re: Lizenzabfrage vor Programmstart
Das mache ich auch so, aber entweder verstehe ich noch irgendwas nicht oder so.
Wenn ich mrOK zurückgebe, wir meine Programm gestartet. Wenn nicht muss ich doch irgendwie das Programm als DEMO starten. Und das habe ich halt versucht über mrCancel zu lösen. :gruebel: :gruebel: |
Re: Lizenzabfrage vor Programmstart
Ach ich Knallkopp :wall:. Tausch einfach mal die Zeilen mit Application.CreateForm... und der Zuweisung aus, dann sollte das auch gehen.
|
Re: Lizenzabfrage vor Programmstart
Ja, das Funtz soweit, nur das Problem und das habe ich leider vermutet. Das Form Create ist ja dann schon durchgeführt und somit kann ich darin natürlich nicht mehr nach dem Rückgabewert fragen.
Habe das jetzt schon mit Onshow Probiert, Funktioniert aber auch nicht :gruebel: |
Re: Lizenzabfrage vor Programmstart
Du hast im OnCreate von Form1 bereits eine Abfrage auf die Lizenz? Das sollte aber doch gehen, wenn Du diese ins OnShow verlagerst.
|
Re: Lizenzabfrage vor Programmstart
Nein, leider nicht. Habe ich Probiert.
Delphi-Quellcode:
Es wird immer FALSE zurückgegeben obwohl ich Lizenznummer eindeutig mit mrOK bestätige.
procedure TForm1.FormShow(Sender: TObject);
begin if Lizenznummer = true then begin Label7.Caption := 'TRUE'; end else Label7.Caption := 'FALSE' end; Es sieht so aus als wird der Wert nicht zugewiesen. |
Re: Lizenzabfrage vor Programmstart
Wo steht denn Lizenznummer? Ist das eine Property von Form1?
|
Re: Lizenzabfrage vor Programmstart
Lizenznummer ist in Form1 unter public eingefügt.
Delphi-Quellcode:
public
{Public declarations } Datum :TDateTime; Pfad :String; Lizenznummer :Boolean; Seriennummer :Boolean; Registryeintrag :TRegistry; |
Re: Lizenzabfrage vor Programmstart
Sehr merkwürdig. Auch wenn das nicht ganz "sauber" ist, sollte es trotzdem funktionieren. Bist Du ganz sicher, dass ModalResult in der Projektdatei auch richtig ausgewertet wird? Setz doch mal dort einen Breakpoint und schau, wo er hinspringt.
|
Re: Lizenzabfrage vor Programmstart
Die Auswertung müsste aufjedenfall OK sein, da ich einen Button mit mrOK momentan Manuell ohne Lizenzabfrage betätige.
Delphi-Quellcode:
Den Button BTmrOK mit dem ModalResult mrOK betätige ich nicht über die Funktion oben sondern Manuell.
procedure TTFLizenz.Button1Click(Sender: TObject);
var Lizenzkey : Boolean; begin Lizenzkey := false; if Lizenzkey = true then begin BTmrOK.Click; end else ShowMessage('Die Seriennummer oder Lizenznummer stimmen nicht mit der Lizenzdatei überein,'+#13#10+ 'oder es ist keine gültige Lizenzdatei vorhanden!'+#13#10+ 'Nutzen Sie Print/Save als DEMOVERSION oder Versuchen Sie es erneut'); TFLizenz.Close; end; |
Re: Lizenzabfrage vor Programmstart
Also einfach nochmal zur Info,
Habe jetzt ein paar Breakpoint´s mehr gesetzt und dabei festgestellt, das der Wert TRUE zwar gesetzt wird. Zumindest läuft die Routine durch.
Delphi-Quellcode:
Aber beim Form OnShow ist der Wert TRUE nich in der Var Lizenznummer
begin
Application.CreateForm(TForm1, Form1); Form1.Lizenznummer := True; Application.Run; end
Delphi-Quellcode:
Hier wird die if-Abfrage einfach Übersprungen
procedure TForm1.FormShow(Sender: TObject);
begin if Lizenznummer = true then begin Label7.Caption := 'TRUE'; end; end; :gruebel: |
Re: Lizenzabfrage vor Programmstart
Hallo Jens Hartmann,
setze doch mal einen Breakpoint auf die if-Zeile und überprüfe den Inhalt von Lizenznummer. Vielleicht noch ein Hinweis: Du kannst bei der Abfrage auch direkt die Lizenznummer abfragen.
Delphi-Quellcode:
Bis bald Chemiker
if Lizenznummer then
begin Label7.Caption := 'TRUE'; end; |
Re: Lizenzabfrage vor Programmstart
Der Inhalt von Lizenznummer ist "FALSE"
Ich versteh nur nicht warum. Mit Lizenznummer ohne Form hatte ich auch probiert. Das war nur noch weil ich dachte vieleicht hilft das ja. MFG Jens |
Re: Lizenzabfrage vor Programmstart
Mach doch in Form1 mal anständige Properties draus statt Variablen (obwohl ich nicht glaube, dass es daran liegt).
Delphi-Quellcode:
private
... FLizenznummer :Boolean; FSeriennummer :Boolean; ... public {Public declarations } ... property Lizenznummer: Boolean read FLizenznummer write FLizenznummer; property Seriennummer: Boolean read FSeriennummer write FSeriennummer; ... |
Re: Lizenzabfrage vor Programmstart
Ja, das war leider nichts, wie du schon gesagt hast.
Ich habe jetzt nochmal einen Braekpoint in der Lizenzabfrage von Form1 gesetzt. Der wert ist eindeutig FALSE
Delphi-Quellcode:
Setzt ich aber in der Application meine Caption von Label7 direkt auf 'HALLO WELT' (TestLabel) macht Delphi das. :gruebel:
procedure TForm1.FormShow(Sender: TObject);
begin if Lizenznummer = true then begin Label7.Caption := 'TRUE'; end; end;
Delphi-Quellcode:
Ist doch seltsam oder.
if TFLizenz.ShowModal = mrOK then
begin Application.CreateForm(TForm1, Form1); Form1.Lizenznummer := True; //Variable auf True Form1.Label7.Caption := 'HALLO WELT'; //Testtext in Label schreiben Application.Run; end Ich setzt auch in der Gesamten Form1 nirgendwo Lizenznummer anders. :gruebel: MFG Jens |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:36 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