![]() |
1. Aufruf des Programms
Hiho Leute
ich möchte, dass beim allerersten Aufruf des Programms eine bestimmte Nachricht kommt und dann nie wieder ... wie realisiere ich das ?!? Bestimmt mit der Registry aber wie ?!? danke Trouble_Maker |
Registry oder auf andere Weise.
Du könntest zum Beispiel in eine Ini Datei einen Boolschen Wert schreiben (0/1) und den nach dem ersten Start ändern. Was vielleicht noch einfacher wäre, wäre eine Datei "FirstTimer.xxx" mit zu kopieren und diese Beim ersten Start zu löschen. Dann müsstest du nur noch bei jedem Start mit FileExists(...\FirstTime.xxx') abfragen, ob die Datei existiert. |
ich würde es am liebsten mit der Registry machen, damit ich nich noch eine Datei "rumfliegen" habe ;-)
Aber wie mache ich das ? Wenn ich ein Wert mit oncreate reinschreibe, dann wird dieser ja immer neu geschrieben. Oder gibt es einen Befehl, dass wenn eine Wert existiert, dass dieser dann nicht überschrieben wird. Dann könnte ich nämlich immer abfragen, ob der Wert vorhanden ist... wann ja... dann macht er nix wenn nein... dann ist das der erste programmstart... kann mir jemand helfen ?!? danke Trouble_Maker |
mach es doch umgekehrt: Überprüfe, ob dieser Wert nicht existiert.
|
ist das denn nicht egal ?!?
kannst du mir sagen, wie ich das überprüfe ?!? danke |
huhu ?
kann mir jemand sagen, wie ich überprüfe, ob ein Wert vorhanden ist oder nicht ?!?! wäre nett von euch danke Trouble_Maker |
Moin Trouble Maker,
TRegistry.ValueExists Die Durchsicht der Methoden von TRegistry in der Hilfe hätte da wohl schneller geholfen ;-) |
Tachschen ...
so ich bins mal wieder ! Ich bekomm das einfach nicht hin mit dem ersten Aufruf !!! Ich schreibe mit oncreate z.B. den Wert "1Aufruf" in die Registry. Wo muss ich denn jetzt prüfen, dass dieser Wert existiert ? Weil wenn ich es auch in onCreate mache, dann funktioniert das ja nicht, weil dieser Wert ja dann immer existert! Wie mache ich das ?!? danke Trouble_Maker PS: Ich poste gleich nochmal meinen Code! Zum Besseren Verständnis |
Hier nochmal mein Code (nicht komplett nur die wichtigsten Teile):
Code:
so ich hoffe das erleutert das ein bisschen! Da sich ja das Passwort ändern lassen soll, darf nicht immer im oncreate das Passwort als "passwort" festgelegt werden ...
procedure TForm1.FormCreate(Sender: TObject);
var Regist: TRegistry; begin //das hier kann doch schonmal nicht funktionieren, weil es beides in OnCreate drinsteht: if regist.ValueExists('1Aufruf') then exit else begin regist:=TRegistry.Create; regist.RootKey:=HKEY_CURRENT_USER; regist.OpenKey('Software\Trouble_Maker\Secure\PW', true); regist.WriteString('PW', 'passwort'); end; try regist:=TRegistry.Create; regist.RootKey:=HKEY_CURRENT_USER; regist.OpenKey('Software\Trouble_Maker\Secure\', true); regist.WriteInteger('1Aufruf', 1); Regist.CloseKey; regist.free; except exit; end; procedure TForm1.Button4Click(Sender: TObject); //Passwort ändern var regist: TRegistry; begin if (edit2.text = '') and (edit3.text = '') and (edit4.text = '') then exit; if (edit2.text = 'passwort') and (edit3.text = edit4.text) then begin regist:=TRegistry.Create; regist.RootKey:=HKEY_CURRENT_USER; try regist.OpenKey('Software\Trouble_Maker\Secure\PW', true); regist.WriteString('PW', edit3.text); except showmessage('Failure... please try again'); end; was mache ich falsch und wie funktioniert das richtig ?!? danke für eure Mühe cu Trouble_Maker |
Moin Trouble Maker,
schreib's doch so:
Delphi-Quellcode:
// Was vorher noch passieren muss/soll
//... // Prüfen ob erster Aufruf if not regist.ValueExists('1Aufruf') then begin // Wenn nicht, dann Meldung zeigen, und // Wert schreiben, der ein erneutes Verzweigen in diesen // Pfad unterbindet regist.WriteInteger('1Aufruf', 1); end; //... // Und hier, was sonst noch alles im OnCreate passieren soll Beim nächsten Programmstart existiert der Wert und die Meldung wird nicht mehr angezeigt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:06 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