AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

abs funktioniert nicht

Offene Frage von "hansdieter11"
Ein Thema von hansdieter11 · begonnen am 10. Jan 2010 · letzter Beitrag vom 10. Jan 2010
Antwort Antwort
Seite 1 von 4  1 23     Letzte » 
hansdieter11

Registriert seit: 26. Feb 2009
41 Beiträge
 
#1

abs funktioniert nicht

  Alt 10. Jan 2010, 21:40
Hallo zusammen,

habe ein Programm geschrieben, in dem Kugeln Raumschiffe treffen sollen.

Das habe ich dann mit abs(... - ... < 1) gelöst, doch das Programm stürzt sofort ab.

Danke schonmal für die Mithilfe.

Grüße
Timo

Delphi-Quellcode:
procedure TForm1.TiRaumschiffTimer(Sender: TObject);
begin
  FOR r:=1 TO number DO
    begin
     IF Raumschiff[r] <> nil
     THEN
      begin
        Raumschiff[r].GoRight;
        ShRaumschiff[r].Left := Raumschiff[r].xCoord;


        IF Raumschiff[r].xCoord > 700
        THEN
         begin
           Raumschiff[r].xCoord := -50;
           ShRaumschiff[r].Left := Raumschiff[r].xCoord;
         end;

        If (abs(Raumschiff[r].xCoord-Kugel[i].xCoord)<1) and
            (abs(Raumschiff[r].yCoord-Kugel[i].yCoord)<1) then
        begin
          Raumschiff[r].Destroy;
          Abgeschossen := Abgeschossen+1;
        end;

      end;
     end;

  LaRaumschiffe.caption := inttostr(Abgeschossen);
end;
Angehängte Dateien
Dateityp: rar 12_raumschiff_207.rar (146,0 KB, 2x aufgerufen)
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: abs funktioniert nicht

  Alt 10. Jan 2010, 21:45
- Debuggen? -> Welche Zeile?
- Mit Destroy gibt man keine Objekte frei.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.016 Beiträge
 
Delphi 12 Athens
 
#3

Re: abs funktioniert nicht

  Alt 10. Jan 2010, 21:45
Wie in der OH steht, ruft man Destroy nicht direkt auf,
sondern nutzt Free.

Wobei, da du auf NIL prüfst, solltest du Delphi-Referenz durchsuchenFreeAndNil verwenden
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
hansdieter11

Registriert seit: 26. Feb 2009
41 Beiträge
 
#4

Re: abs funktioniert nicht

  Alt 10. Jan 2010, 21:47
Ich verstehe leider kein Wort
Was muss ich jetzt machen, damit es funktioniert ?
Grüße
Timo
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: abs funktioniert nicht

  Alt 10. Jan 2010, 21:48
Delphi-Quellcode:
:
  If (abs(Raumschiff[r].xCoord-Kugel[i].xCoord)<1) and
      (abs(Raumschiff[r].yCoord-Kugel[i].yCoord)<1) then
  begin
    Raumschiff[r].Free;
    Raumschiff[r]:=nil;
    Abgeschossen := Abgeschossen+1;
  end;
:
  Mit Zitat antworten Zitat
hansdieter11

Registriert seit: 26. Feb 2009
41 Beiträge
 
#6

Re: abs funktioniert nicht

  Alt 10. Jan 2010, 21:50
Verstehe deinen Ansatz, aber es geht immer noch nicht.

Habe mein Programm auch online gestellt, falls du es dir im Ganzen angucken möchtest.

Grüße
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: abs funktioniert nicht

  Alt 10. Jan 2010, 21:54
Schau dir einfach mal die Warnungen an, die dein Compiler dir ausspuckt und beheben diese. Dann läuft dein Programm einwandfrei.

Edit: Globale Variablen sind böse und so wenig wie nötig zu verwenden!
  Mit Zitat antworten Zitat
hansdieter11

Registriert seit: 26. Feb 2009
41 Beiträge
 
#8

Re: abs funktioniert nicht

  Alt 10. Jan 2010, 21:58
Aber wenn ich i global mache, so wird sie bei abs(....[i]) wohl nicht erkannt, oder ?
Grüße
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: abs funktioniert nicht

  Alt 10. Jan 2010, 22:03
Ich verstehe deine Probleme nicht.

Der Compiler sagt, dass die Laufvariable einer FOR-Schleife immer lokal deklariert sein muss.

Also deklariere dein i und r lokal, dort wo deine Schleifen sind und fertig.

Mach es doch nicht kompilzierter als es ist.
  Mit Zitat antworten Zitat
hansdieter11

Registriert seit: 26. Feb 2009
41 Beiträge
 
#10

Re: abs funktioniert nicht

  Alt 10. Jan 2010, 22:05
Ja, das habe ich doch gemacht, aber nun verschwinden die Raumschiffe
bei Berührung mit der Kugel nicht und 'Abgeschossen' geht auch nicht hoch.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 20:09 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