Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Probleme mit dyn. Array & pseudo-doppelt verketteter Liste (https://www.delphipraxis.net/71710-probleme-mit-dyn-array-pseudo-doppelt-verketteter-liste.html)

Waldteufel 20. Jun 2006 12:57

Re: Probleme mit dyn. Array & pseudo-doppelt verketteter
 
Hi Manumf. :hi:

Zeig doch mal den Konstruktor-Code.
Und benenn den Konstruktor nach Create um. Init, das gab's mal unter TurboPascal... ;-)

ManuMF 20. Jun 2006 13:06

Re: Probleme mit dyn. Array & pseudo-doppelt verketteter
 
Hallo,

unser Lehrer meinte, wir sollen es so nennen, um es nicht mit create zu verwechseln :gruebel:

Hier der Code:
Delphi-Quellcode:
constructor TKnoten.Init;
begin
   Position := Point(0, 0); // um später schnell anzuzeigen, wo er liegt
   Nummer := 0; // auch für die Anzeige
   KLinks := nil; // die Verknüpfungen
   KRechts := nil;
   KOben := nil;
   KUnten := nil;
   Genutzt := false; // wird für den Durchlauf gebraucht
end;
Der Aufruf siehe mein Beitrag #8.

Gruß,
ManuMF

marabu 20. Jun 2006 13:06

Re: Probleme mit dyn. Array & pseudo-doppelt verketteter
 
Hi.

Delphi-Quellcode:
begin
   SetLength(Knoten, Pred(LZahl));

   for Y := 0 to Pred(LZahl) do
   begin
      for X := 0 to Pred (LZahl) do
      begin
         Knoten[X + (Lzahl * Y)] := TKnoten.Start;
Die Dimensionierung steht in keinem Verhältnis zu den von dir verwendeten Indexwerten.

Grüße vom marabu

ManuMF 20. Jun 2006 13:14

Re: Probleme mit dyn. Array & pseudo-doppelt verketteter
 
Hallo,

stimmt! :wall:
Ich habe es jetzt korrigiert:
Delphi-Quellcode:
SetLength(Knoten, PredSqr((LZahl)));
Aber warum hat das Erstellen trotzdem geklappt? :gruebel: Die Meldung kommt übrigens immer noch, zuerst aber eine mit ungültiger Zeigeroperation.

Gruß,
ManuMF

Khabarakh 20. Jun 2006 13:17

Re: Probleme mit dyn. Array & pseudo-doppelt verketteter
 
Zitat:

Zitat von ManuMF
Das Knoten-für-Knoten-löschen habe ich bisher nur in der Liste gemacht.

Aah, du bringst mich mit deinen Pseudo- und Nicht-Pseudo-Listen ganz durcheinander :stupid: . Jetzt ist es allerdings klar.
Zitat:

Zitat von ManuMF
Aber warum hat das Erstellen trotzdem geklappt? :gruebel:

Weil du dein Projekt nicht zum Debuggen (in diesem speziell die Bereichsprüfung) eingestellt hast. Schlechte Idee, wenn man Debuggen will ;) . Vielleicht findest du damit auch den nächsten Fehler.

ManuMF 20. Jun 2006 13:22

Re: Probleme mit dyn. Array & pseudo-doppelt verketteter
 
Zitat:

Zitat von Khabarakh
Jetzt ist es allerdings klar.

Sorry, ich hätte es deutlicher schreiben sollen.


Zitat:

Zitat von Khabarakh
Weil du dein Projekt nicht zum Debuggen (in diesem speziell die Bereichsprüfung) eingestellt hast. Schlechte Idee, wenn man Debuggen will ;) . Vielleicht findest du damit auch den nächsten Fehler.

Und wie hilft mir das weiter? :stupid: ;-)

Gruß,
ManuMF

Waldteufel 20. Jun 2006 13:23

Re: Probleme mit dyn. Array & pseudo-doppelt verketteter
 
Hi Manumf.

Zitat:

Zitat von ManuMF
unser Lehrer meinte, wir sollen es so nennen, um es nicht mit create zu verwechseln :gruebel:

Ei verflixt nochmal... :roll: Create ist doch dafür da, dass man es überschreibt verdeckt :wall:
(Lehrer gibt's)

Sähe dann so aus:
Delphi-Quellcode:
constructor TKnoten.Create;
begin
   inherited; // <-- GANZ BESONDERS WICHTIG!!!
   Position := Point(0, 0); // um später schnell anzuzeigen, wo er liegt
   Nummer := 0; // auch für die Anzeige
   KLinks := nil; // die Verknüpfungen
   KRechts := nil;
   KOben := nil;
   KUnten := nil;
   Genutzt := false; // wird für den Durchlauf gebraucht
end;

Khabarakh 20. Jun 2006 13:31

Re: Probleme mit dyn. Array & pseudo-doppelt verketteter
 
Zitat:

Zitat von ManuMF
Zitat:

Zitat von Khabarakh
Weil du dein Projekt nicht zum Debuggen (in diesem speziell die Bereichsprüfung) eingestellt hast. Schlechte Idee, wenn man Debuggen will ;) . Vielleicht findest du damit auch den nächsten Fehler.

Und wie hilft mir das weiter? :stupid: ;-)

Du siehst durch eine etwas genauere Exception, wo und welcher Index aus dem Rahmen fällt :gruebel: ?
Zitat:

Zitat von Waldteufel
Create ist doch dafür da, dass man es überschreibt :wall:

Verdeckt ;) . Es sei denn, man leitet von TComponent ab oder hat einen eigenen virtuellen Konstruktor eingeführt.

ManuMF 20. Jun 2006 13:34

Re: Probleme mit dyn. Array & pseudo-doppelt verketteter
 
Hallo,

Danke an Alle! :-D

Warum auch immer, erst jetzt kam "Fehler bei Bereichsprüfung", obwohl ich es schon nach dem Beitrag von Khabarakh aktiviert hatte. Und jetzt ist es mir klar: Die Länge für SetLength muss ja = die höchste Knotennummer + 1 sein, da ich bei 0 anfange... :wall:

So kommt jetzt auch keine Meldung mehr.

Gruß,
ManuMF

P.S.: Ist es nun besser, Create zu verdecken, oder Init o.Ä. zu verwenden? ;-)

Khabarakh 20. Jun 2006 19:41

Re: Probleme mit dyn. Array & pseudo-doppelt verketteter
 
Zitat:

Zitat von ManuMF
Warum auch immer, erst jetzt kam "Fehler bei Bereichsprüfung", obwohl ich es schon nach dem Beitrag von Khabarakh aktiviert hatte.

Wahrscheinlich hattest du keinen Rebuild des Projektes durchgeführt.
Zitat:

P.S.: Ist es nun besser, Create zu verdecken, oder Init o.Ä. zu verwenden? ;-)
Es gäbe da schon ein paar, die dich für die Verwendung Letzteren lynchen würden ... :zwinker:


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:51 Uhr.
Seite 2 von 2     12   

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