This next tip will sound obvious, but it will nicely introduce us to the next topic. Plus, it is a real problem frequently found in production code.
The ExtractCommonExpression
demo creates a list box with a mere 1,000 entries, all in the form Author–Title. A click on the Complicated expression
button runs a short code which reverts the order of Author and Title in the list box so that it shows entries in the form Title–Author:
procedure TfrmCommonExpression.Button1Click(Sender: TObject); var i: Integer; sw: TStopwatch; begin ListBox1.Items.BeginUpdate; try sw := TStopwatch.StartNew; for i := 0 to ListBox1.Count - 1 do ListBox1.Items[i] := Copy(ListBox1.Items[i], Pos('-', ListBox1.Items[i]) + 1, Length(ListBox1.Items[i])) + '-' + Copy(ListBox1.Items[i], 1, Pos('-', ListBox1.Items[i]) - 1); sw.Stop; Button1.Caption := IntToStr(sw.ElapsedMilliseconds); finally ListBox1.Items.EndUpdate; end; end;
The...