Hallo erstmal! Ich hoffe mir kann jemand mit dem Problem helfen... Habe schon stundenlang gesucht und ich finde einfach keine Antwort auf meine Frage. Ebenso finde ich überhaupt kein sinnvolles Tutorial, welche einem zeigt, wie man Objekte mit einer TList oder TObjectList passend verwendet. Hoffe mir kann jemand sagen, was falsch ist... Der unten stehende Code zeigt die Klassendeklaration und die Erzeugung der Klasseninstanzen. Na ja einfach mal drüber gucken...
Delphi-Quellcode:
Kleine Testklasse :
type TBenutzer_Objekt = class(TObject)
private
// FBenutzerStatus : Integer;
FBenutzerNummer : Integer;
FBenutzername : String;
FBenutzervewaltungsliste : TList;
Methode :
public
procedure Baue_Benutzerverwaltungs_Liste(Benutzer_Login_Namen : String);
procedure Gebe_Speicher_Fuer_Benutzerverwaltungsliste_Frei;
end;
Methodenfunktionalität :
procedure
TBenutzer_Objekt.Baue_Benutzerverwaltungs_Liste(Benutzer_Login_Namen : String);
var Temp_Liste : TStringList; // Temporäre Stringliste
i : Integer; // Zählvariable
Trenner : Integer; // Die Kommatapositionen mit Pos ermitteln
PBenutzer_Objekt : ^TBenutzer_Objekt; // Zeiger auf die Klasseninstanzvariable
Zu_Extrahierende_String : String; // Stringlisteneintrag wird umkopiert, und dann wird aus dem String gelöscht
Benutzername : String; // Temporäre Benutzervariable
Benutzernummer : Integer; // Temporäre Benutzervariable
begin
Temp_Liste := TStringList.Create; // Stringliste erzeugen
Temp_Liste.Text := Benutzer_Login_Namen; // Inhalt in die temporäre Stringliste kopieren
if FBenutzervewaltungsliste = nil then FBenutzervewaltungsliste := Tlist.Create;
Zu_Extrahierende_String := Temp_Liste.Text; // Inhalt umkopieren
for i := Temp_Liste.Count-1 downto 0 do // Stringliste durchgehen
begin
New(PBenutzer_Objekt); // Ein neues Listenobjekt erzeugen
Trenner := pos(',',Zu_Extrahierende_String);
Benutzername := Copy(Zu_Extrahierende_String,1,Trenner-1); // Benutzernamen kopieren
delete(Zu_Extrahierende_String,1,Trenner);
Benutzernummer := StrToInt(Copy(Zu_Extrahierende_String,1,4)); // Benutzernummer kopieren
PBenutzer_Objekt.FBenutzername := Benutzername; // Benutzernamen zuweisen -> Hier kracht es immer... Wieso?
Werde auch nicht aus den Beiträgen hier schlau...
PBenutzer_Objekt.FBenutzerNummer := Benutzernummer; // Benutzernummer zuweisen
FBenutzervewaltungsliste.Add(PBenutzer_Objekt); // Listenobjekt zur Liste hinzufügen
end;
FreeAndNil(Temp_Liste); // Speicher freigeben
end;
Das sind die OnCreate und OnClose Aufrufe :
Delphi-Quellcode:
Im OnCreate Event steht das
Benutzer_Objekt := TBenutzer_Objekt.Create;
Hiermit habe ich doch die Klasseninstanz erzeugt, oder?
Im OnClose
FreeAndNil(Benutzer_objekt);
Wollte zuerst auch ein dynamisches Array verwenden, aber die Tlist
eignet sich für den späteren Ausbau einfach mehr.
Hoffe jemand wäre bereit mir den Fehler zu erklären oder einen Forumlink oder einen Tutoriallink zu schicken.
Danke im voraus
Gruß
Matthias