Hi,
ich bin momentan dabei ein Tool zu schreiben, welches mir aktuelle Daten zu einem Spiel anzeigt. Dazu lese ich die Daten aus einer HTML-Datei aus und speicher die Daten in einer dazu definierten Klasse TTicker. Um Listen mit verschiedenen Elementtypen zu nutzen, hab ich mir eine Klasse TListe mit generics geschrieben. Wenn ich allerdings ein Element hinzufügen möchte, erhalte ich immer die Exception:
Zugriffsverletzung bei Adresse ...
Allerdings leide ich anscheinend an einer vorrübergehenden Blindheit, denn irgendwie finde ich nicht den Fehler.
Als ich einmal ein ShowMessage() eingefügt hatte, funktionierte es plötzlich.
Daher hoffe ich, dass jemand von euch mir helfen kann, den Fehler zu finden.
Aber jetzt mal zu einem kleinen Codeausschnitt mit dem Wichtigsten. Den ganzen Quellcode gibt es im Anhang. Ich habe dort auch die problematische Stelle markiert.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52:
| type TListe<ListType> = class type PListType = ^ListType; private mListe: TList; function Get(Index: Integer): ListType; procedure Put(Index: Integer; Item: ListType); public constructor Create(); destructor Free(); procedure Add(t: ListType); procedure Delete(id: integer); function Count(): integer; property Items[Index: Integer]: ListType read Get write Put; default; end;
procedure TListe<ListType>.Add(t: ListType); var knoten: PListType; begin new(knoten); knoten^:=t; mListe.Add(knoten); end;
constructor TListe<ListType>.Create; begin inherited Create; mListe:=TList.Create; end;
constructor TTicker.Create; begin inherited Create; mZeit:=''; mZuschauer:=''; mSchiedsrichter:=''; mHeimMannschaft:=''; mAuswaertsMannschaft:=''; mHeimAufstellung:=TListe<TSpieler>.Create(); mAuswaertsAufstellung:=TListe<TSpieler>.Create(); end;
procedure TTicker.Update(); var Spieler: TSpieler; begin ... mHeimAufstellung.Add(Spieler); ... end; |
Viele Grüße
Oliver Marx