Entwickler-Ecke

Delphi Tutorials - DXPlay – Die Kompo für’s Web


GTA-Place - Mi 05.10.05 18:34
Titel: DXPlay – Die Kompo für’s Web
[meta]DX DirectX Direct X Play DirectPlay TCP-IP [/meta]
Ich habe ein Tutorial zur DXPlay-Komponente von DelphiX geschrieben. Das Tutorial ist hier zu finden:
http://www.gym-wgt.fh-weingarten.de/DelphiX/TutorialDelphiX.html

Fragen ins Delphi-Forum, Kritik hier in diesen Thread.

Update 16.12.2006:
- Fehler korriegert (DPID_ALLPLAYERS)
- DXPlay.Close hinzugefügt
- Demo-Source angehängt

Update 17.12.2006:
- GUID hinzugefügt
- Als Website ausgelagert
- geshi als Highlighter benutzt


Moderiert von user profile iconjasocul: Beiträge zusammengefasst.
Moderiert von user profile iconUdontknow: Meta-Tag ergänzt, Rechtschreibfehler korrigiert.


F34r0fTh3D4rk - Mo 31.10.05 18:02

sehr schon geschrieben das tutorial, nur ist mir der sinn von :Msg:    Array[0..0of Char; noch nicht ganz klar, warum kein dynamisches array ?


GTA-Place - Di 01.11.05 00:43

Danke.

Ich hab das auch nur aus nem anderen Tut übernommen.
Da war die Rede davon, dass man so nur das sendet, was auch wirklich nötig ist.


CK_CK - Mi 09.11.05 13:15

Hi!
Erstmal: Dein Tutorial ist große klasse... :wink:

Ich hab' zwei Fehler gefunden:
- Irgendwo sollte noch "DPlay.Close;" stehen...
- Wenn das Edit-Feld leer ist sollte keine Nachricht geschickt werden können...
(Sind nur Kleinigkeiten, bei denen es mir schon peinlich ist, sie zu schreiben... :oops:)

Also... warum ich eigentlich schreibe...:
Der Chat funktioniert im Netzwerk perfekt...aber leider nicht über das Internet... Wenn ich da meine IP-Adresse eingebe findet das Programm meine Sessions nicht.
Ich habe einen Router (Eine FritzBox die als Router läuft) könnte das daran liegen? Wie kann ich das freigeben und welche Ports muss ich freigeben, bzw. wie stelle ich in dem Chat den richtigen Port ein?

Naja, vielleicht kann mir jemand helfen... *hoff*

Gruß,
CK_CK


F34r0fTh3D4rk - Mi 09.11.05 15:35

wenn du einen router hast, kannst du keinen chat eröffnen, weil man dich über deine ip nicht direkt erreichen kann 8)


CK_CK - Mi 09.11.05 16:42

user profile iconF34r0fTh3D4rk hat folgendes geschrieben:
wenn du einen router hast, kannst du keinen chat eröffnen, weil man dich über deine ip nicht direkt erreichen kann 8)


ICQ und Konsorten funktionieren doch auch... *heul*

Es muss doch irgendwie möglich sein...

CK_CK


F34r0fTh3D4rk - Mi 09.11.05 19:09

bei icq bist ja auch du net der server, versuch mal nen cs server oder so aufzumachen, da wird dich keiner finden :)


Christian S. - Do 10.11.05 00:14

Die Diskussion zum Problem von CK_CK bitte hier fortsetzen:
http://www.delphi-forum.de/viewtopic.php?t=51304


Udontknow - Do 10.11.05 12:45

Das Problem bzw. dessen Lösung sollte natürlich trotzdem hier im Tutorial erwähnt werden. :)

Cu,
Udontknow


MKX - Mo 28.11.05 18:30

Wenn ich DelphiX (bzw. UnDelphiX) installiere, bekomme ich in der Leiste überhaupt kein Symbol für DXPlay!!


GTA-Place - Mo 28.11.05 19:03

Schreib das Problem bitte ins Delphi-Forum.


bjd - Mi 01.02.06 16:31

Bei mir meldet der Compiler, in diesem Script:


Quelltext
1:
DPlay1.SendMessage(DPID_ALLPLAYERS, ChatMsg, MsgSize);                    


Quelltext
1:
Undefinierbarer Bezeichner: 'DPID_ALLPLAYERS'                    


Ich hab' noch Delphi4, aber daran kann's ja nicht liegen! :?
Wäre nett, wenn mir jemand helfen könnte. :oops:


bjd - Mi 01.02.06 17:02
Titel: Gelöst
Hi, noch mal!

Mein Problem hat sich gelöst: Ich mach 's jetzt so:


Delphi-Quelltext
1:
2:
For I := 0 To DPlay1.Players.Count-1 Do
      DPlay1.SendMessage(DPlay1.Players.Items[I].ID, ChatMsg, MsgSize);


Moderiert von user profile iconChristian S.: Code- durch Delphi-Tags ersetzt


Darth Sitthiander - Fr 03.03.06 18:51

Weiss nicht ab die frage schon irgendwo gestellt wurde. Also, wär nett wenn ihr mir sagen könnt wie ich die namen derer die im chat sind in eine listbox eintrage, so dass sie immer aktualisiert wird, wenn ein spieler den raum verlässt oder betritt. Und wie ich auch noch den namen des servers oben in ein label bekomme. Danke :)


GTA-Place - Fr 03.03.06 19:30

Das mit den Usern müsste so gehen:

Delphi-Quelltext
1:
2:
for I := 0 to DPlay1.Players.Count-1 do  
  ListBox.Items.Add(DPlay1.Players.Items[I].Name);

Müsste eigentlich in OnAddPlayer bzw. OnDeletePlayer rein.


Darth Sitthiander - Fr 03.03.06 21:02

Danke, aber er sagt mir folgendes:

Quelltext
1:
[Fehler] fertigchat.pas(131): Undefinierter Bezeichner: 'Name'                    


und das in dieser Zeile:

Quelltext
1:
ListBox1.Items.Add(DxPlay1.Players.Items[i][b].Name[/b]);                    


GTA-Place - Sa 04.03.06 01:21

Vielleicht ist ja das richtig:

Delphi-Quelltext
1:
2:
for I := 0 to DPlay1.Players.Count-1 do    
  ListBox.Items.Add(DPlay1.Players.Items[I].DisplayName);


Delphi_Schüler - Di 07.03.06 23:27

gibt es eine DelphiX oder UnDelphiX Version für Delphi 7 ?


schlumpf070 - Mi 08.03.06 17:23
Titel: delphi 2006
gibts die komponente auch für delphi 2006 ?


GTA-Place - Do 09.03.06 20:59

UnDelphix (http://turbo.gamedev.net/undelphix.asp) ist für Delphi 7.
Und für Delphi 2006 gibt es IHMO noch keine Version (für D2005 schon).


Delphi_Schüler - Fr 10.03.06 16:40

user profile iconGTA-Place hat folgendes geschrieben:
UnDelphix (http://turbo.gamedev.net/undelphix.asp) ist für Delphi 7.


Das hab ich schon, aber es gibt nur instal 3, 4 und 5 in der zip datei und bei denen kommt die meldung, dass VCL30.dpl fehlt -.-


Darth Sitthiander - Sa 11.03.06 22:45

bei mir ist es jetzt so:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
var
i: Integer;
begin
for i := 0 to DxPlay1.Players.Count-1 do
 begin
  try
  Listbox1.Items.Add(DXPLay1.Players.Players[i].Name);
  Listbar1.Items.Add(DXPLay1.Players.Players[i].Name+' hat den Raum betreten.')
  finally

   end;
  end;
end;


und das funktioniert. Nur wenn ich das auch bei delete player reintuhe, dann löscht er irgendwie den player nicht aus der listbox1. Bitte helfen. Danke.

Moderiert von user profile iconraziel: Code- durch Delphi-Tags ersetzt


bruce185 - So 07.05.06 04:08

hallo,
ich habe mir auch die Komponente UnDelphiX gedownloadet, aber wenn ich des DelphiX_for7 ausführe auf Compilieren, dann kommt dieser Fehler:


Delphi-Quelltext
1:
2:
Erzeugen
  [Fataler Fehler] DXConsts.pas(103): Ausgabedatei 'E:\Output\DXConsts.dcu' kann nicht erstellt werden


wieso kommt der Fehler? an was kann des liegen?
ich benutze Delphi7

ich danke euch schonmal :wink:

Gruss Andreas


bruce185 - So 07.05.06 21:47

Hallo nachmal,
bei mir geht der Chat net, wenn ich z.B. im Chat drin bin und eine Nachricht eingebe, dann erscheint beim andere Rechner ein Fenster und da steht "Illegale Message Form"
wisst ihr woran das liegen kann?


Ironwulf - Di 22.08.06 04:40

wie kann ich die verbindung sauber trennen?
wenn ich es mit DXPLay1.Close tue erhalt ich eine Zugriffsverletzung, das kann aber auch daran liegen das ich es im onmessage aufrufe, nur leider fällt mir grad keine möglichkeit ein das dort irgendwie nach dem onmessage aufzurufen, hat jemand eine idee?


GTA-Place - Sa 16.12.06 21:53

DxPlay.Close in OnDestroy des Forms verwenden.

Ich habe oben im Tutorial den Fehler verbessert, dass DPID_ALLPLAYERS unbekannt war, ein paar Änderungen vorgenommen und einen Beispiel-Source angehängt.


Memorius - Mo 04.06.07 23:16

Hallo,
Gibt es auch DelphiX für Delphi 4 pro?
übrigens:
ich komme nicht auf die seite http://www.turbo.gamedev.net ... Die seite kann nicht angezeigt werden.
Was is da loos? Ist die seite veraltet??

C YA


GTA-Place - So 10.06.07 09:55

Die Firma GameDev gibt es nicht mehr. Hier [http://www.micrel.cz/Dx/] gibt es DelphiX für Delphi 3 - 7 + 2005/2006.