optimizing code

can someone help me tell me how to optimize this code ?

(this is just a test, trying to wrap some IRC command)
:)


procedure TForm1.Button1Click(Sender: TObject);
var
Position1,Position2: Integer;
nick,command, temp : string;

begin
  nick := ':Berzerk1!~Berzerk1@ti13a80-0306.bb.online.no JOIN :#skien';
  temp := nick;
  command := temp;
  delete(temp,1,lastdelimiter(':',temp));
  delete(command,1,pos(' ',command));
  delete(command,pos(' ',command),length(command));
  Position1 := Pos(':',nick) + 1;
  Position2 := Pos('!',nick);
  nick := Copy(nick,Position1, Position2 - Position1);
  ShowMessage(nick + ':' + temp + '+' + command);
end;
LVL 2
joepeztAsked:
Who is Participating?

[Webinar] Streamline your web hosting managementRegister Today

x
 
MannSoftConnect With a Mentor Commented:
Here is some shorter code:

S := 'Berzerk1!~Berzerk1@ti13a80-0306.bb.online.no JOIN :#skien'
Nick := Copy(S, 1, Pos('!', S) - 1);
Delete(S, Pos(' ', S);
Command := Copy(S, 1, Pos(' ', S) - 1);
Delete(S, Pos(' ', S + 1);
Channel := S;

Of course that will only work specifically for the JOIN command.  I wrote an IRC program awhile ago.  Here is how I handled server messages (just ignore if you are not interested in writing a client of your own :-) )

1) I called a function that split the string into a TStringList (split at each space of course).
2) I checked element 1 to see what the command/numeric was
3) I called another function to combine the last X elements of the stringlist.  The value of X depended on which command/numeric it was.  The leading : was also stripped by this function
4) If required, I called yet another function with element 0 as a paramter, and it returned everything up to the ! (to get the nick of the sender)

By using functions for these things it helps seperate your code and (IMO) makes things much easier to work with.
0
 
DragonSlayerCommented:
Umm...

procedure Test(InputString: string);
var
  StringList: TStringList;
  Nick, Command, Channel: string;
begin
  InputString := StringReplace(InputString,
    ' ', #13, [rfReplaceAll]);
  InputString := StringReplace(InputString,
    '!', #13, [rfReplaceAll]);
  StringList := TStringList.Create;
  try
    StringList.Text := InputString;
    Nick := StringList.Strings[0];
    Command := StringList.Strings[2];
    Channel := StringList.Strings[3];
  finally
    StringList.Free;
  end;
end;


:)
0
 
joepeztAuthor Commented:
will test some of these :)

i have an open source IRC component i was starting on a while ago, http://www.berzerk.net


but some of you might know more about this thing ?

http://www.delphi3d.net/articles/viewarticle.php?article=console.htm



0
 
joepeztAuthor Commented:
will test some of these :)

i have an open source IRC component i was starting on a while ago, http://www.berzerk.net


but some of you might know more about this thing ?

http://www.delphi3d.net/articles/viewarticle.php?article=console.htm



0
 
joepeztAuthor Commented:
nice ..
well, if you are interrested, you CAN if you want to check out the component i made..

http://vortex.berzerk.net
0
All Courses

From novice to tech pro — start learning today.