AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Problem mit 2. Formular

Ein Thema von gfjs · begonnen am 23. Jan 2006 · letzter Beitrag vom 25. Jan 2006
Antwort Antwort
Seite 2 von 3     12 3   
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#11

Re: Problem mit 2. Formular

  Alt 24. Jan 2006, 16:12
Kein Problem, der Reflector beherrscht auch Delphi . Allerdings war das ja nur als Zusatz gedacht, dass bei WM_CLOSE wirklich dispost wird - zum Verständnis ist das nicht nötig. Außerdem kann man IMHO auch ohne wirlkliche Ahnung von C# die Aussage des Codes verstehen, sonderlich lang ist er ja nicht.
Delphi-Quellcode:
procedure Form.WmClose(var m: Message);
[...]
      
      if ((m.Msg <> 17) and not args1.Cancel) then
      begin
            [...]
            inherited Dispose
      end
end;
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#12

Re: Problem mit 2. Formular

  Alt 24. Jan 2006, 16:16
@gfjs: Danke, ich habs auch nicht verstanden.

@Khabarakh: ja, sowas habe ich mir auch schon gedacht. (ich konnte in deinem Post allerdings nichts finden, was darauf kontret eine Antwort liefert)
Wenn man aber mal in Delphi.NET bleibt und folgendes macht...
Delphi-Quellcode:
with TWinForm1.create do
  show;
dann klappt das natürlich.
Mit euren Aussagen zum selber aufräumen des Speichers habe ich aber so meine Probleme.
Kann man das irgendwie prüfen? Ok eventuell mit dem Profiler (aber wie? -> genaue Erklärung bitte)
Wenn ich nämlich mal den Taskmanager im Auge behalte während ich mein Fenster mit Show öffne, dann verbraucht meine Anwendung mehr Speicher (jedesmal wenn ich das zweite Fenster öffne).
Wenn ich es schliesse geht der Speicher aber nicht zurück.

Also kann mir das mal bitte einer erklären?

Erwartungsvolle Grüsse
Thorsten
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#13

Re: Problem mit 2. Formular

  Alt 24. Jan 2006, 17:14
Zitat:
Mit euren Aussagen zum selber aufräumen des Speichers habe ich aber so meine Probleme.
Das Problem bei Fenstern ist, dass es kein richtiges Selberaufräumen gibt.
Es wird weiterhin ein Win32 Fenster angelegt, weiterhin wird mit Handles und Messages umhergeworfen (Glücklicherweise wird man selbst nur selten damit belästigt...).
Der Unterschied im Aufräumen bei Show <-> ShowDialog liegt in der Verwendung der beiden Methoden.
Bei Show ist es meist vollkommen legitim das Fenster beim Schließen zu zerstören. Bei ShowDialog braucht man aber meistens den Dialog nach dem Anzeigen um die Benutzereingaben auszuwerten.
Deshalb muss ein Dialog explizit freigegeben werden, indem man sich an IDisposable hält.

Preisfrage: Hast du ein MemLeak wenn du Dispose nach einem Dialog vergisst?
Nein, wie die meisten Klassen, die IDisposable implementieren, besitzt Form einen Finalizer, der ausgeführt wird wenn die GC das Form aufräumt. Der kann dann den ganzen Müll aufräumen...
Da Finalizer aber einen GC sweep _extrem_ ausbremsen sollte man immer Dispose aufrufen, statt es an den Finalizer abzutreten.
Fast alle .Net SPrachen bringen ein using statement mit (wie oben in meinem Chrome Schnipsel).
Dieses sorgt in einer Zeile dafür, dass eine Variable deklariert, besetzt und aufgeräumt wird.
Zitat:
Kann man das irgendwie prüfen? Ok eventuell mit dem Profiler (aber wie? -> genaue Erklärung bitte)
Schaue mal hier vorbei.
Vorsicht: FF-Fans sollten "http://msdn.microsoft.com/msdntv/" im Filter der liebenswerten IE Tab Extension haben um nicht auch noch dieses Mistvieh direkt starten zu müssen.
Zitat:
Wenn ich nämlich mal den Taskmanager im Auge behalte während ich mein Fenster mit Show öffne, dann verbraucht meine Anwendung mehr Speicher (jedesmal wenn ich das zweite Fenster öffne).
Wenn ich es schliesse geht der Speicher aber nicht zurück.
TaskMan taugt eigentlich rein gar nix um etwas über den Speicherverbrauch auszusagen...
Genauer sind die Performance counter, die du unter Admin Tools (bzw Verwaltung im dtsch Windows) findest. Dort gibt dir "private Bytes" (unter Process) die wirkliche reservierte Speichergröße. Also minus das was durch geteilte Bibliotheken, wie die CLR, beansprucht wird.
Robert Giesecke
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#14

Re: Problem mit 2. Formular

  Alt 24. Jan 2006, 18:14
@Elvis: Danke für den Hinweis und den Link.

Habe mir das mal angesehen, sehr interresant.

Allerdings bekomme ich bei einer leeren Delphi.NET-Anwendung beim Beenden einen Fehler im Profiler, sodass mir leider keine Auswertesichten zur Verfühung stehen.

Warum ist es eigentlich nicht möglich hier mal mit einfachen Worten ein kleines, funktionierendes Beispiel (für Delphi.NET) zu zeigen, das die Verwendung von einem zweiten Formular, dass mit Show geöffnet wird, erläutert.

Ist das wirklich so aufwendig/kompliziert/zeitraubend?

Skeptische Grüsse
Thorsten
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#15

Re: Problem mit 2. Formular

  Alt 24. Jan 2006, 18:42
Zitat von omata:
Warum ist es eigentlich nicht möglich hier mal mit einfachen Worten ein kleines, funktionierendes Beispiel (für Delphi.NET) zu zeigen, das die Verwendung von einem zweiten Formular, dass mit Show geöffnet wird, erläutert.

Ist das wirklich so aufwendig/kompliziert/zeitraubend?
LOL nein

Die Originalfrage war nur so billig, dass ich nicht darauf geantwortet hätte, wenn der Thread nicht diese Wende genommen hätte.

Außerdem gab es diese Frage schon so oft, dass ich sie auch jetzt nicht beantworten _will_. (Wobei du das längst selbst getan hast, btw )
Robert Giesecke
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#16

Re: Problem mit 2. Formular

  Alt 24. Jan 2006, 18:52
Schade, nur weil es für dich ganz einfach ist...egal will es gar nicht mehr wissen, dann eben nicht...
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#17

Re: Problem mit 2. Formular

  Alt 24. Jan 2006, 18:55
Zitat von omata:
Schade, nur weil es für dich ganz einfach ist...egal will es gar nicht mehr wissen, dann eben nicht...
War nicht dein erster Post in dem Thread hier die Antwort auf die Frage oder habe ich dich missverstanden? Mein vorheriger Post bezog sich auf die Frage des OT.
Robert Giesecke
  Mit Zitat antworten Zitat
gfjs

Registriert seit: 8. Dez 2005
Ort: Hohenkammer
298 Beiträge
 
Delphi 2006 Professional
 
#18

Re: Problem mit 2. Formular

  Alt 25. Jan 2006, 08:30
@ Elvis

Guten Morgen!

Wenn man nur mit Grundkenntnissen aus Delphi5 sich mit Delphi 2005 rumschlagen muss, dann können auch solche "billigen" Fragen zu einem echten Problem werden. Vor allen Dingen, weil die Hilfe für WinForms-Anwendungen mehr als dürftig ist.

Insofern tut es mir leid, dass ich derzeit noch nicht mit qualifizierteren Fragen zu "echten" Problemen dienen kann. Aber: Was nicht ist, kann ja noch werden. Ich habe nicht den Eindruck, dass mir in nächster Zeit die Fragen ausgehen werden.

Bis dahin danke ich allen, die bereit sind, mir auch bei meinen billigen Fragen weiter zu helfen.

mfg gfjs
Mein neues Motto (von "Unbekannt"):
Gewinnen: Wenn Du kannst - Verlieren: Wenn Du musst - Aufgeben: NIE!
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#19

Re: Problem mit 2. Formular

  Alt 25. Jan 2006, 09:16
Zitat von gfjs:
Vor allen Dingen, weil die Hilfe für WinForms-Anwendungen mehr als dürftig ist.
Kleiner Tip: Schaue mal unter Microsoft .NET SDK 1.1\Documentation in deinem Startmenü. Dort wirst eine so umfassende Dokumentation für so ziemlich alles in .Net finden wie es sie für noch kein Delphi zuvor gegeben hat. Du solltest allerdings lernen C#, VB.Net oder CLI/C++ zu lesen, da die Doku von MS verständlicherweise keine Delphi Beispiele enthält.

btw, Ich ja nachvollziehen, dass du ein wenig eingeschnappt bist auf meinen etwas direkten Kommentar. Du hast aber deine Antwort bereits nach 12 Minuten im ersten Beitrag dieses Threads erhalten. Da das für fast alle "billigen" Fragen gilt wüsste ich nicht warum ich darauf antworten sollte/müsste.
Robert Giesecke
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#20

Re: Problem mit 2. Formular

  Alt 25. Jan 2006, 15:26
Zitat von Elvis:
...Du hast aber deine Antwort bereits nach 12 Minuten im ersten Beitrag dieses Threads erhalten...
und das stimmt eben leider nicht!
Weil sich die eigentliche Frage nämlich auf SHOW (wie oft soll ich es eigentlich noch wiederholen) bezog. Meine Antwort zeigt aber nur die Verwendung von ShowDialog.

Ich habe mich dann mal mit dem Show-Aufruf beschäftigt und bekam nur Probleme.
Da sich dann noch andere in diesen Thread eingeklinkt haben dachte ich, da kann man doch mal nachfragen wie man das mit SHOW (wie oft soll ich es eigentlich noch wiederholen) richtig macht.
(Richtig machen soll heissen, wie es am elegantesten in Delphi.NET gemacht werden kann (bitte keine unzusammenhängende Codefetzen in anderen Dialekten).

Da das ja scheinbar so einfach ist, das man es nicht verraten will/soll/darf, habe ich es aufgegeben hier noch auf eine sinnvolle/funktionierende Antwort zu warten.

Wie ich schon schrieb will ich es gar nicht mehr wissen. Es geht hier scheinbar nur noch darum wichtig zu klingen aber Anlaufschwierigkeiten von Fragenden zu beantworten scheint nebensächlich zu sein.

Trotzdem finde ich es gut, dass gfjs Problem scheinbar gelöst wurde.
Auch wenn eine erneute Frage des Ausgangsthreads hier wohl zu einer Überforderung der Antwortenden geführt hat.

Schade,
Thorsten
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 03:54 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