AGB  ·  Datenschutz  ·  Impressum  







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

instanz freigeben

Ein Thema von Pseudemys Nelsoni · begonnen am 5. Dez 2004 · letzter Beitrag vom 7. Dez 2004
Antwort Antwort
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

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

instanz freigeben

  Alt 5. Dez 2004, 05:54
moin

ich habe folgendes:

Delphi-Quellcode:
procedure TForm1.ToolButton1Click(Sender: TObject);
begin
  if not assigned(MyServerSocket) then
  begin
    MyServerSocket := TMyServerSocket.Create(self);
    MyServerSocket.ServerHost := 'irc.euirc.net';
    MyServerSocket.Active := true;
    ToolButton1.ImageIndex := 1;
  end
  else
  begin
    MyServerSocket.Free;
    ToolButton1.ImageIndex := 0;
  end;
end;

MyServerSocket ist TMyServerSocket, abgeleitet von TServerSocket....
das problem ist nun folgendes, wenn ich meinen button anklicke und die instanz auf nil zeigt (not assigned) dann wird das objekt erzeugt, wenn sie schon existiert (else teil) dann wird sie wieder freigegeben...

das funktioniert auch bis zum zweiten buttonklick, wenn ich nun aber ein drittes mal drauf klicke bleibt der button gedrückt und das programm friert ein..... habe gedacht das ich vielleicht vor dem freigeben noch "Active := false" machen muss, aber wird dadurch auch nicht besser... ist irgendwas falsch?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#2

Re: instanz freigeben

  Alt 5. Dez 2004, 07:40
Hi,

wenn du nur ein MyServerSocket.Free ausführst, verweist die Variable trotzdem noch auf einen (ungültigen) Speicherbereich. Assigned() gibt dann möglicherweise "true" zurück. Also entweder

Delphi-Quellcode:
MyServerSocket.Free;
MyServerSocket := nil;
oder je nach Delphi-Version auch:
FreeAndNil(MyServerSocket); mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: instanz freigeben

  Alt 5. Dez 2004, 11:19
Mit der Methode Free wird nur der Speicherbereich freigegeben, nicht aber der Zeiger ungültig gemacht.

http://www.delphipraxis.net/internal...ght=freeandnil
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

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

Re: instanz freigeben

  Alt 5. Dez 2004, 15:36
moin, ich habe FreeAndNil (davor) verwendet, hat nicht funktioniert, deswegen habe ich es dann nur mit "free" versucht, aber logischerweise geht das auch nicht da der zeiger ja nicht auf nil gesetzt wird... nunja, aber beide wege gehen nicht, ich verstehe das nicht, wenn ich das ganze mit freeandnil mache und die zeile:

Zitat:
MyServerSocket.Active := true;
auskommentiere, dann geht alles.... aber ein niemals aktiver server bringt mir nicht viel, muss man noch irgendwas machen nachdem der server aktiv is und man ihn beenden will?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

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

Re: instanz freigeben

  Alt 6. Dez 2004, 15:51
ok ich habe gemerkt das ich nichtmal ein serversocket erzeugt bekomme (jedenfalls kein zweites mal)

ich habe den tets mal im anhang (sind nur 3 zeilen code...ich seh da nix falsches)

klickt den button 3 mal, dann seht ihr das das programm eingefroren ist...kann mir jemand sagen woran das liegt?
Angehängte Dateien
Dateityp: zip test_199.zip (3,8 KB, 7x aufgerufen)
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

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

Re: instanz freigeben

  Alt 7. Dez 2004, 17:21
*schieb*
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#7

Re: instanz freigeben

  Alt 7. Dez 2004, 20:10
Moin!

Aso, vergessen zu schreiben: getestet und rund 30x nacheinander geklickt: keine Probleme - wurde immer sauber angelegt und wieder freigegeben und keine Problem...

MfG
Muetze1
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#8

Re: instanz freigeben

  Alt 7. Dez 2004, 20:32
Zitat von Pseudemys Nelsoni:
*schieb*
Ich hatte dir gestern schon im Chat geschrieben, dass es sowohl in D7 als auch in der D2005-Trial lief.
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

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

Re: instanz freigeben

  Alt 7. Dez 2004, 20:34
hallo ihr 2, danke für die tests...

hm das ist komisch, denn wenn ich eine ZConnection kompo(zeos) raufschiebe und mit der connecte(wozu auch immer), funktioniert das erzeugen/freigeben...

also haben diese zeos teile irgendwie meine vcl(?) kaputt gemacht
Mario
MSN: cyanide@ccode.de
  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 17:55 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