Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Kleiner Chat (https://www.delphipraxis.net/90960-kleiner-chat.html)

.chicken 26. Apr 2007 15:49


Kleiner Chat
 
Liste der Anhänge anzeigen (Anzahl: 2)
Also habe um mich besser mit dem Netzwerk zurechtzufinden und etwas damit rumzuspielen einen kleinen Chat geschrieben!

Er funktioniert mit den TServer- und TClientSocket-Komponenten, benutzt aber trotzdem die IdHTTP und IdIPWatch-Komponenten von Indy.

Is wie gesagt nix großes!

Ich hoffe der Quelltext ist nicht zu unübersichtlich geworden ^^

Also bin für konstruktive Kritik offen ;-)

Edit: Aktuelle Änderungen

Features (letztes Update - 30.04.07):
- jeder kann einen Server erstellen
- jeder Client kann eine Farbe wählen
- Farben ein-/ausstellbar
- nach Verlassen des Servers wird ein ChatLog angelegt und in einer .txt-Datei gespeichert
- Sound beim Tippen und beim Erhalten einer Nachricht, wenn der Chat nicht aktiv ist
- Sound ein-/ausstellbar
- über den Befehl '/me xxx' Aktionen ausführbar (alter Befehl '*xxx*' nichtmehr verfügbar)
- Privatunterhaltungen (getrennt durch TabSheets)
- jeder Name ist einzigartig, d.h. ist ein Name schon vergeben, muss ein neuer gewählt werden
- kein Fehler mehr wenn dem Programm der Zugriff zum Internet verweigert wird
- Passwort-Funktion

Gefixt (02.05.07):
- beim Verlassen eines Clients wird er wieder aus den Userlisten der anderen gelöscht


Also, bitte sagt mir eure Meinungen :)

Edit: Mir sind noch einige Fehler beim Löschen von Clients aufgefallen. Wird bei Zeiten gefixt!

DGS 26. Apr 2007 15:52

Re: Kleiner Chat
 
Zitat:

Zitat von .chicken
Also bin für konstruktive Kritik offen ;-)

Na gut. Ich hätte da etwas:

Zitat:

Zitat von .chicken
Anmerkung: wenn man vor die Nachricht ein '*' und ans Ende der Nachricht auch ein '*' schreibt, dann wird es zu einer Aktion.
Z.B: '*tanzt!*' wird zu 'Nickname tanzt!' und wird kursiv geschrieben.

besser wäre, sich an Chat-Konventionen zu halten. Also Aktionen ausführen mit /me
Also für 'NickName tanzt' lieber sowas eintippen: '/me tanzt'

.chicken 26. Apr 2007 16:04

Re: Kleiner Chat
 
Hm, klingt gut!
Aber das me davor...das soll dann nur mit me funktionieren oder?

DGS 26. Apr 2007 16:13

Re: Kleiner Chat
 
Vergiss den Slash vor dem me nicht.

und die Aktion soll nur mit dem Befehl /me ausgeführt werden.
Wenn du nicht genau weist, wie du sowas umsetzen kannst, kann ich dir tipps geben. Hab etwas Erfahrung mit IRC Client Programmierung.

Und um auf deine Frage zurückzukommen.
'/me BlaBla'
soll ersetzt werden durch:
'Nick BlaBla'
Also im Grunde dasselbe, was du mit
'*BlaBla*'
hattest.

.chicken 26. Apr 2007 16:27

Re: Kleiner Chat
 
Jo, das is ja relative easy ;-)
Danke soweit!

.chicken 26. Apr 2007 19:50

Re: Kleiner Chat
 
Ok, alles geupdatet!

Blink 26. Apr 2007 21:04

Re: Kleiner Chat
 
Hi

Ist doch in Open-Source, wo ist den dann der Sourcecode wenn ich fragen darf :gruebel: ? Ansonsten ganz Ok funktioniert ohne Probleme bei mir.

RXR-Max 26. Apr 2007 21:11

Re: Kleiner Chat
 
tja muss ich auch nicht viel zu sagen: :thumb: :thumb: :thumb: :thumb: :thumb:

.chicken 27. Apr 2007 17:08

Re: Kleiner Chat
 
Ja, warum der Source nich da ist, frag ich mich auch gerade :D
Wollte eig meine Rar-Datei uploaden, statt die .exe!
Wird direkt gemacht!

Sko 28. Apr 2007 00:04

Re: Kleiner Chat
 
Dein Chat hat ein Problem wenn ich ihn die Abfrage der WAN-IP nicht machen lasse, dann stürzt er ab, ansonsten :thumb:

.chicken 28. Apr 2007 00:50

Re: Kleiner Chat
 
Aso, wenn du Offline bist oder was meinste? Ja da muss ich noch ne Abfrage einbauen oder so...

Sko 28. Apr 2007 11:18

Re: Kleiner Chat
 
Ne, meine Firewall hatte gefragt ob der Chat sich mit dem I-Net verbinden darf, da hab ich mal versuchsweise auf Nein geklickt.

.chicken 28. Apr 2007 18:39

Re: Kleiner Chat
 
Aso...hm wie verhinder ich da denn dann die Ausgabe einer Fehlermeldung?

Sko 28. Apr 2007 21:01

Re: Kleiner Chat
 
Du könntest z. B. das Ermitteln der I-Net-IP in einen try-except-Block packen und im except-Teil eben statt der IP einen leeren String oder einen String mit einer Fehlermeldung oder sowas ausgeben. Könnte ungefähr so aussehen:

Delphi-Quellcode:
[...]
try
  Form.WanIPLabel.Caption := 'WAN IP: ' + Form.IdHTTP1.Get('<AdressezumIP-Script>');
except
  Form.WanIPLabel.Caption := 'WAN IP: -');
end;
[...]

scrat1979 28. Apr 2007 21:07

Re: Kleiner Chat
 
Hallo .chicken,

im großen und ganzen eine tolle Sache. Ich hätte noch zwei Anmerkungen und einen Fehler gefunden...

1.) Dateien an User versenden wäre noch schön (wenn nicht zu aufwendig)

2.) Private Messages zwischen den Usern wäre ebenfalls schön :-)

2.) Stelle ich mehrere Verbindungen zu einem Server her und disconnecte wieder, dann simmt die
Anzahl der Verbindungen (angezeigt beim Server) nicht mehr. Beim Connecten wird die Zahl hingegen korrekt um eins erhöht.

Weiter so. Grüsse,

SCRaT

.chicken 28. Apr 2007 21:20

Re: Kleiner Chat
 
Ok, Änderungen und Vorschläge werden soweit wie möglich geändert/hinzugefügt.

Das mit Dateien versenden is allerdings n bissl schwer glaub ich aber mal sehen ;-)

.chicken 29. Apr 2007 17:14

Re: Kleiner Chat
 
Ok, alles aktualisiert!
Wenn ich heut Nacht noch mehr Zeit hab wirds nochn bissl verbessert, eure Meinungen bitte :)

.chicken 30. Apr 2007 00:33

Re: Kleiner Chat
 
Nochn kleines Update!

scrat1979 2. Mai 2007 06:19

Re: Kleiner Chat
 
Hallo .chicken,

Wird immer besser :thumb: :-) Mir ist nur ein "kleiner" Fehler aufgefallen (Leider lässt er sich zwar häufig auslösen, jedoch nicht immer). Connecte ich mit 2 Clients zu einem Server und beende dann die beiden Serververbindungen, erscheint eine "Access Violation" Fehlermeldung. Beim Reconnect benötigt man neue Nicks, da die alten schon vergeben sind. Hoffe Du findest den Fehler!

Aah, eines noch. Es wäre schön wenn bei einem Verbindungsversuch zu einem nicht vorhandenem Server (false IP / offline) eine kleine Meldung erscheint. Entweder als Dialog oder im Chatfenster.

EDIT: Noch ein Vorschlag von mir. In vielen IM kann man sehen, wenn das "Gegenüber" eine Nachricht eingibt (typing...). Eventuell könntest Du das noch integrieren :lol:

LIebe Grüsse,

SCRaT

.chicken 2. Mai 2007 13:49

Re: Kleiner Chat
 
Hm ok also die Fehler sind mir bekannt, versuche sie zu fixen und bin auch dabei zu versuchen das Design ein bisschen zu "pimpen" ^^
Find ich etwas öde so.

Aber wie kriege ich denn raus, ob der andere gerade tippt?

scrat1979 2. Mai 2007 14:13

Re: Kleiner Chat
 
Zitat:

Zitat von .chicken
Hm ok also die Fehler sind mir bekannt, versuche sie zu fixen und bin auch dabei zu
Aber wie kriege ich denn raus, ob der andere gerade tippt?

Vielleicht hat jemand eine bessere Lösung, aber meine wäre mit Hilfe eines Timers zu machen:

1. Wenn ein User BEGINNT zu tippen (if timer.enabled = false) dann Timer.enabled auf true setzen (z.B. 5000 msek als Intervall)
und Nachricht an Server ("username=typing"). Serverseitig in Userliste anzeigen.

2. Wenn User weitertippt, dann Timer zurücksetzen (if timer.enbled = true then....)

3. Bei OnTimer-Ereignis Nachricht an Server (s. 1.) und Timer disablen (User hat 5 sek. keine Taste mehr gedrückt -> typing aus)

4. Wenn Nachricht weggeschickt Timer natürlich auch wieder disablen.

Das wäre mein kleiner Gedankenanstoß und müsste rel. leicht zu implementieren sein. Also Timer Clientseitig durch OnKeyDown o.ä. auslösen und am SErver nur die Nachricht des Clients (s.o.) auswerten.

Grüsse,

SCRaT

xZise 2. Mai 2007 14:15

Re: Kleiner Chat
 
Ergänzend könnte man, wenn die 5 Skeunden rum sind, und es sich noch was im Edit befindet, dass eine Message geschickt wird, dass er "Wartet"... oder überlegt...

.chicken 2. Mai 2007 14:53

Re: Kleiner Chat
 
Ok, das werde ich bei Zeiten auch versuchen zu integrieren, aber vorerst hoffe ich, dass der Fehler jetzt gefixt wurde!
Wenn ihr es mal testen würdet ;-)

Ajin 10. Okt 2007 07:22

Re: Kleiner Chat
 
Hallo!

Ich finde das Programm echt prima! Mich würde interessieren ob man diese Technik internet faähig machen kann. Also chatten übers www statt nur im LAN. Was müsste man da anpassen?

patti 24. Okt 2007 14:07

Re: Kleiner Chat
 
Ist zwar etwas OT, aber in der Delphi-Library gibt es ein Tutorial mit TClientSocket und TServerSocket, in dem es heißt, dass es auch internetfähig ist, solange sich der Server nicht hinter einem (DSL-)Router befindet. Allerdings braucht man die öffentliche IP-Adresse des "Server-Rechners" (steht ziemlich weit unten im ersten Post).
Evtl. wäre das Programm von .chicken auch internetfähig.

P@Tti


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz