AGB  ·  Datenschutz  ·  Impressum  







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

IdIRC.Free flasch?

Ein Thema von DelTurbo · begonnen am 23. Jan 2010 · letzter Beitrag vom 31. Jan 2010
Antwort Antwort
Seite 1 von 3  1 23      
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.212 Beiträge
 
Delphi 2007 Architect
 
#1

IdIRC.Free flasch?

  Alt 23. Jan 2010, 15:31
Hi,

ich erstelle zur laufzeit mehrere IdIRC´s. Nun möchte ich natürlich auch Disconnecten können. Hier mal ein code-snipsel...

Delphi-Quellcode:
IrcServer[i].Timer1.Enabled:=False;
IrcServer[i].Timer1.Free;
IrcServer[i].Timer2.Enabled:=False;
IrcServer[i].Timer2.Free;
IrcServer[i].IdIrc.Disconnect('ATDisconnect');
IrcServer[i].IdIrc.IOHandler.Close;
IrcServer[i].IdIrc.Free;
Bei dem .Free bekomm ich immer eine zugriffs verletzung. Ist das nicht richtig mit .Free? Bei den Timern geht das. Ich bin da nun etwas verwirrt.

Danke im voraus
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.212 Beiträge
 
Delphi 2007 Architect
 
#2

Re: IdIRC.Free flasch?

  Alt 23. Jan 2010, 16:56
Bin grad quasi drüber gefallen.

IrcServer[i].IdIrc.IOHandler.Close;
IrcServer[i].IdIrc.IOHandler.Free;
IrcServer[i].IdIrc.Free;

Dann geht es.
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#3

Re: IdIRC.Free flasch?

  Alt 28. Jan 2010, 00:41
Hi,

Zitat von DelTurbo:
Bin grad quasi drüber gefallen.

IrcServer[i].IdIrc.IOHandler.Close;
IrcServer[i].IdIrc.IOHandler.Free;
IrcServer[i].IdIrc.Free;

Dann geht es.
Warum machst Du ein IOHandler.Close? Bekommst Du denn eine Fehlermeldung wenn Du nur IdIRC.Free aufrufst?

Gruß Assertor

Edit: Hab gerade Deine PN gesehen. Es geht also darum, dass eine AV Auftritt, wenn Du nicht .Close aufrufst. Ich prüf das mal ab.
Frederik
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.212 Beiträge
 
Delphi 2007 Architect
 
#4

Re: IdIRC.Free flasch?

  Alt 28. Jan 2010, 11:35
Zitat von Assertor:
Edit: Hab gerade Deine PN gesehen. Es geht also darum, dass eine AV Auftritt, wenn Du nicht .Close aufrufst. Ich prüf das mal ab.
Danke
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#5

Re: IdIRC.Free flasch?

  Alt 28. Jan 2010, 11:38
Hi DelTurbo,

ich hab das jetzt bestimmt 50x geprüft und bekomme keine AV. Indy ist bei Dir ja die letzte aus dem SVN, ansonsten bitte dazuschreiben.

Edit: Das Close ist natürlich drin: Destruktorreihenfolge IdIRC.Destroy > IdCmdTCPClient.Destroy > IdTCPConnection.Destroy:

Delphi-Quellcode:
destructor TIdTCPConnection.Destroy;
begin
  // Just close IOHandler directly. Dont call Disconnect - Disconnect may be override and
  // try to read/write to the socket.
  if Assigned(IOHandler) then begin
    IOHandler.Close;
    // This will free any managed IOHandlers
    IOHandler := nil;
  end;
  ...
end;
Welche Delphi Version setzt Du ein?

Gruß Assertor
Frederik
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.212 Beiträge
 
Delphi 2007 Architect
 
#6

Re: IdIRC.Free flasch?

  Alt 28. Jan 2010, 11:45
Delphi 7 und SVN Version 402? weiss nicht genau. Aber die wo alle IdIRC sachen gefixt wurden.

Gruss
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.212 Beiträge
 
Delphi 2007 Architect
 
#7

Re: IdIRC.Free flasch?

  Alt 28. Jan 2010, 11:50
Ui, stopp. Nun kommen wir durcheinander. Auf jeden fall ich. Es sind 2 verschiedene sachen. Das aus der PN hat nix mit dieser sache hier zu tun.

Dort "liegt" der idirc ja schon in der Form1. Hier geht es darum, wenn der IdIRC zur laufzeit erstellt wurde. Sonst bräuchte ich ja kein free machen
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#8

Re: IdIRC.Free flasch?

  Alt 28. Jan 2010, 12:15
Hallo,

Zitat von DelTurbo:
Ui, stopp. Nun kommen wir durcheinander. Auf jeden fall ich. Es sind 2 verschiedene sachen. Das aus der PN hat nix mit dieser sache hier zu tun.

Dort "liegt" der idirc ja schon in der Form1. Hier geht es darum, wenn der IdIRC zur laufzeit erstellt wurde. Sonst bräuchte ich ja kein free machen
Gut, ist ja auch egal. Das Close ist trotzdem unnötig, da es intern schon gemacht wird. Einfach der Klassenvererbung der Destruktoren folgen.

Ich habe jetzt gerade die SVN Version mit dem IRC Fix (Rev 4017) und die aktuelle Version (Rev 4030) mit Delphi 7 PE Build 4.453 unter einem frischen Win XP SP3 x32 getestet: Keine Probleme - weder bei IdIRC auf der Form noch per Code erzeugt. Connect, FormClose und Connect, Disconnect, FormClose ausprobiert. Intern nutzt der TCP Client ja TThreads. Delphi 5, 6 und 7 sind nicht gerade gut was die TThread Klasse angeht, vielleicht ist das die Ursache?

Auf jeden Fall ist das leider "not reproducible". Es kann an anderen Komponenten, der exakten Delphi Version (Patch & Update Level?), Tools wie EurekaLog/madExcept oder sonstwas liegen. Ohne mehr Information kann ich da leider nichts machen...

Gruß,

Assertor
Frederik
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#9

Re: IdIRC.Free flasch?

  Alt 28. Jan 2010, 12:23
Hi,

Kannst Du mal bitte die Fehlermeldung 1:1 hier posten? Kommt denn eine AV oder eine Exception? Beim Testen bitte das eigene IOHandler.Close weglassen...

Gruß,

Assertor
Frederik
  Mit Zitat antworten Zitat
DelTurbo

Registriert seit: 12. Dez 2009
Ort: Eifel
1.212 Beiträge
 
Delphi 2007 Architect
 
#10

Re: IdIRC.Free flasch?

  Alt 28. Jan 2010, 12:27
Wieso schreibst du hier was von close???

Nochmal, die PN hat garnix hiermit zu tun. Bitte behandel PN einzeln und antworte mir auf die PN. Nicht hier im thread. Ich peil im moment wirklich nixmehr.

Zurück zu diesem Thread hier:
Für dieses beispiel hier ist close unerheblich. Es geht hier um einen per laufzeit erstellten und auch genutzen IdIRC. Wichtig, er muss einmal connecten. Sonst tritt der fehler nicht auf.

Zur laufzeit!!!
Erstellen und löschen geht.
Erstellen, Connecten und löschen geht nicht.

Die PN musst du bitte gesondert behandeln. Sonst kommen wir total durcheinander. Und das sind wir wohl schon

Gruss
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 19:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz