Entwickler-Ecke
Internet / Netzwerk - P2P Chat
chickenfigt1989 - Di 16.03.10 16:35
Titel: P2P Chat
Hey Hey
Ich will nen ganz Simplen P2P Chat Programmieren wo alle in einen Raum sind und wen ich auf einen Rechtsklick mache sollte kommen: Inhalt aus Memo senden, Kicken, Bannen.
Das alles sollte aber übers Internet Laufen also nicht nur in Heimnetzwerk bei mir Daheim.
Könnt ihr mir Tipps oder Links geben was ich alles brauch und wie ich sowas Realisiere??
MfG
BenBE - Di 16.03.10 16:58
Das mit dem grundlegenden Tutorial zur Kommunikation untereinander ist schon mal gar nicht so schlecht.
Wenn das läuft, gehst Du weiter, dass du dir mal das Thema DHT und Kademlia anschaust. Von da aus, sollte der Rest recht einfach werden.
chickenfigt1989 - Mi 17.03.10 11:01
Hey
Ich habe Narses Tutorial angefangen, aber ich hänge schon bei dem Termchar Tutorial.
In der Pdf steht es so drin:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33:
| TForm1 = class(TForm) [...] procedure ParseBuffer; function GetCmdToken(const StrToken: String): TCmdToken; procedure Execute(const Command: TCmdToken; Data: TStringList); [...] procedure TForm1.ParseBuffer; var Data: TStringList; Current: TCmdToken; OutOfArg: Boolean; begin Data := TStringList.Create; try Data.Text := ReceiveBuffer; OutOfArg := FALSE; while ( (Data.Count > 0) and (NOT OutOfArg) ) do begin Current := GetCmdToken(UpperCase(Data.Strings[0])); if (Data.Count >= Syntax[Current].ArgCount) then Execute(Current,Data) else OutOfArg := TRUE; end; ReceiveBuffer := Data.Text; finally Data.Free; end; end; |
Bei mir ist es so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ScktComp;
const SERVER_PORT = 6786; Syntax: Array[TCmdToken] of TCmdSyntax = ( (Text: ''; ArgCount: 1), (Text: 'SAID'; ArgCount: 3), (Text: 'USER'; ArgCount: 2), (Text: ''; ArgCount: 1) ); type TCmdSyntax = record Text: ShortString; ArgCount: Integer; end; TCmdToken = ( cmdNOP = 0, cmdSAID, cmdUSER, cmdERROR );
TCmdSyntax = record Text: ShortString; ArgCount: Integer; end;
TCmdToken = ( cmdNOP = 0, cmdSAID, cmdUSER, cmdERROR );
TMyConState = ( mcsOffline, mcsPending, mcsOnline );
TForm1 = class(TForm) |
Ich bekomme folgende Fehlermeldungen:
[Error] Unit1.pas(12): Undeclared identifier: 'TCmdToken'
[Error] Unit1.pas(12): Undeclared identifier: 'TCmdSyntax'
[Error] Unit1.pas(12): Data type too large: exceeds 2 GB
[Error] Unit1.pas(13): '(' expected but ':' found
[Error] Unit1.pas(13): '..' expected but ')' found
[Error] Unit1.pas(14): '(' expected but ':' found
[Error] Unit1.pas(14): Identifier redeclared: 'ArgCount'
[Error] Unit1.pas(15): '(' expected but ':' found
[Error] Unit1.pas(15): Identifier redeclared: 'ArgCount'
[Error] Unit1.pas(16): '(' expected but ':' found
[Error] Unit1.pas(16): Identifier redeclared: 'ArgCount'
[Error] Unit1.pas(17): Expression expected but ';' found
[Error] Unit1.pas(19): Identifier redeclared: 'TCmdSyntax'
[Error] Unit1.pas(24): Identifier redeclared: 'TCmdToken'
[Error] Unit1.pas(31): Identifier redeclared: 'TCmdSyntax'
[Error] Unit1.pas(36): Identifier redeclared: 'TCmdToken'
[Error] Unit1.pas(37): Identifier redeclared: 'cmdNOP'
[Error] Unit1.pas(38): Identifier redeclared: 'cmdSAID'
[Error] Unit1.pas(39): Identifier redeclared: 'cmdUSER'
[Error] Unit1.pas(40): Identifier redeclared: 'cmdERROR'
[Error] Unit1.pas(201): ')' expected but identifier 'ArgCount' found
[Error] Unit1.pas(213): Undeclared identifier: 'i'
[Error] Unit1.pas(257): 'DO' expected but identifier 'ArgCount' found
[Fatal Error] Client.dpr(5): Could not compile used unit 'Unit1.pas'
Delete - Mi 17.03.10 11:11
Hast du auch die nötigen Komponenten, Units, Klassen eingebunden? Vergleich mal die Uses-Abschnitte.
chickenfigt1989 - Mi 17.03.10 11:22
Also ich habe in den Tutorial nichts gefunden mit uses hinzufügen :(
Delete - Mi 17.03.10 11:24
chickenfigt1989 hat folgendes geschrieben : |
| Also ich habe in den Tutorial nichts gefunden mit uses hinzufügen :( |
Wie bitte?
Gausi - Mi 17.03.10 11:28
Wie wäre es mal mit etwas Eigeninitiative und/oder Grundlagen lernen?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| const SERVER_PORT = 6786; Syntax: Array[TCmdToken] of TCmdSyntax = ( (Text: ''; ArgCount: 1), (Text: 'SAID'; ArgCount: 3), (Text: 'USER'; ArgCount: 2), (Text: ''; ArgCount: 1) );
type TCmdSyntax = record Text: ShortString; ArgCount: Integer; end; TCmdToken = |
Du verwendest Typen, die du erst später deklarierst.
chickenfigt1989 - Mi 17.03.10 11:30
Luckie hat folgendes geschrieben : |
| Hast du auch die nötigen Komponenten, Units, Klassen eingebunden? Vergleich mal die Uses-Abschnitte. |
Aber ich habe mich Streng ans Tutorial gehalten.
Wie deklarier ich die dan richtig?
MfG
Gausi - Mi 17.03.10 11:35
Erst deklarieren, dann benutzen?
ALF - Mi 17.03.10 11:38
chickenfigt1989
Weist Du überhaupt was Du da machst! Mehr als C&P und das gleich doppelt und an den falschen stellen kann ich nicht erkennen!
Ich hatte echt gehofft Du steigst neu ein und willst was lernen.
Aber irrtum, Du machst genau so weiter! Schade :(
Gruss Alf
chickenfigt1989 - Mi 17.03.10 11:42
Ja ich Arbeite das Tutorial durch.
Passt es so?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| const SERVER_PORT = 6786; type TCmdSyntax = record Text: ShortString; ArgCount: Integer; end; TCmdToken = Syntax: Array[TCmdToken] of TCmdSyntax = ( (Text: ''; ArgCount: 1), (Text: 'SAID'; ArgCount: 3), (Text: 'USER'; ArgCount: 2), (Text: ''; ArgCount: 1) ); |
Ich will es ja lernen und ich lies jetzt schon zum Dritten mal des Tutorial durch aber ich Blick da nicht durch. Ich hab mal ein Screenshot von der Betroffenen stelle im Anhang mit angehängt.
Delete - Mi 17.03.10 11:56
Woher sollen wir das wissen? Du sitzt doch davor. Drücke F9 und du weißt es.
elundril - Mi 17.03.10 12:18
chickenfigt1989 hat folgendes geschrieben : |
| Ja ich Arbeite das Tutorial durch. |
Sorry, aber Copy und Paste auf den Quelltext im tutorial anwenden ist nicht wirklich lernen. Lernen ist wenn man versteht was man macht und das auch selbst umsetzen könnte.
Außerdem, ich find diese Tutorials sind eher für Fortgeschrittene geeignet, nicht für Einsteiger, denn ich z.B. kenn mich bei den Tutorials auch noch nicht ganz aus, und als Einsteiger würd ich mich nicht gerade bezeichnen.
lg elundril
BenBE - Mi 17.03.10 22:17
Mal abgesehen, dass Tools wie DelForEx eine wahre Wohltat für deinen Quälkot darstellen ;-) (SCNR).
Ganz abgesehen davon, dass das in der Form nicht funktionieren kann. Auch Copy and Paste will gelernt sein.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!