Moin Dani,
ich setze den OwnsObjects-Parameter nicht, daher ist er automatisch true.
Wenn ich mein Programm starte, wird folgendes getan:
Delphi-Quellcode:
constructor TChannels.Create;
begin
inherited;
FChannelList := TObjectList.Create;
end;
Dann wenn ich mit dem Server verbunden bin und einen Channel betreten hab:
Delphi-Quellcode:
if Command = 'JOIN' then
begin
if CompareText(FNickname, User.FNickname) = 0 then //wenn ich joine(dieser teil wird ausgeführt)
begin
Channel := FChannels.NewChannel(Param(Params, 0));
if Assigned(FOnJoined) then
FOnJoined(Self, Channel);
end else //wenn jemand anderes joint
begin
Channel := FChannels.ChannelByName(Param(Params, 0));
Channel.FUsers.NewUser(User.FNickname);
if Assigned(FOnJoin) then
FOnJoin(Self, User, Channel);
end;
end else
Dann schliesse ich das Programm per "X"-Button und das wird noch ausgeführt:
Delphi-Quellcode:
destructor TChannels.Destroy;
begin
FChannelList.Free;
inherited;
end;
Einen Channel vorher freigeben tu ich nicht
EDIT:
@KrasserChecker
Zitat:
Gehört das Feld "FChannelList" in "TChannels"? Wird es im Create erzeugt? Wenn ja solltest Du die Liste auch im .Free wieder freigeben. Ansonsten könnte es passieren, dass Du dir da ein Speicherleck einhandelst.
Jup, das Feld gehört darein, aber da .Free einen Fehler auslöste, hab ich geguckt ob .Clear auch einen auslöst - dem war ja auch so.
Zitat:
BTW: Warum willst Du auf die Liste zugreifen, nachdem Du das "TChannels"-Objekt freigegeben hast?
Hm, möchte ich eigentlich nicht, wo tu ich das?