Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi 1. Aufruf des Programms (https://www.delphipraxis.net/5712-1-aufruf-des-programms.html)

Trouble_Maker 16. Jun 2003 15:10


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

Stanlay Hanks 16. Jun 2003 15:18

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.

Trouble_Maker 16. Jun 2003 15:22

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

Stanlay Hanks 16. Jun 2003 15:34

mach es doch umgekehrt: Überprüfe, ob dieser Wert nicht existiert.

Trouble_Maker 16. Jun 2003 15:35

ist das denn nicht egal ?!?

kannst du mir sagen, wie ich das überprüfe ?!?

danke

Trouble_Maker 16. Jun 2003 16:26

huhu ?

kann mir jemand sagen, wie ich überprüfe, ob ein Wert vorhanden ist oder nicht ?!?!


wäre nett von euch

danke

Trouble_Maker

Christian Seehase 16. Jun 2003 16:30

Moin Trouble Maker,

TRegistry.ValueExists

Die Durchsicht der Methoden von TRegistry in der Hilfe hätte da wohl schneller geholfen ;-)

Trouble_Maker 18. Jun 2003 20:19

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

Trouble_Maker 18. Jun 2003 20:24

Hier nochmal mein Code (nicht komplett nur die wichtigsten Teile):

Code:
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;
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 ...

was mache ich falsch und wie funktioniert das richtig ?!?

danke für eure Mühe

cu Trouble_Maker

Christian Seehase 18. Jun 2003 22:14

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 00:19 Uhr.
Seite 1 von 2  1 2      

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