Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Di Jul 15, 2025 23:09

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 35 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3  Nächste
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 26, 2009 15:45 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Adler hat geschrieben:
HILFE?! ;-)

Fehlermeldung? ;) Fehlermeldungen sind nützlich. Vor allem wenn man deren Inhalt kennt.

AOwner dient dazu um eine Komponente einem anderen Objekt unterzuordnen. Wenn der Owner dann aus dem Speicher entfernt wird, dann werden alle untergeordneten Objekte automatisch mit entfernt. In deinem Fall ist diese Komponente aber keine Komponente wie sie normal vorgesehen ist sondern eher so etwas wie eine ganz normale Klasse. Das ist im übrigen auch vollkommen normal. Du kannst anstelle von GLForm auch nil übergeben. Musst dann aber die Instanz selber wieder löschen. Aber das wirst du vermutlich selber schon machen oder noch vor haben.

Falls das an deinem Problem nichts ändert, dann schau mal in meinen ersten Abschnitt.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 26, 2009 18:33 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
Also bei NIL tritt auch ein Fehler auf:

Zitat:
Im Projekt bla.exe ist eine Exception der Klasse EAccessViolation mit der Meldung
'Zugriffsverletzung bei der Adresse 00485D41 in Modul 'bla.exe'. Schreiben von Adresse 00000004'
aufgetreten.


:-(

_________________
www.audi32.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 26, 2009 18:43 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Was für eine Fehlermeldung? Und wenn du den Server Socket selber freigeben willst, dann benutz nil anstatt irgendetwas anderem.

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 26, 2009 18:50 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 15:18
Beiträge: 62
Lord Horazont hat geschrieben:
Was für eine Fehlermeldung?

Eine Zugriffsverletzung.

Lord Horazont hat geschrieben:
Und wenn du den Server Socket selber freigeben willst, dann benutz nil anstatt irgendetwas anderem.

Hat er. ;)

Die richtige Frage: Wo tritt der Fehler auf? In welcher Zeile?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 26, 2009 20:01 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
Code:
  1. function TGameControl_Server.CreateGame():boolean;
  2. begin
  3.       ServerSocket := TServerSocket.Create(nil);
  4.       ServerSocket.OnClientConnect := ClientConnect;
  5.       ServerSocket.Port := PORT;
  6.       ServerSocket.Open;
  7. end;



Zeile 3 tritt der fehler auf ...

_________________
www.audi32.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 26, 2009 20:43 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 15:18
Beiträge: 62
Hm, das sieht so aus, als bräuchte der ServerSocket doch einen Owner. Ich weiß nicht, wozu der das brauchen könnte, aber ich habe eine andere Komponente, die tut das auch. Also musst du wohl oder übel doch das Formular übergeben. Was war denn der Fehler, bevor du das nil eingesetzt hast?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 26, 2009 20:56 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mär 30, 2007 18:35
Beiträge: 331
Nein, der TServerSocket braucht keinen Owner, den habe ich auch schon ohne benutzt. Der Fehler sollte also wo anders liegen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 26, 2009 23:34 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
Hey... habs anscheind hinbekommen.

Hatte den ServerSocket in der Klasse deklariert als public.
Wenn ich es aber ausserhalb der klasse nur unter var also global deklariere, funktioniert es...

Kann mir das noch einer verständlich machen? :-/

_________________
www.audi32.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Feb 27, 2009 01:02 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
Wenn du etwas mehr Code herausrückt vielleicht. Aber bei dem aktuellen Code kann man den Fehler nicht finden.

_________________
Steppity,steppity,step,step,step! :twisted:
❆ ❄ ❄ ❄ ❅ ❄ ❆ ❄ ❅ ❄ ❅ ❄ ❅ ❄ ❄
❄ ❄ ❄ ❅ ❄ ❄ ❄ ❅ ❄ ❄ ❆ ❄ ❄


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Feb 27, 2009 09:25 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Dadurch dass die Adresse ($00000004) so nah bei 0 liegt deutet das darauf hin, dass du auf etwas schreiben willst was nicht existiert. Denn die Variablen einer Klasse liegen relativ zu der Adresse auf die deine Instanz zeigt. Ist die Instanz nil (0), dann zeigen alle Variablen auf einen Bereich der nah bei 0 liegt.

Ich könnte mir also gut vorstellen, dass dein TGameControl_Server noch nicht oder nicht richtig erstellt wurde. Dass ServerSocket als globale Variable funktioniert bestätigt mich dabei auch noch. Denn globale Variablen existieren immer. Sebst als lokale Variable hätte es funktionieren müssen. Bzw als Umkehrschluss hätte bereits die Zuweisung von nil auf ServerSocket zu einem Fehler führen sollen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Feb 27, 2009 20:30 
Offline
DGL Member

Registriert: Mi Nov 12, 2008 18:27
Beiträge: 134
ui ^^ - son tolles problem und ich war so lang nich mehr hier :D

also ich hatte erst kürzlich nen ähnliches (vielleicht sogar selbiges) Problem - Ich hatte den Serversocket dabei in ner eigenen Klasse und er wollte unbedingt nen TComponent als Owner .. naja und wie macht man das? Na man vererbt der selbstgebauten Klasse einfach die Eigenschaften von TComponent, aber sieh selbst:

Code:
  1.  
  2. type test = class(TComponent)
  3.   client: TClientSocket;
  4.   procedure initialisieren;
  5.   procedure clientRead(Sender: TObject; Socket: TCustomWinSocket);
  6.   procedure clientConnect(Sender: TObject; Socket: TCustomWinSocket);
  7.   procedure clientDisconnect(Sender: TObject; Socket: TCustomWinSocket);
  8. end;
  9.  


Code:
  1.  
  2.   procedure test.initialisieren;
  3. begin
  4.  client:=TClientSocket.Create(test1);  //hier ist die instanz der klasse ( test1 ) noch statisch eingefügt .. ist halt nur nen test gewesen
  5.  client.Port:=80;
  6.  client.host:='www.delphigl.com';
  7.   // Da die Komponente nicht im Objektinspektor editierbar ist, müssen die Eventhandler manuell eingefügt werden
  8.  client.OnRead := clientRead;
  9.  client.OnConnect := clientConnect;
  10.  client.OnDisconnect := clientDisconnect;
  11.  client.Open;
  12. end;


Ich hoffe das hilft dir weiter - für die ein oder andere unsauberheit möchte ich mich gar nicht erst entschuldigen ( initialisieren nicht als creator ... what ever :D )

mfg grey
[/pascal]


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Feb 28, 2009 17:06 
Offline
DGL Member

Registriert: Do Dez 18, 2008 21:38
Beiträge: 60
Ich hab auch noch mal eine Frage zum Thema TCP:
Wie kann ich herausfinden unter welcher Adresse ein Client-Prozess ist, also um festzustellen wie viele Mitspieler es für das Spiel gibt.
Geht sowas auch mit dem TCP-Protokoll ?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Feb 28, 2009 17:43 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mär 30, 2007 18:35
Beiträge: 331
Ich weiß nicht, ob ich deine Frage richtig verstanden habe: Willst du herausfinden, wieviele Clients außer dir noch mit dem Server verbunden sind?
Wenn ja, dann muss der Server die Anzahl einfach an die Clients schicken, der weiß es ja.

Wenn das nicht deine Frage war, dann erkäre die bitte nochmal :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Feb 28, 2009 19:04 
Offline
DGL Member

Registriert: Do Dez 18, 2008 21:38
Beiträge: 60
Meine Frage war wohl irgendwie nicht ganz richtig...
Ich wollte eigentlich wissen wie der Client herausfinden kann welceh Server wo laufen, also so etwas wie eine Serversuche. Damit man beim Start eines Clients eine Liste von laufenden Servern bekommt und auswählen kann.
Sonst muss man den Namen des Hosts auf em der Server läuft ja immer angeben.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Feb 28, 2009 19:07 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
Hey Leute!

Also zur letzten Frage:
schau dir mal das an...
http://www.delphi-library.de/topic_UDPP ... 56272.html
... Da bin ich jetzt auch mal mit beschäftigt... geht halt nur im LAN!!

Zu meinem Problem.
Es läuft jetzt mit dem Create einwandfrei ... ich hatte doch ein Problem beim erstellen des GameControls...
Habe mich irren lassen, dadurch, dass die Fehlermeldung beim Create des Servers auftauchte, dachte ich es wäre alles klar mit meiner Klasse.
Aber sie war nicht richtig erstellt. Ihr seid ja schon fast Götter *g*

_________________
www.audi32.de


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 35 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3  Nächste
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.012s | 15 Queries | GZIP : On ]