Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   BeginUpdate / EndUpdate "schachteln"? (https://www.delphipraxis.net/195763-beginupdate-endupdate-schachteln.html)

sko1 23. Mär 2018 08:14

BeginUpdate / EndUpdate "schachteln"?
 
Hallo,

da mir F1 zu BeginUpdate keine Treffer liefert frage ich einfach mal:

Ich habe mehrere Aktualisierungsproceduren

Delphi-Quellcode:
procedure Aktualisierung1;
begin
  try
   BeginUpdate;
   ..
  finally
   EndUpdate;
  end;
end;
procedure Aktualisierung2;
begin
  try
   BeginUpdate;
   ..
  finally
   EndUpdate;
  end;
end;
und eine welche alle Aktualisierungen zusammenfasst

Delphi-Quellcode:
procedure AktualisierungAlles;
begin
  try
   BeginUpdate;
   Aktualisierung1;
   Aktualisierung2;
   Aktualisierung3;
   ..
  finally
   EndUpdate;
  end;
end;

Wird im Fall von AktualisierungAlles das Control erst aktualisiert wenn das letzte EndUpdate erreicht wird oder wird in jeder einzelnen Aktualisierung neu gezeichnet?
Also wird BeginUpdate intern "gezählt" und erst beim letzten zugehörigen EndUpdate zurückgesetzt?

Ciao
Stefan

Neutral General 23. Mär 2018 08:24

AW: BeginUpdate / EndUpdate "schachteln"?
 
Es wird intern gezählt.

sko1 23. Mär 2018 08:26

AW: BeginUpdate / EndUpdate "schachteln"?
 
Danke, prima, dann passt das ja!

Ciao
Stefan

Neutral General 23. Mär 2018 08:34

AW: BeginUpdate / EndUpdate "schachteln"?
 
Du kannst dir übrigens den VCL-Code angucken ;) (Strg + Linksklick auf BeginUpdate oder EndUpdate)
Delphi-Quellcode:
procedure TStrings.BeginUpdate;
begin
  if FUpdateCount = 0 then SetUpdateState(True);
  Inc(FUpdateCount);
end;

himitsu 23. Mär 2018 08:53

AW: BeginUpdate / EndUpdate "schachteln"?
 
Zitat:

Delphi-Quellcode:
  try
   BeginUpdate;
   ..
  finally
   EndUpdate;
  end;

Delphi-Quellcode:
  BeginUpdate;
  try
   ..
  finally
    EndUpdate;
  end;
Denn wenn es im BEGIN knallt, dann darf/sollte END nicht aufgerufen werden.
> entweder nur falsch zählen oder, wie bei auch bei Create+Free, gibt es da nichts zum Runterzählen/Freigeben und es knallt womöglich gleich nochmal, was dann die ursprüngliche Fehlermeldung und Fehlerposition zerstört.

sko1 23. Mär 2018 09:40

AW: BeginUpdate / EndUpdate "schachteln"?
 
Ich sehe bei Deinem Code keinen Unterschied!

BeginUpdate ist die erste Zeile des try-Blocks, zwischen begin der Procedure und dem try ist nichts.

Also wird als allererster Befehl das BeginUpdate im try-Block aufgerufen, was soll da knallen?

Ciao
Stefan

Sherlock 23. Mär 2018 09:51

AW: BeginUpdate / EndUpdate "schachteln"?
 
Zitat:

Zitat von sko1 (Beitrag 1397091)
Also wird als allererster Befehl das BeginUpdate im try-Block aufgerufen, was soll da knallen?

Das BeginUpdate kann knallen.

Sherlock

Amateurprofi 23. Mär 2018 09:56

AW: BeginUpdate / EndUpdate "schachteln"?
 
Zitat:

Zitat von sko1 (Beitrag 1397091)
Ich sehe bei Deinem Code keinen Unterschied!

BeginUpdate ist die erste Zeile des try-Blocks, zwischen begin der Procedure und dem try ist nichts.

Also wird als allererster Befehl das BeginUpdate im try-Block aufgerufen, was soll da knallen?

Ciao
Stefan

Zum Beispiel in so einem Fall:

Delphi-Quellcode:
PROCEDURE TMain.Test;
var List:TStrings;
begin
   List.BeginUpdate;
end;

sko1 23. Mär 2018 10:05

AW: BeginUpdate / EndUpdate "schachteln"?
 
OK, Ihr habt mich überzeugt, das BeginUpdate kommt vor den try-Block!

Ciao
Stefan

Neutral General 23. Mär 2018 10:28

AW: BeginUpdate / EndUpdate "schachteln"?
 
Zitat:

Zitat von sko1 (Beitrag 1397098)
OK, Ihr habt mich überzeugt, das BeginUpdate kommt vor den try-Block!

Nur um sicher zu gehen: Das gilt auch für alles andere was man mit einem try-finally-Block absichern will.
D.h. auch das Erstellen eines Objekts etc. kommt VOR das try und nicht in das try rein.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:10 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