19. august 2002 - 13:21Der 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!)
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.
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.... :)
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;
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...?
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)
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);"
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...?
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.
ø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)??
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.