AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Form2 soll auf das ClientSocket von Form1 zugreifen
Thema durchsuchen
Ansicht
Themen-Optionen

Form2 soll auf das ClientSocket von Form1 zugreifen

Ein Thema von sk0r · begonnen am 10. Jun 2007 · letzter Beitrag vom 11. Jun 2007
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#11

Re: Form2 soll auf das ClientSocket von Form1 zugreifen

  Alt 10. Jun 2007, 21:59
weißt du überhaupt was du machst 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
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#12

Re: Form2 soll auf das ClientSocket von Form1 zugreifen

  Alt 10. Jun 2007, 22:00
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.
  Mit Zitat antworten Zitat
sk0r

Registriert seit: 1. Mai 2007
181 Beiträge
 
Delphi 7 Enterprise
 
#13

Re: Form2 soll auf das ClientSocket von Form1 zugreifen

  Alt 10. Jun 2007, 22:16
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.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#14

Re: Form2 soll auf das ClientSocket von Form1 zugreifen

  Alt 11. Jun 2007, 12:04
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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:44 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