Einzelnen Beitrag anzeigen

Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#7

Re: Kann "Clear" Fehler auslösen?

  Alt 29. Jul 2005, 11:14
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 = 'JOINthen
      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?
Mario
  Mit Zitat antworten Zitat