AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Pointer-Problem

Ein Thema von Hador · begonnen am 25. Jan 2007 · letzter Beitrag vom 25. Jan 2007
Antwort Antwort
Benutzerbild von Hador
Hador

Registriert seit: 11. Dez 2004
Ort: Recke
682 Beiträge
 
Turbo Delphi für Win32
 
#1

Re: Pointer-Problem

  Alt 25. Jan 2007, 20:47
Zitat von Der_Unwissende:
Zitat von OH:
Der Parameter P muss zu Beginn den Wert nil haben oder auf eine zuvor mit GetMem , AllocMem oder ReallocMem zugewiesene dynamische Variable zeigen.
Das ist bei Dir im Moment nicht der Fall...
Wiso ist das nicht der Fall?

Denn:

Zitat von OH:
Hat P einen Wert ungleich nil und Size einen Wert ungleich Null, wird der Speicherblock, auf den P zeigt, mit der in Size angegebenen Größe erneut zugewiesen. Diese Operation wirkt sich nicht auf den Inhalt des Speicherblocks aus. Wird der Block jedoch vergrößert, sind die neu zugewiesenen Speicherbereiche nicht definiert. Kann der Block nicht an dieser Position im Speicher reserviert werden, wird er in einen anderen Bereich auf dem Heap verschoben, und der Wert von P wird entsprechend geändert.
Zitat von Der_Unwissende:
Ja, was dein Array angeht, das vom Typ TPointerlist, so glaube ich dürfte übrigens hier dein Fehler liegen. TPointerList ist der Alias-Typ für ein statisches Array (mit der Festen Größe von 0 .. MaxListSize - 1). Dein Einsatz von ReallocMem ist an dieser Stelle damit (imho) völlig falsch. Ein statisches Array ist wirklich ein eigener Datentyp, die Größe ist fest. Selbst wenn Du hier eine Adresse gültig übergibst und diese Routine mehr Speicher alloziert, so würdest Du weiterhin nur auf die statische Größe (sinnvoll) zugreifen können...
Ich hatte zuvor an dieser Stelle auch ein Array of PObject, da ich das ganze ähnlich sah, wie du. Jedoch trat dabei der selbe Fehler auf. Daraufhin habe ich mir mal die Deklaration der Klasse TList aus der Unit Classes angeschaut und musste feststellen, dass sie dort mit einem statischen Array und ReAllocMem arbeiten. Daher habe ich dann das Ganze bei mir ebenfalls mal so umgesetzt, jedoch mit mäßigem Erfolg, da der Fehler ja (leider) immer noch besteht.

Das wäre übrigends ebenfalls ein Punkt: Warum ist das so

EDIT(vergessen):
Wenn ich Pointer nehme, kann ich aber bei den Methoden wie Insert oder Delete die Zeiger mit Move direkt verschieben und erspare mir die Schleife zum umkopieren, die an sich zimlich lanmgsam ist.
Lars Kiesow
http://www.larskiesow.de

Computer gehorchen deinen Befehlen, nicht deinen Absichten.
  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 00:57 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