Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Endlosschleife + WarteFunktion ohne Programm zu blockieren (https://www.delphipraxis.net/105185-endlosschleife-wartefunktion-ohne-programm-zu-blockieren.html)

.chicken 27. Dez 2007 00:10

Re: Endlosschleife + WarteFunktion ohne Programm zu blockier
 
Wenn du sagst du findest vier unschön, was findest du am schönsten? 1? Ist das nicht unelegant, doppelte Variablen zu haben?

sirius 27. Dez 2007 09:58

Re: Endlosschleife + WarteFunktion ohne Programm zu blockier
 
Ein Thread ständig anzuhalten ist eben nicht im Sinne des Erfinders. Aber je nachdem, wie du es im Programm benötigst, kannst du es ja einsetzen.

Aber versuchs mal mit TCriticalSection. Du erstellst ein Objekt davon im Main-Thread und übergibst es auch an den Thread (am besten über den Constructor) und immer bevor du in die kritische Region kommst (wo du auf eben diese Variablen zugreifst) rufst du IMHO CriticalSection.Enter auf und danach wieder leave. Wichtig ist, dass es dasselbe Objekt ist.

.chicken 27. Dez 2007 10:22

Re: Endlosschleife + WarteFunktion ohne Programm zu blockier
 
Ok, danke darüber informier ich mich dann genauer ;-)

.chicken 29. Dez 2007 13:47

Re: Endlosschleife + WarteFunktion ohne Programm zu blockier
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ok, ich habe ein Problem! Ich kriege immer nen Abstract Error! Ich habs nun erstmal zum testen so gemacht, dass ich die Variablen in meiner FormUnit nochmal speichere. Ich hänge alles mal dran.

Ich weiss nicht worans liegt, irgendwie habe ich dass Gefühl dass Execute auch nicht ausgeführt wird, aber vll täusche ich mich auch.

Klickt einfach im Programm oben auf Dialog und dann auf Testen. Normalerweise sollte dann rechts in der Paintbox der Dialog abgespielt werden. Zumindest die Funktionen die shcon funktionieren. Aber ich krieg immer den Error :-\

sirius 29. Dez 2007 13:52

Re: Endlosschleife + WarteFunktion ohne Programm zu blockier
 
execute wird nicht ausgeführt, da du die Methode überschreiben musst.

Testen kann ich den Code nicht, da mir min. eine Unit fehlt, aber ich hab noch etwas gefunden:
Delphi-Quellcode:
for i := 0 to length(Dialogs.SentenceArray) - 1 do
begin
  SetLength(LocalSentenceArray, length(LocalSentenceArray) + 1); //<----
  LocalSentenceArray[i] := Dialogs.SentenceArray[i];
end;
Du kopierst ja hier das Array. Und in einer Schleife sollte man die von mir markierte Zeile solange es geht vermeiden.
Das macht es ja auch:
Delphi-Quellcode:
SetLength(LocalSentenceArray, length(Dialogs.SentenceArray));
for i := 0 to high(Dialogs.SentenceArray) do
  LocalSentenceArray[i] := Dialogs.SentenceArray[i];

.chicken 29. Dez 2007 14:32

Re: Endlosschleife + WarteFunktion ohne Programm zu blockier
 
:wall: :wall: :wall:

Danke :angel: ^^


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:05 Uhr.
Seite 4 von 4   « Erste     234   

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