AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Users online in einem Chat

Users online in einem Chat

Ein Thema von ArmyMan · begonnen am 3. Jul 2004 · letzter Beitrag vom 21. Jul 2004
Antwort Antwort
Seite 3 von 3     123
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#21

Re: Users online in einem Chat

  Alt 4. Jul 2004, 12:10
Ok, dann versuch ichs nochmal.

Du musst unterscheiden können, ob es jetzt ein Text für das Memo oder etwas für die Liste ist. Also musst du vorne etwas an den Text hängen. Sobald der Server was sendet, so kannst du dem Text z.B. "MEMO" oder "LIST" voraussetzen.
Sobald der Client die Daten erhält, so muss er diese ersten 4 Zeichen ansehen. Mit Copy kopierst du die raus, anschließend löschst du sie mit Delete. Ist die kopierte Zeichenkette "MEMO" so ist es ein Text und er geht ins Memo, wenn er "LIST" ist, dann musst du was mit den Daten anfangen, je nachdem wie du sie aneinanderhängst also wieder trennen.
Ich hab hier leider kein Delphi, sonst würde ich dir auch den Code hinschreiben.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Tubos

Registriert seit: 25. Feb 2004
Ort: Yspertal (Niederösterreich)
1.014 Beiträge
 
Delphi 7 Personal
 
#22

Re: Users online in einem Chat

  Alt 4. Jul 2004, 12:12
Zitat:
Ich brauche eine andere möglichkeit, oder eine SEHR genaue erklärung.
Das ist die beste Möglichkeit.
Genauso mache ich es in meinem Chat auch.

Definiere Konstanten und sende immer eine Konstante und einen Parameter.
Bei mir gibt es zum Beispiel konstanten wie

const MsgUser='*user:';
// Eingabe

const MsgQuit='*quit:'
// Jemand verlässt den chat

usw...

bin erst ganz am anfang, aber das Konzept sieht ungefähr so aus.
Jetzt kombiniere ich die und sende z.B. MsgQuit+'Tubos'.
Durch folgende Funktionen kann ich die Nachricht (msg) oder den parameter (par) herausfiltern:

Delphi-Quellcode:
function msg(s: string): string; // extrahiert die Nachricht aus dem empfangenen String
begin
 result:=copy(s,1,pos(':',s));
end;

function par(s: string): string; // extrahiert den Parameter aus dem empfangenen String
begin
 result:=copy(s,pos(':',s)+1,999);
end;
(Nicht alle MSGs haben Parameter.)



Wenn ich einen String bekomme, der in der Variablen x gespeichert wird mache ich folgendes:
if msg(x)=MsgQuit then memo1.lines.add(par(x) + ' verlässt den Chat.'); Natürlich muss ich den Eintrag aus der Listbox mit den Usern noch entfernen, aber das ist nur zur Erklärung wie so ein Nachrichtensystem funktionieren kann.

Hoffe das hat dir ein wenig geholfen und dich nicht noch mehr verwirrt
Lukas
  Mit Zitat antworten Zitat
Benutzerbild von ArmyMan
ArmyMan

Registriert seit: 25. Mai 2004
Ort: Wil Sg
193 Beiträge
 
#23

Re: Users online in einem Chat

  Alt 4. Jul 2004, 12:15
Beides

Wo muss ich das zeug hineinschreiben?? OnClientRead, OnClientConnect, OnClientDisconnect??
Heute hab isch einen RIISEN knopf

Thx ArmyMan
ArmyMan
Reden ist Schweigen, Silber ist Gold!
Der Soldat friert nicht. Er zittert nur vor Wut, weil es so kalt ist.
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#24

Re: Users online in einem Chat

  Alt 4. Jul 2004, 12:24
Alles wo die Konstanten reingegeben werden müssen kommt dahin, wo du Socket.SendText aufrufst.
Das Auslesen der Konstante oder so kommt beim OnClientRead des Client-teils rein.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von ArmyMan
ArmyMan

Registriert seit: 25. Mai 2004
Ort: Wil Sg
193 Beiträge
 
#25

Re: Users online in einem Chat

  Alt 4. Jul 2004, 14:25
Ich bin glaube zu blöde...
Ich verstehe es einfach nicht.

Wenn jemand einen quelltext in diesem stil hat bin ich offen. Ich verstehe den zusammenhang eben nicht. Wenn ich ihn sehe clickt es vielleicht.

Danke für euere hilfe
ArmyMan
ArmyMan
Reden ist Schweigen, Silber ist Gold!
Der Soldat friert nicht. Er zittert nur vor Wut, weil es so kalt ist.
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#26

Re: Users online in einem Chat

  Alt 4. Jul 2004, 15:17
Zuerst musst du mal einige Konstanten definieren:
Delphi-Quellcode:
const
  cFinish = #1;
  Kommando_1 = 'KOMM1';
  Kommando_2 = 'KOMM2';
  MaxArguments = 25;
Diese Konstante brauchst du noch. Bedenke dass du die Konstanten für Befehle beliebig erweitern kannst, diese aber im Server und im Client gleich sein müssen (falls du es getrennt hast).

So werden die Befehle zusammengesetzt:
Socket.SendText(Kommando_1+cFinish+'Param_1'+cFinish´'Param_2'+cFinish); Hier musst du beachten, dass jeder Befehl mit cFinish abgeschlossen werden muss. Zweitens muss zwischen allen Parametern und dem Befehl ein cFinish stehen. Aufgrund dieses Zeichens wird der Text wieder getrennt.

Das ist die Prozedur zum Aufspalten eines Zusammengesetzten Befehls.
Delphi-Quellcode:
var
  Arguments: array[1..MaxArguments] of String;
  Command: String;
  i: Integer;
  NumArguments: Integer;
begin
  Data := Socket.ReceiveText;
  Command := Copy(Data,1,Pos(cFinish,Data)-1);
  Delete(Data,1,Pos(cFinish,Data));
  NumArguments := 0;
  while Length(Data) > 0 do
  begin
    Inc(NumArguments);
    Arguments[NumArguments] := Copy(Data,1,Pos(cFinish,Data)-1);
    Delete(Data,1,Pos(cFinish,Data));
  end;
end;
Das Codesegment musst du dir unter Umständen noch bearbeiten. In Command wird am Ende dann das Kommando (also der erste Parameter) drinstehen, Arguments[i] enthält den jeweiligen Parameter, und NumArguments die Anzahl Parameter. Du kannst den Code auch so umbauen, dass er mit dynamischen Arrays und nicht der vordefinierten Höchstanzahl funktioniert. Wie gesagt, der Code ist noch uneffizient, ich habe lange nicht mehr am Chat gearbeitet. Weiters könnte man es auch einfacher aufspalten, such dazu mal im Forum nach DelimitedText.
Ich hoffe dass dir diese Codefragmente weiterhelfen, ich hoffe du weißt auch wo du sie einbauen musst.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von ArmyMan
ArmyMan

Registriert seit: 25. Mai 2004
Ort: Wil Sg
193 Beiträge
 
#27

Re: Users online in einem Chat

  Alt 21. Jul 2004, 16:08
Ich sehe es nicht! Sorry

Vergisst es. Ich schaffe es nicht

Greez ArmyMan
ArmyMan
Reden ist Schweigen, Silber ist Gold!
Der Soldat friert nicht. Er zittert nur vor Wut, weil es so kalt ist.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 20:03 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