Ich hab das schon getestet, habe mir aber zugegebenermaßen nicht alle Kommentare angesehen und deswegen den Sonderfall (Zeile hat noch kein CRLF) nicht 'drauf gehabt.
So sollte es dann vollständig funktionieren:
Delphi-Quellcode:
var s:
string; len:integer;
begin
s:=Memo1.Text;
len:=Length(s);
dec(len,Memo1.Lines.Count-Integer((len>0)
and (s[len]<>#10)));
Statusbar1.Panels[0].Text:=IntToStr(len);
end;
M.E. sollte das aber nicht in Memo1KeyPress stehen sondern im Memo1Change.