Ich habe jetzt einen anderen Fehler.
Und zwar bekomme ich die Fehlermeldung
Zitat:
Im Projekt [Name] ist eine
Exception der Klasse EAccessViolation mit der Meldung
'Zugriffsverletzung bei Adresse 004C2DDA in Modul '[Name]'.
Lesen von Adresse 00000000 aufgetreten.
Code:
Delphi-Quellcode:
type
TListe = ^TElement;
TElement = record
content : TDeveloper;
Next : TListe;
end;
var
First : TListe = nil;
Last : TListe = nil;
Current : TListe;
Allocations : integer = 0;
function newDeveloper(person: TPerson; description: TDescription) : boolean;
var
RunPointer : TListe;
I: byte;
Temp_ID: Integer;
begin
if developersCount < DEVELOPER_MAX then
begin
// ---- Temporäre ID -------------------------------------------------------
Temp_ID := DEVELOPER_ID_MIN;
//- Wenn es schon andere Developer gibt, wird die Temporäre ID inkrementiert,
//-- bis sie einen Wert hat, der noch nicht als Developer ID vergeben ist --
if developersCount > 0 then
begin
for I := DEVELOPER_MIN to DEVELOPER_MAX do
begin
Runpointer := first;
While RunPointer <> nil do
begin
if Runpointer^.content.developerID = Temp_ID then inc(Temp_ID);
Runpointer := Runpointer^.Next;
end;
end;
end;
new (Current);
inc(Allocations);
Current.content.developerID := Temp_ID;
Current.content.developerPerson := person;
Current.content.developerDescription := description;
Current.Next := nil;
if last = nil then
begin
First := Current;
Last := Current;
end
else
begin
Last.Next := Current;
Last := Current;
end;
newDeveloper := true;
end
else newDeveloper := false;
end;
function developersCount: Integer;
var
i : integer;
begin
i := 0;
current := first;
while current <> nil do
begin
inc(i);
current := current^.Next;
end;
developersCount := i;
end;
function getDeveloperByIndex(index: Cardinal): TDeveloper;
var
temp : TDeveloper;
i: Integer;
begin
i := 0;
current := first;
while i <> index do
begin
inc(i);
current := current^.Next;
end;
getDeveloperByIndex := current^.content; // <<====== Hier tritt der Fehler auf.
end;
Ich füge mit NewDeveloper einen developer hinzu.
In einer anderen
Unit lasse ich eine for-Schleife von 1 - developersCount durchlaufen,
bei dem ich den developer mit dem Index I durch getDeveloperbyIndex auslesen lasse und
einige Werte in einer listbox anzeigen lasse.
Die obigen Codeteile sind die einzigen, die ich verändert habe (vorher lief alles über Arrays),
von der anderen
Unit sollte der Fehler nicht kommen.