AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi for-Schleife und Zeiger führen zu komischem Problem
Thema durchsuchen
Ansicht
Themen-Optionen

for-Schleife und Zeiger führen zu komischem Problem

Ein Thema von Giiram · begonnen am 23. Apr 2005 · letzter Beitrag vom 23. Apr 2005
Antwort Antwort
Giiram

Registriert seit: 10. Dez 2004
7 Beiträge
 
#1

for-Schleife und Zeiger führen zu komischem Problem

  Alt 23. Apr 2005, 18:47
Ich weiß, der Titel ist nicht so gut, aber ich weiß nicht wie ichs anders beschreiben soll.

Ich schreib grad an ner kleinen Partikelsimulation. Habe ich 3 Parikel funktioniert alles Problemlos. Mach ich ein 4. rein, bekomm ich fast sofort einen Fehler.

Access violation at address 00456530 in module 'Partikel.exe'. Read of address 00000018.

Hab dann mal mit Haltepunkten versucht den Fehler einzukreisen. In dieser for-Schleife ist das Problem.

Delphi-Quellcode:
for C1 := 0 to High(FPartikelList) do
  begin
    q := FPartikelList[C1].Fp;
    Fges := 1000 / (Sqr(q.X - Fp.X) + Sqr(q.Y - Fp.Y));
    ...
  end;
Erster Schleifendurchlauf ganz normal. Beim zweiten durchlauf ist C1 wie es sich gehört 1 und FPartikelList[C1] (Zeiger auf nen anderes Partikel) zeigt in der Watchlist auch die Richtige Speicheradresse, aber nach der Zuweisung von q ist C1 plötzlich wieder 0 und auch q hat den Wert vom ersten Schleifendurchlauf und nicht den, welchen es jetzt haben sollte.

Bei 3 Partikeln gehts bei 4 nicht. Habt ihr vielleicht ne Ahnung woran das liegen könnte?

Hier noch die Typen- und Klassendefinitionen:

Delphi-Quellcode:
  TVector = record
    X, Y: Real;
  end;

  PImage = ^TImage;
  PPartikel = ^TPartikel;

  TPartikel = class
  private
    Fp, Fv: TVector;
    FImage: PImage;
    FPartikelList: Array of PPartikel;
  public
    constructor Create(p: TVector; Image: PImage);
    function Vec(X, Y: Real): TVector;
    procedure Add(Partikel: PPartikel);
    procedure Refresh(t: Real);
  end;

  TPartikelMenge = class
  private
    FImage: PImage;
    FPartikelMenge: Array of TPartikel;
  public
    constructor Create(Image: PImage);
    procedure Add(p: TVector);
    procedure Refresh(t: Real);
    procedure Clear;
    destructor Destroy;
  end;
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: for-Schleife und Zeiger führen zu komischem Problem

  Alt 23. Apr 2005, 18:52
Moin!

Nutze nicht PImage und PPartikel sondern direkt die Instanzen. Grund: Die Instanzenvariablen sind schon Zeiger. Jetzt hast du einen Zeiger auf einen Zeiger, der macht da leicht mal Probleme.

MfG
Muetze1
  Mit Zitat antworten Zitat
Giiram

Registriert seit: 10. Dez 2004
7 Beiträge
 
#3

Re: for-Schleife und Zeiger führen zu komischem Problem

  Alt 23. Apr 2005, 19:29
Danke!

Hab mit Zeigern noch nicht so viel Erfahrung und da es ja tlw. geklappt hat, wäre ich da selbst nie im Leben drauf gekommen.
  Mit Zitat antworten Zitat
Antwort Antwort


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:46 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