AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit Programminternem Chat

Ein Thema von 5etH · begonnen am 8. Dez 2008 · letzter Beitrag vom 8. Dez 2008
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von 5etH
5etH

Registriert seit: 4. Mär 2008
Ort: Giessen
217 Beiträge
 
Delphi 2007 Professional
 
#1

Problem mit Programminternem Chat

  Alt 8. Dez 2008, 09:14
Hallo Zusammen,

momentan arbeite ich an einem chat der sich in einem anderem Programm von mir abspielt

Also ich kann ohne Probleme mittlerweile einen "Raum" erstellen in den die leute rein können und miteinander schreiben können,
aber leider gelingt es mir nicht einen "privaten" chat zu erstellen

ich habe versucht den server auf dem mainform laufen zu lassen was sich aber als unsinnig herraustellte sobald mehrere dem selben schreiben wollten da alles dann in einem chatfenster passierte

wie kann ich eine guteb Privatechat bauen ich arbeite momentan mit sockets... gibts da auch eine andere Möglichkeit. ich bin langsam am ende mit meinen ideen

wie gesagt ist der socketserver server auf dem mainform und schreibt auf einen server seinen nick um den anderen zu zeigen "hey bin online" worauf hin andere ihm schreiben können

der socketclient liegt auf einem chatfenster was zur laufzeit kreiert wird.

wenn weitere fragen offen stehen versuche ich sie zu beantworten


gruß 5etH
Manuel
Lieber heimlich schlau als unheimlich dumm
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

Re: Problem mit Programminternem Chat

  Alt 8. Dez 2008, 09:50
Also ich würde ja nur mit einem einzigen Socket-Server arbeiten.

Alles was dort ankommt wird entsprechend interpretiert bzw. entsprechend verteilt.

In die Nachricht würde ich zudem auch die Routing-Information einbetten (Raum oder Privat) und dann im entsprechenden Fenster anzeigen.

cu

Oliver
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von 5etH
5etH

Registriert seit: 4. Mär 2008
Ort: Giessen
217 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Problem mit Programminternem Chat

  Alt 8. Dez 2008, 09:52
ich kann aber leider nicht nur mit einem server arbeiten da das Programm nicht von einem server abhängig sein soll... gibts denn sonst keine möglichkeit das programmintern zu verwallten ... bzw wie kann ich denn ermitteln wer mir gerade schreibt das würde mir auch schon helfen
Manuel
Lieber heimlich schlau als unheimlich dumm
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

Re: Problem mit Programminternem Chat

  Alt 8. Dez 2008, 10:00
Zitat von 5etH:
ich kann aber leider nicht nur mit einem server arbeiten da das Programm nicht von einem server abhängig sein soll...
Was hat das den damit zu tun
Das ist doch nur eine Komponente mit einem festen Port, mehr nicht. Alles andere hat ja nur was mit dem Konzept zu tun (ob ich also etwas serverbasierend aufbaue).
Zitat von 5etH:
gibts denn sonst keine möglichkeit das programmintern zu verwallten ... bzw wie kann ich denn ermitteln wer mir gerade schreibt das würde mir auch schon helfen
Wenn du eine nachricht empfängst, dann wird doch ein Event ausgelöst und das Event hat einen Socket-Parameter und da steht u.a. drin, von welchem Rechner das jetzt kommt. Ansonsten pack das doch einfach in die Nachricht mit rein!

Beispiel-Nachricht 1:
Code:
From:MasterBlaster
Room:Wir hier ganz alleine
Msg:Ey oller alles fit?
Beispiel-Nachricht 2:
Code:
From:MasterBlaster
Private
Msg:Mas was privates
Wie du die Nachricht aufbaust und drauf reagierst, bleibt doch dir ganz allein überlassen. Der Server-Socket bietet dir nur die Transport-Schicht. Was du transportierst ist dem sowas von egal

cu

Oliver
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von 5etH
5etH

Registriert seit: 4. Mär 2008
Ort: Giessen
217 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Problem mit Programminternem Chat

  Alt 8. Dez 2008, 10:31
ja das hat mir schonmal weiter geholfen nun stehe ich aber vor dem problem das wenn der server eine nachricht bekommt das passende Form zu ermitteln, da ich sie ja zur laufzeit erzuge

also momentan sied das zum trennen zuständige codestück so aus
Delphi-Quellcode:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
  var da : Boolean;
  I: Integer;
begin
da := false;
for I := 0 to stringgrid3.rowcount - 1 do
begin
  if stringgrid3.Cells[0,i] = socket.remoteaddress then
  begin
    da := true
  end;
end;
  if not da then
  begin
    with Tform11.Create(Application) do
  begin
    Show();
    Memo1.Lines.Add(Socket.ReceiveText);
    caption := 'Chat mit '+socket.RemoteHost;
    if stringgrid3.Cells[0,0] = 'then
    begin
     stringgrid3.Cells[0,0] := socket.RemoteAddress;
    end
    else
    begin
       stringgrid3.Cells[0,stringgrid3.RowCount -1] := socket.RemoteAddress;
    end;
  end;
  end
  else
  begin
    //hier müsste ich wissen an welches form es dann muss
  end;
Manuel
Lieber heimlich schlau als unheimlich dumm
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

Re: Problem mit Programminternem Chat

  Alt 8. Dez 2008, 11:22
Zitat von 5etH:
ja das hat mir schonmal weiter geholfen nun stehe ich aber vor dem problem das wenn der server eine nachricht bekommt das passende Form zu ermitteln, da ich sie ja zur laufzeit erzuge
Merk dir einfach welche Form was anzeigen soll z.B. in einer TObjectList ... ist für das entsprechende Thema keine Form da, dann erzeug einfach eine Form (und natürlich in der Liste merken)

cu

Oliver
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von 5etH
5etH

Registriert seit: 4. Mär 2008
Ort: Giessen
217 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Problem mit Programminternem Chat

  Alt 8. Dez 2008, 11:31
ja soweit habe ich auch schon gedacht bin aber auf das problem gestoßen das ich nicht weis wie ich dann auf das speziefische memo zugreifen soll
Manuel
Lieber heimlich schlau als unheimlich dumm
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

Re: Problem mit Programminternem Chat

  Alt 8. Dez 2008, 11:37
na wegen OOP macht das doch keine Probleme, oder?

Du solltest ja immer das gleiche Ursprung-Form benutzen:
Delphi-Quellcode:
TChatForm = class( TForm )
    Memo1 : TMemo;
  private
  public
  end;
und dann:
TChatForm( FormListe.Object[ FormIndex ] ).Memo1 Wenn du die Form-Klasse auch noch um entsprechende Propertys erweiterst (sind hier jetzt die privaten Nachrichten, welcher Raum, etc.) dann kannst du darüber auch herausfinden, ob es das richtige Form ist. Und wenn nicht, dann eins anlegen in die Liste eintragen und dann in das Memo-Feld übergeben.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von 5etH
5etH

Registriert seit: 4. Mär 2008
Ort: Giessen
217 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Problem mit Programminternem Chat

  Alt 8. Dez 2008, 11:56
mir wächst das ganze momentan voll über den kopf ich werde jetzt erstmal eine testexe machen das nur zum chatten ist bevor ich es in mein programm implimentiere sonst werde ich verrückt dann kann ich diese auch posten mit quelltext ich hoffe das mir dann besser zu helfen ist

gruß Manu


EDIT: so ich bin jetzt so weit wie ich ohne hilfe kommen kann. im anhang ist sowol Quelltext als auch Exe ich hoffe das ihr mir weiter helfen könnt

bekannte fehler:

1. der übergebene Host auf dem dynamisch erzeugten Form löscht sich!

2. ich kann nicht schreiben sondern nur empfangen wenn ich mit mir schreibe!

3. die formlist wird beim ersten eintrag schon gesprengt ??

hab nochmal die neue hochgeladen
Angehängte Dateien
Dateityp: rar testchatter_814.rar (228,6 KB, 7x aufgerufen)
Manuel
Lieber heimlich schlau als unheimlich dumm
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

Re: Problem mit Programminternem Chat

  Alt 8. Dez 2008, 13:03
Du übergibst der Formlist das Object Self, das bezieht sich aber auf Form1!

Warum/Wofür auf dem Form2 ein ClientSocket?? Alles über einen ServerSocket laufen lassen!

Im Form2 ist keine Möglichkeit überhaupt was zu senden (also ich sehe da nix von wegen senden)

EDIT:

Pack doch mal den ServerSocket in eine DatenUnit, die bindest du dann in Form1 und Form2 ein (Form2 ist da eigentlich am wichtigsten, weil das Chatten über das Form2 läuft). Dann kannst du nachher auch das ganz einfach in dein anderes Projekt übernehmen
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 02:01 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