![]() |
Re: Allgemeines Problem in meinem Programm/ Threads!?
Tut mir Leid, aber das ist irgendwie zu hoch für mich. :D Kannst du mir nochmal grob erklären, wie das ganze arbeitet? ...
|
Re: Allgemeines Problem in meinem Programm/ Threads!?
Es wäre jetzt sehr hilfreich, wenn du sagen würdest, was du davon verstehst und was nicht.
Eigentlich wurde alles in dem Projekt hier im Thread schon angesprochen. |
Re: Allgemeines Problem in meinem Programm/ Threads!?
Zu der Sache oben von dir:
Wenn Bomben.Count = 0 ist, dann wirst du irgendwo das
Delphi-Quellcode:
(nach Bombe := TBombe.Create, wie in meinem Beispiel) vergessen haben. Weil dies fügt die Bombe eben der Liste hinzu, die du in der Schleife im Timer abarbeiten willst. Wenn man sie nicht hinzufügt, bleibt Count (Anzahl der Elemente in der Liste) natürlich auf 0.
Bomben.Add(Bombe);
|
Re: Allgemeines Problem in meinem Programm/ Threads!?
Danke. Das explodieren klappt erstmal, aber das Problem ist, dass ja dann Count auf 1 bleibt und er somit immer wieder durchgeht durch die Schleife. Wie kann ich denn nur die eine Zeile der Liste wieder löschen, um nicht andere Bomben dabei zu beeinflussen?
Lg, Simon =) |
Re: Allgemeines Problem in meinem Programm/ Threads!?
Delphi-Quellcode:
idx := 0;
// Alle Bomben in der Liste bearbeiten while idx < FBombList.Count do begin KillBomb := ... // Hier muss noch eine sinnvolle Abfrage rein, wenn die Bombe gelöscht werden soll! // Soll die Bombe gelöscht werden? if KillBomb then // Bombe aus der Liste entfernen FBombList.Delete( idx ) else begin // Auf zur nächsten Bombe in der Liste Inc( idx ); end; end; |
Re: Allgemeines Problem in meinem Programm/ Threads!?
Naja, eigentlich soll er's ja immer nach einem Durchlauf löschen. Deshalb brauch ich ja keine Bedingung. Aber das mit Delete funktioniert auch nicht...
|
Re: Allgemeines Problem in meinem Programm/ Threads!?
Du brauchst die Abfrage. Du willst erst löschen, wenn die Zeit abgelaufen (Bombe.ExplodeTime oder wie es hieß) ist, oder an der Bombe eine Eigenschaft gesetzt wurde oder so. Bombe wird gelegt, Bombe explodiert, frühstens danach darf sie gelöscht werden.
Was heißt denn "mit Delete funktioniert auch nicht"? Etwas genauer bitte :) .. Hast du die TList benutzt, um die Bomben zu verwalten, oder die TObjectList mit OwnsObjects = True? |
Re: Allgemeines Problem in meinem Programm/ Threads!?
Zitat:
Zitat:
Zitat:
Liebe Grüße, Simon =) |
Re: Allgemeines Problem in meinem Programm/ Threads!?
Benutze die TObjectList mit OwnsObjects = True, wie in dem Beispiel im Anhang von Sir Rufo. Wenn du dort Delete aufrufst und OwnsObjects = True ist, löscht sie automatisch das Objekt mit. Das heißt der Speicher wird freigegeben und das Teil verschwindet von der Form (Ich habe das noch nie gemacht, aber ich vermute, dass es sich so verhält). Die normale TList kennt die Objekte nur und löscht sie nur aus der Liste beim .Delete, das Objekt an sich bleibt weiterhin bestehen und bleibt deshalb auch auf deiner Form.
Ich lese gerade, dass Count immer auf 1 bleibt - schau mal mit dem Debugger, wie oft dein Programm in BombenListe.Add() und BombenListe.Delete() reinläuft. Da wird was schiefgehen, der Count sollte nicht auf 1 bleiben. Oder die Stelle, die den Count anzeigt, wird zur falschen Zeit aufgerufen.. :stupid: |
Re: Allgemeines Problem in meinem Programm/ Threads!?
Also, ich hab jetzt nochmal ein bisschen getüfftlet. Es funktioniert jetzt soweit. Nur kann ich keine TObjectList verwenden. Da kommt eine Fehlermeldung. Undefinierter Bezeichner. Also, entweder ist meine Delphi-Version zu alt oder es hat einen anderen Grund. Das wäre eigentlich der letzte zu behebende Fehler. Weil sonst überall die Images noch angezeigt werden.
Zitat:
Danke schon mal für alle Hilfe! Ich sehe dem ganzen hoffnungsvoll entgegen. Das wäre das letzte, was zu beheben wäre. ;) Eine gute Nacht und ich hoffe, dass ihr da noch Hilfe bieten könnt! Simon =) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:26 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