Thema: Delphi Listen in Delphi

Einzelnen Beitrag anzeigen

Benutzerbild von cat
cat

Registriert seit: 29. Jan 2003
9 Beiträge
 
#5
  Alt 30. Jan 2003, 11:49
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]
  Mit Zitat antworten Zitat