Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Form2 soll auf das ClientSocket von Form1 zugreifen (https://www.delphipraxis.net/93711-form2-soll-auf-das-clientsocket-von-form1-zugreifen.html)

SirThornberry 10. Jun 2007 20:59

Re: Form2 soll auf das ClientSocket von Form1 zugreifen
 
weißt du überhaupt was du machst :shock: Du instanzierst zur Zeit einen Socket und weißt dann einen anderen zu. Somit ist die erste Instanz im Nirvana und du kannst nicht mehr drauf zugreifen. Es ist nicht böse gemeint aber du solltest dir erstmal die Grundlagen zur Objectorientierten Programmierung anschauen

marabu 10. Jun 2007 21:00

Re: Form2 soll auf das ClientSocket von Form1 zugreifen
 
Hallo,

ich habe den Eindruck, dass du die in diesem Thread gemachten Lösungsvorschläge gar nicht bewerten kannst. Es besteht jetzt die Gefahr, dass wir dir ein Detailproblem lösen und dich damit auf einem Holzweg begleiten.

Wenn du eine Komponente aus der Palette auf eine Form (Form1) ziehst, dann werden ihre wesentlichen Eigenschaften in der DFM-Datei (letzten Endes ein resource file) gespeichert und beim Erzeugen der Form wird die Komponente zusammen mit dieser instanziert. Die Form ist dabei der Eigentümer dieser Komponente und der Lebenszyklus der Komponente ist an den Lebenszyklus der Form gebunden. Wird die Form zerstört, dann wird auch die Komponente zerstört.

Übergibst du eine solche Komponente an eine andere Form (Form2), so wird dort eine Referenz gespeichert. Eigentümer bleibt die andere Form (Form1) und es ergeben sich Zugriffsprobleme, wenn Form1 zerstört wird, denn dann wird auch die Komponente zerstört und die Referenz in Form2 wird ungültig. Es ist deine Aufgabe dann dafür zu sorgen, dass die Referenz auf nil gesetzt wird.

Solange du also den Vorschlag von Jens aus Beitrag #3 umsetzt, hast du in Form2 eine Referenz und kein eigenständiges Objekt. Also musst du dort auch keine Instanzierung durchführen, das geschieht ja schon in Form1 - wie oben erläutert. Dein Fehler hat eine andere Ursache.

Deiner Klasse in Beitrag #4 fehlt übrigens ein Konstruktor, der die Objektvariable vom Typ TClientSocket instanziert - und eine entsprechender Destruktor, der sie wieder zerstört.

Gute Nacht.

sk0r 10. Jun 2007 21:16

Re: Form2 soll auf das ClientSocket von Form1 zugreifen
 
Ich habe es auch ohne von der komponenteleiste zu ziehen versucht. klappt auch nicht.
ich weiß jetzt gar net ob mein code richtig ist oder net.

naja jedenfalls wüsste ich halt gerne wie ich an die ursache komme.

tutorials dazu gibts afaik auch nicht hab auf dsdt schon gesucht aber da gibts nur einzelne bröckelige
sachen.

marabu 11. Jun 2007 11:04

Re: Form2 soll auf das ClientSocket von Form1 zugreifen
 
Hallo,

du solltest dein Projekt etwas zurückfahren, damit es klein und überschaubar wird. Es nützt nichts, dass du bereits ein Dutzend Forms entworfen und eingebunden hast, wenn die Basisfunktionalität noch nicht implementiert und ausgetestet ist. Ein kleines Projekt, befreit von unnützem Ballast und hier eingestellt, am Besten mit einer groben Beschreibung der Projektidee - du wirst sehen, dann bekommst du auch zielführende Lösungsvorschläge.

Freundliche Grüße


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:27 Uhr.
Seite 2 von 2     12   

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