Показать сообщение отдельно
Старый 09.04.2013, 23:01   #1
Maga05
Оператор ЭВМ
 
Регистрация: 17.12.2011
Сообщений: 26
Написано 4 полезных сообщений
(для 5 пользователей)
Обрезка строки по ширине

Функция обрезает строку s, если ее ширина больше ширины width, или возвращает строку s, если ширина строки меньше ширины width. symbol - строка, вставляемая в конец возвращаемой строки, если строка не помещается в ширину width, при этом ширина с символом умещается в ширину (учитывайте это, т. к. если не использовать дополнительный символ больше места останется для строки s), либо используйте строку '(none)', если символ не нужен.

fitstring(s,symbol: string;width: integer): string;

var
strw, i, n: integer;
ch: char;
ws: string;
begin
strw:= 0;
i := 0;if TextWidth(s)>width then
begin
if locase(symbol)='(none)' then width:=width;
else width:=width-TextWidth(symbol);
while (true) do
begin
ch:=GetChar(s, i);
strw:= strw+TextWidth(ch);
if strw > width then break;
else
ws:=ws+ch;
i:=i+1;
end;
if locase(symbol)='(none)' then fitstring := ws;
else
fitstring := ws+symbol;
end;
else
fitstring:=s;
end;
(Offline)
 
Ответить с цитированием