OK, ich versuche es einmal zu erklären:
Ich habe zwei units. In der einen
Unit ist eine Basisklasse und drei erbende Klassen von der Basisklasse. Ausserdem ist hier ein Hauptmenü, in dem man entscheiden kann, welche Instanz von einer Klasse man in die Liste aufnehmen will.
In der anderen
Unit habe ich die Liste, die Einträge hinzufügen, löschen usw. kann. Es zeigt ein neutraler Pointer auf die Klassenobjekte.
Nun soll es aber so sein, daß es keinen neutralen Pointer mehr in der Liste gibt, sondern die Pointer sollen auf die Basisklasse zeigen, damit man nur Objekte der Basisklasse bzw der vererbten Klassen aufnehmen kann.
Hier ein kleiner Ausschnitt aus meiner Liste:
(p_element ist hier ein neutraler Pointer. Und dieser soll verändert werden, so daß er auf die Basisklasse zeigt, die in einer anderen
Unit steht.)
Delphi-Quellcode:
procedure Addelement (p_element : Pointer);
// the pointer of the main unit is allocated the parameter of the newX
//allocate a new element on the last position
var p_help : PtListItem;
p_helpprev: PtListItem;
p_help2 : PtListItem;
NewX : PtListItem;
i_counter : Integer;
i_count : Integer;
begin
NewX := alloc;
//allocate memory for NewX
i_counter := NumberOfEntries;
p_help := p_start;
if p_help <>
nil then //searching for the last element
begin
while p_help.next <>
nil do
p_help := p_help.next;
//going to the next element until p_help.next = nil
p_help.next := NewX;
p_help2 := p_start;
For i_count:=1
to (i_counter - 1)
do
p_help2 := p_help2.next;
p_helpprev := p_help2;
p_help2 := p_help2^.next;
p_help2^.prev:= P_helpprev;
end
else
p_start:= NewX;
NewX^.data := p_element;
//If there is only one element, the newX is added at the beginning of the list
end;
Ich hoffe, das war jetzt verständlicher!
mfg cat
[Edit=Christian Seehase]Delphi Tags hinzugefügt[/Edit]