Avatar billede mmfrandsen Nybegynder
14. december 2003 - 15:31 Der er 16 kommentarer og
1 løsning

Ping Pong (IRC)

Jeg har en kode, der ser sådan her ud:
procedure TForm1.IdTCPClient1Connected(Sender: TObject);
begin
  IdTCPClient1.SendCmd('NICK ' + edUserName.text);
end;

Altså, når IdTCPClient1 er connected sender den det username, som jeg har skrevet i edUserName, til IRC serveren. Det virker fint, men...
Efter det kommer jeg til Ping Pong processen, men jeg kan bare ikke finde ud af at lave en command, der går ind og snupper tallet fra PING og laver PONG. Nogen, der kan det?

På forhånd tak, MM
Avatar billede mmfrandsen Nybegynder
14. december 2003 - 15:33 #1
Desuden kan jeg sige, at PING: [Tallet] bliver loadet ind i en TMemo ved navn: memLines
Avatar billede dkn Nybegynder
14. december 2003 - 20:27 #2
er der noget tal med fra ping?
jeg ved det ikke, men serveren beregner det vel når du har sendt pong ?
Avatar billede mmfrandsen Nybegynder
14. december 2003 - 20:30 #3
Det sker sådan her:

1. Jeg connecter og sender mit navn til serveren <- Det virker fint
2. Serveren sender denne her meddelelse til mig: "PING :[Et tilfældigt tal]
3. Programmet skal svare serveren med denne her meddelelse: "PONG :[PING tallet]
Avatar billede dkn Nybegynder
14. december 2003 - 20:35 #4
okay hvis du bare skal have ping tal bliver det vel noget lign:

var
ping:string;
begin
ping := 'PING :50'; // ved ikke om [] skulle med?
showmessage(copy(ping, 6, length(ping)));
end;

ikke testet
Avatar billede mmfrandsen Nybegynder
14. december 2003 - 20:36 #5
Det er rigtigt nok, at [] ikke skal med ;)... Tester det lige af :)
Avatar billede mmfrandsen Nybegynder
14. december 2003 - 20:42 #6
Hmm... Det var ikke lige det den skulle. Lidt mere detalieret:

1. Jeg får tilsendt en besked til min Memo, hvor der står: "PING :[Et tal]"
2. Mit program skal så besvare denne besked med: "PONG :[tallet fra ping]"
Avatar billede dkn Nybegynder
14. december 2003 - 20:45 #7
ok pakkede den tallet ud, det var sådan set bare det du skulle se...
Avatar billede mmfrandsen Nybegynder
14. december 2003 - 20:46 #8
Jeps... Eller rettere sagt, den pakkede tallet og ":" ud. Men det kan jo bare ændres ved at ændre 6 til 7 - Så ja, den pakkede tallet ud :)
Avatar billede dkn Nybegynder
14. december 2003 - 20:49 #9
ja okay,
men så skal du jo bare selv sende den tilbage ikke?
kan desvære ikke se dit problem..
Avatar billede mmfrandsen Nybegynder
14. december 2003 - 20:49 #10
Hmm... Tror jeg er lige ved, at få det til at virker med den lille del kode der. Prøver mig lige lidt frem.
Avatar billede mmfrandsen Nybegynder
14. december 2003 - 21:18 #11
Sådan. Nu fik jeg det til at virke... Bare lav et svar, så skal jeg nok acceptere ;)
Avatar billede dkn Nybegynder
14. december 2003 - 22:51 #12
okay
Avatar billede razersedge Nybegynder
15. december 2003 - 00:37 #13
Måske endnu lettere at sige:

//Ping := 'PING :50';
Ping[2] := 'O';
Avatar billede dkn Nybegynder
15. december 2003 - 04:01 #14
ok det jeg lavede var eksempel, ved ikke lige hvordan du vil bruge det der razersedge ?
Avatar billede mmfrandsen Nybegynder
15. december 2003 - 14:46 #15
Det hele endte med at se sådan her ud:

procedure TForm1.Timer3Timer(Sender: TObject);
var
  st2 : tstrings;
  i2  : integer;
  pong: string;

Begin
  st2 := tstrings.Create;
  st2 := memLines.Lines;

  for I2 := 0 to st2.Count - 1 do
  begin
    if pos('PING :', st2.Strings[I2]) <> 0 then // Fandt PING :
      begin;
        Memo2.Clear;
        Memo2.Lines.Add(st2.Strings[I2]);
        pong := Memo2.Lines[0];
        edit1.text := 'PONG :' + (copy(pong, 7, length(pong)));
        mainform.Form1.Refresh; // Refresh
        IdTCPClient1.sendcmd(edit1.text +#10);
      end;
  end;
Avatar billede razersedge Nybegynder
15. december 2003 - 15:58 #16
dkn: Det jeg mente var, at med en streng kaldet ping, hvori serverens svar ligger (PING :50). Så ville jeg da mene at det letteste i dette tilfælde er bare at skifte tegn nr 2 ('I' => 'O'), hvorefter den samme streng sendes tilbage til serveren.
Avatar billede dkn Nybegynder
15. december 2003 - 16:48 #17
hehe ja, kunne være at han ville holde øje med ping tiderne. Men okay ellers en god ide :)
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