Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zählen wie oft eine Form aufgerufen worden ist (https://www.delphipraxis.net/21430-zaehlen-wie-oft-eine-form-aufgerufen-worden-ist.html)

Luckie 3. Mai 2004 09:01

Re: Zählen wie oft eine Form aufgerufen worden ist
 
Womit sie im Prinzip für alle anderen Formen global wäre. ;)

maximov 3. Mai 2004 10:39

Re: Zählen wie oft eine Form aufgerufen worden ist
 
Da er die form2 ja nur öffnen will (und nicht jedes mal 'createn') kann er es sehr wohl als feld in form2 definieren und im konstruktor inkrementieren...da kann er die regel da aufnehmen wo sie passiert :shock:

alanblack 3. Mai 2004 14:12

Re: Zählen wie oft eine Form aufgerufen worden ist
 
Zitat:

Zitat von Luckie
Einfach eine globale Integer-Variable in der Hauptform, die jedes mal inkrementiert wird, wenn ein Formular aufgerufen wird. Wo ist da das Verständinsproblem bitte sehr?

Verständnisproblem gibt es eigentlich keines -> eine Variable die im caption des labels hoch zählt wie oft sie im laufprozess der exe aufgerufen worden ist.

Das Prob liegt dabei dass ich nicht genau weiß wie ich das hochzähle - also wie ich das in code umwandle

Mfg alanblack

S2B 3. Mai 2004 14:26

Re: Zählen wie oft eine Form aufgerufen worden ist
 
Mal OT: Ich frage mich schon die ganze Zeit, was an globalen Variablen so schlimm sein soll? Kann mir das vielleicht jemand erklären?

maximov 3. Mai 2004 15:20

Re: Zählen wie oft eine Form aufgerufen worden ist
 
Zitat:

Zitat von alanblack
Das Prob liegt dabei dass ich nicht genau weiß wie ich das hochzähle - also wie ich das in code umwandle

inkrementieren macht man so ->

Delphi-Quellcode:
inc(FShowCount);
Hatte oben im konstruktor geschrieben! ...is natürlich blöd sinn, sondern am besten in der virtuellen methode show (override) von TForm2.

zecke 3. Mai 2004 15:39

Re: Zählen wie oft eine Form aufgerufen worden ist
 
huhu

also du könntest auch einfach beim onactivate der form [1,2 oder 3 (oder auch 67) :P] eine textdatei schreiben.
das programm startet und lädt die zahl, welche in der datei ist. danach, wenn die form aufgerufen wird, wird die zahl um eins erhöht und die datei überschrieben. ist eigentlich verdammt einfach.

der nachteil wäre halt, dass es eine zusätzliche datei braucht, aber ich als noob würde das problem so lösen! :D :balloon:

alcaeus 3. Mai 2004 15:43

Re: Zählen wie oft eine Form aufgerufen worden ist
 
Zitat:

Zitat von S2B
Mal OT: Ich frage mich schon die ganze Zeit, was an globalen Variablen so schlimm sein soll? Kann mir das vielleicht jemand erklären?

Soviel ich weiß entsprechen globale Variablen nicht dem OOP-Prinzip der Kapselung. Auch Variablen die in einer Unit nach dem implementation deklariert werden, sind nicht sauber, deshalb:
Globale Variablen: Public-Membervariablen der Klasse
Lokale Variablen: Private-Membervariablen der Klasse
Ich hoffe ich habe jetzt keinen Blödsinn geredet.

alanblack 3. Mai 2004 17:49

Re: Zählen wie oft eine Form aufgerufen worden ist
 
Hi,

Ich habe die Codes ausprobiert funktionieren tun sie zwar (project wird compilert) doch zählen tut es nicht... :roll:

Ich erkläre nochmal genau was ich will :stupid:

Also:

In meinen Project taucht (öffnet sich von alleine) die Form2 auf und schließt sich wieder. Auf einen Klick von einem Button möchte ich das im Label angezeigt wird wie viele bereits geöffnet worden sind!

Wie bekomme ich das hin?

Vielen Dank

alanblack

faux 3. Mai 2004 18:01

Re: Zählen wie oft eine Form aufgerufen worden ist
 
so übersteht das auch ein schließen des programms:
Delphi-Quellcode:
procedure TForm1.IntToReg(path, name: string; wert: integer);
var regist: TRegistry;
begin
     try
        regist := TRegistry.Create;
        regist.RootKey := HKEY_CURRENT_USER;
        regist.OpenKey(path, true);
        regist.WriteInteger(name, wert);
     finally
        regist.Free;
     end;
end;

function TForm1.RegToInt(path, name: string): integer;
var regist: TRegistry;
begin
    Try
      try
        regist := TRegistry.Create;
        regist.RootKey := HKEY_CURRENT_USER;
        regist.OpenKey(path, true);
        result := regist.ReadInteger(name);
      finally
        regist.Free;
      end;
     Except
        result := -1;
     end;
end;

Procedure TForm1.FormCreate(Sender: TObject);
const
  path = 'Software\alanblack\Programm\1.0';
begin
  if RegToInt(path, 'opens') = -1 then
    IntToReg(path, 'opens', 1)
  else
    IntToReg(path, 'opens', RegToInt(path, 'opens') + 1);
end;

alanblack 3. Mai 2004 18:04

Re: Zählen wie oft eine Form aufgerufen worden ist
 
Hoi,

mhm ne das brauch ich eigentlich nich das er sich die ziffer "merkt"

ich lasse einfach die OnCreate Procedure weg, geht das?

Also die Ziffer soll nich gespeichert werden


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:22 Uhr.
Seite 2 von 3     12 3      

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