AGB  ·  Datenschutz  ·  Impressum  







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

Tabelle in Event updaten

Ein Thema von DSP · begonnen am 26. Mai 2015 · letzter Beitrag vom 26. Mai 2015
Antwort Antwort
TheFrog

Registriert seit: 24. Mär 2009
145 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Tabelle in Event updaten

  Alt 26. Mai 2015, 15:05
Ich musste die Angabe auch ein paarmal lesen.

Warum setzt Du in der AfterPost()-Methode kein Semaphore, welches Dir anzeigt, dass Du dich gerade in der Bearbeitung der Daten befindest und welches verhindert, dass AfterPost() ein zweitesmal durchlaufen wird? Wenn Du das nicht machst, dann wird AfterPost() natürlich immer wieder aufgerufen.

Nachdem Du die Daten bearbeitet/manipuliert hast, wird das Semaphore einfach wieder zurückgesetzt und die Methode wieder "scharf" gesetzt für das nächste Event.
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#2

AW: Tabelle in Event updaten

  Alt 26. Mai 2015, 15:29
Semaphore? Du meinst ein Flag, also eine globale Boolean-Variable?
  Mit Zitat antworten Zitat
TheFrog

Registriert seit: 24. Mär 2009
145 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Tabelle in Event updaten

  Alt 26. Mai 2015, 15:47
Ja, sowas wie ein Flag meinte ich.

Die Variable könnte dann innerhalb der Klasse definiert sein (und kann dort natürlich auch private sein). Global hört sich so schlimm an !
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#4

AW: Tabelle in Event updaten

  Alt 26. Mai 2015, 16:29
Wußtest du schon? Variablen können sogar global und privat sein: Im Private-Abschnitt deklariert, aber für die ganze Klasse global gültig. Und das was du meintest, ist nicht nur sowas wie ein Flag, es ist ein Flag, benutze ich ständig ... echt jetzt

Ein Semaphor ist dagegen was ganz anderes:

Ein Semaphor (von altgriechisch σῆμα sēma „Zeichen“ und φέρειν pherein „tragen“ - also etwa „Signalgeber“) ist eine Datenstruktur, die aus einer Ganzzahl und den Nutzungsoperationen „Reservieren/Probieren“ und „Freigeben“ besteht. Sie eignet sich insbesondere zur Verwaltung beschränkter (zählbarer) Ressourcen, auf die mehrere Prozesse oder Threads zugreifen sollen, wie etwa Erzeuger und Verbraucher, sowie zur Koordination asynchroner Abläufe. Im Gegensatz zu einem Lock bzw. einem Mutex brauchen die Aktivitätsträger, die „reservieren“ und „freigeben“, nicht identisch zu sein.

Geändert von Perlsau (26. Mai 2015 um 16:36 Uhr)
  Mit Zitat antworten Zitat
TheFrog

Registriert seit: 24. Mär 2009
145 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Tabelle in Event updaten

  Alt 26. Mai 2015, 16:35
Naja, wenn ich so einen Ablauf im AfterPost implementieren möchte, dann muss ich es irgendwie steuern.

Mir fällt aber gerade ein, warum der Aufruf rekursiv wurde:
Wenn ich im AfterPost einer Table über die gleiche Table-Instanz gehe und weiter Posts anstoße, dann lande ich natürlich wieder im AfterPost() der Table. Wenn ich jedoch in AfterPost() einfach über eine weitere Instanz einer Table (oder einer sonstwie geeigneten Komponenten), welche ich lokal bilde, die Änderungen anstoße, dann lande ich nicht wieder in AfterPost().

Wäre ein Erklärung, wie es überhaupt zu dem Problem gekommen ist, oder?
  Mit Zitat antworten Zitat
TheFrog

Registriert seit: 24. Mär 2009
145 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Tabelle in Event updaten

  Alt 26. Mai 2015, 16:38
Ich nehme das mit dem Semaphore zurück
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#7

AW: Tabelle in Event updaten

  Alt 26. Mai 2015, 16:44
Muß du nicht. Die Idee war ja in Ordnung, nur der Begriff paßte nicht wirklich. Jemand, der es nicht kennt, Flags zu verwenden, käme durch den Begriff Semaphore niemals auf den Gedanken, daß du damit einfach eine Boolean-Variable meinst, nicht mal nach dem Lesen des verlinkten Wikipedia-Artikels.
  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 23:39 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