Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Suche in TStrings optimieren (https://www.delphipraxis.net/159446-suche-tstrings-optimieren.html)

Schwedenbitter 29. Mär 2011 11:54

AW: Suche in TStrings optimieren
 
Zitat:

Zitat von jfheins (Beitrag 1091687)
[...]
Wenn sich dein Programm an dem Tutorial orientiert, dann können also keine anderen Threads in der Liste herumpfuschen. (wenn du nicht weist, was Threads sind, hast du wahrscheinlich keine Threads programmiert)
[...]
Weil wenn irgendein Ereignis geschieht, dass veranlassen würde das sich die Liste ändert muss dieses Ereignis warten bis das Programm Zeit findet, es zu bearbeiten. Und somit kann das Ändern der Liste erst nach dem Senden der Nachricht erfolgen.

Ja. Ich wollte nicht das Rad neu erfinden und bin daher strikt nach Anleitung vorgegangen. Ich habe das ganze nur immens aufgebohrt.

Ich programmiere schon mit Threads.
Allerdings ging ich davon aus, dass Ereignisse auch ohne Threads de facto zeitgleich ausgelöst werden und dann abgearbeitet werden können. Kommt eine neue Liste, wird - vom Server gesteuert - ein Ereignis ausgelöst, was diese Liste einfach in die TListBox einträgt.
Wenn ich das jetzt richtig verstehe, würde das Ereignis aber warten müssen, bis mein Sendevorgang beendet ist? -> wieder was dazu gelernt. Das beutet dann aber auch, dass ich an möglichst keiner Stelle im Programm ein
Delphi-Quellcode:
Application.Processmessages;
aufrufen darf, oder?

Zitat:

Zitat von jfheins (Beitrag 1091687)
Und solange es keine anderen Threads gibt, kannst du auch sicher sein dass die Liste nicht geändert wird.

Nur auf dem Server gibt es welche. Aber der ist vom Code/Problem nicht betroffen.

Mein Fazit lautet also:
Ich kann den Code so verwenden und muss nicht meine Idee mit der 2. Liste weiter verfolgen.

Gruß und abermals Danke für die Aufklärung, Alex

jfheins 29. Mär 2011 12:05

AW: Suche in TStrings optimieren
 
Zitat:

Zitat von Schwedenbitter (Beitrag 1091715)
Ja. Ich wollte nicht das Rad neu erfinden und bin daher strikt nach Anleitung vorgegangen. Ich habe das ganze nur immens aufgebohrt.

Ich programmiere schon mit Threads.
Allerdings ging ich davon aus, dass Ereignisse auch ohne Threads de facto zeitgleich ausgelöst werden und dann abgearbeitet werden können. Kommt eine neue Liste, wird - vom Server gesteuert - ein Ereignis ausgelöst, was diese Liste einfach in die TListBox einträgt.
Wenn ich das jetzt richtig verstehe, würde das Ereignis aber warten müssen, bis mein Sendevorgang beendet ist? -> wieder was dazu gelernt. Das beutet dann aber auch, dass ich an möglichst keiner Stelle im Programm ein
Delphi-Quellcode:
Application.Processmessages;
aufrufen darf, oder?

Ja, genau. Ein Thread kann immer nur an einer Stelle im Code zugleich arbeiten. Dafür gibt es ja die MessageQueue, die die Nachrichten puffert und dafür sorgt das alles schön nacheinander abgearbeitet wird. Diesen Fluss kann man mit Application.ProcessMessages unterbrechen, aber dann kann man sich böse Konsequenzen einhandeln ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:49 Uhr.
Seite 2 von 2     12   

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