AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Allgemeines Problem in meinem Programm/ Threads!?
Thema durchsuchen
Ansicht
Themen-Optionen

Allgemeines Problem in meinem Programm/ Threads!?

Ein Thema von Simme · begonnen am 1. Mär 2010 · letzter Beitrag vom 25. Mär 2010
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    
Simme

Registriert seit: 8. Jan 2010
31 Beiträge
 
Delphi 7 Personal
 
#11

Re: Allgemeines Problem in meinem Programm/ Threads!?

  Alt 2. Mär 2010, 17:53
Tut mir Leid, aber das ist irgendwie zu hoch für mich. Kannst du mir nochmal grob erklären, wie das ganze arbeitet? ...
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#12

Re: Allgemeines Problem in meinem Programm/ Threads!?

  Alt 2. Mär 2010, 18:11
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.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#13

Re: Allgemeines Problem in meinem Programm/ Threads!?

  Alt 2. Mär 2010, 19:01
Zu der Sache oben von dir:
Wenn Bomben.Count = 0 ist, dann wirst du irgendwo das

Bomben.Add(Bombe); (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.
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat
Simme

Registriert seit: 8. Jan 2010
31 Beiträge
 
Delphi 7 Personal
 
#14

Re: Allgemeines Problem in meinem Programm/ Threads!?

  Alt 2. Mär 2010, 19:18
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 =)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#15

Re: Allgemeines Problem in meinem Programm/ Threads!?

  Alt 2. Mär 2010, 19:27
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;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Simme

Registriert seit: 8. Jan 2010
31 Beiträge
 
Delphi 7 Personal
 
#16

Re: Allgemeines Problem in meinem Programm/ Threads!?

  Alt 2. Mär 2010, 20:18
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...
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#17

Re: Allgemeines Problem in meinem Programm/ Threads!?

  Alt 2. Mär 2010, 21:53
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?
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat
Simme

Registriert seit: 8. Jan 2010
31 Beiträge
 
Delphi 7 Personal
 
#18

Re: Allgemeines Problem in meinem Programm/ Threads!?

  Alt 2. Mär 2010, 22:10
Zitat von wicht:
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.
Ich setze Delete erst hinter die Funktion. Er löscht erst/nur, wenn er in die Funktion reinkommt und damit dann fertig ist.


Zitat von wicht:
Was heißt denn "mit Delete funktioniert auch nicht"? Etwas genauer bitte ..
Dadurch, dass sich der Timer immer wiederholt, ist das, wenn einmal die Bombe gezündet wurde, eine Enlosschleife. Wenn ich Delete hinter die Funktion (also nach dem Durchlauf) setze, ist keine Veränderung zu sehen. Ich lasse mir ja während des Spielverlaufes immer den Wert von Count anzeigen. Und der wird nicht niedriger. Er bleibt dann immer auf 1.

Zitat von wicht:
Hast du die TList benutzt, um die Bomben zu verwalten, oder die TObjectList mit OwnsObjects = True?
Ich verwende eine ganz normale TList, wie es bei dir am Anfang drin stand.

Liebe Grüße,
Simon =)
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#19

Re: Allgemeines Problem in meinem Programm/ Threads!?

  Alt 2. Mär 2010, 22:39
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..
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat
Simme

Registriert seit: 8. Jan 2010
31 Beiträge
 
Delphi 7 Personal
 
#20

Re: Allgemeines Problem in meinem Programm/ Threads!?

  Alt 2. Mär 2010, 23:11
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 von "wicht":
Da wird was schiefgehen, der Count sollte nicht auf 1 bleiben.
Das mit dem Count funktioniert jetzt auch.

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 =)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:40 Uhr.
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