Solved

optimizing code

Posted on 2001-07-31
5
179 Views
Last Modified: 2010-04-06
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;
0
Comment
Question by:joepezt
  • 3
5 Comments
 
LVL 6

Accepted Solution

by:
MannSoft earned 50 total points
Comment Utility
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
 
LVL 14

Expert Comment

by:DragonSlayer
Comment Utility
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
 
LVL 2

Author Comment

by:joepezt
Comment Utility
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
 
LVL 2

Author Comment

by:joepezt
Comment Utility
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
 
LVL 2

Author Comment

by:joepezt
Comment Utility
nice ..
well, if you are interrested, you CAN if you want to check out the component i made..

http://vortex.berzerk.net
0

Featured Post

Why You Should Analyze Threat Actor TTPs

After years of analyzing threat actor behavior, it’s become clear that at any given time there are specific tactics, techniques, and procedures (TTPs) that are particularly prevalent. By analyzing and understanding these TTPs, you can dramatically enhance your security program.

Join & Write a Comment

The uses clause is one of those things that just tends to grow and grow. Most of the time this is in the main form, as it's from this form that all others are called. If you have a big application (including many forms), the uses clause in the in…
Introduction Raise your hands if you were as upset with FireMonkey as I was when I discovered that there was no TListview.  I use TListView in almost all of my applications I've written, and I was not going to compromise by resorting to TStringGrid…
Access reports are powerful and flexible. Learn how to create a query and then a grouped report using the wizard. Modify the report design after the wizard is done to make it look better. There will be another video to explain how to put the final p…
This video shows how to remove a single email address from the Outlook 2010 Auto Suggestion memory. NOTE: For Outlook 2016 and 2013 perform the exact same steps. Open a new email: Click the New email button in Outlook. Start typing the address: …

728 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

11 Experts available now in Live!

Get 1:1 Help Now