Thema: Delphi TList + Exception

Einzelnen Beitrag anzeigen

Preddy2005

Registriert seit: 27. Nov 2005
Ort: Mettmann
38 Beiträge
 
#1

TList + Exception

  Alt 9. Sep 2006, 22:06
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
  Mit Zitat antworten Zitat