Avatar billede prodoc Nybegynder
19. august 2002 - 13:21 Der er 24 kommentarer og
1 løsning

Chatprogram som ICQ og MSN...

Hej allesammen,
jeg vil prøve at lave et chatprogram som ICQ og MSN men jeg har ikke rigtigt noget startgrundlag :) er der ikke nogen der har en kode eller lign... :)
Den skal køre sådan at man har en server hvor selve Chatprogrammet er på en server, og så på fjerncomputerne er der de små klienter......
På serveren har hver bruger så en Txt fil (fx. prodoc.txt) hvor alle beskederne står i:
(fx. 10.02.02-10.33.35: Hej allesammen!)

er der nogen der har sådan noget lignende...?
Avatar billede stoney Nybegynder
19. august 2002 - 13:24 #1
prøv at kigge i ..\demos\internet

Stoney
Avatar billede prodoc Nybegynder
19. august 2002 - 13:28 #2
HEH, har kun D4 :), men det skal være mere som ICQ med dets design?!  ;)
Avatar billede freeall Nybegynder
19. august 2002 - 18:47 #3
Læs event. IRC protokollen først. Søg på google efter IRC og RFC.
Det er en hjælp til hvordan du kunne lave noget lign.
Men husk at ICQ er meget anderledes. Så man har ikke rigtig en mainserver det bliver sendt igennem.

/FA
Avatar billede prodoc Nybegynder
20. august 2002 - 11:15 #4
nej nej men er der ikke et program som gør det.... så ku man vel bare konfigurere det til at det ligner ICQ?!
Avatar billede freeall Nybegynder
20. august 2002 - 16:22 #5
Du vil altså have et program der er ligesom ICQ, og så rette det til? Det lyder da kedeligt. Så hellere selv lave det. Svært, men muligt.
Avatar billede prodoc Nybegynder
20. august 2002 - 20:27 #6
Heh det er også det jeg gerne vil selv, men jeg er ikke helt "Obi Van" til Delphi endnu:) så ville være fedt hvis der var en der havde en source eller et projekt som gjorde det simple, at sende en besked til en anden computer fra en klient -> server -> klient :), så kunne jeg udbygge den senere.... :)
Avatar billede djones Nybegynder
27. august 2002 - 14:01 #7
Var det noget lignende dette? Jeg har selv været ved at lave en chat, og jeg synes selv at det virker meget godt.

Du skal bruge:

3 x TEdit
2 x TMemo
1 x TNMMsg
1 x TNMsgServ

//////////////////////////////////////////////////////////
// Her begynder koden
//////////////////////////////////////////////////////////

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Psock, NMMSG, ExtCtrls, Menus;

type
  TForm1 = class(TForm)
    YourMessage: TEdit;
    Destination: TEdit;
    Source: TEdit;
    RecievedMessages: TMemo;
    InfoMessages: TMemo;
    nmClient: TNMMsg;
    nmServer: TNMMSGServ;

    procedure YourMessageKeyPress(Sender: TObject; var Key: Char);
    procedure DestinationKeyPress(Sender: TObject; var Key: Char);
    procedure SourceKeyPress(Sender: TObject; var Key: Char);
    procedure CheckKey(Key: Char);
    procedure nmClientMessageSent(Sender: TObject);
    procedure nmClientInvalidHost(var Handled: Boolean);
    procedure nmClientConnectionFailed(Sender: TObject);
    procedure nmServerMSG(Sender: TComponent; const sFrom, sMsg: String);
    procedure nmServerConnectionFailed(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;


implementation

{$R *.DFM}

procedure TForm1.YourMessageKeyPress(Sender: TObject; var Key: Char);
begin
Checkkey(Key);    // Når man trykker på <ENTER> vil programmet checke om alle påkrævede felter er udfyldte
end;
procedure TForm1.SourceKeyPress(Sender: TObject; var Key: Char);
begin
CheckKey(Key);    // Når man trykker på <ENTER> vil programmet checke om alle påkrævede felter er udfyldte
end;

procedure TForm1.DestinationKeyPress(Sender: TObject; var Key: Char);
begin
CheckKey(Key);    // Når man trykker på <ENTER> vil programmet checke om alle påkrævede felter er udfyldte
end;


procedure TForm1.CheckKey(Key: Char);
begin
  if Key = #13 then
  if Destination.Text = '' then
  begin
  messagedlg('Please enter the remote host!', mtwarning, [mbok],0);
  Activecontrol := Destination;
  end
  else
  if Source.Text = '' then
  begin
  messagedlg('Please enter your name!', mtwarning, [mbok],0);
  Activecontrol := Source;
  end
  else
  if YourMessage.Text = '' then
  begin
  messagedlg('Please enter a message!', mtwarning, [mbok],0);
  Activecontrol := YourMessage;
  end
else
  begin
  nmClient.Host := Destination.Text;
  nmClient.FromName := Source.Text;
  nmClient.PostIt(YourMessage.Text);
  YourMessage.Text := '';
  Activecontrol := YourMessage;
  end;
end;

procedure TForm1.nmClientInvalidHost(var Handled: Boolean);
begin
  Handled := True;
  Messagedlg('The host "'+ Destination.Text + '" is invalid!', mterror,[mbok],0);
end;

procedure TForm1.nmClientMessageSent(Sender: TObject);
begin
  InfoMessages.Lines.Add('Message Sent to "'+ Destination.Text+'"');
  RecievedMessages.Lines.Add(YourMessage.Text);
end;

procedure TForm1.nmServerMSG(Sender: TComponent; const sFrom, sMsg: String);
begin
  InfoMessages.Lines.Add('Incoming message from '+sFrom);
  RecievedMessages.Lines.Add(sMsg);
end;

procedure TForm1.nmServerConnectionFailed(Sender: TObject);
begin
ShowMessage('The connection failed! A firewall might have caused this to happen - so if you are able to, disable it. Then try again!');
end;

procedure TForm1.nmClientConnectionFailed(Sender: TObject);
begin
ShowMessage('The connection has failed. Make sure that the target '+
            'machine '+nmClient.host+' has the app running.');   
end;

end.
Avatar billede prodoc Nybegynder
28. august 2002 - 11:27 #8
Jeg har kun D4? Og jeg synes ikke jeg kan finde de to sidste komponenter: 1 x TNMMsg
1 x TNMsgServ
Er de ikke i D4?
Avatar billede prodoc Nybegynder
28. august 2002 - 11:37 #9
jeg har kun D4 standard?
Avatar billede freeall Nybegynder
28. august 2002 - 18:55 #10
Hent D6
Avatar billede prodoc Nybegynder
29. august 2002 - 09:26 #11
okay...men du har ingenting der kører med D4?
(Men det er ikke muligt via din kode at have en UserListe med venner som hvor den siger at fx. ProDoc, så skriver begge brugere Mig og ProDoc til en tekstfil på serveren som hedder ProDoc.txt...?
Avatar billede djones Nybegynder
29. august 2002 - 10:59 #12
Problemet med det er at du skal have en webserver til at køre, der kan holde styr på hvem der er hvor.
Avatar billede prodoc Nybegynder
30. august 2002 - 13:19 #13
Vi har en Webserver...der styrer på wwwsite og mailserver... :)
Men prøver lige at installere D6....
Avatar billede djones Nybegynder
30. august 2002 - 13:24 #14
ok laver lige en (eller to) ændringer i morgen i mit prog. så burde det kunne køre som forespurgt. Laver også en server-app som du skal køre.
Avatar billede prodoc Nybegynder
30. august 2002 - 13:31 #15
Du gider vel ikke sende et projekt som virker, af en eller anden grund virker det jeg laver ikke?!
Avatar billede prodoc Nybegynder
30. august 2002 - 13:35 #16
TAK FOR DET.........
(så ikke lige din sidste besked før efter jeg havde skrevet min sidste besked....)
Men vil du ikke sende det til min mail adresse (popstar@slyngelstuen.dk)

m.v.h. ProDoc
Avatar billede djones Nybegynder
31. august 2002 - 23:45 #17
Kan jeg få din kildekode til det der ikke virker? djones@kryptisk.dk
Jeg er løbet ind i problemer. Jeg når det nok ikke i weekenden.
Avatar billede prodoc Nybegynder
01. september 2002 - 17:51 #18
kildekoden er bare det du skrev tidligere i spørgsmålet (27/08-2002 14:01:47)...
/ProDoc
Avatar billede djones Nybegynder
03. september 2002 - 08:48 #19
du skal huske at klikke på de funktioner der bliver brugt, fx når nmmsgserver1 modtager en besked. Dobbeltklik i object inspector -> events -> onMSG , så skulle programmet gerne skifte til kildekoden til
"procedure nmServerMSG(Sender: TComponent; const sFrom, sMsg: String);"
Avatar billede prodoc Nybegynder
03. september 2002 - 11:11 #20
Heh jeg prøver lige igen så, men ville det ikke være lettere hvis du sendte et projekt? :)
Avatar billede djones Nybegynder
05. september 2002 - 16:18 #21
jo, det kan jeg godt. øjeblik
Avatar billede prodoc Nybegynder
10. september 2002 - 17:25 #22
Tak for det, men hvordan virker det skal man skrive IP eller Navn, og var der en Server og klient? og var det ikke muligt at lave det sådan at den skrev bedkederne ind i en txt fil fx. User_ProDoc.txt
og at der er en listbox med Users...?
Avatar billede djones Nybegynder
14. september 2002 - 13:47 #23
Det må du selv rode med. Det er ikke så svært at lave en funktion til at gemme i en textfil.
Den der server-app er et MEGET omfattende program. Jeg har simpelthen ikke tid til at lave den.
Avatar billede prodoc Nybegynder
15. september 2002 - 16:25 #24
øv...
jamen kunne man ikke lave det sådan at klient programmet læste txt filerne gennem Server programmet......
Sådan man også bare skulle skrive ProDoc i To editen og ikke IP adressen...
Jeg ved godt hvordan man får den til at læse fra en txt fil men det er bare det at få den til at gøre det gennem nettet...!? (LoadFromFile)??
Avatar billede bobcats Nybegynder
27. november 2002 - 19:45 #25
Nogen der kan give mig filen NMMSG.dcu ??????
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester