forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Наше Open Source Software (http://forum.boolean.name/forumdisplay.php?f=132)
-   -   Обрезка строки по ширине (http://forum.boolean.name/showthread.php?t=18079)

Maga05 09.04.2013 23:01

Обрезка строки по ширине
 
Функция обрезает строку 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;


Часовой пояс GMT +4, время: 11:28.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot