AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Pointer of Array of Pointer neues Prinzip

Pointer of Array of Pointer neues Prinzip

Ein Thema von Marcel2906 · begonnen am 9. Dez 2011 · letzter Beitrag vom 9. Dez 2011
Antwort Antwort
Marcel2906

Registriert seit: 17. Aug 2011
Ort: Warendorf
112 Beiträge
 
Delphi 2010 Professional
 
#1

AW: Pointer of Array of Pointer neues Prinzip

  Alt 9. Dez 2011, 09:41
So, nun habe ich mich schlau gemacht, bekomme aber beim schließen meines Programme eine Fehlermeldung "Zugriffsverletzung"..wo liegt mein Fehler:

Delphi-Quellcode:

Type
   PEintrag = ^TEintrag;
   TEintrag = Record
      Vorgaenger: PEintrag;
      Wert: integer;
      Nachfolger: PEintrag;
   End;

Type
   TListe = Array Of PEintrag;
   PListe = ^TListe;

Type
   TForm1 = Class(TForm)
      LBOutNumber: TListBox;
      EdGetNumber: TEdit;
      BtBeenden: TButton;
      BtSort: TButton;
      BtHinzufuegen: TButton;

   private
      Liste: PListe;
      Eintrag: PEintrag;
      Procedure AddElement(Wert: integer);
      Procedure FreeKette;
   End;

Var
   Form1: TForm;
   First: PEintrag; //Anfang der Kette als globale Variable

Implementation
{$R *.dfm}

Procedure TForm1.FormCreate(Sender: TObject);
Begin
   Liste := Nil;
   New(Liste);
End;

Procedure TForm1.FormDestroy(Sender: TObject);
Var
   i: integer;
Begin
   For i := Low(Liste^) To High(Liste^) Do
      Dispose(Liste^[i]);
   Dispose(Liste);
   FreeKette;
End;

Procedure TForm1.BtHinzufuegenClick(Sender: TObject);
Begin
   Try
      AddElement(StrtoInt(EdGetNumber.Text));
      EDGetNumber.Clear;
   Except
      ShowMessage('Nur Zahlen bitte');
      EDGetNumber.Clear;
   End;
End;

Procedure TForm1.AddElement(Wert: integer);
Var
   hlp, hlp2: PEintrag;
Begin
   //Anfang vorhanden ?
   If (FIRST = Nil) Then Begin
      New(First);
      First^.Vorgaenger := Nil; //Der Anfang der Kette hat keinen Vorgänger;
      First^.Nachfolger := Nil; //Der Nachfolger ist auch erstmal nicht vorhanden.
      hlp2 := First;
   End Else Begin
      hlp := First;
      While (hlp^.Nachfolger <> Nil) Do
         hlp := hlp^.Nachfolger;
      new(hlp^.Nachfolger);
      hlp2 := hlp^.Nachfolger;
      hlp2^.Vorgaenger := hlp;
   End;
   hlp^.Wert := Wert;
End;

Procedure tForm1.FreeKette;
Var
   wrk: PEintrag;
Begin
   wrk := First^.Nachfolger;
   While (wrk <> Nil) Do Begin
      Dispose(first);
      first := wrk;
      wrk := wrk^.Nachfolger;
   End;
   Dispose(first);
End;
End.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#2

AW: Pointer of Array of Pointer neues Prinzip

  Alt 9. Dez 2011, 09:49
In welcher Zeile denn?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Marcel2906

Registriert seit: 17. Aug 2011
Ort: Warendorf
112 Beiträge
 
Delphi 2010 Professional
 
#3

AW: Pointer of Array of Pointer neues Prinzip

  Alt 9. Dez 2011, 09:56
in keiner Zeile..Programm startet normal. Wenn ich dann Zahlen einfüge und mein TForm1 schließe, bekomme ich den Fehler angezeigt
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#4

AW: Pointer of Array of Pointer neues Prinzip

  Alt 9. Dez 2011, 09:57
Dann stepp doch einmal durch und schau, in welcher Zeile der Fehler auftritt. Übrigens: wozu ist eigentlich das Array gut, das wird doch gar nicht benutzt?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Marcel2906

Registriert seit: 17. Aug 2011
Ort: Warendorf
112 Beiträge
 
Delphi 2010 Professional
 
#5

AW: Pointer of Array of Pointer neues Prinzip

  Alt 9. Dez 2011, 10:04
wie gehe ich denn einzeln da durch, habs mit f7 gemacht. und bekomme den fehler erst ganz am ende, wenn das programm schon beendet ist.

Zitat:
Übrigens: wozu ist eigentlich das Array gut, das wird doch gar nicht benutzt?
Später möchte ich die Kette sortieren. Glaube dann brauch ich das array, oder nicht?? ^^

Zitat:
Erste Gelegenheit für Exception bei $7C812AFB. Exception-Klasse EAccessViolation mit Meldung 'Zugriffsverletzung bei Adresse 004ADCFF in Modul 'Pointer.exe'. Lesen von Adresse 00000010'. Prozess Pointer.exe (3264)

Geändert von Marcel2906 ( 9. Dez 2011 um 10:05 Uhr) Grund: Fehlermeldung hinzugefügt
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#6

AW: Pointer of Array of Pointer neues Prinzip

  Alt 9. Dez 2011, 10:08
Vielleicht ist der Aufruf von FreeKette im Destruktor nach der Freigabe der Liste keine gute Idee
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Marcel2906

Registriert seit: 17. Aug 2011
Ort: Warendorf
112 Beiträge
 
Delphi 2010 Professional
 
#7

AW: Pointer of Array of Pointer neues Prinzip

  Alt 9. Dez 2011, 10:15
auch wenn ich freeKette auskommentiere kommt der fehler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#8

AW: Pointer of Array of Pointer neues Prinzip

  Alt 9. Dez 2011, 10:22
Die Liste wird ja nicht benutzt, daran liegt es nicht. Ich habe den Code jetzt mal hier unter XE eingefügt und kompiliert, da kommen einige Warnungen und Hinweise, insbesondere in AddElement.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort

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 13:03 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