AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Wertänderungen einer Variable zählen?

Ein Thema von PeterPanino · begonnen am 29. Jan 2006 · letzter Beitrag vom 29. Jan 2006
Antwort Antwort
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#1

Wertänderungen einer Variable zählen?

  Alt 29. Jan 2006, 01:02
Gibt es in Delphi eine INTERNE DIREKTE Methode, mit der man herausfinden kann, wie oft der Wert einer Variable ab einem bestimmten Punkt GEÄNDERT (nicht zugewiesen!) wurde?

(Manuelle oder indirekte Methode: Natürlich kann man jedesmal an der Stelle, an der der Wert verändert wird, eine Abfrage mit OldValue und NewValue machen und so die Veränderungen zählen, was aber umständlich ist).
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: Wertänderungen einer Variable zählen?

  Alt 29. Jan 2006, 01:09
Kann ich mir nur so vorstellen, dass du dir eine Klasse schaffst, dort die Variable als Property mit einer Set-Funktion hinterlegst und dann eine globale Variable mit einer Instanz dieser Klasse benutzt. In der Set-Funktion kannst du dann zählen, wie oft ein Wert zugewiesen wird bzw. wie oft der Wert geändert wird.

(ungetestet)
Delphi-Quellcode:
unit CountChangesUnit;

interface

type
  TCountChanges = class(TObject)
  private
    FVariable: integer;
    FAssigned: int64;
    FChanged: int64;
    procedure SetVariable(Value: integer);
  public
    property Variable: integer read FVariable write SetVariable;
    property Assigned: int64 read FAssigned;
    property Changed: int64 read FChanged;
  end;

var
  Counted: TCountChanges;

implementation

procedure TCountChanges.SetVariable(Value: integer);
begin
  inc(FAssigned);
  if FVariable <> Value then
    inc(FChanged);
  FVariable := Value;
end;

initialization
  Counted := TCountChanges.Create;
finalization
 FreeAndNil(Counted);
end.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Wertänderungen einer Variable zählen?

  Alt 29. Jan 2006, 03:14
Vielen Dank für den sehr schönen Code! Ich habe es getestet und es funktioniert (Projektdateien im Anhang).
Angehängte Dateien
Dateityp: zip wert_nderungen_einer_variable_z_hlen_200.zip (1,8 KB, 5x aufgerufen)
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Wertänderungen einer Variable zählen?

  Alt 29. Jan 2006, 03:39
Ich habe mir die Frage jetzt ein paar Mal durchgelesen... wofür zum Geier wird die globale Variable benötigt?
Einfach die olle Variableaus der Unit entfernen, genau wie den init/final Teil.
Wenn es so änderst, kannst du einfach A benutzen als sei es eine Variable. Mit dem Extracode hätest du es ja gleich selbst zählen können....
Delphi-Quellcode:
private
   fCounted : TCountChanges;

   function getA : Integer;
   procedure setA(const Value : Integer);
public
   property A : Integer read getA write setA;

   destructor Destroy; override;
   procedure AfterConstruction; override;
end;
....
procedure TForm1.AfterConstruction;
begin
   inherited;
   fCounted := TCountChanges.Create();
end;

destructor TForm1.Destroy;
begin
   fCounted.Free();
   inherited;
end;

function TForm1.getA : Integer;
begin
   Result := fCounted.Variable;
end;

procedure TForm1.setA(const Value : Integer);
begin
   fCounted.Variable := Value;
end;
Robert Giesecke
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:18 Uhr.
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