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 3 von 5     123 45      
Benutzerbild von wicht
wicht

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

Re: Allgemeines Problem in meinem Programm/ Threads!?

  Alt 2. Mär 2010, 23:17
Ich habe die TObjectList noch nie verwendet.
Ist das eine Fehlermeldung beim Ablauf des Programms, oder noch davor - also beim kompilieren? Ich vermute letzteres?
Quelltext, bitte.
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
 
#22

Re: Allgemeines Problem in meinem Programm/ Threads!?

  Alt 2. Mär 2010, 23:27
Ja, der Fehler tritt noch beim Compilieren auf. Hier der Quelltext:
Delphi-Quellcode:
type
  TForm1 = class(TForm)
{...}
private
    { Private-Deklarationen }
    Bomben: TList; //Wenn ich hier TObjectList eingebe, kommt die Fehlermeldung. In der Hilfe-Datei ist die Liste aber vorhanden
    zahl : Integer;
    ja: Boolean;
  public
    { Public-Deklarationen }
  end;
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
 
#23

Re: Allgemeines Problem in meinem Programm/ Threads!?

  Alt 2. Mär 2010, 23:37
Wenn so ein Fehler auftritt, dann liegt das daran, dass

a) deine Delphi-Version dieses nicht kennt

oder ... eher wahrscheinlicher

b) du nicht die korrekte Unit eingebunden hast

Um die Unit herauszufinden gibt es (speziell in diesem Beispiel) die Möglichkeit

a) schaue in meinen Quelltext, welche Units ich eingebunden habe und du nicht

oder (geht auch ganz hervorragend)

b) du nutzt die Früchte unseres Herrn und schaust mal dort vorbei Delphi-Referenz durchsuchenTObjectList

und schwupps (oder auch "wuppdi") stellen wir fest, das ominöse TObjectList verbirgt sich in der Unit "Contnrs"


Ich vermute mal, dass du das Programm von mir noch nicht versucht hast zu kompilieren, sonst wäre dir aufgefallen, dass dein Delphi TObjectList kennt.
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 olee
olee

Registriert seit: 16. Feb 2008
Ort: Boppard
540 Beiträge
 
Turbo Delphi für Win32
 
#24

Re: Allgemeines Problem in meinem Programm/ Threads!?

  Alt 2. Mär 2010, 23:40
Wenn man das mächtige Werkzeug namens 'HILFE' oder den Gott 'F1' nutzt,

erfährt man schnell, das TObjectList in der Unit Contnrs deklariert ist.

D.h.: Die unit Contnrs ganz oben in die Uses eintragen

EDIT: Mist! Zu spät

MFG
Björn Zeutzheim
Codename: Performancepumpe
  Mit Zitat antworten Zitat
Simme

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

Re: Allgemeines Problem in meinem Programm/ Threads!?

  Alt 3. Mär 2010, 00:05
Ja, bei meiner Hilfe stand's nicht drin. Aber ist jetzt nicht so wichtig. Das funktioniert jetzt. Das Problem ist jetzt noch: Wenn ich mehrere Bomben habe und die erste explodiert ist, kommt oft (nicht immer!) eine Fehlermeldung mit "zugriffsverletzung" usw.
Woher kommt die?

Gute Nacht,
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
 
#26

Re: Allgemeines Problem in meinem Programm/ Threads!?

  Alt 3. Mär 2010, 00:11
Herzlichen Glückwunsch zum Geburtstag
Nimm dir den Debugger und finde es so raus. Ich vermute, du greifst irgendwo auf eine Bombe zu, obwohl die Bombe durch das BombenListe.Delete() schon zerstört wurde, also nicht mehr existiert. Benutze ausschließlich die Liste, um auf die Bomben zuzugreifen, dann sollte das nicht passieren, wenn es denn daran liegt.
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
 
#27

Re: Allgemeines Problem in meinem Programm/ Threads!?

  Alt 3. Mär 2010, 23:54
Hey,
danke. =)
also, das Problem mit dem Debugger: Im Moment ist von objektorientierter Programmierung bei mir noch nicht so viel zu sehen. Ich weiß sie jetzt aber anzuwenden, hab jetzt aber nicht die Zeit, das noch alles umzustellen. Deshalb hab ich das nur bei den Spielmännchen noch gemacht, weil es das total vereinfacht hat. Allerdings ist das beim Spielfeld nicht so. Somit gehe ich andauernd alle Spielfelder des 11x11 großen Spielfeldes durch. 11x11 sind 121 Spieldfelder. Und durch solche Schleifen muss ich dann immer wieder durch beim Debugger. 121 mal. Das nervt und ist sehr aufwendig.
Er hat halt immer ein Problem damit, wenn eine Bombe explodiert ist. Obwohl ich eigentlich versucht habe, es so einzurichten, dass er die Liste nur löscht, wenn sich keine Bombe mehr auf dem Spielfeld befindet...
ich schau mir das morgen in der Schule nochmal an, ich geh jetzt ins Bett. Bin sehr müde. Wenn du noch eine Idee hast, dann poste sie mir. Ansonsten schreib ich dir morgen nochmal irgendwann und gebe Bericht über den Stand der Dinge.

Eine gute Nacht wünscht
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
 
#28

Re: Allgemeines Problem in meinem Programm/ Threads!?

  Alt 4. Mär 2010, 00:28
Nabend.
Ich werd erstmal warten, ob du so noch weiter kommst, aber ein Tipp noch ... Wenn du die Schleife über alle Spielfelder machst (du könntest sie auch über alle Mannchen/Bomben machen, dann läuft sie nicht 1xx mal durch ), setze deinen Brechpunkt vom Debugger doch in eine weitere Bedingung:

Delphi-Quellcode:
for i := 0 to 11 do
  for n := 0 to 11 do
    if Spielfeld[i][n] is TMaennchen then
    begin
      // tu was mit dem maennchen und hier rein den breakpoint setzen
      TMaennchen(Spielfeld[i][n]).TuWas;
    end;
Dafür muss Spielfeld natürlich so aussehen:

Delphi-Quellcode:
var
  Spielfeld: array[0..10, 0..10] of TObject;
Und man sollte evtl am Anfang jedes Feld mit nil initialisieren. Ist aber auch sehr nervig, wenn sich ein Maennchen bewegt, es immer im Spielfeld auf die neue Koordinate zu setzen. Führt ausserdem dazu, dass auf einem Feld immer nur ein Spieler/Bombe sein kann, nichts gleichzeitig (Nach dem Bombe legen bleibt man ja drauf stehen, deshalb ist das schon ein starkes Minus). Du solltest also eventuell überlegen, ob das Spielfeld nicht über mehrere Listen verwaltet werden soll, wie Bomben und Mannchen, in einer großen Liste. Jede TBombe hat X und Y als Eigenschaft der Klasse, so wie das TMaennchen auch. Dann gehst du einfach über diese Liste und weißst ja direkt, wo das Element, was du in dem Schleifendurchlauf gerade hast, platziert ist... War jetzt doch ein etwas längerer Post, aber egal...

HTH
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
 
#29

Re: Allgemeines Problem in meinem Programm/ Threads!?

  Alt 4. Mär 2010, 22:35
So, hallo nochmal!
Also, ich hab nach wie vor keine Ahnung, woran das liegt... Da kommt immer "Das Maximum(0) ist überschritten." Statt 0 steht da auch manchmal 1 oder 2. Ich hab schon einiges probiert. Ich habe echt keine Ahnung, woran es liegt. Es liegt irgendwie daran, dass ich die Bombenobjekte lösche. Aber warum das so ist, raff ich trotzdem noch nicht.
Mal eine kurze Expertenfrage: Wäre es auch akzeptabel, die Bomben einfach nicht zu löschen, sondern sie einfach invisible zu machen? Würde das sehr viel Speicher blockieren? Ist halt pro gelegte Bombe ein Image mehr.
Ich habe übrigens dadurch, dass ich jetzt weiß, wie ein Timer funktioniert, auch das Problem mit der Tastenverzögerung gelöst. =) Ich habe außerdem den Spieler als extra Klasse vereinbart, damit wurde ein Mehrspielermodus jetzt sehr viel einfacherer möglich. Das ist dann mein letzter Fortschritt. Der Mehrspielermodus. Das funktioniert eigentlich alles gut! Ich freu mich! =) Das einzige zu lösende Problem wäre jetzt eben das mit der ObjectList.

Vielleicht hast du/habt ihr ja noch Ideen!?

Liebe Grüße,
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
 
#30

Re: Allgemeines Problem in meinem Programm/ Threads!?

  Alt 4. Mär 2010, 22:44
Ich verstehe gar nicht, warum du mit/zu jeder Bombe ein Image hast.

Eine Bombe hat 3 Zustände

0 - warten
1 - explodieren
2 - explodiert

Diese Zustände würde ich mir in einer Klasse TBombe merken.

Wenn du jetzt eine ImageList nimmst mit 3 Bildern jeweils eins für jeden Zustand,
dann nimmst du je nach Zustand aus der ImageList einfach das Bild raus.

Das macht die ganze Verwaltung wesentlich einfacher.

Einen Vorschlag für die Bomben-Klasse und die Verarbeitung in einer TObjectList habe ich ja schon gegeben.

So, it's on u
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
Antwort Antwort
Seite 3 von 5     123 45      


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 07:34 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