Einzelnen Beitrag anzeigen

bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.138 Beiträge
 
Delphi 11 Alexandria
 
#1

warum scheitert die Prüfung auf NIL

  Alt 21. Apr 2022, 11:55
warum bekomme ich eine Zugriffsverletzung wenn ich im Unterprogramm meiner Graphen Klasse
die VertexListe löschen möchte ?
Der aufrufende der Code :

Delphi-Quellcode:
 .........
var
  _V1, _V2: TObjectList<TVertex<Integer>>;
  aVertex: TVertex<Integer>;
  i, j: Integer;
begin


  if (G <> nil) then
  begin
     G.partitionTwo(_V1, _V2);


  .....
  end;


die beiden Vertexlisten werden in der Routine partitionTwo erzeugt wenn die Abfrage Nil ergibt.
Sollte doch so auch klappen, im aufrufenden Code (siehe oben) erzeuge ich sie ja nicht



Delphi-Quellcode:

procedure TGraph<Tdata>.partitionTwo(
  var _V1: TObjectList<TVertex<Tdata>>;
  var _V2: TObjectList < TVertex < Tdata >> );
var
  v: TVertex<Tdata>;
  _V1connected: Boolean;

  i, j, k: Integer;
begin
  ///
  /// reset all vertex flags to 0
  ///
  self.clear_colors;

  if (_V1 = nil) then
    ///
    /// no need to create vertex list prior to this function call
    ///
    begin
    _V1 := TObjectList < TVertex < Tdata >>
      .Create(TVertex<Tdata>.createVertexComparer(), false);
    end;

  if (_V2 = nil) then
    ///
    ///
    ///
    begin
    _V2 := TObjectList < TVertex < Tdata >>
      .Create(TVertex<Tdata>.createVertexComparer(), false);
    end;

  _V1.clear;
  _V2.clear; /// -> hier die Zugriffsverletzung :-(


  .......

Tatsächlich kommt es zur AV beim zweiten List.Clear Befehl, warum ??
  Mit Zitat antworten Zitat