Форматирование строк Delphi — среда быстрой разработки, где в качестве языка программирования используется Object Pascal. На сегодняшний день позволяет разрабатывать ПО для Microsoft Windows, Mac OS, iOS и Android и входит в состав Embarcadero RAD Studio https://delphi-hlp.ru/index.php/rabota-so-strokami/formatirovanie-strok.feed 2022-09-13T05:00:55+07:00 Delphi help info@delphi-hlp.ru Joomla! - Open Source Content Management Выравнивание текста по ширине 2013-08-20T17:17:39+07:00 2013-08-20T17:17:39+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/formatirovanie-strok/vyravnivanie-teksta-po-shirine.html Super User toto44@inbox.ru <p>Текст выглядит лучше, если он выровнен по двух краям. Для этого пробелы в каждой строке нужно удлинять или укорачивать так, чтобы все строки имели одну длину.</p> <p> </p> <p>Здесь создана процедура GetLine, которая возвращает одну строку, начиная с заданного символа. Программа находит разницу между шириной текста и реальной длинной строки и при выводе компенсирует эту разницу удлинением пробелов.</p> <p> </p> <p>Эта программа выводит на экран текст из файла C:\text.txt, выравнивая его по двум краям.</p> <p> </p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">type</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">...</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TLine = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">record</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> s: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> wrap: boolean;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> length: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Form1: TForm1;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">implementation</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #0000ff;">{$R *.DFM}</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">FileName = </span><span class="f_CodeExample" style="color: #ff0000;">'C:\text.txt'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">s: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">bm: TBitMap;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">LineH: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MaxTextWidth: integer;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TForm1.FormCreate(Sender: TObject);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">F: TFileStream;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">buf: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">array</span><span class="f_CodeExample" style="color: #000000;"> [</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">..</span><span class="f_CodeExample" style="color: #800000;">127</span><span class="f_CodeExample" style="color: #000000;">] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span><span class="f_CodeExample" style="color: #000000;"> char;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">l: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">ScrollBar1.Kind := sbVertical;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">bm := TBitMap.Create;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">with</span><span class="f_CodeExample" style="color: #000000;"> bm.Canvas.Font </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">name</span><span class="f_CodeExample" style="color: #000000;"> := </span><span class="f_CodeExample" style="color: #ff0000;">'Serif'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Size := </span><span class="f_CodeExample" style="color: #800000;">12</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">LineH := bm.Canvas.TextHeight(</span><span class="f_CodeExample" style="color: #ff0000;">'123'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">not</span><span class="f_CodeExample" style="color: #000000;"> FileExists(FileName) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> ShowMessage(</span><span class="f_CodeExample" style="color: #ff0000;">'Can not find file '</span><span class="f_CodeExample" style="color: #000000;"> + FileName);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Exit;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">F := TFileStream.Create(FileName, fmOpenRead);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">repeat</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> l := F.</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">read</span><span class="f_CodeExample" style="color: #000000;">(buf, </span><span class="f_CodeExample" style="color: #800000;">128</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> l = </span><span class="f_CodeExample" style="color: #800000;">128</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> s := s + buf</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> s := s + copy(buf, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, l);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">until</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> l &lt; </span><span class="f_CodeExample" style="color: #800000;">128</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">F.Destroy;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TForm1.FormResize(Sender: TObject);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">PaintBox1.Left := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">PaintBox1.Top := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">PaintBox1.Height := Form1.ClientHeight;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">PaintBox1.Width := Form1.ClientWidth - ScrollBar1.Width;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">ScrollBar1.Left := PaintBox1.Width;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">ScrollBar1.Top := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">ScrollBar1.Height := PaintBox1.Height;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">bm.Width := PaintBox1.Width;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">bm.Height := PaintBox1.Height;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">ScrollBar1.Max := </span><span class="f_CodeExample" style="color: #800000;">1000</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MaxTextWidth := PaintBox1.Width - </span><span class="f_CodeExample" style="color: #800000;">20</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> RealTextWidth(s: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">result := bm.Canvas.TextWidth(s);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">for</span><span class="f_CodeExample" style="color: #000000;"> i := </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000000;"> Length(s) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> s[i] = </span><span class="f_CodeExample" style="color: #ff0000;">#9</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(result, </span><span class="f_CodeExample" style="color: #800000;">40</span><span class="f_CodeExample" style="color: #000000;"> - bm.Canvas.TextWidth(</span><span class="f_CodeExample" style="color: #ff0000;">#9</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> GetLine(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">index</span><span class="f_CodeExample" style="color: #000000;">: integer): TLine;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">s1: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">first: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> (s[</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">index</span><span class="f_CodeExample" style="color: #000000;">] = </span><span class="f_CodeExample" style="color: #ff0000;">#13</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (s[</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">index</span><span class="f_CodeExample" style="color: #000000;"> + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">] = </span><span class="f_CodeExample" style="color: #ff0000;">#10</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result.s := </span><span class="f_CodeExample" style="color: #ff0000;">''</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result.length := </span><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result.wrap := true;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Exit;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">first := </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">index</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> (first &lt;= Length(s)) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (s[first] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">in</span><span class="f_CodeExample" style="color: #000000;"> [</span><span class="f_CodeExample" style="color: #ff0000;">#32</span><span class="f_CodeExample" style="color: #000000;">]) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(first);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i := first;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">repeat</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> (i &lt;= Length(s)) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">not</span><span class="f_CodeExample" style="color: #000000;"> (s[i] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">in</span><span class="f_CodeExample" style="color: #000000;"> [</span><span class="f_CodeExample" style="color: #ff0000;">#9</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">#32</span><span class="f_CodeExample" style="color: #000000;">])) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (s[i] &lt;&gt; </span><span class="f_CodeExample" style="color: #ff0000;">#13</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(i);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> s1 := copy(s, first, i - </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">index</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(i);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">until</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> (i &gt;= Length(s)) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">or</span><span class="f_CodeExample" style="color: #000000;"> (s[i-</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">] = </span><span class="f_CodeExample" style="color: #ff0000;">#13</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">or</span><span class="f_CodeExample" style="color: #000000;"> (RealTextWidth(s1) &gt; MaxTextWidth);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> RealTextWidth(s1) &gt; MaxTextWidth </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result.wrap := false;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> i &lt; Length(s) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> dec(i, </span><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> (i &gt; </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">not</span><span class="f_CodeExample" style="color: #000000;"> (s[i] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">in</span><span class="f_CodeExample" style="color: #000000;"> [</span><span class="f_CodeExample" style="color: #ff0000;">#9</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">#32</span><span class="f_CodeExample" style="color: #000000;">])) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> dec(i);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result.Length := i - </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">index</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> (i &gt; </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (s[i] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">in</span><span class="f_CodeExample" style="color: #000000;"> [</span><span class="f_CodeExample" style="color: #ff0000;">#9</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">#32</span><span class="f_CodeExample" style="color: #000000;">]) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> dec(i);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result.s := copy(s, first, i - </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">index</span><span class="f_CodeExample" style="color: #000000;"> + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> result.s[length(result.s)] = </span><span class="f_CodeExample" style="color: #ff0000;">#32</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> delete(result.s, length(result.s) , </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result.length := i - </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">index</span><span class="f_CodeExample" style="color: #000000;"> + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> s1 := copy(s, first, i - </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">index</span><span class="f_CodeExample" style="color: #000000;"> + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> length(s1) &gt; </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> s1[Length(s1)] = </span><span class="f_CodeExample" style="color: #ff0000;">#9</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> delete(s1, Length(s1), </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> s1[length(s1) - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">] + s1[length(s1)] = </span><span class="f_CodeExample" style="color: #ff0000;">#13#10</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> delete(s1, length(s1) - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result.s := s1;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result.wrap := true;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> draw;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i, j: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">line: TLine;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">OneWord: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">LineN: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">SpaceCount: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TextLeft: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">shift, allshift: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">d: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">LineCount: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">with</span><span class="f_CodeExample" style="color: #000000;"> bm.Canvas </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> FillRect(ClipRect);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> i := </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> LineCount := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">for</span><span class="f_CodeExample" style="color: #000000;"> j := </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000000;"> Form1.ScrollBar1.Position </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> line := GetLine(i);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(i, line.length);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(LineCount);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> LineN := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">repeat</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> line := GetLine(i);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SpaceCount := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> TextLeft := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">for</span><span class="f_CodeExample" style="color: #000000;"> j := </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000000;"> Length(line.s) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> line.s[j] = </span><span class="f_CodeExample" style="color: #ff0000;">#32</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(SpaceCount);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> line.wrap = false </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> allshift := MaxTextWidth - RealTextWidth(line.s)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> allshift := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> allshift &gt; </span><span class="f_CodeExample" style="color: #800000;">40</span><span class="f_CodeExample" style="color: #000000;"> * SpaceCount </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> allshift := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> shift := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">for</span><span class="f_CodeExample" style="color: #000000;"> j := </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000000;"> Length(line.s) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> (</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">not</span><span class="f_CodeExample" style="color: #000000;"> (line.s[j] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">in</span><span class="f_CodeExample" style="color: #000000;"> [</span><span class="f_CodeExample" style="color: #ff0000;">#9</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">#32</span><span class="f_CodeExample" style="color: #000000;">])) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (j &lt; Length(line.s)) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> OneWord := OneWord + line.s[j];</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> OneWord := OneWord + line.s[j];</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> OneWord = </span><span class="f_CodeExample" style="color: #ff0000;">#9</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(TextLeft, </span><span class="f_CodeExample" style="color: #800000;">40</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> OneWord = </span><span class="f_CodeExample" style="color: #ff0000;">#13#10</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(LineN);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> TextOut(</span><span class="f_CodeExample" style="color: #800000;">10</span><span class="f_CodeExample" style="color: #000000;"> + TextLeft, LineN * LineH, OneWord);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> SpaceCount = </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> d := </span><span class="f_CodeExample" style="color: #800000;">0</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> d := (allshift - shift) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">div</span><span class="f_CodeExample" style="color: #000000;"> (SpaceCount);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(shift, d);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(TextLeft, TextWidth(OneWord) + d);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> dec(SpaceCount);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> OneWord := </span><span class="f_CodeExample" style="color: #ff0000;">''</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(i, line.length);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(LineN);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">until</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> (LineN * LineH &gt; Form1.PaintBox1.Height) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">or</span><span class="f_CodeExample" style="color: #000000;"> (i &gt;= Length(s));</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">repeat</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> line := GetLine(i);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(i, line.length);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(LineCount);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">until</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> i &gt;= Length(s);</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(LineCount, LineN);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Form1.ScrollBar1.Max := LineCount -</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Form1.PaintBox1.Height </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">div</span><span class="f_CodeExample" style="color: #000000;"> LineH;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Form1.PaintBox1.Canvas.Draw(</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">, bm);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TForm1.PaintBox1Paint(Sender: TObject);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">draw;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TForm1.ScrollBar1Change(Sender: TObject);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">draw;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> </td> </tr> </tbody> </table> </div> <p>Текст выглядит лучше, если он выровнен по двух краям. Для этого пробелы в каждой строке нужно удлинять или укорачивать так, чтобы все строки имели одну длину.</p> <p> </p> <p>Здесь создана процедура GetLine, которая возвращает одну строку, начиная с заданного символа. Программа находит разницу между шириной текста и реальной длинной строки и при выводе компенсирует эту разницу удлинением пробелов.</p> <p> </p> <p>Эта программа выводит на экран текст из файла C:\text.txt, выравнивая его по двум краям.</p> <p> </p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">type</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">...</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TLine = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">record</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> s: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> wrap: boolean;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> length: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Form1: TForm1;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">implementation</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #0000ff;">{$R *.DFM}</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">FileName = </span><span class="f_CodeExample" style="color: #ff0000;">'C:\text.txt'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">s: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">bm: TBitMap;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">LineH: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MaxTextWidth: integer;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TForm1.FormCreate(Sender: TObject);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">F: TFileStream;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">buf: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">array</span><span class="f_CodeExample" style="color: #000000;"> [</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">..</span><span class="f_CodeExample" style="color: #800000;">127</span><span class="f_CodeExample" style="color: #000000;">] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span><span class="f_CodeExample" style="color: #000000;"> char;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">l: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">ScrollBar1.Kind := sbVertical;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">bm := TBitMap.Create;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">with</span><span class="f_CodeExample" style="color: #000000;"> bm.Canvas.Font </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">name</span><span class="f_CodeExample" style="color: #000000;"> := </span><span class="f_CodeExample" style="color: #ff0000;">'Serif'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Size := </span><span class="f_CodeExample" style="color: #800000;">12</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">LineH := bm.Canvas.TextHeight(</span><span class="f_CodeExample" style="color: #ff0000;">'123'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">not</span><span class="f_CodeExample" style="color: #000000;"> FileExists(FileName) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> ShowMessage(</span><span class="f_CodeExample" style="color: #ff0000;">'Can not find file '</span><span class="f_CodeExample" style="color: #000000;"> + FileName);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Exit;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">F := TFileStream.Create(FileName, fmOpenRead);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">repeat</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> l := F.</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">read</span><span class="f_CodeExample" style="color: #000000;">(buf, </span><span class="f_CodeExample" style="color: #800000;">128</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> l = </span><span class="f_CodeExample" style="color: #800000;">128</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> s := s + buf</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> s := s + copy(buf, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, l);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">until</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> l &lt; </span><span class="f_CodeExample" style="color: #800000;">128</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">F.Destroy;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TForm1.FormResize(Sender: TObject);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">PaintBox1.Left := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">PaintBox1.Top := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">PaintBox1.Height := Form1.ClientHeight;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">PaintBox1.Width := Form1.ClientWidth - ScrollBar1.Width;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">ScrollBar1.Left := PaintBox1.Width;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">ScrollBar1.Top := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">ScrollBar1.Height := PaintBox1.Height;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">bm.Width := PaintBox1.Width;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">bm.Height := PaintBox1.Height;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">ScrollBar1.Max := </span><span class="f_CodeExample" style="color: #800000;">1000</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MaxTextWidth := PaintBox1.Width - </span><span class="f_CodeExample" style="color: #800000;">20</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> RealTextWidth(s: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">result := bm.Canvas.TextWidth(s);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">for</span><span class="f_CodeExample" style="color: #000000;"> i := </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000000;"> Length(s) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> s[i] = </span><span class="f_CodeExample" style="color: #ff0000;">#9</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(result, </span><span class="f_CodeExample" style="color: #800000;">40</span><span class="f_CodeExample" style="color: #000000;"> - bm.Canvas.TextWidth(</span><span class="f_CodeExample" style="color: #ff0000;">#9</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> GetLine(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">index</span><span class="f_CodeExample" style="color: #000000;">: integer): TLine;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">s1: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">first: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> (s[</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">index</span><span class="f_CodeExample" style="color: #000000;">] = </span><span class="f_CodeExample" style="color: #ff0000;">#13</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (s[</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">index</span><span class="f_CodeExample" style="color: #000000;"> + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">] = </span><span class="f_CodeExample" style="color: #ff0000;">#10</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result.s := </span><span class="f_CodeExample" style="color: #ff0000;">''</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result.length := </span><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result.wrap := true;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Exit;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">first := </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">index</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> (first &lt;= Length(s)) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (s[first] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">in</span><span class="f_CodeExample" style="color: #000000;"> [</span><span class="f_CodeExample" style="color: #ff0000;">#32</span><span class="f_CodeExample" style="color: #000000;">]) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(first);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i := first;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">repeat</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> (i &lt;= Length(s)) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">not</span><span class="f_CodeExample" style="color: #000000;"> (s[i] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">in</span><span class="f_CodeExample" style="color: #000000;"> [</span><span class="f_CodeExample" style="color: #ff0000;">#9</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">#32</span><span class="f_CodeExample" style="color: #000000;">])) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (s[i] &lt;&gt; </span><span class="f_CodeExample" style="color: #ff0000;">#13</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(i);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> s1 := copy(s, first, i - </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">index</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(i);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">until</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> (i &gt;= Length(s)) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">or</span><span class="f_CodeExample" style="color: #000000;"> (s[i-</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">] = </span><span class="f_CodeExample" style="color: #ff0000;">#13</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">or</span><span class="f_CodeExample" style="color: #000000;"> (RealTextWidth(s1) &gt; MaxTextWidth);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> RealTextWidth(s1) &gt; MaxTextWidth </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result.wrap := false;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> i &lt; Length(s) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> dec(i, </span><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> (i &gt; </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">not</span><span class="f_CodeExample" style="color: #000000;"> (s[i] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">in</span><span class="f_CodeExample" style="color: #000000;"> [</span><span class="f_CodeExample" style="color: #ff0000;">#9</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">#32</span><span class="f_CodeExample" style="color: #000000;">])) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> dec(i);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result.Length := i - </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">index</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> (i &gt; </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (s[i] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">in</span><span class="f_CodeExample" style="color: #000000;"> [</span><span class="f_CodeExample" style="color: #ff0000;">#9</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">#32</span><span class="f_CodeExample" style="color: #000000;">]) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> dec(i);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result.s := copy(s, first, i - </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">index</span><span class="f_CodeExample" style="color: #000000;"> + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> result.s[length(result.s)] = </span><span class="f_CodeExample" style="color: #ff0000;">#32</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> delete(result.s, length(result.s) , </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result.length := i - </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">index</span><span class="f_CodeExample" style="color: #000000;"> + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> s1 := copy(s, first, i - </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">index</span><span class="f_CodeExample" style="color: #000000;"> + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> length(s1) &gt; </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> s1[Length(s1)] = </span><span class="f_CodeExample" style="color: #ff0000;">#9</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> delete(s1, Length(s1), </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> s1[length(s1) - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">] + s1[length(s1)] = </span><span class="f_CodeExample" style="color: #ff0000;">#13#10</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> delete(s1, length(s1) - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result.s := s1;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result.wrap := true;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> draw;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i, j: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">line: TLine;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">OneWord: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">LineN: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">SpaceCount: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TextLeft: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">shift, allshift: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">d: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">LineCount: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">with</span><span class="f_CodeExample" style="color: #000000;"> bm.Canvas </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> FillRect(ClipRect);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> i := </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> LineCount := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">for</span><span class="f_CodeExample" style="color: #000000;"> j := </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000000;"> Form1.ScrollBar1.Position </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> line := GetLine(i);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(i, line.length);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(LineCount);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> LineN := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">repeat</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> line := GetLine(i);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SpaceCount := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> TextLeft := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">for</span><span class="f_CodeExample" style="color: #000000;"> j := </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000000;"> Length(line.s) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> line.s[j] = </span><span class="f_CodeExample" style="color: #ff0000;">#32</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(SpaceCount);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> line.wrap = false </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> allshift := MaxTextWidth - RealTextWidth(line.s)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> allshift := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> allshift &gt; </span><span class="f_CodeExample" style="color: #800000;">40</span><span class="f_CodeExample" style="color: #000000;"> * SpaceCount </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> allshift := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> shift := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">for</span><span class="f_CodeExample" style="color: #000000;"> j := </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000000;"> Length(line.s) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> (</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">not</span><span class="f_CodeExample" style="color: #000000;"> (line.s[j] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">in</span><span class="f_CodeExample" style="color: #000000;"> [</span><span class="f_CodeExample" style="color: #ff0000;">#9</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">#32</span><span class="f_CodeExample" style="color: #000000;">])) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (j &lt; Length(line.s)) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> OneWord := OneWord + line.s[j];</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> OneWord := OneWord + line.s[j];</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> OneWord = </span><span class="f_CodeExample" style="color: #ff0000;">#9</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(TextLeft, </span><span class="f_CodeExample" style="color: #800000;">40</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> OneWord = </span><span class="f_CodeExample" style="color: #ff0000;">#13#10</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(LineN);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> TextOut(</span><span class="f_CodeExample" style="color: #800000;">10</span><span class="f_CodeExample" style="color: #000000;"> + TextLeft, LineN * LineH, OneWord);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> SpaceCount = </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> d := </span><span class="f_CodeExample" style="color: #800000;">0</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> d := (allshift - shift) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">div</span><span class="f_CodeExample" style="color: #000000;"> (SpaceCount);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(shift, d);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(TextLeft, TextWidth(OneWord) + d);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> dec(SpaceCount);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> OneWord := </span><span class="f_CodeExample" style="color: #ff0000;">''</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(i, line.length);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(LineN);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">until</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> (LineN * LineH &gt; Form1.PaintBox1.Height) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">or</span><span class="f_CodeExample" style="color: #000000;"> (i &gt;= Length(s));</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">repeat</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> line := GetLine(i);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(i, line.length);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(LineCount);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">until</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> i &gt;= Length(s);</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(LineCount, LineN);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Form1.ScrollBar1.Max := LineCount -</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Form1.PaintBox1.Height </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">div</span><span class="f_CodeExample" style="color: #000000;"> LineH;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Form1.PaintBox1.Canvas.Draw(</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">, bm);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TForm1.PaintBox1Paint(Sender: TObject);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">draw;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TForm1.ScrollBar1Change(Sender: TObject);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">draw;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> </td> </tr> </tbody> </table> </div> Дополнение строки пробелами 2013-08-20T17:09:49+07:00 2013-08-20T17:09:49+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/formatirovanie-strok/dopolnenie-stroki-probelami.html Super User toto44@inbox.ru <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ **** UBPFD *********** by delphibase.endimus ****</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">&gt;&gt; Дополнение строки пробелами слева</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Дополненяет строку слева пробелами до указанной длины</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Зависимости: нет</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: Anatoly Podgoretsky, anatoly@podgoretsky, Johvi</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Дата: 26 апреля 2002 г.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">***************************************************** }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> PADL(Src: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; Lg: Integer): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := Src;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> Length(Result) &lt; Lg </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := </span><span class="f_CodeExample" style="color: #ff0000;">' '</span><span class="f_CodeExample" style="color: #000000;"> + Result;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ **** UBPFD *********** by delphibase.endimus ****</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">&gt;&gt; Дополнение строки пробелами справа</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Дополняет строку пробелами справа до указанной длины.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Зависимости: нет</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: Anatoly Podgoretsky, anatoly@podgoretsky, Johvi</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: Anatoly Podgoretsky</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">***************************************************** }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> PADR(Src: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; Lg: Integer): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := Src;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> Length(Result) &lt; Lg </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := Result + </span><span class="f_CodeExample" style="color: #ff0000;">' '</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ **** UBPFD *********** by delphibase.endimus ****</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">&gt;&gt; Дополнение строки пробелами с обоих сторон</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Дополнение строки пробелами с обоих сторон до указанной длины</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Зависимости: нет</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: Anatoly Podgoretsky, anatoly@podgoretsky, Johvi</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">***************************************************** }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> PADC(Src: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; Lg: Integer): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := Src;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> Length(Result) &lt; Lg </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := Result + </span><span class="f_CodeExample" style="color: #ff0000;">' '</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> Length(Result) &lt; Lg </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := </span><span class="f_CodeExample" style="color: #ff0000;">' '</span><span class="f_CodeExample" style="color: #000000;"> + Result;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//Пример использования: </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">S := PADL(S,</span><span class="f_CodeExample" style="color: #800000;">32</span><span class="f_CodeExample" style="color: #000000;">); </span></p> <p class="p_CodeExample"> </p> </td> </tr> </tbody> </table> </div> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ **** UBPFD *********** by delphibase.endimus ****</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">&gt;&gt; Дополнение строки пробелами слева</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Дополненяет строку слева пробелами до указанной длины</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Зависимости: нет</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: Anatoly Podgoretsky, anatoly@podgoretsky, Johvi</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Дата: 26 апреля 2002 г.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">***************************************************** }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> PADL(Src: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; Lg: Integer): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := Src;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> Length(Result) &lt; Lg </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := </span><span class="f_CodeExample" style="color: #ff0000;">' '</span><span class="f_CodeExample" style="color: #000000;"> + Result;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ **** UBPFD *********** by delphibase.endimus ****</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">&gt;&gt; Дополнение строки пробелами справа</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Дополняет строку пробелами справа до указанной длины.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Зависимости: нет</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: Anatoly Podgoretsky, anatoly@podgoretsky, Johvi</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: Anatoly Podgoretsky</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">***************************************************** }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> PADR(Src: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; Lg: Integer): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := Src;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> Length(Result) &lt; Lg </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := Result + </span><span class="f_CodeExample" style="color: #ff0000;">' '</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ **** UBPFD *********** by delphibase.endimus ****</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">&gt;&gt; Дополнение строки пробелами с обоих сторон</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Дополнение строки пробелами с обоих сторон до указанной длины</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Зависимости: нет</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: Anatoly Podgoretsky, anatoly@podgoretsky, Johvi</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">***************************************************** }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> PADC(Src: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; Lg: Integer): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := Src;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> Length(Result) &lt; Lg </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := Result + </span><span class="f_CodeExample" style="color: #ff0000;">' '</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> Length(Result) &lt; Lg </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := </span><span class="f_CodeExample" style="color: #ff0000;">' '</span><span class="f_CodeExample" style="color: #000000;"> + Result;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//Пример использования: </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">S := PADL(S,</span><span class="f_CodeExample" style="color: #800000;">32</span><span class="f_CodeExample" style="color: #000000;">); </span></p> <p class="p_CodeExample"> </p> </td> </tr> </tbody> </table> </div> Замена в строке всех вхождений одной подстроки на другую 2013-08-20T19:28:34+07:00 2013-08-20T19:28:34+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/formatirovanie-strok/zamena-v-stroke-vsekh-vkhozhdenij-odnoj-podstroki-na-druguyu.html Super User toto44@inbox.ru <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ **** UBPFD *********** by delphibase .endimus .com ****</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">&gt;&gt; Функция замены в строке всех вхождений одной подстроки на другую</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">В отличие от других подобных функций, эта - не зависнет, если в строке нужно </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">заменить не только одно слово совершенно другим,</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">но и допустим, слово "Штаны" на "-Штаны-"</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">(Т.е. начальное слово после замены остается, но к нему добавляется какой нибудь </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">символ справа, или слева. В данном случае по краям слова добавлен знак минуса).</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Я пересмотрел много примеров, и ни один из них не справился с этой задачей.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">(Может я плохо искал?).</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Зависимости: Windows, SysUtils</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: Матюшкин Сергей, seregam @ ua.fm, ICQ:162733776, Днепропетровск</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: Sergey_M</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">***************************************************** }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> Replace(Str, X, Y: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{Str - строка, в которой будет производиться замена.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">X - подстрока, которая должна быть заменена.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Y - подстрока, на которую будет произведена заменена}</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">buf1, buf2, buffer: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i: Integer;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">buf1 := </span><span class="f_CodeExample" style="color: #ff0000;">''</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">buf2 := Str;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Buffer := Str;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> Pos(X, buf2) &gt; </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> buf2 := Copy(buf2, Pos(X, buf2), (Length(buf2) - Pos(X, buf2)) + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> buf1 := Copy(Buffer, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, Length(Buffer) - Length(buf2)) + Y;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Delete(buf2, Pos(X, buf2), Length(X));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Buffer := buf1 + buf2;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Replace := Buffer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Пример использования: </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TForm1.Button1Click(Sender: TObject);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">a: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">for</span><span class="f_CodeExample" style="color: #000000;"> a := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000000;"> Memo1.Lines.Count </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Memo1.Lines[a] := Replace(Memo1.Lines[a], </span><span class="f_CodeExample" style="color: #ff0000;">'Штаны'</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">'-Штаны-'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p style="text-align: right;"><span style="font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #ff6600; font-size: 8pt; font-weight: bold;"> </span></p> <p style="text-align: right;"> </p> <hr size="1" noshade="noshade" style="color: #000000;" /> <p> </p> <p class="p_Heading1"><span class="f_Heading1">Всё значительно проще! В Борланд уже всё сделали до нас:</span></p> <p> </p> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//заменить первое вхождение подстроки с учётом регистра</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">S:=StringReplace(ИсходнаяСтрока, ЧтоЗаменять, НаЧтоЗаменять, []) </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//заменить все вхождения подстроки с учётом регистра</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">S:=StringReplace(ИсходнаяСтрока, ЧтоЗаменять, НаЧтоЗаменять, [rfReplaceAll]) </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//заменить первое вхождение подстроки без учёта регистра</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">S:=StringReplace(ИсходнаяСтрока, ЧтоЗаменять, НаЧтоЗаменять, [rfIgnoreCase]) </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//заменить все вхождения подстроки без учёта регистра</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">S:=StringReplace(ИсходнаяСтрока, ЧтоЗаменять, НаЧтоЗаменять, [rfReplaceAll, rfIgnoreCase]) </span></p> <p class="p_CodeExample"> </p> </td> </tr> </tbody> </table> </div> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ **** UBPFD *********** by delphibase .endimus .com ****</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">&gt;&gt; Функция замены в строке всех вхождений одной подстроки на другую</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">В отличие от других подобных функций, эта - не зависнет, если в строке нужно </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">заменить не только одно слово совершенно другим,</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">но и допустим, слово "Штаны" на "-Штаны-"</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">(Т.е. начальное слово после замены остается, но к нему добавляется какой нибудь </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">символ справа, или слева. В данном случае по краям слова добавлен знак минуса).</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Я пересмотрел много примеров, и ни один из них не справился с этой задачей.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">(Может я плохо искал?).</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Зависимости: Windows, SysUtils</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: Матюшкин Сергей, seregam @ ua.fm, ICQ:162733776, Днепропетровск</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: Sergey_M</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">***************************************************** }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> Replace(Str, X, Y: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{Str - строка, в которой будет производиться замена.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">X - подстрока, которая должна быть заменена.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Y - подстрока, на которую будет произведена заменена}</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">buf1, buf2, buffer: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i: Integer;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">buf1 := </span><span class="f_CodeExample" style="color: #ff0000;">''</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">buf2 := Str;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Buffer := Str;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> Pos(X, buf2) &gt; </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> buf2 := Copy(buf2, Pos(X, buf2), (Length(buf2) - Pos(X, buf2)) + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> buf1 := Copy(Buffer, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, Length(Buffer) - Length(buf2)) + Y;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Delete(buf2, Pos(X, buf2), Length(X));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Buffer := buf1 + buf2;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Replace := Buffer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Пример использования: </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TForm1.Button1Click(Sender: TObject);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">a: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">for</span><span class="f_CodeExample" style="color: #000000;"> a := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000000;"> Memo1.Lines.Count </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Memo1.Lines[a] := Replace(Memo1.Lines[a], </span><span class="f_CodeExample" style="color: #ff0000;">'Штаны'</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">'-Штаны-'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p style="text-align: right;"><span style="font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #ff6600; font-size: 8pt; font-weight: bold;"> </span></p> <p style="text-align: right;"> </p> <hr size="1" noshade="noshade" style="color: #000000;" /> <p> </p> <p class="p_Heading1"><span class="f_Heading1">Всё значительно проще! В Борланд уже всё сделали до нас:</span></p> <p> </p> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//заменить первое вхождение подстроки с учётом регистра</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">S:=StringReplace(ИсходнаяСтрока, ЧтоЗаменять, НаЧтоЗаменять, []) </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//заменить все вхождения подстроки с учётом регистра</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">S:=StringReplace(ИсходнаяСтрока, ЧтоЗаменять, НаЧтоЗаменять, [rfReplaceAll]) </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//заменить первое вхождение подстроки без учёта регистра</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">S:=StringReplace(ИсходнаяСтрока, ЧтоЗаменять, НаЧтоЗаменять, [rfIgnoreCase]) </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//заменить все вхождения подстроки без учёта регистра</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">S:=StringReplace(ИсходнаяСтрока, ЧтоЗаменять, НаЧтоЗаменять, [rfReplaceAll, rfIgnoreCase]) </span></p> <p class="p_CodeExample"> </p> </td> </tr> </tbody> </table> </div> Как использовать format parameter больше одного раза? 2013-08-20T17:08:25+07:00 2013-08-20T17:08:25+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/formatirovanie-strok/kak-ispolzovat-format-parameter-bolshe-odnogo-raza.html Super User toto44@inbox.ru <p>Sometimes you probably have written something like this:</p> <p> </p> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">s := Format(</span><span class="f_CodeExample" style="color: #ff0000;">'Hello %s, your name is %s %s'</span><span class="f_CodeExample" style="color: #000000;">, [FirstName, FirstName, LastName]);</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p>(an admittedly stupid example ;-) )</p> <p> </p> <p>And if you do, you probably found it annoying that you need to specify the FirstName parameter twice, in particular if there are lots of similar lines. But this isn't necessary because you can specify the parameter position to use for the placeholder</p> <p>in the format string like this:</p> <p> </p> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">s := Format(</span><span class="f_CodeExample" style="color: #ff0000;">'Hello %0:s, your name is %0:s %1:s'</span><span class="f_CodeExample" style="color: #000000;">, [FirstName, LastName]);</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p>Just one more example from a code generator I am currently writing:</p> <p> </p> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TableName := </span><span class="f_CodeExample" style="color: #ff0000;">'Customer'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">...</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">s := Format(</span><span class="f_CodeExample" style="color: #ff0000;">' f%0:sTableAuto := T%0:sTableAuto.Create(f%0:Table);'</span><span class="f_CodeExample" style="color: #000000;">, [TableName]);</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p>which results in</p> <p> </p> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">s := </span><span class="f_CodeExample" style="color: #ff0000;">' fCustomerTableAuto := TCustomerTableAuto.Create(fCustmerTable);'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p>Sometimes you probably have written something like this:</p> <p> </p> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">s := Format(</span><span class="f_CodeExample" style="color: #ff0000;">'Hello %s, your name is %s %s'</span><span class="f_CodeExample" style="color: #000000;">, [FirstName, FirstName, LastName]);</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p>(an admittedly stupid example ;-) )</p> <p> </p> <p>And if you do, you probably found it annoying that you need to specify the FirstName parameter twice, in particular if there are lots of similar lines. But this isn't necessary because you can specify the parameter position to use for the placeholder</p> <p>in the format string like this:</p> <p> </p> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">s := Format(</span><span class="f_CodeExample" style="color: #ff0000;">'Hello %0:s, your name is %0:s %1:s'</span><span class="f_CodeExample" style="color: #000000;">, [FirstName, LastName]);</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p>Just one more example from a code generator I am currently writing:</p> <p> </p> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TableName := </span><span class="f_CodeExample" style="color: #ff0000;">'Customer'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">...</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">s := Format(</span><span class="f_CodeExample" style="color: #ff0000;">' f%0:sTableAuto := T%0:sTableAuto.Create(f%0:Table);'</span><span class="f_CodeExample" style="color: #000000;">, [TableName]);</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p>which results in</p> <p> </p> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">s := </span><span class="f_CodeExample" style="color: #ff0000;">' fCustomerTableAuto := TCustomerTableAuto.Create(fCustmerTable);'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> Как удалить переносы из строки 2013-08-20T18:35:41+07:00 2013-08-20T18:35:41+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/formatirovanie-strok/kak-udalit-perenosy-iz-stroki.html Super User toto44@inbox.ru <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> DeleteLineBreaks(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> S: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Source, SourceEnd: PChar;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Source := Pointer(S);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">SourceEnd := Source + Length(S);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> Source &lt; SourceEnd </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">case</span><span class="f_CodeExample" style="color: #000000;"> Source^ </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #ff0000;">#10</span><span class="f_CodeExample" style="color: #000000;">: Source^ := </span><span class="f_CodeExample" style="color: #ff0000;">#32</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #ff0000;">#13</span><span class="f_CodeExample" style="color: #000000;">: Source^ := </span><span class="f_CodeExample" style="color: #ff0000;">#32</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Inc(Source);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := S;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p style="text-align: right;"><span style="font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #ff6600; font-size: 8pt; font-weight: bold;"> </span></p> <p>https://delphiworld.narod</p> <p>DelphiWorld 6.0</p> <p style="text-align: right;"> </p> <p style="text-align: right;"> </p> <hr size="1" noshade="noshade" style="color: #000000;" /> <p> </p> <p>Можно значительно проще:</p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> DeleteLineBreaks(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> S: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{©Drkb v.3(2007): www.drkb, </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">®Vit (Vitaly Nevzorov) - nevzorov @ yahoo.com}</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := StringReplace(S, </span><span class="f_CodeExample" style="color: #ff0000;">#10#13</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">''</span><span class="f_CodeExample" style="color: #000000;">,[rfReplaceAll]);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> DeleteLineBreaks(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> S: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Source, SourceEnd: PChar;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Source := Pointer(S);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">SourceEnd := Source + Length(S);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> Source &lt; SourceEnd </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">case</span><span class="f_CodeExample" style="color: #000000;"> Source^ </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #ff0000;">#10</span><span class="f_CodeExample" style="color: #000000;">: Source^ := </span><span class="f_CodeExample" style="color: #ff0000;">#32</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #ff0000;">#13</span><span class="f_CodeExample" style="color: #000000;">: Source^ := </span><span class="f_CodeExample" style="color: #ff0000;">#32</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Inc(Source);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := S;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p style="text-align: right;"><span style="font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #ff6600; font-size: 8pt; font-weight: bold;"> </span></p> <p>https://delphiworld.narod</p> <p>DelphiWorld 6.0</p> <p style="text-align: right;"> </p> <p style="text-align: right;"> </p> <hr size="1" noshade="noshade" style="color: #000000;" /> <p> </p> <p>Можно значительно проще:</p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> DeleteLineBreaks(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> S: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{©Drkb v.3(2007): www.drkb, </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">®Vit (Vitaly Nevzorov) - nevzorov @ yahoo.com}</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := StringReplace(S, </span><span class="f_CodeExample" style="color: #ff0000;">#10#13</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">''</span><span class="f_CodeExample" style="color: #000000;">,[rfReplaceAll]);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> Наполнение строки 2013-08-20T19:32:15+07:00 2013-08-20T19:32:15+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/formatirovanie-strok/napolnenie-stroki.html Super User toto44@inbox.ru <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> Spcs(num : byte) : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">tmp : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">fillchar(tmp, num+</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">' '</span><span class="f_CodeExample" style="color: #000000;">); </span><span class="f_CodeExample" style="color: #000080;">{инициализация всей строки пробелами}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">tmp[</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">] := chr(num); </span><span class="f_CodeExample" style="color: #000080;">{устанавливаем длину строки с пробелами}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">result := tmp;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//Теперь достаточно написать </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Edit1.Text := SurName + spcs(</span><span class="f_CodeExample" style="color: #800000;">10</span><span class="f_CodeExample" style="color: #000000;">) + FirstName</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p style="text-align: right;"><span style="font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #ff6600; font-size: 8pt; font-weight: bold;"> </span></p> <p>https://delphiworld.narod</p> <p>DelphiWorld 6.0</p> <p style="text-align: right;"> </p> <p> </p> <hr size="1" noshade="noshade" style="color: #000000;" /> <p> </p> <p>Решением является создание функции, функционально похожей на функцию Clipper:</p> <p> </p> <p>PadL(string, width, character)</p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> TfrmFunc.PadL(cVal: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; nWide: integer; cChr: char): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i1, nStart: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> length(cVal) &lt; nWide </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> nStart:=length(cVal);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">for</span><span class="f_CodeExample" style="color: #000000;"> i1:=nStart </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000000;"> nWide-</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> cVal:=cChar+cVal;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">PadL:=cVal;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> </td> </tr> </tbody> </table> </div> <p> </p> <p> </p> <p> </p> <p> </p> <p>Затем это может вызываться c любой строкой, которой вы хотите задать определенную длину. Пользуйтесь функцией также, как вы привыкли пользоваться прежней - PadL(A,length(B),'0'); Она имеет большую гибкость - возможно заполнение любым символом до необходимой длины (удобно для задания текстовых счетчиков с фиксированным количеством символов -- PadL(A,6,'0').</p> <p style="text-align: right;"><span style="font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #ff6600; font-size: 8pt; font-weight: bold;"> </span></p> <p>https://delphiworld.narod</p> <p>DelphiWorld 6.0</p> <p style="text-align: right;"> </p> <p style="text-align: right;"> </p> <hr size="1" noshade="noshade" style="color: #000000;" /> <p> </p> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> LeftPad(S: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; Ch: Char; Len: Integer): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> RestLen: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := S;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> RestLen := Len - Length(s);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> RestLen &lt; </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span><span class="f_CodeExample" style="color: #000000;"> Exit;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := S + StringOfChar(Ch, RestLen);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> RightPad(S: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; Ch: Char; Len: Integer): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> RestLen: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := S;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> RestLen := Len - Length(s);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> RestLen &lt; </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span><span class="f_CodeExample" style="color: #000000;"> Exit;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := StringOfChar(Ch, RestLen) + S;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{Beispiel / Example}</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TForm1.Button1Click(Sender: TObject);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Edit1.Text := Rightpad(Edit2.Text, </span><span class="f_CodeExample" style="color: #ff0000;">'-'</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">30</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> Spcs(num : byte) : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">tmp : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">fillchar(tmp, num+</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">' '</span><span class="f_CodeExample" style="color: #000000;">); </span><span class="f_CodeExample" style="color: #000080;">{инициализация всей строки пробелами}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">tmp[</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">] := chr(num); </span><span class="f_CodeExample" style="color: #000080;">{устанавливаем длину строки с пробелами}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">result := tmp;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//Теперь достаточно написать </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Edit1.Text := SurName + spcs(</span><span class="f_CodeExample" style="color: #800000;">10</span><span class="f_CodeExample" style="color: #000000;">) + FirstName</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p style="text-align: right;"><span style="font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #ff6600; font-size: 8pt; font-weight: bold;"> </span></p> <p>https://delphiworld.narod</p> <p>DelphiWorld 6.0</p> <p style="text-align: right;"> </p> <p> </p> <hr size="1" noshade="noshade" style="color: #000000;" /> <p> </p> <p>Решением является создание функции, функционально похожей на функцию Clipper:</p> <p> </p> <p>PadL(string, width, character)</p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> TfrmFunc.PadL(cVal: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; nWide: integer; cChr: char): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i1, nStart: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> length(cVal) &lt; nWide </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> nStart:=length(cVal);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">for</span><span class="f_CodeExample" style="color: #000000;"> i1:=nStart </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000000;"> nWide-</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> cVal:=cChar+cVal;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">PadL:=cVal;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> </td> </tr> </tbody> </table> </div> <p> </p> <p> </p> <p> </p> <p> </p> <p>Затем это может вызываться c любой строкой, которой вы хотите задать определенную длину. Пользуйтесь функцией также, как вы привыкли пользоваться прежней - PadL(A,length(B),'0'); Она имеет большую гибкость - возможно заполнение любым символом до необходимой длины (удобно для задания текстовых счетчиков с фиксированным количеством символов -- PadL(A,6,'0').</p> <p style="text-align: right;"><span style="font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #ff6600; font-size: 8pt; font-weight: bold;"> </span></p> <p>https://delphiworld.narod</p> <p>DelphiWorld 6.0</p> <p style="text-align: right;"> </p> <p style="text-align: right;"> </p> <hr size="1" noshade="noshade" style="color: #000000;" /> <p> </p> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> LeftPad(S: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; Ch: Char; Len: Integer): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> RestLen: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := S;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> RestLen := Len - Length(s);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> RestLen &lt; </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span><span class="f_CodeExample" style="color: #000000;"> Exit;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := S + StringOfChar(Ch, RestLen);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> RightPad(S: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; Ch: Char; Len: Integer): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> RestLen: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := S;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> RestLen := Len - Length(s);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> RestLen &lt; </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span><span class="f_CodeExample" style="color: #000000;"> Exit;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := StringOfChar(Ch, RestLen) + S;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{Beispiel / Example}</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TForm1.Button1Click(Sender: TObject);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Edit1.Text := Rightpad(Edit2.Text, </span><span class="f_CodeExample" style="color: #ff0000;">'-'</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">30</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> Обрезание строки по длине 2013-08-20T18:36:23+07:00 2013-08-20T18:36:23+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/formatirovanie-strok/obrezanie-stroki-po-dline.html Super User toto44@inbox.ru <p>Автор: ___Nikolay</p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Обрезание строки по длине</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> TfmDW6Main.BeautyStr(s: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; iLength: integer): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">bm: TBitmap;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">sResult: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">iStrLen: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">bAdd: boolean;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := s;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> Trim(s) = </span><span class="f_CodeExample" style="color: #ff0000;">''</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> exit;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">bAdd := false;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> sResult := s;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">bm := TBitmap.Create;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">bm.Width := </span><span class="f_CodeExample" style="color: #800000;">100</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">bm.Height := </span><span class="f_CodeExample" style="color: #800000;">100</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">iStrLen := bm.Canvas.TextWidth(sResult);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> iStrLen &gt; iLength </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> Length(sResult) &lt; </span><span class="f_CodeExample" style="color: #800000;">4</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> break;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Delete(sResult, Length(sResult) - </span><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">3</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> bAdd := true;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> iStrLen := bm.Canvas.TextWidth(sResult);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> (iStrLen &lt;= iLength) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> bAdd </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> sResult := sResult + </span><span class="f_CodeExample" style="color: #ff0000;">'...'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">bm.Free;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := sResult;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p>Автор: ___Nikolay</p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Обрезание строки по длине</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> TfmDW6Main.BeautyStr(s: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; iLength: integer): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">bm: TBitmap;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">sResult: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">iStrLen: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">bAdd: boolean;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := s;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> Trim(s) = </span><span class="f_CodeExample" style="color: #ff0000;">''</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> exit;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">bAdd := false;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> sResult := s;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">bm := TBitmap.Create;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">bm.Width := </span><span class="f_CodeExample" style="color: #800000;">100</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">bm.Height := </span><span class="f_CodeExample" style="color: #800000;">100</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">iStrLen := bm.Canvas.TextWidth(sResult);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> iStrLen &gt; iLength </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> Length(sResult) &lt; </span><span class="f_CodeExample" style="color: #800000;">4</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> break;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Delete(sResult, Length(sResult) - </span><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">3</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> bAdd := true;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> iStrLen := bm.Canvas.TextWidth(sResult);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> (iStrLen &lt;= iLength) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> bAdd </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> sResult := sResult + </span><span class="f_CodeExample" style="color: #ff0000;">'...'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">bm.Free;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := sResult;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> Очистка строки (символьное значение числа) от пробелов, нулей и точки 2013-08-20T18:45:07+07:00 2013-08-20T18:45:07+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/formatirovanie-strok/ochistka-stroki-simvolnoe-znachenie-chisla-ot-probelov-nulej-i-tochki.html Super User toto44@inbox.ru <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ **** UBPFD *********** by delphibase.endimus ****</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">&gt;&gt; Очистка строки (символьное значение числа) от пробелов, нулей и точки</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Функция возращает строку очищенную от символов: пробел, ноль, точка.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Зависимости: нет</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: Виталий, center_sapr @ mnogo.ru, Львов</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: Witek</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Дата: 26 апреля 2002 г.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">***************************************************** }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">unit</span><span class="f_CodeExample" style="color: #000000;"> Unit2;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">interface</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> StrFl(st: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">implementation</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> StrFl(st: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">label</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">p1, p2, p3;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">poz: Byte;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">k: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">stt: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">k := Length(st);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> k &lt;= </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">goto</span><span class="f_CodeExample" style="color: #000000;"> p2;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">p1:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">stt := Copy(st, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">); </span><span class="f_CodeExample" style="color: #000080;">{Очистка от пробелов}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> stt = </span><span class="f_CodeExample" style="color: #ff0000;">' '</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> st := Copy(st, </span><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">, k - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> k := k - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">goto</span><span class="f_CodeExample" style="color: #000000;"> p1;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">stt := Copy(st, k, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> stt = </span><span class="f_CodeExample" style="color: #ff0000;">' '</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> st := Copy(st, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, k - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> k := k - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">goto</span><span class="f_CodeExample" style="color: #000000;"> p1;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">p3:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">poz := Pos(</span><span class="f_CodeExample" style="color: #ff0000;">'.'</span><span class="f_CodeExample" style="color: #000000;">, st); </span><span class="f_CodeExample" style="color: #000080;">{Очистка от нулей}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> poz = </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">goto</span><span class="f_CodeExample" style="color: #000000;"> p2;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">stt := Copy(st, k, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> stt = </span><span class="f_CodeExample" style="color: #ff0000;">'0'</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> st := Copy(st, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, k - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> k := k - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">goto</span><span class="f_CodeExample" style="color: #000000;"> p3;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> stt = </span><span class="f_CodeExample" style="color: #ff0000;">'.'</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span><span class="f_CodeExample" style="color: #000080;">{Очистка от точки}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> st := Copy(st, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, k - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">p2:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StrFl := st;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//Пример результатов: </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//5.000 -&gt; 5</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//5.001 -&gt; 5.001</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//05.100 -&gt; 05.1</span></p> <p class="p_CodeExample"> </p> </td> </tr> </tbody> </table> </div> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ **** UBPFD *********** by delphibase.endimus ****</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">&gt;&gt; Очистка строки (символьное значение числа) от пробелов, нулей и точки</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Функция возращает строку очищенную от символов: пробел, ноль, точка.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Зависимости: нет</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: Виталий, center_sapr @ mnogo.ru, Львов</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: Witek</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Дата: 26 апреля 2002 г.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">***************************************************** }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">unit</span><span class="f_CodeExample" style="color: #000000;"> Unit2;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">interface</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> StrFl(st: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">implementation</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> StrFl(st: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">label</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">p1, p2, p3;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">poz: Byte;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">k: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">stt: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">k := Length(st);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> k &lt;= </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">goto</span><span class="f_CodeExample" style="color: #000000;"> p2;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">p1:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">stt := Copy(st, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">); </span><span class="f_CodeExample" style="color: #000080;">{Очистка от пробелов}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> stt = </span><span class="f_CodeExample" style="color: #ff0000;">' '</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> st := Copy(st, </span><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">, k - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> k := k - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">goto</span><span class="f_CodeExample" style="color: #000000;"> p1;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">stt := Copy(st, k, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> stt = </span><span class="f_CodeExample" style="color: #ff0000;">' '</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> st := Copy(st, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, k - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> k := k - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">goto</span><span class="f_CodeExample" style="color: #000000;"> p1;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">p3:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">poz := Pos(</span><span class="f_CodeExample" style="color: #ff0000;">'.'</span><span class="f_CodeExample" style="color: #000000;">, st); </span><span class="f_CodeExample" style="color: #000080;">{Очистка от нулей}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> poz = </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">goto</span><span class="f_CodeExample" style="color: #000000;"> p2;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">stt := Copy(st, k, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> stt = </span><span class="f_CodeExample" style="color: #ff0000;">'0'</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> st := Copy(st, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, k - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> k := k - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">goto</span><span class="f_CodeExample" style="color: #000000;"> p3;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> stt = </span><span class="f_CodeExample" style="color: #ff0000;">'.'</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span><span class="f_CodeExample" style="color: #000080;">{Очистка от точки}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> st := Copy(st, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, k - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">p2:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StrFl := st;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//Пример результатов: </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//5.000 -&gt; 5</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//5.001 -&gt; 5.001</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//05.100 -&gt; 05.1</span></p> <p class="p_CodeExample"> </p> </td> </tr> </tbody> </table> </div> Очистка строки слева и справа от указанного символа 2013-08-20T18:47:11+07:00 2013-08-20T18:47:11+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/formatirovanie-strok/ochistka-stroki-sleva-i-sprava-ot-ukazannogo-simvola.html Super User toto44@inbox.ru <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ **** UBPFD *********** by delphibase.endimus ****</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">&gt;&gt; Очистка строки слева и справа от указанного символа</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Функция возвращает строку Str, очищенную слева и справа от указанного символа Symbol.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Работает быстрее аналогичной функции UBPFD.TrimEx, так как не использует функцию</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">поиска Pos, имеет более компактный код.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Зависимости: System, SysUtils</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: lipskiy, lipskiyn@ mail.ru, </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">***************************************************** }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> TrimString(Str: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; Symbol: char): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := Str;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> Str = </span><span class="f_CodeExample" style="color: #ff0000;">''</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> exit;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Str := Trim(Str);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Удаляем в начале строки</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> (length(Str) &gt; </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> (AnsiUpperCase(Str[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">]) = AnsiUpperCase(Symbol)) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Delete(Str, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Удаляем в конце строки</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> (length(Str) &gt; </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> (AnsiUpperCase(Str[length(Str)]) = AnsiUpperCase(Symbol)) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Delete(Str, length(Str), </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := Str;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p style="text-align: right;"><span style="font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #ff6600; font-size: 8pt; font-weight: bold;"> </span></p> <p style="text-align: right;"> </p> <hr size="1" noshade="noshade" style="color: #000000;" /> <p> </p> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ **** UBPFD *********** by delphibase.endimus ****</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">&gt;&gt; Очистка строки слева и справа от указанных символов</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Функция возвращает word, очищеный от начальных и конечных символов, которые</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">попадают в строку TrimSymbols.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Например, ShowMessage (TrimEx('&lt;MegaTeg&gt;', '&lt;&gt;')), выведет сообщение "MegaTeg"</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">(без кавычек).</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Зависимости: system, sysutils</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: VID, vidsnap @ mail.ru, ICQ:132234868, Махачкала</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: VID</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">***************************************************** }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> TrimEX(Word, TrimSymbols: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">x, a, b: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := Word;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> TrimSymbols = </span><span class="f_CodeExample" style="color: #ff0000;">''</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> exit;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Word := Trim(word);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> length(word) = </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> exit;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">x := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">repeat</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> x := x + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">until</span><span class="f_CodeExample" style="color: #000000;"> (pos(ansiuppercase(word[x]), ansiuppercase(TrimSymbols)) = </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">or</span><span class="f_CodeExample" style="color: #000000;"> (x = length(word));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">a := x;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">x := length(word) + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">repeat</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> x := x - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">until</span><span class="f_CodeExample" style="color: #000000;"> (pos(ansiuppercase(word[x]), ansiuppercase(TrimSymbols)) = </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">or</span><span class="f_CodeExample" style="color: #000000;"> (x = </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">b := x;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">word := copy(word, a, b - a + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">result := word;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ **** UBPFD *********** by delphibase.endimus ****</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">&gt;&gt; Очистка строки слева и справа от указанного символа</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Функция возвращает строку Str, очищенную слева и справа от указанного символа Symbol.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Работает быстрее аналогичной функции UBPFD.TrimEx, так как не использует функцию</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">поиска Pos, имеет более компактный код.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Зависимости: System, SysUtils</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: lipskiy, lipskiyn@ mail.ru, </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">***************************************************** }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> TrimString(Str: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; Symbol: char): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := Str;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> Str = </span><span class="f_CodeExample" style="color: #ff0000;">''</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> exit;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Str := Trim(Str);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Удаляем в начале строки</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> (length(Str) &gt; </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> (AnsiUpperCase(Str[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">]) = AnsiUpperCase(Symbol)) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Delete(Str, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Удаляем в конце строки</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> (length(Str) &gt; </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> (AnsiUpperCase(Str[length(Str)]) = AnsiUpperCase(Symbol)) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Delete(Str, length(Str), </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := Str;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p style="text-align: right;"><span style="font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #ff6600; font-size: 8pt; font-weight: bold;"> </span></p> <p style="text-align: right;"> </p> <hr size="1" noshade="noshade" style="color: #000000;" /> <p> </p> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ **** UBPFD *********** by delphibase.endimus ****</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">&gt;&gt; Очистка строки слева и справа от указанных символов</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Функция возвращает word, очищеный от начальных и конечных символов, которые</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">попадают в строку TrimSymbols.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Например, ShowMessage (TrimEx('&lt;MegaTeg&gt;', '&lt;&gt;')), выведет сообщение "MegaTeg"</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">(без кавычек).</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Зависимости: system, sysutils</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: VID, vidsnap @ mail.ru, ICQ:132234868, Махачкала</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: VID</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">***************************************************** }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> TrimEX(Word, TrimSymbols: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">x, a, b: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := Word;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> TrimSymbols = </span><span class="f_CodeExample" style="color: #ff0000;">''</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> exit;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Word := Trim(word);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> length(word) = </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> exit;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">x := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">repeat</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> x := x + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">until</span><span class="f_CodeExample" style="color: #000000;"> (pos(ansiuppercase(word[x]), ansiuppercase(TrimSymbols)) = </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">or</span><span class="f_CodeExample" style="color: #000000;"> (x = length(word));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">a := x;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">x := length(word) + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">repeat</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> x := x - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">until</span><span class="f_CodeExample" style="color: #000000;"> (pos(ansiuppercase(word[x]), ansiuppercase(TrimSymbols)) = </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">or</span><span class="f_CodeExample" style="color: #000000;"> (x = </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">b := x;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">word := copy(word, a, b - a + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">result := word;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> Первая буква каждого слова в верхнем регистре 2013-08-20T18:34:12+07:00 2013-08-20T18:34:12+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/formatirovanie-strok/pervaya-bukva-kazhdogo-slova-v-verkhnem-registre.html Super User toto44@inbox.ru <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> LowCase(ch: CHAR): CHAR;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">case</span><span class="f_CodeExample" style="color: #000000;"> ch </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">..</span><span class="f_CodeExample" style="color: #ff0000;">'Z'</span><span class="f_CodeExample" style="color: #000000;">: LowCase := CHR(ORD(ch) + </span><span class="f_CodeExample" style="color: #800000;">31</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> LowCase := ch;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> proper(s: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">t: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">newWord: boolean;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> s = </span><span class="f_CodeExample" style="color: #ff0000;">''</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> exit;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">s := lowercase(s);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">t := uppercase(s);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">newWord := true;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">for</span><span class="f_CodeExample" style="color: #000000;"> i := </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000000;"> length(s) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> newWord </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (s[i] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">in</span><span class="f_CodeExample" style="color: #000000;"> [</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">..</span><span class="f_CodeExample" style="color: #ff0000;">'z'</span><span class="f_CodeExample" style="color: #000000;">]) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> s[i] := t[i];</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> newWord := false;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> continue;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> s[i] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">in</span><span class="f_CodeExample" style="color: #000000;"> [</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">..</span><span class="f_CodeExample" style="color: #ff0000;">'z'</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">''''</span><span class="f_CodeExample" style="color: #000000;">] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> continue;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> newWord := true;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">result := s;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> LowCase(ch: CHAR): CHAR;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">case</span><span class="f_CodeExample" style="color: #000000;"> ch </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">..</span><span class="f_CodeExample" style="color: #ff0000;">'Z'</span><span class="f_CodeExample" style="color: #000000;">: LowCase := CHR(ORD(ch) + </span><span class="f_CodeExample" style="color: #800000;">31</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> LowCase := ch;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> proper(s: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">t: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">newWord: boolean;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> s = </span><span class="f_CodeExample" style="color: #ff0000;">''</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> exit;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">s := lowercase(s);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">t := uppercase(s);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">newWord := true;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">for</span><span class="f_CodeExample" style="color: #000000;"> i := </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000000;"> length(s) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> newWord </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (s[i] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">in</span><span class="f_CodeExample" style="color: #000000;"> [</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">..</span><span class="f_CodeExample" style="color: #ff0000;">'z'</span><span class="f_CodeExample" style="color: #000000;">]) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> s[i] := t[i];</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> newWord := false;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> continue;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> s[i] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">in</span><span class="f_CodeExample" style="color: #000000;"> [</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">..</span><span class="f_CodeExample" style="color: #ff0000;">'z'</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">''''</span><span class="f_CodeExample" style="color: #000000;">] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> continue;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> newWord := true;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">result := s;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> Перевод символа в верхний регистр для русского алфавита 2013-08-20T18:48:06+07:00 2013-08-20T18:48:06+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/formatirovanie-strok/perevod-simvola-v-verkhnij-registr.html Super User toto44@inbox.ru <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> UpCaseRus(ch: Char): Char;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">asm</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">CMP AL,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">JB @@exit</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">CMP AL,</span><span class="f_CodeExample" style="color: #ff0000;">'z'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">JA @@Rus</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">SUB AL,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;"> - </span><span class="f_CodeExample" style="color: #ff0000;">'A'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">RET</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">@@Rus:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">CMP AL,</span><span class="f_CodeExample" style="color: #ff0000;">'я'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">JA @@Exit</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">CMP AL,</span><span class="f_CodeExample" style="color: #ff0000;">'а'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">JB @@yo</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">SUB AL,</span><span class="f_CodeExample" style="color: #ff0000;">'я'</span><span class="f_CodeExample" style="color: #000000;"> - </span><span class="f_CodeExample" style="color: #ff0000;">'Я'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">RET</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">@@yo:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">CMP AL,</span><span class="f_CodeExample" style="color: #ff0000;">'?'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">JNE @@exit</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MOV AL,</span><span class="f_CodeExample" style="color: #ff0000;">'?'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">@@exit:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> UpCaseRus(ch: Char): Char;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">asm</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">CMP AL,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">JB @@exit</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">CMP AL,</span><span class="f_CodeExample" style="color: #ff0000;">'z'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">JA @@Rus</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">SUB AL,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;"> - </span><span class="f_CodeExample" style="color: #ff0000;">'A'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">RET</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">@@Rus:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">CMP AL,</span><span class="f_CodeExample" style="color: #ff0000;">'я'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">JA @@Exit</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">CMP AL,</span><span class="f_CodeExample" style="color: #ff0000;">'а'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">JB @@yo</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">SUB AL,</span><span class="f_CodeExample" style="color: #ff0000;">'я'</span><span class="f_CodeExample" style="color: #000000;"> - </span><span class="f_CodeExample" style="color: #ff0000;">'Я'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">RET</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">@@yo:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">CMP AL,</span><span class="f_CodeExample" style="color: #ff0000;">'?'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">JNE @@exit</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MOV AL,</span><span class="f_CodeExample" style="color: #ff0000;">'?'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">@@exit:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> Перевод символа в нижний регистр 2013-08-20T18:49:19+07:00 2013-08-20T18:49:19+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/formatirovanie-strok/perevod-simvola-v-nizhnij-registr.html Super User toto44@inbox.ru <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> LoCaseRus( ch : Char ) : Char;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{Перевод символа в нижний регистр для русского алфавита}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">asm</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">CMP AL,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">JB @@exit</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">CMP AL,</span><span class="f_CodeExample" style="color: #ff0000;">'Z'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">JA @@Rus</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">ADD AL,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;"> - </span><span class="f_CodeExample" style="color: #ff0000;">'A'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">RET</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">@@Rus:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">CMP AL,</span><span class="f_CodeExample" style="color: #ff0000;">'Я'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">JA @@Exit</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">CMP AL,</span><span class="f_CodeExample" style="color: #ff0000;">'А'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">JB @@yo</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">ADD AL,</span><span class="f_CodeExample" style="color: #ff0000;">'я'</span><span class="f_CodeExample" style="color: #000000;"> - </span><span class="f_CodeExample" style="color: #ff0000;">'Я'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">RET</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">@@yo:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">CMP AL,</span><span class="f_CodeExample" style="color: #ff0000;">'?'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">JNE @@exit</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MOV AL,</span><span class="f_CodeExample" style="color: #ff0000;">'?'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">@@exit:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> LoCaseRus( ch : Char ) : Char;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{Перевод символа в нижний регистр для русского алфавита}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">asm</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">CMP AL,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">JB @@exit</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">CMP AL,</span><span class="f_CodeExample" style="color: #ff0000;">'Z'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">JA @@Rus</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">ADD AL,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;"> - </span><span class="f_CodeExample" style="color: #ff0000;">'A'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">RET</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">@@Rus:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">CMP AL,</span><span class="f_CodeExample" style="color: #ff0000;">'Я'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">JA @@Exit</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">CMP AL,</span><span class="f_CodeExample" style="color: #ff0000;">'А'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">JB @@yo</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">ADD AL,</span><span class="f_CodeExample" style="color: #ff0000;">'я'</span><span class="f_CodeExample" style="color: #000000;"> - </span><span class="f_CodeExample" style="color: #ff0000;">'Я'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">RET</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">@@yo:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">CMP AL,</span><span class="f_CodeExample" style="color: #ff0000;">'?'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">JNE @@exit</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MOV AL,</span><span class="f_CodeExample" style="color: #ff0000;">'?'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">@@exit:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> Повтор строки N количество раз 2013-08-20T18:50:41+07:00 2013-08-20T18:50:41+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/formatirovanie-strok/povtor-stroki-n-kolichestvo-raz.html Super User toto44@inbox.ru <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ **** UBPFD *********** by delphibase.endimus ****</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">&gt;&gt; Повтор строки заданное количество раз</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Input - строка для повторения</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Rep - количество повторений</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Строка на выходе это входная строка повторенная Rep раз.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Зависимости: Стандартные модули</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: Ru, DiVo_Ru @ rambler.ru, Одесса</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: DiVo 2002 creator Ru (по мотивам функции Str из Word Basic)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">***************************************************** }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> MulStr(Input: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; Rep: integer): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">for</span><span class="f_CodeExample" style="color: #000000;"> i := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000000;"> Rep - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result := result + Input;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Пример использования: </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">s1 := </span><span class="f_CodeExample" style="color: #ff0000;">'Привет'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">s := MulStr(s1, </span><span class="f_CodeExample" style="color: #800000;">3</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// результат:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">s := </span><span class="f_CodeExample" style="color: #ff0000;">'ПриветПриветПривет'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ **** UBPFD *********** by delphibase.endimus ****</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">&gt;&gt; Повтор строки заданное количество раз</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Input - строка для повторения</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Rep - количество повторений</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Строка на выходе это входная строка повторенная Rep раз.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Зависимости: Стандартные модули</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: Ru, DiVo_Ru @ rambler.ru, Одесса</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: DiVo 2002 creator Ru (по мотивам функции Str из Word Basic)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">***************************************************** }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> MulStr(Input: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; Rep: integer): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">for</span><span class="f_CodeExample" style="color: #000000;"> i := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000000;"> Rep - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result := result + Input;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Пример использования: </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">s1 := </span><span class="f_CodeExample" style="color: #ff0000;">'Привет'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">s := MulStr(s1, </span><span class="f_CodeExample" style="color: #800000;">3</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// результат:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">s := </span><span class="f_CodeExample" style="color: #ff0000;">'ПриветПриветПривет'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> Примеры форматирования строк с использованием API-функции wvsprintf 2013-08-20T20:00:16+07:00 2013-08-20T20:00:16+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/formatirovanie-strok/primery-formatirovaniya-strok-s-ispolzovaniem-api-funktsii-wvsprintf.html Super User toto44@inbox.ru <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ **** UBPFD *********** by delphibase.endimus****</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">&gt;&gt; Примеры форматирования строк с использованием API-функции wvsprintf</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Примеры показывают приемы использования функции wvsprintf в Delphi для</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">форматирования строк. Эта функция входит в состав Windows API</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">(реализована в user32.dll), поэтому не требует подключения модуля</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">SysUtils по сравнению с аналогичной функцией Format.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Зависимости: Windows</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: Внук, Zhigalin @ poria.ru, ICQ:60571446, Самара</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: Внук</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">***************************************************** }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Пример использования функции wvsprintf с двумя параметрами разного типа</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> WinFormat(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">out</span><span class="f_CodeExample" style="color: #000000;"> TargetString: AnsiString): Boolean;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">FormatStr = </span><span class="f_CodeExample" style="color: #ff0000;">'String Parameter:"%s", Number Parameter:%05d'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StrParam: AnsiString;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">NumberParam, FormatResult: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">ParamArray: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">array</span><span class="f_CodeExample" style="color: #000000;">[</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">..</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span><span class="f_CodeExample" style="color: #000000;"> Pointer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">NumberParam := </span><span class="f_CodeExample" style="color: #800000;">105</span><span class="f_CodeExample" style="color: #000000;">; </span><span class="f_CodeExample" style="color: #000080;">// Задаем значение первого параметра</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StrParam := </span><span class="f_CodeExample" style="color: #ff0000;">'Hello'</span><span class="f_CodeExample" style="color: #000000;">; </span><span class="f_CodeExample" style="color: #000080;">// Задаем значение второго параметра</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">SetLength(TargetString, </span><span class="f_CodeExample" style="color: #800000;">50</span><span class="f_CodeExample" style="color: #000000;">); </span><span class="f_CodeExample" style="color: #000080;">// Должно быть достаточно места для результата.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Без этой строки работать не будет</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">ParamArray[</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">] := @StrParam[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">];</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">ParamArray[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">] := Pointer(NumberParam);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">FormatResult := wvsprintf(PChar(TargetString), FormatStr, PChar(@ParamArray));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> FormatResult &lt; Length(FormatStr) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span><span class="f_CodeExample" style="color: #000080;">// В случае ошибки значение функции</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// меньше длины шаблонной строки</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> TargetString := </span><span class="f_CodeExample" style="color: #ff0000;">''</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := False;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result := True;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Пример использования функции wvsprintf с одним параметром</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> SimpleWinFormat(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">out</span><span class="f_CodeExample" style="color: #000000;"> TargetString: AnsiString): Boolean;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">FormatStr = </span><span class="f_CodeExample" style="color: #ff0000;">'Number Parameter:%05d'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">NumberParam, FormatResult: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">NumberParam := </span><span class="f_CodeExample" style="color: #800000;">112</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">SetLength(TargetString, </span><span class="f_CodeExample" style="color: #800000;">50</span><span class="f_CodeExample" style="color: #000000;">); </span><span class="f_CodeExample" style="color: #000080;">// Должно быть достаточно места для результата.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Без этой строки работать не будет</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">FormatResult := wvsprintf(PChar(TargetString), FormatStr,</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PChar(@NumberParam));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> FormatResult &lt; Length(FormatStr) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span><span class="f_CodeExample" style="color: #000080;">// В случае ошибки значение функции</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// меньше длины шаблонной строки</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> TargetString := </span><span class="f_CodeExample" style="color: #ff0000;">''</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := False;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result := True;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Пример использования: </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">uses</span><span class="f_CodeExample" style="color: #000000;"> Dialogs, ...;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">...</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">S: AnsiString;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">...</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">...</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> WinFormat(S) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> ShowMessage(S)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> ShowMessage(</span><span class="f_CodeExample" style="color: #ff0000;">'An error has been occured!'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> SimpleWinFormat(S) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> ShowMessage(S)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> ShowMessage(</span><span class="f_CodeExample" style="color: #ff0000;">'An error has been occured!'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">...</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">...</span></p> </td> </tr> </tbody> </table> </div> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ **** UBPFD *********** by delphibase.endimus****</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">&gt;&gt; Примеры форматирования строк с использованием API-функции wvsprintf</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Примеры показывают приемы использования функции wvsprintf в Delphi для</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">форматирования строк. Эта функция входит в состав Windows API</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">(реализована в user32.dll), поэтому не требует подключения модуля</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">SysUtils по сравнению с аналогичной функцией Format.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Зависимости: Windows</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: Внук, Zhigalin @ poria.ru, ICQ:60571446, Самара</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: Внук</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">***************************************************** }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Пример использования функции wvsprintf с двумя параметрами разного типа</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> WinFormat(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">out</span><span class="f_CodeExample" style="color: #000000;"> TargetString: AnsiString): Boolean;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">FormatStr = </span><span class="f_CodeExample" style="color: #ff0000;">'String Parameter:"%s", Number Parameter:%05d'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StrParam: AnsiString;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">NumberParam, FormatResult: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">ParamArray: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">array</span><span class="f_CodeExample" style="color: #000000;">[</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">..</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span><span class="f_CodeExample" style="color: #000000;"> Pointer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">NumberParam := </span><span class="f_CodeExample" style="color: #800000;">105</span><span class="f_CodeExample" style="color: #000000;">; </span><span class="f_CodeExample" style="color: #000080;">// Задаем значение первого параметра</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StrParam := </span><span class="f_CodeExample" style="color: #ff0000;">'Hello'</span><span class="f_CodeExample" style="color: #000000;">; </span><span class="f_CodeExample" style="color: #000080;">// Задаем значение второго параметра</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">SetLength(TargetString, </span><span class="f_CodeExample" style="color: #800000;">50</span><span class="f_CodeExample" style="color: #000000;">); </span><span class="f_CodeExample" style="color: #000080;">// Должно быть достаточно места для результата.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Без этой строки работать не будет</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">ParamArray[</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">] := @StrParam[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">];</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">ParamArray[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">] := Pointer(NumberParam);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">FormatResult := wvsprintf(PChar(TargetString), FormatStr, PChar(@ParamArray));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> FormatResult &lt; Length(FormatStr) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span><span class="f_CodeExample" style="color: #000080;">// В случае ошибки значение функции</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// меньше длины шаблонной строки</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> TargetString := </span><span class="f_CodeExample" style="color: #ff0000;">''</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := False;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result := True;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Пример использования функции wvsprintf с одним параметром</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> SimpleWinFormat(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">out</span><span class="f_CodeExample" style="color: #000000;"> TargetString: AnsiString): Boolean;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">FormatStr = </span><span class="f_CodeExample" style="color: #ff0000;">'Number Parameter:%05d'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">NumberParam, FormatResult: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">NumberParam := </span><span class="f_CodeExample" style="color: #800000;">112</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">SetLength(TargetString, </span><span class="f_CodeExample" style="color: #800000;">50</span><span class="f_CodeExample" style="color: #000000;">); </span><span class="f_CodeExample" style="color: #000080;">// Должно быть достаточно места для результата.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Без этой строки работать не будет</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">FormatResult := wvsprintf(PChar(TargetString), FormatStr,</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PChar(@NumberParam));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> FormatResult &lt; Length(FormatStr) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span><span class="f_CodeExample" style="color: #000080;">// В случае ошибки значение функции</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// меньше длины шаблонной строки</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> TargetString := </span><span class="f_CodeExample" style="color: #ff0000;">''</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := False;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result := True;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Пример использования: </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">uses</span><span class="f_CodeExample" style="color: #000000;"> Dialogs, ...;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">...</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">S: AnsiString;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">...</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">...</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> WinFormat(S) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> ShowMessage(S)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> ShowMessage(</span><span class="f_CodeExample" style="color: #ff0000;">'An error has been occured!'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> SimpleWinFormat(S) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> ShowMessage(S)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> ShowMessage(</span><span class="f_CodeExample" style="color: #ff0000;">'An error has been occured!'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">...</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">...</span></p> </td> </tr> </tbody> </table> </div> Удаление лишних пробелов в строке 2013-08-20T19:58:59+07:00 2013-08-20T19:58:59+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/formatirovanie-strok/udalenie-lishnikh-probelov-v-stroke.html Super User toto44@inbox.ru <p> </p> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ **** UBPFD *********** by delphibase.endimus ****</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">&gt;&gt; удаление лишних пробелов в строке</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">удаляет из строки лишние пробелы без использования всяких указателей и т.д.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Зависимости: стандартные модули</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: Артем, boss1999 @ mail.ru, москва</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: собственное описание (Артем)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">***************************************************** }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{процедура удаления лишних пробелов в строке (см. function Sha_SpaceCompress)}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">c, i: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">stt, st, st1: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">c := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">st := edit1.Text;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">for</span><span class="f_CodeExample" style="color: #000000;"> i := </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000000;"> Length(st) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> stt := copy(st, i, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> (stt = </span><span class="f_CodeExample" style="color: #ff0000;">' '</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (c &gt;= </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> st1 := st1;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> c := c + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> (stt = </span><span class="f_CodeExample" style="color: #ff0000;">' '</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (c = </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> c := c + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> st1 := st1 + stt;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> (stt &lt;&gt; </span><span class="f_CodeExample" style="color: #ff0000;">' '</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> c := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> st1 := st1 + stt;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">edit2.text := st1;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p style="text-align: right;"><span style="font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #ff6600; font-size: 8pt; font-weight: bold;"> </span></p> <hr size="1" noshade="noshade" style="color: #000000;" /> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Function</span><span class="f_CodeExample" style="color: #000000;"> DeleteUselessSpaces(s:</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">String</span><span class="f_CodeExample" style="color: #000000;">):</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{©Drkb v.3(2007): www. drkb .ru, </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">®Vit (Vitaly Nevzorov) - nevzorov @ yahoo.com}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Repeat</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result:=s;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> s:=StringReplace(Result,</span><span class="f_CodeExample" style="color: #ff0000;">' '</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">' '</span><span class="f_CodeExample" style="color: #000000;">,[rfReplaceAll]); </span><span class="f_CodeExample" style="color: #000080;">//заменяем все двойные пробелы на одинарные</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Until</span><span class="f_CodeExample" style="color: #000000;"> Result=s; </span><span class="f_CodeExample" style="color: #000080;">//повторяем до тех пор пока есть двойные пробелы </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p> </p> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ **** UBPFD *********** by delphibase.endimus ****</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">&gt;&gt; удаление лишних пробелов в строке</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">удаляет из строки лишние пробелы без использования всяких указателей и т.д.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Зависимости: стандартные модули</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: Артем, boss1999 @ mail.ru, москва</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: собственное описание (Артем)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">***************************************************** }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{процедура удаления лишних пробелов в строке (см. function Sha_SpaceCompress)}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">c, i: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">stt, st, st1: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">c := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">st := edit1.Text;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">for</span><span class="f_CodeExample" style="color: #000000;"> i := </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000000;"> Length(st) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> stt := copy(st, i, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> (stt = </span><span class="f_CodeExample" style="color: #ff0000;">' '</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (c &gt;= </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> st1 := st1;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> c := c + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> (stt = </span><span class="f_CodeExample" style="color: #ff0000;">' '</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (c = </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> c := c + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> st1 := st1 + stt;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> (stt &lt;&gt; </span><span class="f_CodeExample" style="color: #ff0000;">' '</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> c := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> st1 := st1 + stt;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">edit2.text := st1;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p style="text-align: right;"><span style="font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #ff6600; font-size: 8pt; font-weight: bold;"> </span></p> <hr size="1" noshade="noshade" style="color: #000000;" /> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Function</span><span class="f_CodeExample" style="color: #000000;"> DeleteUselessSpaces(s:</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">String</span><span class="f_CodeExample" style="color: #000000;">):</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{©Drkb v.3(2007): www. drkb .ru, </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">®Vit (Vitaly Nevzorov) - nevzorov @ yahoo.com}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Repeat</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result:=s;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> s:=StringReplace(Result,</span><span class="f_CodeExample" style="color: #ff0000;">' '</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">' '</span><span class="f_CodeExample" style="color: #000000;">,[rfReplaceAll]); </span><span class="f_CodeExample" style="color: #000080;">//заменяем все двойные пробелы на одинарные</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Until</span><span class="f_CodeExample" style="color: #000000;"> Result=s; </span><span class="f_CodeExample" style="color: #000080;">//повторяем до тех пор пока есть двойные пробелы </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p> </p> Удаление ненужных подстрок из строки 2013-08-20T19:34:14+07:00 2013-08-20T19:34:14+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/formatirovanie-strok/udalenie-nenuzhnykh-podstrok-iz-stroki.html Super User toto44@inbox.ru <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> RemoveInvalid(what, where: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// what - удаляемая подстрока, where - обрабатываемая строка</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">tstr: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">tstr:=where;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> pos(what, tstr)&gt;</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> tstr:=copy(tstr,</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">,pos(what,tstr)-</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">) +</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">copy(tstr,pos(what,tstr)+length(tstr),length(tstr));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result:=tstr;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//Применение: </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">NewStr:=RemoveInvalid(</span><span class="f_CodeExample" style="color: #ff0000;">'&lt;брак&gt;'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'Этот &lt;брак&gt; в моей строке, и я хочу</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #ff0000;">удалить из нее этот &lt;брак&gt;'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> </td> </tr> </tbody> </table> </div> <p>Используйте стандартную функцию Pascal DELETE...</p> <p>Пользуясь тем же примером, вы можете сделать так....</p> <p> </p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Target:=</span><span class="f_CodeExample" style="color: #ff0000;">'&lt;брак&gt;'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">While</span><span class="f_CodeExample" style="color: #000000;"> POS(Target,</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">)&gt;</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">P := POS(Target,</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">DELETE(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">,P,Length(Target));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span><span class="f_CodeExample" style="color: #000000;"><br /></span></p> </td> </tr> </tbody> </table> </div> <p>Всё даже проще:</p> <p> </p> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{©Drkb v.3(2007): www.drkb. ru, </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">®Vit (Vitaly Nevzorov) - nevzorov @ yahoo.com}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result:=StringReplace(ИсходнаяСтрока,ТоЧтоНадоУдалить,</span><span class="f_CodeExample" style="color: #ff0000;">''</span><span class="f_CodeExample" style="color: #000000;">,[rfReplaceAll])</span></p> </td> </tr> </tbody> </table> </div> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> RemoveInvalid(what, where: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// what - удаляемая подстрока, where - обрабатываемая строка</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">tstr: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">tstr:=where;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> pos(what, tstr)&gt;</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> tstr:=copy(tstr,</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">,pos(what,tstr)-</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">) +</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">copy(tstr,pos(what,tstr)+length(tstr),length(tstr));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result:=tstr;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//Применение: </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">NewStr:=RemoveInvalid(</span><span class="f_CodeExample" style="color: #ff0000;">'&lt;брак&gt;'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'Этот &lt;брак&gt; в моей строке, и я хочу</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #ff0000;">удалить из нее этот &lt;брак&gt;'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> </td> </tr> </tbody> </table> </div> <p>Используйте стандартную функцию Pascal DELETE...</p> <p>Пользуясь тем же примером, вы можете сделать так....</p> <p> </p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Target:=</span><span class="f_CodeExample" style="color: #ff0000;">'&lt;брак&gt;'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">While</span><span class="f_CodeExample" style="color: #000000;"> POS(Target,</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">)&gt;</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">P := POS(Target,</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">DELETE(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">,P,Length(Target));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span><span class="f_CodeExample" style="color: #000000;"><br /></span></p> </td> </tr> </tbody> </table> </div> <p>Всё даже проще:</p> <p> </p> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{©Drkb v.3(2007): www.drkb. ru, </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">®Vit (Vitaly Nevzorov) - nevzorov @ yahoo.com}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result:=StringReplace(ИсходнаяСтрока,ТоЧтоНадоУдалить,</span><span class="f_CodeExample" style="color: #ff0000;">''</span><span class="f_CodeExample" style="color: #000000;">,[rfReplaceAll])</span></p> </td> </tr> </tbody> </table> </div> Удаление пробелов в начале строки 2013-08-20T19:57:22+07:00 2013-08-20T19:57:22+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/formatirovanie-strok/udalenie-probelov-v-nachale-stroki.html Super User toto44@inbox.ru <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ **** UBPFD *********** by delphibas e.endimus .com ****</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">&gt;&gt; Удаление пробелов в начале строки</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Функция возвращает строку без пробелов в начале (если они были)</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Зависимости: Windows, SysUtils</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: Hastlero</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: HasTler0</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">***************************************************** }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> Length(str) = </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> DelSpaces := str;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Exit;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">for</span><span class="f_CodeExample" style="color: #000000;"> i := </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000000;"> length(str) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> pos(</span><span class="f_CodeExample" style="color: #ff0000;">' '</span><span class="f_CodeExample" style="color: #000000;">, str) = </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> delete(str, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> DelSpaces := str;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Break;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//Пример использования: </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Str := DelSpaces(Str); </span></p> </td> </tr> </tbody> </table> </div> <p class="p_Heading1"><span class="f_Heading1" style="color: #800000;">Изобретателям велосипеда посвящается:</span></p> <p class="p_Heading1"> </p> <p class="p_Heading1"><span style="font-weight: bold;">TrimRight</span> - удаляет пробелы в начале строки, в том числе и в юникодных строках</p> <p class="p_Heading1"><span style="font-weight: bold;">TrimLeft</span> - удаляет пробелы в конце строки, в том числе и в юникодных строках</p> <p class="p_Heading1"><span style="font-weight: bold;">Trim</span> - удаляет пробелы в начале и в коце строки, в том числе и в юникодных строках</p> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ **** UBPFD *********** by delphibas e.endimus .com ****</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">&gt;&gt; Удаление пробелов в начале строки</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Функция возвращает строку без пробелов в начале (если они были)</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Зависимости: Windows, SysUtils</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: Hastlero</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: HasTler0</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">***************************************************** }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> Length(str) = </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> DelSpaces := str;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Exit;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">for</span><span class="f_CodeExample" style="color: #000000;"> i := </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000000;"> length(str) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> pos(</span><span class="f_CodeExample" style="color: #ff0000;">' '</span><span class="f_CodeExample" style="color: #000000;">, str) = </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> delete(str, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> DelSpaces := str;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Break;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//Пример использования: </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Str := DelSpaces(Str); </span></p> </td> </tr> </tbody> </table> </div> <p class="p_Heading1"><span class="f_Heading1" style="color: #800000;">Изобретателям велосипеда посвящается:</span></p> <p class="p_Heading1"> </p> <p class="p_Heading1"><span style="font-weight: bold;">TrimRight</span> - удаляет пробелы в начале строки, в том числе и в юникодных строках</p> <p class="p_Heading1"><span style="font-weight: bold;">TrimLeft</span> - удаляет пробелы в конце строки, в том числе и в юникодных строках</p> <p class="p_Heading1"><span style="font-weight: bold;">Trim</span> - удаляет пробелы в начале и в коце строки, в том числе и в юникодных строках</p> Форматирование строки с использованием подстановочных символов 2013-08-20T19:24:39+07:00 2013-08-20T19:24:39+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/formatirovanie-strok/formatirovanie-stroki-s-ispolzovaniem-podstanovochnykh-simvolov.html Super User toto44@inbox.ru <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ **** UBPFD *********** by delphibase .endimus. com ****</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">&gt;&gt; Форматирование строки с использованием подстановочных символов %1, %2 и т.д.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Функция заменяет в строке Str все подстроки '%1', '%2', и т.д. На</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">соответсвующие значения из массива Values. При этом значения этого массива</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">не должны содержать подстановочных подстрок, в противном случае возможно</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">зависание функции.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Зависимости: SysUtils</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: Dimka Maslov, mainbox @ endimus.ru, ICQ:148442121, Санкт-Петербург</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: Dimka Maslov</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">***************************************************** }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{Эта функция работает неверно, если в строке, на которую надо</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">заменить %1,%2,… содержится одна из строк %1,%2,…</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">( она зависнет в бесконечном цикле )}</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> FmtString(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> Str: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> Values: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">array</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> InternalPos(SubStr: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; Str: PChar; </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">out</span><span class="f_CodeExample" style="color: #000000;"> P: Integer): Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Ptr: PChar;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Ptr := StrPos(Str, PChar(SubStr));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> Ptr = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := -</span><span class="f_CodeExample" style="color: #800000;">1</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := Integer(Ptr) - Integer(Str);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> P := Result;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> InternalReplace(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> Str, OldSub, NewSub: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PrePos: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> CurPos: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> OldLen, NewLen: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PrePos := </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := Str;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> OldLen := Length(OldSub);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> NewLen := Length(NewSub);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> InternalPos(OldSub, @Result[PrePos], CurPos) &gt;= </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Inc(PrePos, CurPos);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Delete(Result, PrePos, OldLen);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Insert(NewSub, Result, PrePos);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Inc(PrePos, NewLen);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := Str;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">for</span><span class="f_CodeExample" style="color: #000000;"> i := High(Values) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">downto</span><span class="f_CodeExample" style="color: #000000;"> Low(Values) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := InternalReplace(Result, </span><span class="f_CodeExample" style="color: #ff0000;">'%'</span><span class="f_CodeExample" style="color: #000000;"> + IntToStr(i + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">), Values[i]);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Пример использования: </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">FmtString(</span><span class="f_CodeExample" style="color: #ff0000;">'%1 %2'</span><span class="f_CodeExample" style="color: #000000;">, [</span><span class="f_CodeExample" style="color: #ff0000;">'Пример'</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">'использования'</span><span class="f_CodeExample" style="color: #000000;">]);</span></p> </td> </tr> </tbody> </table> </div> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ **** UBPFD *********** by delphibase .endimus. com ****</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">&gt;&gt; Форматирование строки с использованием подстановочных символов %1, %2 и т.д.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Функция заменяет в строке Str все подстроки '%1', '%2', и т.д. На</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">соответсвующие значения из массива Values. При этом значения этого массива</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">не должны содержать подстановочных подстрок, в противном случае возможно</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">зависание функции.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Зависимости: SysUtils</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: Dimka Maslov, mainbox @ endimus.ru, ICQ:148442121, Санкт-Петербург</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: Dimka Maslov</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">***************************************************** }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{Эта функция работает неверно, если в строке, на которую надо</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">заменить %1,%2,… содержится одна из строк %1,%2,…</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">( она зависнет в бесконечном цикле )}</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> FmtString(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> Str: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> Values: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">array</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> InternalPos(SubStr: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; Str: PChar; </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">out</span><span class="f_CodeExample" style="color: #000000;"> P: Integer): Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Ptr: PChar;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Ptr := StrPos(Str, PChar(SubStr));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> Ptr = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := -</span><span class="f_CodeExample" style="color: #800000;">1</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := Integer(Ptr) - Integer(Str);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> P := Result;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> InternalReplace(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> Str, OldSub, NewSub: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PrePos: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> CurPos: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> OldLen, NewLen: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PrePos := </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := Str;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> OldLen := Length(OldSub);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> NewLen := Length(NewSub);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> InternalPos(OldSub, @Result[PrePos], CurPos) &gt;= </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Inc(PrePos, CurPos);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Delete(Result, PrePos, OldLen);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Insert(NewSub, Result, PrePos);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Inc(PrePos, NewLen);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := Str;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">for</span><span class="f_CodeExample" style="color: #000000;"> i := High(Values) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">downto</span><span class="f_CodeExample" style="color: #000000;"> Low(Values) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := InternalReplace(Result, </span><span class="f_CodeExample" style="color: #ff0000;">'%'</span><span class="f_CodeExample" style="color: #000000;"> + IntToStr(i + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">), Values[i]);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Пример использования: </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">FmtString(</span><span class="f_CodeExample" style="color: #ff0000;">'%1 %2'</span><span class="f_CodeExample" style="color: #000000;">, [</span><span class="f_CodeExample" style="color: #ff0000;">'Пример'</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">'использования'</span><span class="f_CodeExample" style="color: #000000;">]);</span></p> </td> </tr> </tbody> </table> </div> Функции форматирования строк 2013-08-20T17:07:26+07:00 2013-08-20T17:07:26+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/formatirovanie-strok/funktsii-formatirovaniya-strok.html Super User toto44@inbox.ru <p>Еще со времен языка FORTRAN у программистов появилась необходимость форматировать строки, направляемые на устройства вывода. Требовался легкий способ для того, чтобы не просто преобразовать число в строку, но также объединить эту строку с другими и включить ее в состав целого предложения.</p> <p> </p> <p>В Delphi существует группа функций форматирования строк. Их рассмотрение начнем с наиболее часто встречающегося представителя — функции Format:</p> <p> </p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> Format (</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> Format: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> Args: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">array</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;">) : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p>Первым параметром функции выступает форматирующая строка. Это — обычная текстовая строка, но в ней на нужных местах стоят специальные символы, которые определяют, какие и как туда будут подставлены параметры.</p> <p> </p> <p>Второй параметр функции Format называется списком аргументов. Он и содержит "вставляемые" в форматирующую строку параметры. Обратите внимение, что этот открытый массив имеет тип array of const. и в нем может передаваться переменное число разнотипных параметров. Например, после выполнения</p> <p> </p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">S := Format(</span><span class="f_CodeExample" style="color: #ff0000;">'Product %s , version %d.%d'</span><span class="f_CodeExample" style="color: #000000;">, [ </span><span class="f_CodeExample" style="color: #ff0000;">'Borland Delphi'</span><span class="f_CodeExample" style="color: #000000;"> , </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">]);</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p>строке S будет присвоено: <span style="font-weight: bold;">Product Borland Delphi , version 1.0</span>. Рассмотрим подробнее правила, по которьм составляется форматирующая строка.</p> <p> </p> <p>"Специальные" места в ней называются спецификаторами формата и представляют собой следующие конструкции</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">"%" [index":"] ["-"I [width] ["."prec] type</span></p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt;">где обозначены:</span></p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt;">• символ -%", с которого начинаются все спецификаторы формата (обязательный);</span></p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt;">• поле индекса аргумента [ index " : " ] (необязательное);</span></p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt;">• признак выравнивания по левому краю ["-"I (необязательный);</span></p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt;">• поле ширины [width] (необязательное);</span></p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt;">• поле точности [ - . - prec ] (необязательное);</span></p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt;">• символ типа преобразования type (обязательный).</span></p> <p> </p> <p>Каждый спецификатор формата соответствует как минимум одному из элементов списка аргументов и определяет, как именно рассматривать его и преобразовывать в строку.</p> <p>Функция Format поддерживает следующие символы типа преобразования:</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">d Десятичный</span> Элемент должен быть целым числом и преобразуется в строку десятичных цифр. Если при символе есть поле точности, то в выходной строке будет минимум ргес цифр; если при преобразовании числа их потребуется меньше, то строка дополняется слева нулями.</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">х Шестнадцатиричный</span> Как тип d, но элемент преобразуется в строку шестнадцатиричных цифр.</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">е Научный</span> Элемент должен быть числом с плавающей точкой. Он преобразуется к нормализованному виду -d.dddE+ddd. Перед десятичной точкой всегда находится одна цифра (при необходимости, с минусом). После символа "Е" идет показатель степени, имеющий знак и состоящий не менее чем из 3 цифр. Общее число символов в представлении числа определяется полем ргес (по умолчанию 15).</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">f Фиксированный</span> Элемент должен быть числом с плавающей точкой. Он преобразуется к виду -ddd.ddd. Поле ргес означает количество цифр после десятичной точки (по умолчанию 2).</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">l Обобщенный </span> Элемент должен быть числом с плавающей точкой. Он преобразуется к одному из двух вышеперечисленных видов — выбирается тот, который обеспечивает более короткую запись. Если требуемое число цифр слева от десятичной точки меньше значения поля ширины и само число больше 10" , применяется фиксированный тип. Удаляются все впереди идущие нули, десятичная точка (при возможности), а также символы, разделяющие строку на группы по три цифры.</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">п m Числовой Денежный</span> Совпадает с типом f за исключением того, что после каждой группы из трех цифр ставятся разделительные символы: d,ddd, ddd.ddd.... Элемент должен быть числом с плавающей точкой, отражающей денежную сумму. Способ ее представления зависит от значений глобальных констант, определенных в модуле SYSUTILS (см. ниже). В свою очередь, они зависят от настройки Windows на обозначения, принятые в данной стране.</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">Р Указатель</span> Элемент должен быть указателем. На выходе он будет представлять из себя строку шестнадцатиричных цифр вида ХХХХ: YYYY, где ХХХХ — селектор, YYYY — смещение.</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">s Строка</span> Элемент может иметь тип string, PChar или быть отдельным символом (Char). Эта строка (или символ) вставляются вместо спецификатора формата. Если присутствует поле ргес и длина строки больше его значения, то она усекается.</p> <p> </p> <p>Примечания:</p> <p>1. Форматирующие символы можно задавать как в верхнем, так и в нижнем регистрах.</p> <p>2. Тип преобразования m (денежный) тесно связан с правилами представления, принятыми в конкретной стране. Для этого в модуле SYSUTILS определены значения ряда типизированных констант, начальные значения которых берутся из секции [Inti] файла WIN.INI. Вы можете изменять их значения в соответствии с вашими потребностями:</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">CurrencyString: string[7];</span> Символ (или символы), добавляемые к строке с представлением денежной суммы и обозначающие национальную денежную единицу. Это может быть, например, '$', 'DM' или 'руб'.</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">CurrencyFormat: Byte;</span> Определяет способ добавления знака денежной единицы к строке. Число 1 будет преобразовано так в зависимости от значения этого параметра: '$!' при 0; '1$' при 1; '$ Г при 2; '1 $' при 3.</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">NegCurrFormat: Byte;</span> Определяет способ добавления знака денежной единицы и минуса к строке в том случае, если происходит преобразование отрицательного числа (к положительным числам отношения не имеет). Число -1 будет преобразовано так в зависимости от значения этого параметра: '($!)' при 0; '-$!' при 1; '$-1' при 2; '$!-' при 3; '(!$)' при 4; '-!$' при 5; 'i-$' при 6; '!$-' при 7; '-1 $' при 8; '-$ Г при 9; '$ 1-' при 10.</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">CurrencyDecimals: Byte;</span> Число знаков после запятой в представлении денежных сумм. Например, число 10.15 при разных значениях этого параметра отобразится так: '$10' при 0, '$10.15' при 2, '$10.1500' при 4.</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">ThousandSeparator: Char;</span> Символ, разделяющий строку на группы по три цифры справа налево (разделитель тысяч). Применяется, в частности, в типе преобразования п.</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">DecimalSeparator: Char;</span> Символ, отделяющий дробную часть числа от целой.</p> <p> </p> <p>Мы закончили рассмотрение символа типа преобразования. Рассмотрим остальные составные части спецификатора формата.</p> <p> </p> <p><span style="font-style: italic; font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">Поле ширины</span>устанавливает минимально допустимое количество символов в преобразованной строке. Это означает, что если она короче, чем задано в этом поле, то происходит добавление пробелов до требуемого количества. По умолчанию пробелы добавляются спереди (выравнивание по правому краю), но признак выравнивания по левому краю ("-"; он должен стоять перед полем ширины) позволяет выравнивать строку по-иному.</p> <p> </p> <p><span style="font-style: italic; font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">Поле индекса</span> позволяет динамически изменить последовательность извлечения аргументов из массива. Обычно аргументы извлекаются последовательно, по мере их востребования спецификаторами формата. Поле индекса означает, что следующим нужно извлечь аргумент с данным индексом. Пользуясь индексом, одни и те же аргументы могут быть использованы многократно. Например, вызов Format ( ' %s %s %0 : s %s ', [ 'Yes', 'No' ] ) Даст на выходе строку 'Yes No Yes No'.</p> <p> </p> <p><span style="font-style: italic; font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">Поле точности</span>играет разную роль в зависимости от того, с каким типом преобразования применяется. Его особенности приведены вместе с описанием типа (с теми из них, где оно имеет смысл).</p> <p>Поля индекса, ширины и точности могут быть заданы напрямую или косвенно. Первый способ подразумевает явное указание значения поля (например, ' %10 . 5f '). Для косвенного задания значений нужно в соответствующих местах цифры заменить звездочками (например, '%*.*f'). В этом случае вместо звездочек будут подставлены следующие значения из списка аргументов (они обязательно должны быть целыми числами). Например, выражение</p> <p> </p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Format(</span><span class="f_CodeExample" style="color: #ff0000;">'Value is %*.*'</span><span class="f_CodeExample" style="color: #000000;">,[</span><span class="f_CodeExample" style="color: #800000;">10</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #800000;">5</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">.</span><span class="f_CodeExample" style="color: #800000;">718</span><span class="f_CodeExample" style="color: #000000;">]);</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt;">эквивалентно:</span></p> <p> </p> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Format(</span><span class="f_CodeExample" style="color: #ff0000;">'Value is %10.5'</span><span class="f_CodeExample" style="color: #000000;">,[</span><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">.</span><span class="f_CodeExample" style="color: #800000;">718</span><span class="f_CodeExample" style="color: #000000;">]);</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p> </p> <p>Как уже упоминалось, наиболее употребимой функцией из группы форматирующих является Format, которая работает со строками типа string и максимально освобождает программиста от рутинной работы. Другие функции используют то же ядро и правила преобразования, но отличаются параметрами:</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">procedure FmtStr(var Result: string; const Format: string; const Args: array of const);</span> To же, что и Format, но оформлено в виде процедуры. Результат преобразования возвращается в параметре Result.</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">function StrFmt(Buffer, Format: PChar; const Args: array of const): PChar;</span> Форматирующая строка должна находиться в параметре Format, а результирующая помещается в буфер Buffer (он должен иметь нужную длину). Функция возвращает указатель на Buffer.</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">function StrLFmt(Buffer: PChar; MaxLen: Cardinal; Format: PChar; const Args: array of const) : PChar;</span> Работает как StrFmt, но длина результирующей строки не будет превышать MaxLen символов.</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">function FormatBuf(var Buffer; BufLen: Cardinal; const Format; FmtLen: Cardinal; const Args: array of const) : Cardinal;</span> Форматирующая строка находится в буфере Format длиной FmtLen, a результирующая — в буфере Buffer длиной BufLen. Функция возвращает число реально помещенных в Buffer символов, причем оно всегда меньше или равно BufLen.</p> <p>Еще со времен языка FORTRAN у программистов появилась необходимость форматировать строки, направляемые на устройства вывода. Требовался легкий способ для того, чтобы не просто преобразовать число в строку, но также объединить эту строку с другими и включить ее в состав целого предложения.</p> <p> </p> <p>В Delphi существует группа функций форматирования строк. Их рассмотрение начнем с наиболее часто встречающегося представителя — функции Format:</p> <p> </p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> Format (</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> Format: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> Args: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">array</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;">) : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p>Первым параметром функции выступает форматирующая строка. Это — обычная текстовая строка, но в ней на нужных местах стоят специальные символы, которые определяют, какие и как туда будут подставлены параметры.</p> <p> </p> <p>Второй параметр функции Format называется списком аргументов. Он и содержит "вставляемые" в форматирующую строку параметры. Обратите внимение, что этот открытый массив имеет тип array of const. и в нем может передаваться переменное число разнотипных параметров. Например, после выполнения</p> <p> </p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">S := Format(</span><span class="f_CodeExample" style="color: #ff0000;">'Product %s , version %d.%d'</span><span class="f_CodeExample" style="color: #000000;">, [ </span><span class="f_CodeExample" style="color: #ff0000;">'Borland Delphi'</span><span class="f_CodeExample" style="color: #000000;"> , </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">]);</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p>строке S будет присвоено: <span style="font-weight: bold;">Product Borland Delphi , version 1.0</span>. Рассмотрим подробнее правила, по которьм составляется форматирующая строка.</p> <p> </p> <p>"Специальные" места в ней называются спецификаторами формата и представляют собой следующие конструкции</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">"%" [index":"] ["-"I [width] ["."prec] type</span></p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt;">где обозначены:</span></p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt;">• символ -%", с которого начинаются все спецификаторы формата (обязательный);</span></p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt;">• поле индекса аргумента [ index " : " ] (необязательное);</span></p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt;">• признак выравнивания по левому краю ["-"I (необязательный);</span></p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt;">• поле ширины [width] (необязательное);</span></p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt;">• поле точности [ - . - prec ] (необязательное);</span></p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt;">• символ типа преобразования type (обязательный).</span></p> <p> </p> <p>Каждый спецификатор формата соответствует как минимум одному из элементов списка аргументов и определяет, как именно рассматривать его и преобразовывать в строку.</p> <p>Функция Format поддерживает следующие символы типа преобразования:</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">d Десятичный</span> Элемент должен быть целым числом и преобразуется в строку десятичных цифр. Если при символе есть поле точности, то в выходной строке будет минимум ргес цифр; если при преобразовании числа их потребуется меньше, то строка дополняется слева нулями.</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">х Шестнадцатиричный</span> Как тип d, но элемент преобразуется в строку шестнадцатиричных цифр.</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">е Научный</span> Элемент должен быть числом с плавающей точкой. Он преобразуется к нормализованному виду -d.dddE+ddd. Перед десятичной точкой всегда находится одна цифра (при необходимости, с минусом). После символа "Е" идет показатель степени, имеющий знак и состоящий не менее чем из 3 цифр. Общее число символов в представлении числа определяется полем ргес (по умолчанию 15).</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">f Фиксированный</span> Элемент должен быть числом с плавающей точкой. Он преобразуется к виду -ddd.ddd. Поле ргес означает количество цифр после десятичной точки (по умолчанию 2).</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">l Обобщенный </span> Элемент должен быть числом с плавающей точкой. Он преобразуется к одному из двух вышеперечисленных видов — выбирается тот, который обеспечивает более короткую запись. Если требуемое число цифр слева от десятичной точки меньше значения поля ширины и само число больше 10" , применяется фиксированный тип. Удаляются все впереди идущие нули, десятичная точка (при возможности), а также символы, разделяющие строку на группы по три цифры.</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">п m Числовой Денежный</span> Совпадает с типом f за исключением того, что после каждой группы из трех цифр ставятся разделительные символы: d,ddd, ddd.ddd.... Элемент должен быть числом с плавающей точкой, отражающей денежную сумму. Способ ее представления зависит от значений глобальных констант, определенных в модуле SYSUTILS (см. ниже). В свою очередь, они зависят от настройки Windows на обозначения, принятые в данной стране.</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">Р Указатель</span> Элемент должен быть указателем. На выходе он будет представлять из себя строку шестнадцатиричных цифр вида ХХХХ: YYYY, где ХХХХ — селектор, YYYY — смещение.</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">s Строка</span> Элемент может иметь тип string, PChar или быть отдельным символом (Char). Эта строка (или символ) вставляются вместо спецификатора формата. Если присутствует поле ргес и длина строки больше его значения, то она усекается.</p> <p> </p> <p>Примечания:</p> <p>1. Форматирующие символы можно задавать как в верхнем, так и в нижнем регистрах.</p> <p>2. Тип преобразования m (денежный) тесно связан с правилами представления, принятыми в конкретной стране. Для этого в модуле SYSUTILS определены значения ряда типизированных констант, начальные значения которых берутся из секции [Inti] файла WIN.INI. Вы можете изменять их значения в соответствии с вашими потребностями:</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">CurrencyString: string[7];</span> Символ (или символы), добавляемые к строке с представлением денежной суммы и обозначающие национальную денежную единицу. Это может быть, например, '$', 'DM' или 'руб'.</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">CurrencyFormat: Byte;</span> Определяет способ добавления знака денежной единицы к строке. Число 1 будет преобразовано так в зависимости от значения этого параметра: '$!' при 0; '1$' при 1; '$ Г при 2; '1 $' при 3.</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">NegCurrFormat: Byte;</span> Определяет способ добавления знака денежной единицы и минуса к строке в том случае, если происходит преобразование отрицательного числа (к положительным числам отношения не имеет). Число -1 будет преобразовано так в зависимости от значения этого параметра: '($!)' при 0; '-$!' при 1; '$-1' при 2; '$!-' при 3; '(!$)' при 4; '-!$' при 5; 'i-$' при 6; '!$-' при 7; '-1 $' при 8; '-$ Г при 9; '$ 1-' при 10.</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">CurrencyDecimals: Byte;</span> Число знаков после запятой в представлении денежных сумм. Например, число 10.15 при разных значениях этого параметра отобразится так: '$10' при 0, '$10.15' при 2, '$10.1500' при 4.</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">ThousandSeparator: Char;</span> Символ, разделяющий строку на группы по три цифры справа налево (разделитель тысяч). Применяется, в частности, в типе преобразования п.</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">DecimalSeparator: Char;</span> Символ, отделяющий дробную часть числа от целой.</p> <p> </p> <p>Мы закончили рассмотрение символа типа преобразования. Рассмотрим остальные составные части спецификатора формата.</p> <p> </p> <p><span style="font-style: italic; font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">Поле ширины</span>устанавливает минимально допустимое количество символов в преобразованной строке. Это означает, что если она короче, чем задано в этом поле, то происходит добавление пробелов до требуемого количества. По умолчанию пробелы добавляются спереди (выравнивание по правому краю), но признак выравнивания по левому краю ("-"; он должен стоять перед полем ширины) позволяет выравнивать строку по-иному.</p> <p> </p> <p><span style="font-style: italic; font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">Поле индекса</span> позволяет динамически изменить последовательность извлечения аргументов из массива. Обычно аргументы извлекаются последовательно, по мере их востребования спецификаторами формата. Поле индекса означает, что следующим нужно извлечь аргумент с данным индексом. Пользуясь индексом, одни и те же аргументы могут быть использованы многократно. Например, вызов Format ( ' %s %s %0 : s %s ', [ 'Yes', 'No' ] ) Даст на выходе строку 'Yes No Yes No'.</p> <p> </p> <p><span style="font-style: italic; font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">Поле точности</span>играет разную роль в зависимости от того, с каким типом преобразования применяется. Его особенности приведены вместе с описанием типа (с теми из них, где оно имеет смысл).</p> <p>Поля индекса, ширины и точности могут быть заданы напрямую или косвенно. Первый способ подразумевает явное указание значения поля (например, ' %10 . 5f '). Для косвенного задания значений нужно в соответствующих местах цифры заменить звездочками (например, '%*.*f'). В этом случае вместо звездочек будут подставлены следующие значения из списка аргументов (они обязательно должны быть целыми числами). Например, выражение</p> <p> </p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Format(</span><span class="f_CodeExample" style="color: #ff0000;">'Value is %*.*'</span><span class="f_CodeExample" style="color: #000000;">,[</span><span class="f_CodeExample" style="color: #800000;">10</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #800000;">5</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">.</span><span class="f_CodeExample" style="color: #800000;">718</span><span class="f_CodeExample" style="color: #000000;">]);</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt;">эквивалентно:</span></p> <p> </p> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Format(</span><span class="f_CodeExample" style="color: #ff0000;">'Value is %10.5'</span><span class="f_CodeExample" style="color: #000000;">,[</span><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">.</span><span class="f_CodeExample" style="color: #800000;">718</span><span class="f_CodeExample" style="color: #000000;">]);</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p> </p> <p>Как уже упоминалось, наиболее употребимой функцией из группы форматирующих является Format, которая работает со строками типа string и максимально освобождает программиста от рутинной работы. Другие функции используют то же ядро и правила преобразования, но отличаются параметрами:</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">procedure FmtStr(var Result: string; const Format: string; const Args: array of const);</span> To же, что и Format, но оформлено в виде процедуры. Результат преобразования возвращается в параметре Result.</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">function StrFmt(Buffer, Format: PChar; const Args: array of const): PChar;</span> Форматирующая строка должна находиться в параметре Format, а результирующая помещается в буфер Buffer (он должен иметь нужную длину). Функция возвращает указатель на Buffer.</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">function StrLFmt(Buffer: PChar; MaxLen: Cardinal; Format: PChar; const Args: array of const) : PChar;</span> Работает как StrFmt, но длина результирующей строки не будет превышать MaxLen символов.</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-size: 11pt; font-weight: bold;">function FormatBuf(var Buffer; BufLen: Cardinal; const Format; FmtLen: Cardinal; const Args: array of const) : Cardinal;</span> Форматирующая строка находится в буфере Format длиной FmtLen, a результирующая — в буфере Buffer длиной BufLen. Функция возвращает число реально помещенных в Buffer символов, причем оно всегда меньше или равно BufLen.</p> Функция для удаления из строки лишних символов 2013-08-20T19:26:40+07:00 2013-08-20T19:26:40+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/formatirovanie-strok/funktsiya-dlya-udaleniya-iz-stroki-lishnikh-simvolov.html Super User toto44@inbox.ru <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ **** UBPFD *********** by delphibase .endimus .com ****</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">&gt;&gt; Функция для удаления из строки "лишних" символов.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Функция для удаления из строки "лишних" символов.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Входные параметры:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Input - входная строка, которую необходимо очистить от лишних символов</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">EArray - строка, содержащая набор разрешенных или запрещеных символов</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">в зависимости от Action</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Action - указывает на то, что из себя представляет массив EArray.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Action может принимать следующие значения:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">1 - массив EArray представляет собой строку разрешенных символов</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">2 - EArray - массив запрещенных символов.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Зависимости: делал в Д5, 6 под Win9x</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: Ru, DiVo_Ru @ rambler.ru, Одесса</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: DiVo 2002, creator Ru</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">***************************************************** }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> strtst(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span><span class="f_CodeExample" style="color: #000000;"> Input: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; EArray: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; Action: integer): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">case</span><span class="f_CodeExample" style="color: #000000;"> Action </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> length(Input) &lt;&gt; </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> pos(Input[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">], EArray) = </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> delete(Input, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result := result + Input[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">];</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> delete(Input, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> length(Input) &lt;&gt; </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> pos(Input[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">], EArray) &lt;&gt; </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> delete(Input, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result := result + Input[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">];</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> delete(Input, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> messagebox(</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">'Не корректный вызов функции.'</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">''</span><span class="f_CodeExample" style="color: #000000;">, mb_ok);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Пример использования: </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// 1.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">s := edit1.text;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">s := strtst(s, </span><span class="f_CodeExample" style="color: #ff0000;">'0123456789.'</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">edit1.text := s;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// например на входе: 0.16+</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// на выходе будет: 0.16</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// 2.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">s := edit1.text;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">s := strtst(s, </span><span class="f_CodeExample" style="color: #ff0000;">'/*-+,'</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">edit1.text := s;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// на входе: 0.16+</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// на выходе будет: 0.16</span></p> </td> </tr> </tbody> </table> </div> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ **** UBPFD *********** by delphibase .endimus .com ****</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">&gt;&gt; Функция для удаления из строки "лишних" символов.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Функция для удаления из строки "лишних" символов.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Входные параметры:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Input - входная строка, которую необходимо очистить от лишних символов</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">EArray - строка, содержащая набор разрешенных или запрещеных символов</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">в зависимости от Action</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Action - указывает на то, что из себя представляет массив EArray.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Action может принимать следующие значения:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">1 - массив EArray представляет собой строку разрешенных символов</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">2 - EArray - массив запрещенных символов.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Зависимости: делал в Д5, 6 под Win9x</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: Ru, DiVo_Ru @ rambler.ru, Одесса</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: DiVo 2002, creator Ru</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">***************************************************** }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> strtst(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span><span class="f_CodeExample" style="color: #000000;"> Input: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; EArray: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; Action: integer): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">case</span><span class="f_CodeExample" style="color: #000000;"> Action </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> length(Input) &lt;&gt; </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> pos(Input[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">], EArray) = </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> delete(Input, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result := result + Input[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">];</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> delete(Input, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> length(Input) &lt;&gt; </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> pos(Input[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">], EArray) &lt;&gt; </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> delete(Input, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result := result + Input[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">];</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> delete(Input, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> messagebox(</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">'Не корректный вызов функции.'</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">''</span><span class="f_CodeExample" style="color: #000000;">, mb_ok);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Пример использования: </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// 1.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">s := edit1.text;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">s := strtst(s, </span><span class="f_CodeExample" style="color: #ff0000;">'0123456789.'</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">edit1.text := s;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// например на входе: 0.16+</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// на выходе будет: 0.16</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// 2.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">s := edit1.text;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">s := strtst(s, </span><span class="f_CodeExample" style="color: #ff0000;">'/*-+,'</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">edit1.text := s;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// на входе: 0.16+</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// на выходе будет: 0.16</span></p> </td> </tr> </tbody> </table> </div>