AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Kann "Clear" Fehler auslösen?

Ein Thema von Pseudemys Nelsoni · begonnen am 29. Jul 2005 · letzter Beitrag vom 29. Jul 2005
Antwort Antwort
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

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

Re: Kann "Clear" Fehler auslösen?

  Alt 29. Jul 2005, 10:52
Moin Luckie,

theoretisch müsste es ja so sein, sonst könnte ja kein Fehler kommen, aber dem ist nicht so, beim Beenden passiert nichtsmehr.
Das komische ist auch, das ich mich entscheiden kann, was ich auskommentieren möchte um keine av zu bekommen und zwar entweder:

Delphi-Quellcode:
destructor TChannels.Destroy;
begin
  //FChannelList.Clear;
  inherited;
end;
oder innerhalb im OnRead eines ClientSockets:

Delphi-Quellcode:
      if Command = 'JOINthen
      begin
        if CompareText(FNickname, User.FNickname) = 0 then
        begin
          //Channel := FChannels.NewChannel(Param(Params, 0));
          //if Assigned(FOnJoined) then
          // FOnJoined(Self, Channel);
        end else

NewChannel sieht dabei so aus:

Delphi-Quellcode:
function TChannels.NewChannel(const Channel: string): TChannel;
begin
  Result := TChannel.Create;
  Result.FName := Channel;
  Result.FTopic := '';
  Result.FKey := '';
  Result.FLimit := 0;
  Result.FUserCount := 0;
  FChannelList.Add(Result);
end;
Daher wundert mich das, wenn ich eines der beiden Teile auskommentiere, gibts keine Fehler, sonst AV.
Und ich seh nicht was daran falsch sein könnte.

EDIT:

@KrasserChecker:

Eine Objektliste kann nil Objekte enthalten, der aufruf von Clear führt dabei aber nicht zu einer AV, da sie das ganz gut handlen kann bzw prüft ob ein Objekt bereits nil ist, oder nicht.

Edit4:

Zitat:
Was mir noch einfällt:
Ist das Feld "FChannelList" in "Create" von "TChannels" erzeugt worden? Wenn ja solltest du in Destruktor nicht "FChannelList.Clear" sondern "FChannelList.Free" aufrufen.
Jo, das stimmt, aber ich möchte in anderen Prozeduren später auch noch "Clear" aufrufen können, also muss das mit Clear auch irgendwie funktionieren oder?

Edit5:

Gerade getestet mit .Free - das löst auch einen Fehler aus. Ich glaube nicht das die Fehler an meinen auskommentierten Zeilen liegt. Wie ich sowas liebe, nun weiss ich nicht wo ich nach Fehlern suchen soll.
Mario
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz