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 ??