Einzelnen Beitrag anzeigen

Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#28

Re: Pokerprojekt realisierung

  Alt 4. Apr 2007, 12:15
Zitat von .chicken:
Startet das Programm einfach mal und klickt auf Start Server. Dann kommtn Fehler und ich weiss nicht warum!
Irgendwas mit Zugriffsverletzung aber was weiss ich nicht!
Sorry, aber ich muss Dir echt ein Tutorial über die Objekt Orientierte Programmierung (OOP) und Delphi empfehlen. Das hilft Dir sicherlich weiter (und die zu kennen ist an sich nicht falsch).
Ich glaube Dir ist der Unterschied zwischen Klasse und Exemplar noch nicht ganz klar.

Die Variable aServer in der Unit Main, speichert den Verweis auf ein Exemplar. Die Klasse TMyServer ist nur eine Klasse. Rufst Du den Konstruktor der Klasse TMyServer auf, so wird ein Exemplar erzeugt und der Verweis zurückgegeben (wie bei einer Funktion).
aServer.Create deutet der Compiler jetzt so, dass Du für das Exemplar aServer die Funktion Create aufrufen möchtest. Das Problem ist aber, dass Du aServer natürlich noch gar kein Exemplar zugewiesen hast.
Die korrekte Form wäre also
aServer := TMyServer.Create; Danach ist in aServer ein Verweis auf dieses neue Objekt gespeichert. Das heißt, dass Du irgendwann, sobald Du aServer einen anderen Wert zuweist oder es nicht mehr brauchst, aServer.Free aufrufen musst (um den Speicher wieder zu säubern).
Wie Du damit schon siehst, sobald in aServer ein gültiger Verweis steht, kannst Du dann auch direkt auf die Methoden dieser Instanz zugreifen. Der Konstruktor wird aber immer direkt für eine Klasse aufgerufen (also TXYZ.Create) und das Ergebnis einer Variablen zugewiesen. Mit anderen Methoden solltest Du das nie tun! (es gibt statische Methoden, aber die sind ein anderes Thema).
  Mit Zitat antworten Zitat