Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   ContentControls zufällig befüllen (https://www.delphipraxis.net/197982-contentcontrols-zufaellig-befuellen.html)

Pader1305 24. Sep 2018 13:25

Delphi-Version: 10.1 Berlin

ContentControls zufällig befüllen
 
Hallo Zusammen,

ich schreibe gerade ein Analysetool, um herauszufinden, ob normale Textmarken oder Content Controls schneller sind.
Nun möchte ich die Content Controls zufällig befüllen lassen und habe dies mit folgender Schleife umgesetzt.

Delphi-Quellcode:
while lLoop < 51 do
        begin
        lRandom := RandomRange(1,100);
        if lWordInstanz.ContentControls.Item(lListeMarken[lRandom]).Range.Text = 'Test' then
          begin
            continue;
          end
        else
          begin
            lWordInstanz.SelectContentControlsByTag('CC' + IntToStr(lRandom)).Item(1).Range.Text := 'Test';
            lLoop := lLoop +1;
          end;
        end;
Allerdings befüllt er nie 50 Felder, sondern immer weniger. Weiß jemand auf die Schnelle woran es liegen könnte?
Über jede Hilfe würde ich mich sehr freuen!

Sherlock 24. Sep 2018 13:35

AW: ContentControls zufällig befüllen
 
Was genau bei Dir schief läuft kann ich anhand des Fragments nicht sagen. Was ich aber sagen kann ist: Bei OLE Automation, die performant sein muß, immer early binding verwenden und Variante Datentypen meiden wie der Teufel das Weihwasser.

Sherlock

Delphi.Narium 24. Sep 2018 14:27

AW: ContentControls zufällig befüllen
 
Du befüllst per Random bis zu 50 Mal irgendein Feld. Theoretisch könnte bei Random immer die gleiche Zahl herauskommen, so dass letztlich nur ein Feld 50 mal befüllt wird und nicht 50 Felder.

Du kannst nicht davon ausgehen, dass bei 50 Aufrufen von Random auch 50 unterschieldliche Werte rauskommen.

Protokolliere doch bei
Delphi-Quellcode:
lRandom := RandomRange(1,100);
mal mit, welche Werte lRandom dabei so annimmt und ob keiner der Werte doppelt vorkommt.

Pader1305 24. Sep 2018 14:33

AW: ContentControls zufällig befüllen
 
Zitat:

Zitat von Delphi.Narium (Beitrag 1414005)
Du befüllst per Random bis zu 50 Mal irgendein Feld. Theoretisch könnte bei Random immer die gleiche Zahl herauskommen, so dass letztlich nur ein Feld 50 mal befüllt wird und nicht 50 Felder.

Du kannst nicht davon ausgehen, dass bei 50 Aufrufen von Random auch 50 unterschieldliche Werte rauskommen.

Protokolliere doch bei
Delphi-Quellcode:
lRandom := RandomRange(1,100);
mal mit, welche Werte lRandom dabei so annimmt und ob keiner der Werte doppelt vorkommt.


Hi, danke erstmal für eure Antworten!

Ich dachte das mache ich bereits, da ich schaue, ob in dem Feld bereits "Test" drin steht, wenn wohl soll er zum Schleifenanfang zurück und dort eine neue Zufallszahl ziehen :)

Sherlock 25. Sep 2018 08:19

AW: ContentControls zufällig befüllen
 
Durch den Algorithmus kannst du aber keinerlei zuverlässige Aussagen über Performance machen.

Sherlock


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