Слова Delphi — среда быстрой разработки, где в качестве языка программирования используется Object Pascal. На сегодняшний день позволяет разрабатывать ПО для Microsoft Windows, Mac OS, iOS и Android и входит в состав Embarcadero RAD Studio https://delphi-hlp.ru/index.php/rabota-so-strokami/slova.feed 2022-09-13T04:34:19+07:00 Delphi help info@delphi-hlp.ru Joomla! - Open Source Content Management Быстрая функция для разбивки строки на части (слова) в один цикл 2013-08-20T16:46:58+07:00 2013-08-20T16:46:58+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/slova/bystraya-funktsiya-dlya-razbivki-stroki-na-chasti-slova-v-odin-tsikl.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;">type</span><span class="f_CodeExample" style="color: #000000;"> TDelim=</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">set</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;"> TArrayOfString=</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></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: #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;">// fcToParts</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;"> fcToParts(sString:</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">String</span><span class="f_CodeExample" style="color: #000000;">;tdDelim:TDelim):TArrayOfString</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span><span class="f_CodeExample" style="color: #000000;"> iCounter,iBegin:Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span><span class="f_CodeExample" style="color: #000080;">//fc</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(sString)&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: #000000;">include(tdDelim,</span><span class="f_CodeExample" style="color: #ff0000;">#0</span><span class="f_CodeExample" style="color: #000000;">);iBegin:=</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">; SetLength(Result,</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;"> iCounter:=</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(sString)+</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: #008000; font-weight: bold;">begin</span><span class="f_CodeExample" style="color: #000080;">//for</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;"> (sString[iCounter] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">in</span><span class="f_CodeExample" style="color: #000000;"> tdDelim) </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;"> SetLength(Result,Length(Result)+</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[Length(Result)-</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">]:=Copy(sString,iBegin,iCounter-iBegin);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> iBegin:=iCounter+</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><span class="f_CodeExample" style="color: #000080;">//for</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: #000080;">//if</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: #000080;">//fc</span></p> </td> </tr> </tbody> </table> </div> <p> </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: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StrArr:TArrayOfString</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StrArr:=fcToParts(</span><span class="f_CodeExample" style="color: #ff0000;">'строка1-строка2@строка3'</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> <p class="p_CodeExample"> </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><span style="color: #000000; font-weight: bold;">Взято с Vingrad.ru</span><span style="color: #0000ff; text-decoration: underline;">https://forum.vingrad</span></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><span class="f_CodeExample" style="color: #000000;"> TDelim=</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">set</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;"> TArrayOfString=</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></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: #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;">// fcToParts</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;"> fcToParts(sString:</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">String</span><span class="f_CodeExample" style="color: #000000;">;tdDelim:TDelim):TArrayOfString</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span><span class="f_CodeExample" style="color: #000000;"> iCounter,iBegin:Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span><span class="f_CodeExample" style="color: #000080;">//fc</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(sString)&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: #000000;">include(tdDelim,</span><span class="f_CodeExample" style="color: #ff0000;">#0</span><span class="f_CodeExample" style="color: #000000;">);iBegin:=</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">; SetLength(Result,</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;"> iCounter:=</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(sString)+</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: #008000; font-weight: bold;">begin</span><span class="f_CodeExample" style="color: #000080;">//for</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;"> (sString[iCounter] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">in</span><span class="f_CodeExample" style="color: #000000;"> tdDelim) </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;"> SetLength(Result,Length(Result)+</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[Length(Result)-</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">]:=Copy(sString,iBegin,iCounter-iBegin);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> iBegin:=iCounter+</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><span class="f_CodeExample" style="color: #000080;">//for</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: #000080;">//if</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: #000080;">//fc</span></p> </td> </tr> </tbody> </table> </div> <p> </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: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StrArr:TArrayOfString</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StrArr:=fcToParts(</span><span class="f_CodeExample" style="color: #ff0000;">'строка1-строка2@строка3'</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> <p class="p_CodeExample"> </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><span style="color: #000000; font-weight: bold;">Взято с Vingrad.ru</span><span style="color: #0000ff; text-decoration: underline;">https://forum.vingrad</span></p> Заполнение списка словами из строки 2013-08-20T16:48:07+07:00 2013-08-20T16:48:07+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/slova/zapolnenie-spiska-slovami-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: #000080;">{ **** UBPFD *********** by delphibase.endimus ****</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">&gt;&gt; Заполнение списка (TargetList) словами из строки (Text),</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;">Функция заполняет список TargetList, словами (наборами символов)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">из строки Text. Имеется возможность получения позиции каждого</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">слова в строке (ReturnWordPlaces = True); добавления в TargetList</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">не только слов, но и разделителей (ReturnWordDeviders = True);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">указания более чем одного разделителя (все в строке WordDeviders).</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;">длинной более чем 1 символ.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Result = TargetList.Count; {количество строк в TargetList}</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Зависимости: sysutils, classes, system</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Автор: VID, vidsnap0mail.ru, ICQ: </span><span class="f_CodeExample" style="color: #800000;">132234868</span><span class="f_CodeExample" style="color: #000000;">, Махачкала</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Copyright: VID</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;">* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *</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;">function</span><span class="f_CodeExample" style="color: #000000;"> GetWordListFromText(Text, WordDeviders: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; TargetList: TStrings;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">ReturnWordPlace, ReturnWordDeviders: Boolean): 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;">X, TextLength, WP: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">W: </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 := </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;">TextLength := Length(Text);</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;"> TextLength = </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"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> Length(WordDeviders) = </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"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> TargetList = </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;"> Exit;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TargetList.BeginUpdate();</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TargetList.Clear;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">WordDeviders := AnsiUpperCase(WordDeviders);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">W := </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;">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: #000000;">WP := </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;">if</span><span class="f_CodeExample" style="color: #000000;"> (POS(AnsiUpperCase(Text[x]), WordDeviders) = </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;"> (X &lt;= TextLength)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> W := W + Text[x]</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;"> W &lt;&gt; </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: #008000; font-weight: bold;">case</span><span class="f_CodeExample" style="color: #000000;"> ReturnWordPlace </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> True: TargetList.Add(W + </span><span class="f_CodeExample" style="color: #ff0000;">'='</span><span class="f_CodeExample" style="color: #000000;"> + Inttostr(WP));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> False: TargetList.Add(W);</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;"> W := </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;"> WP := 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;">if</span><span class="f_CodeExample" style="color: #000000;"> ReturnWordDeviders = true </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;">case</span><span class="f_CodeExample" style="color: #000000;"> ReturnWordPlace </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> True: TargetList.Add(Text[x] + </span><span class="f_CodeExample" style="color: #ff0000;">'='</span><span class="f_CodeExample" style="color: #000000;"> + Inttostr(x));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> False: TargetList.Add(TEXT[x]);</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;">until</span><span class="f_CodeExample" style="color: #000000;"> (X &gt; TextLength);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TargetList.EndUpdate;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := TargetList.Count;</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; Заполнение списка (TargetList) словами из строки (Text),</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;">Функция заполняет список TargetList, словами (наборами символов)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">из строки Text. Имеется возможность получения позиции каждого</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">слова в строке (ReturnWordPlaces = True); добавления в TargetList</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">не только слов, но и разделителей (ReturnWordDeviders = True);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">указания более чем одного разделителя (все в строке WordDeviders).</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;">длинной более чем 1 символ.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Result = TargetList.Count; {количество строк в TargetList}</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Зависимости: sysutils, classes, system</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Автор: VID, vidsnap0mail.ru, ICQ: </span><span class="f_CodeExample" style="color: #800000;">132234868</span><span class="f_CodeExample" style="color: #000000;">, Махачкала</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Copyright: VID</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;">* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *</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;">function</span><span class="f_CodeExample" style="color: #000000;"> GetWordListFromText(Text, WordDeviders: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; TargetList: TStrings;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">ReturnWordPlace, ReturnWordDeviders: Boolean): 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;">X, TextLength, WP: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">W: </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 := </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;">TextLength := Length(Text);</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;"> TextLength = </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"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> Length(WordDeviders) = </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"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> TargetList = </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;"> Exit;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TargetList.BeginUpdate();</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TargetList.Clear;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">WordDeviders := AnsiUpperCase(WordDeviders);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">W := </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;">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: #000000;">WP := </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;">if</span><span class="f_CodeExample" style="color: #000000;"> (POS(AnsiUpperCase(Text[x]), WordDeviders) = </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;"> (X &lt;= TextLength)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> W := W + Text[x]</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;"> W &lt;&gt; </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: #008000; font-weight: bold;">case</span><span class="f_CodeExample" style="color: #000000;"> ReturnWordPlace </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> True: TargetList.Add(W + </span><span class="f_CodeExample" style="color: #ff0000;">'='</span><span class="f_CodeExample" style="color: #000000;"> + Inttostr(WP));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> False: TargetList.Add(W);</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;"> W := </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;"> WP := 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;">if</span><span class="f_CodeExample" style="color: #000000;"> ReturnWordDeviders = true </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;">case</span><span class="f_CodeExample" style="color: #000000;"> ReturnWordPlace </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> True: TargetList.Add(Text[x] + </span><span class="f_CodeExample" style="color: #ff0000;">'='</span><span class="f_CodeExample" style="color: #000000;"> + Inttostr(x));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> False: TargetList.Add(TEXT[x]);</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;">until</span><span class="f_CodeExample" style="color: #000000;"> (X &gt; TextLength);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TargetList.EndUpdate;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := TargetList.Count;</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-20T16:23:46+07:00 2013-08-20T16:23:46+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/slova/kak-osushchestvit-poisk-slov-po-maske.html Super User toto44@inbox.ru <p>Может у кого-нибудь есть готовая функция поиска(выборки) слов по маске (с использованием символов '*' и '?').</p> <p> </p> <p>Такая функция в Дельфи есть: MatchesMask из модуля masks.</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #008000; font-weight: bold;">Автор ответа:</span><span style="font-family: 'Times New Roman'; color: #ff0000;">MBo </span></p> <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><span style="color: #000000; font-weight: bold;">Взято с Vingrad</span><span style="color: #0000ff; text-decoration: underline;">https://forum.vingrad</span></p> <p>Может у кого-нибудь есть готовая функция поиска(выборки) слов по маске (с использованием символов '*' и '?').</p> <p> </p> <p>Такая функция в Дельфи есть: MatchesMask из модуля masks.</p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #008000; font-weight: bold;">Автор ответа:</span><span style="font-family: 'Times New Roman'; color: #ff0000;">MBo </span></p> <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><span style="color: #000000; font-weight: bold;">Взято с Vingrad</span><span style="color: #0000ff; text-decoration: underline;">https://forum.vingrad</span></p> Как подсчитать количество слов в строке? 2013-08-20T16:27:02+07:00 2013-08-20T16:27:02+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/slova/kak-podschitat-kolichestvo-slov-v-stroke.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;"> Seps(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">As</span><span class="f_CodeExample" style="color: #000000;">_Arg: Char): 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;">Seps := </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">As</span><span class="f_CodeExample" style="color: #000000;">_Arg </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">in</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> [</span><span class="f_CodeExample" style="color: #ff0000;">#0</span><span class="f_CodeExample" style="color: #000000;">..#$1F, </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><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><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><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><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> <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;"> WordCount(CText: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): Longint; </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;">Ix: Word; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Work_Count: Longint; </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;">Work_Count := </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;">Ix := </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;">while</span><span class="f_CodeExample" style="color: #000000;"> Ix &lt;= Length(CText) </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;">while</span><span class="f_CodeExample" style="color: #000000;"> (Ix &lt;= Length(CText)) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (Seps(CText[Ix])) </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(Ix); </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;"> Ix &lt;= Length(CText) </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(Work_Count); </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;"> (Ix &lt;= Length(CText)) </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;"> Seps(CText[Ix])) </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(Ix); </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;">Word_Count := Work_Count; </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"><span class="f_CodeExample" style="color: #000080;">To count the number opf words in a TMemo Component, </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">call: WordCount(Memo1.Text) </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">}</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> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Взято с </span>https://delphiworld. narod</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;">Возвращает количество слов в строке, границы слов определяются в</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;">s - строка, в которой происходит подсчет слов;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Delimiters множество, содержащее символы-разделители слов;</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;">Зависимости: SysUtils, UBPFD.WordScan</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: vuk, vuk@fcenter.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;">Дата: 18 апреля 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;"> CountWords(</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;">; Delimiters: TSysCharSet): 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;">wStart, wLen: 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 := </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;">wStart := </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;">while</span><span class="f_CodeExample" style="color: #000000;"> WordScan(s, wStart, wLen, Delimiters) </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(Result);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(wStart, wLen);</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;">WordCount := CountWords(</span><span class="f_CodeExample" style="color: #ff0000;">'This is a sample'</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: 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;"> Seps(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">As</span><span class="f_CodeExample" style="color: #000000;">_Arg: Char): 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;">Seps := </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">As</span><span class="f_CodeExample" style="color: #000000;">_Arg </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">in</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> [</span><span class="f_CodeExample" style="color: #ff0000;">#0</span><span class="f_CodeExample" style="color: #000000;">..#$1F, </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><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><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><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><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> <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;"> WordCount(CText: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): Longint; </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;">Ix: Word; </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Work_Count: Longint; </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;">Work_Count := </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;">Ix := </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;">while</span><span class="f_CodeExample" style="color: #000000;"> Ix &lt;= Length(CText) </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;">while</span><span class="f_CodeExample" style="color: #000000;"> (Ix &lt;= Length(CText)) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (Seps(CText[Ix])) </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(Ix); </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;"> Ix &lt;= Length(CText) </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(Work_Count); </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;"> (Ix &lt;= Length(CText)) </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;"> Seps(CText[Ix])) </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(Ix); </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;">Word_Count := Work_Count; </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"><span class="f_CodeExample" style="color: #000080;">To count the number opf words in a TMemo Component, </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">call: WordCount(Memo1.Text) </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">}</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> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Взято с </span>https://delphiworld. narod</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;">Возвращает количество слов в строке, границы слов определяются в</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;">s - строка, в которой происходит подсчет слов;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Delimiters множество, содержащее символы-разделители слов;</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;">Зависимости: SysUtils, UBPFD.WordScan</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: vuk, vuk@fcenter.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;">Дата: 18 апреля 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;"> CountWords(</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;">; Delimiters: TSysCharSet): 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;">wStart, wLen: 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 := </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;">wStart := </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;">while</span><span class="f_CodeExample" style="color: #000000;"> WordScan(s, wStart, wLen, Delimiters) </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(Result);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(wStart, wLen);</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;">WordCount := CountWords(</span><span class="f_CodeExample" style="color: #ff0000;">'This is a sample'</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-20T16:48:56+07:00 2013-08-20T16:48:56+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/slova/opredelit-koren-slova-dlya-poiska-pokhozhikh-slov.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;"> RootOfWord(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;">label</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">start;</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;">sGlas = </span><span class="f_CodeExample" style="color: #ff0000;">'аеёиоуыэюяaeiou'</span><span class="f_CodeExample" style="color: #000000;">; </span><span class="f_CodeExample" style="color: #000080;">// With english letters</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">sSoglas = </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;">sCompletions1 = </span><span class="f_CodeExample" style="color: #ff0000;">'й ь s'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">sCompletions2 = </span><span class="f_CodeExample" style="color: #ff0000;">'ам ям ом ем ин ём ся ет ит ут ют ат ят ыв ив ев ан ян ов ев ог ег ир ер ых ок ющ ущ er ed'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">sCompletions3 = </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;">sAttachments1 = </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;">sAttachments2 = </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;">sAttachments3 = </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;">sAttachments4 = </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;">var</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;">i, iCnt, iGlasCount, iCheckCount: 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;">sResult := AnsiLowerCase(Trim(s));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">iCheckCount := </span><span class="f_CodeExample" style="color: #800000;">0</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;">start:</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;">if</span><span class="f_CodeExample" style="color: #000000;"> Length(sResult) &gt; </span><span class="f_CodeExample" style="color: #800000;">3</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;">if</span><span class="f_CodeExample" style="color: #000000;"> sResult[Length(sResult) - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">] + sResult[Length(sResult)] = </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;"> Delete(sResult, Length(sResult) - </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"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">(* E N G L I S H *)</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// "ing"</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) &gt; </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: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> sResult[Length(sResult) - </span><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">] + sResult[Length(sResult) - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">] + sResult[Length(sResult)] = </span><span class="f_CodeExample" style="color: #ff0000;">'ing'</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(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"> </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: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> Length(sResult) &gt; </span><span class="f_CodeExample" style="color: #800000;">3</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;"> iGlasCount := </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;"> i := Length(sResult) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">downto</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: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> Pos(sResult[i], sGlas) &lt;&gt; </span><span class="f_CodeExample" style="color: #800000;">0</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: #000000;"> inc(iGlasCount)</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;"> break;</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;"> iGlasCount &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: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> iGlasCount := iGlasCount - </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(sResult, Length(sResult) - iGlasCount, iGlasCount + </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"> </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;">if</span><span class="f_CodeExample" style="color: #000000;"> Length(sResult) &gt; </span><span class="f_CodeExample" style="color: #800000;">3</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;">if</span><span class="f_CodeExample" style="color: #000000;"> Pos(sResult[Length(sResult)], sCompletions1) &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(sResult, Length(sResult), </span><span class="f_CodeExample" style="color: #800000;">1</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: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> Length(sResult) &gt; </span><span class="f_CodeExample" style="color: #800000;">3</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;">if</span><span class="f_CodeExample" style="color: #000000;"> sResult[Length(sResult) - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">] + sResult[Length(sResult)] = </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;"> Delete(sResult, Length(sResult) - </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"> </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) &gt; </span><span class="f_CodeExample" style="color: #800000;">3</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;">while</span><span class="f_CodeExample" style="color: #000000;"> Pos(sResult[Length(sResult) - </span><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">] + sResult[Length(sResult) - </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;"> sResult[Length(sResult)], sCompletions3) &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;"> Length(sResult) &gt; </span><span class="f_CodeExample" style="color: #800000;">3</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(sResult, Length(sResult) - </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;">3</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;"> 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"> </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) &gt; </span><span class="f_CodeExample" style="color: #800000;">3</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;">while</span><span class="f_CodeExample" style="color: #000000;"> Pos(sResult[Length(sResult) - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">] + sResult[Length(sResult)], sCompletions2) &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;"> Length(sResult) &gt; </span><span class="f_CodeExample" style="color: #800000;">3</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(sResult, Length(sResult) - </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;">else</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"> </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;">if</span><span class="f_CodeExample" style="color: #000000;"> Length(sResult) &gt; </span><span class="f_CodeExample" style="color: #800000;">3</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;"> iGlasCount := </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;"> i := Length(sResult) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">downto</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: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> Pos(sResult[i], sGlas) &lt;&gt; </span><span class="f_CodeExample" style="color: #800000;">0</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: #000000;"> inc(iGlasCount)</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;"> break;</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;"> iGlasCount &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: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> iGlasCount := iGlasCount - </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(sResult, Length(sResult) - iGlasCount, iGlasCount + </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"> </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;">iCnt := </span><span class="f_CodeExample" style="color: #800000;">4</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(sResult) &gt; iCnt </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;">if</span><span class="f_CodeExample" style="color: #000000;"> Pos(Copy(sResult, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, iCnt), sAttachments4) &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(sResult, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, iCnt);</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">iCnt := </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: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> Length(sResult) &gt; iCnt </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;">if</span><span class="f_CodeExample" style="color: #000000;"> Pos(Copy(sResult, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, iCnt), sAttachments3) &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(sResult, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, iCnt);</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">iCnt := </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;">if</span><span class="f_CodeExample" style="color: #000000;"> Length(sResult) &gt; iCnt </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;">if</span><span class="f_CodeExample" style="color: #000000;"> Pos(Copy(sResult, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, iCnt), sAttachments2) &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(sResult, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, iCnt);</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">iCnt := </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(sResult) &gt; iCnt </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;">if</span><span class="f_CodeExample" style="color: #000000;"> Pos(Copy(sResult, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, iCnt), sAttachments1) &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(sResult, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, iCnt);</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">inc(iCheckCount);</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;"> iCheckCount &lt; </span><span class="f_CodeExample" style="color: #800000;">2</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;"> start;</span></p> <p class="p_CodeExample"> </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;"> RootOfWord(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;">label</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">start;</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;">sGlas = </span><span class="f_CodeExample" style="color: #ff0000;">'аеёиоуыэюяaeiou'</span><span class="f_CodeExample" style="color: #000000;">; </span><span class="f_CodeExample" style="color: #000080;">// With english letters</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">sSoglas = </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;">sCompletions1 = </span><span class="f_CodeExample" style="color: #ff0000;">'й ь s'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">sCompletions2 = </span><span class="f_CodeExample" style="color: #ff0000;">'ам ям ом ем ин ём ся ет ит ут ют ат ят ыв ив ев ан ян ов ев ог ег ир ер ых ок ющ ущ er ed'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">sCompletions3 = </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;">sAttachments1 = </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;">sAttachments2 = </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;">sAttachments3 = </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;">sAttachments4 = </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;">var</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;">i, iCnt, iGlasCount, iCheckCount: 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;">sResult := AnsiLowerCase(Trim(s));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">iCheckCount := </span><span class="f_CodeExample" style="color: #800000;">0</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;">start:</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;">if</span><span class="f_CodeExample" style="color: #000000;"> Length(sResult) &gt; </span><span class="f_CodeExample" style="color: #800000;">3</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;">if</span><span class="f_CodeExample" style="color: #000000;"> sResult[Length(sResult) - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">] + sResult[Length(sResult)] = </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;"> Delete(sResult, Length(sResult) - </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"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">(* E N G L I S H *)</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// "ing"</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) &gt; </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: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> sResult[Length(sResult) - </span><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">] + sResult[Length(sResult) - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">] + sResult[Length(sResult)] = </span><span class="f_CodeExample" style="color: #ff0000;">'ing'</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(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"> </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: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> Length(sResult) &gt; </span><span class="f_CodeExample" style="color: #800000;">3</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;"> iGlasCount := </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;"> i := Length(sResult) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">downto</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: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> Pos(sResult[i], sGlas) &lt;&gt; </span><span class="f_CodeExample" style="color: #800000;">0</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: #000000;"> inc(iGlasCount)</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;"> break;</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;"> iGlasCount &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: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> iGlasCount := iGlasCount - </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(sResult, Length(sResult) - iGlasCount, iGlasCount + </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"> </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;">if</span><span class="f_CodeExample" style="color: #000000;"> Length(sResult) &gt; </span><span class="f_CodeExample" style="color: #800000;">3</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;">if</span><span class="f_CodeExample" style="color: #000000;"> Pos(sResult[Length(sResult)], sCompletions1) &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(sResult, Length(sResult), </span><span class="f_CodeExample" style="color: #800000;">1</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: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> Length(sResult) &gt; </span><span class="f_CodeExample" style="color: #800000;">3</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;">if</span><span class="f_CodeExample" style="color: #000000;"> sResult[Length(sResult) - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">] + sResult[Length(sResult)] = </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;"> Delete(sResult, Length(sResult) - </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"> </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) &gt; </span><span class="f_CodeExample" style="color: #800000;">3</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;">while</span><span class="f_CodeExample" style="color: #000000;"> Pos(sResult[Length(sResult) - </span><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">] + sResult[Length(sResult) - </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;"> sResult[Length(sResult)], sCompletions3) &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;"> Length(sResult) &gt; </span><span class="f_CodeExample" style="color: #800000;">3</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(sResult, Length(sResult) - </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;">3</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;"> 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"> </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) &gt; </span><span class="f_CodeExample" style="color: #800000;">3</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;">while</span><span class="f_CodeExample" style="color: #000000;"> Pos(sResult[Length(sResult) - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">] + sResult[Length(sResult)], sCompletions2) &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;"> Length(sResult) &gt; </span><span class="f_CodeExample" style="color: #800000;">3</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(sResult, Length(sResult) - </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;">else</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"> </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;">if</span><span class="f_CodeExample" style="color: #000000;"> Length(sResult) &gt; </span><span class="f_CodeExample" style="color: #800000;">3</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;"> iGlasCount := </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;"> i := Length(sResult) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">downto</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: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> Pos(sResult[i], sGlas) &lt;&gt; </span><span class="f_CodeExample" style="color: #800000;">0</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: #000000;"> inc(iGlasCount)</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;"> break;</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;"> iGlasCount &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: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> iGlasCount := iGlasCount - </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(sResult, Length(sResult) - iGlasCount, iGlasCount + </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"> </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;">iCnt := </span><span class="f_CodeExample" style="color: #800000;">4</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(sResult) &gt; iCnt </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;">if</span><span class="f_CodeExample" style="color: #000000;"> Pos(Copy(sResult, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, iCnt), sAttachments4) &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(sResult, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, iCnt);</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">iCnt := </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: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> Length(sResult) &gt; iCnt </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;">if</span><span class="f_CodeExample" style="color: #000000;"> Pos(Copy(sResult, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, iCnt), sAttachments3) &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(sResult, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, iCnt);</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">iCnt := </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;">if</span><span class="f_CodeExample" style="color: #000000;"> Length(sResult) &gt; iCnt </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;">if</span><span class="f_CodeExample" style="color: #000000;"> Pos(Copy(sResult, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, iCnt), sAttachments2) &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(sResult, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, iCnt);</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">iCnt := </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(sResult) &gt; iCnt </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;">if</span><span class="f_CodeExample" style="color: #000000;"> Pos(Copy(sResult, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, iCnt), sAttachments1) &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(sResult, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, iCnt);</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">inc(iCheckCount);</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;"> iCheckCount &lt; </span><span class="f_CodeExample" style="color: #800000;">2</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;"> start;</span></p> <p class="p_CodeExample"> </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-20T16:51:25+07:00 2013-08-20T16:51:25+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/slova/poisk-slov-po-maske.html Super User toto44@inbox.ru <p><span style="font-style: italic;">Может у кого-нибудь есть готовая функция поиска(выборки) слов по маске (с использованием символов '*' и '?'). </span></p> <p> </p> <p>Такая функция в Дельфи есть: MatchesMask из модуля masks.</p> <p> </p> <p>Автор: MBo</p> <p><span style="font-style: italic;">Может у кого-нибудь есть готовая функция поиска(выборки) слов по маске (с использованием символов '*' и '?'). </span></p> <p> </p> <p>Такая функция в Дельфи есть: MatchesMask из модуля masks.</p> <p> </p> <p>Автор: MBo</p> Получать слова нужной длины при перестановке букв в указанном слове 2013-08-20T16:50:41+07:00 2013-08-20T16:50:41+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/slova/poluchat-slova-nuzhnoj-dliny-pri-perestanovke-bukv-v-ukazannom-slove.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;">{ </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Definition: Permutation </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">A permutation is an arrangement of n objects, arranged in groups of size r </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">without repetition where order is important. </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">P(n,r) = n! / (n-r)! </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Example: Find all two-letter permutations of the letters "ABC" </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">n = ABC </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">r = 2 </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Output: AB AC BA BC CA CB </span></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: #000080;">{ </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Definition: Permutation </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Eine Permutation ist eine Anordnung von n Objekten ohne Wiederholung. </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Dabei spielt die Reihenfolge der Elemente in den Mengen keine Rolle. </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">P(n,r) = n! / (n-r)! </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Beispiel: Finde alle 2-Buchstaben Kombinationen von "ABC" </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">n = ABC </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">r = 2 </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Ergebnis: AB AC BA BC CA CB </span></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: #000080;">{ </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">The following is a console Program: </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Choose File, New, Console Application </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"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">program</span><span class="f_CodeExample" style="color: #000000;"> Permute;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #0000ff;">{$APPTYPE CONSOLE}</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;"> SysUtils;</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;"> R, Slen: 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;"> P(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span><span class="f_CodeExample" style="color: #000000;"> A: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; B: </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;"> J: Word;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> C, D: </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: #000080;">{ P(N,N) &gt;&gt; R=Slen }</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(B) = SLen - R </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;">Write</span><span class="f_CodeExample" style="color: #000000;">(</span><span class="f_CodeExample" style="color: #ff0000;">' {'</span><span class="f_CodeExample" style="color: #000000;"> + A + </span><span class="f_CodeExample" style="color: #ff0000;">'} '</span><span class="f_CodeExample" style="color: #000000;">); </span><span class="f_CodeExample" style="color: #000080;">{Per++}</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;">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(B) </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;"> C := B;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> D := A + C[J];</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Delete(C, J, </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;"> P(D, C);</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;"> Q, S, S2: </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;"> 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;"> S2 := </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;">while</span><span class="f_CodeExample" style="color: #000000;"> (S &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;">and</span><span class="f_CodeExample" style="color: #000000;"> (S2 &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;">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;"> Writeln(</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;"> Writeln(</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;">Write</span><span class="f_CodeExample" style="color: #000000;">(</span><span class="f_CodeExample" style="color: #ff0000;">'P(N,R) N=? : '</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> ReadLn(S);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SLen := Length(S);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Write</span><span class="f_CodeExample" style="color: #000000;">(</span><span class="f_CodeExample" style="color: #ff0000;">'P(N,R) R=? : '</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> ReadLn(S2);</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;"> s2 &lt;&gt; </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: #000000;"> R := StrToInt(S2);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Writeln(</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;"> Q := </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;"> P(Q, 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"><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;">{ </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Definition: Permutation </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">A permutation is an arrangement of n objects, arranged in groups of size r </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">without repetition where order is important. </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">P(n,r) = n! / (n-r)! </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Example: Find all two-letter permutations of the letters "ABC" </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">n = ABC </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">r = 2 </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Output: AB AC BA BC CA CB </span></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: #000080;">{ </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Definition: Permutation </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Eine Permutation ist eine Anordnung von n Objekten ohne Wiederholung. </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Dabei spielt die Reihenfolge der Elemente in den Mengen keine Rolle. </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">P(n,r) = n! / (n-r)! </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Beispiel: Finde alle 2-Buchstaben Kombinationen von "ABC" </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">n = ABC </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">r = 2 </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Ergebnis: AB AC BA BC CA CB </span></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: #000080;">{ </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">The following is a console Program: </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Choose File, New, Console Application </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"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">program</span><span class="f_CodeExample" style="color: #000000;"> Permute;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #0000ff;">{$APPTYPE CONSOLE}</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;"> SysUtils;</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;"> R, Slen: 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;"> P(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span><span class="f_CodeExample" style="color: #000000;"> A: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; B: </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;"> J: Word;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> C, D: </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: #000080;">{ P(N,N) &gt;&gt; R=Slen }</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(B) = SLen - R </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;">Write</span><span class="f_CodeExample" style="color: #000000;">(</span><span class="f_CodeExample" style="color: #ff0000;">' {'</span><span class="f_CodeExample" style="color: #000000;"> + A + </span><span class="f_CodeExample" style="color: #ff0000;">'} '</span><span class="f_CodeExample" style="color: #000000;">); </span><span class="f_CodeExample" style="color: #000080;">{Per++}</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;">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(B) </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;"> C := B;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> D := A + C[J];</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Delete(C, J, </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;"> P(D, C);</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;"> Q, S, S2: </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;"> 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;"> S2 := </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;">while</span><span class="f_CodeExample" style="color: #000000;"> (S &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;">and</span><span class="f_CodeExample" style="color: #000000;"> (S2 &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;">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;"> Writeln(</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;"> Writeln(</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;">Write</span><span class="f_CodeExample" style="color: #000000;">(</span><span class="f_CodeExample" style="color: #ff0000;">'P(N,R) N=? : '</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> ReadLn(S);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SLen := Length(S);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Write</span><span class="f_CodeExample" style="color: #000000;">(</span><span class="f_CodeExample" style="color: #ff0000;">'P(N,R) R=? : '</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> ReadLn(S2);</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;"> s2 &lt;&gt; </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: #000000;"> R := StrToInt(S2);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Writeln(</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;"> Q := </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;"> P(Q, 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"><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-20T16:28:29+07:00 2013-08-20T16:28:29+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/slova/razbivka-stroki-na-slova.html Super User toto44@inbox.ru <p><span style="color: #000000;">Приведу несколько простых функций, позволяющих работать с отдельными словами в строке. Возможно они пригодятся вам для разбивки текстовых полей на отдельные слова (for i := 1 to NumToken do ...) с последующим сохранением их в базе данных. </span></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;"> GetToken(aString, SepChar: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; TokenNum: 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: #000080;">{</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">параметры: aString : полная строка</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">SepChar : единственный символ, служащий</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;">TokenNum: номер требуемого слова (подстроки))</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">result : искомое слово или пустая строка, если количество слов</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">меньше значения 'TokenNum'</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;">var</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Token: </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;">StrLen: Byte;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TNum: Byte;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TEnd: Byte;</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"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StrLen := Length(aString);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TNum := </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;">TEnd := StrLen;</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;"> ((TNum &lt;= TokenNum) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (TEnd &lt;&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;">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;"> TEnd := Pos(SepChar, aString);</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;"> TEnd &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: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Token := Copy(aString, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, TEnd - </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(aString, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, TEnd);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Inc(TNum);</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;"> Token := aString;</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;">if</span><span class="f_CodeExample" style="color: #000000;"> TNum &gt;= TokenNum </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;"> GetToken1 := Token;</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;"> GetToken1 := </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"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> NumToken(aString, SepChar: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): Byte;</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;">parameters: aString : полная строка</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">SepChar : единственный символ, служащий</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;">result : количество найденных слов (подстрок)</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"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">RChar: Char;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StrLen: Byte;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TNum: Byte;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TEnd: Byte;</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"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> SepChar = </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;"> RChar := </span><span class="f_CodeExample" style="color: #ff0000;">'*'</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;"> RChar := </span><span class="f_CodeExample" style="color: #ff0000;">'#'</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;">StrLen := Length(aString);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TNum := </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;">TEnd := StrLen;</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;"> TEnd &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: #000000;"> Inc(TNum);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> TEnd := Pos(SepChar, aString);</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;"> TEnd &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: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> aString[TEnd] := RChar;</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;">Result := TNum;</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: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> CopyColumn(</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;">; c_fence: char;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i_</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">index</span><span class="f_CodeExample" style="color: #000000;">: 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, i_left: integer;</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;">result := EmptyStr;</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_</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;">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;"> 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;">i_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: #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;">string</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: #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;">string</span><span class="f_CodeExample" style="color: #000000;">[i] = c_fence </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: #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;">if</span><span class="f_CodeExample" style="color: #000000;"> 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;">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;"> result := Copy(s_</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">, i_left + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, i - i_left - </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;"> exit;</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;"> i_left := 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: #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;">Dec(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;">if</span><span class="f_CodeExample" style="color: #000000;"> 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;">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;"> result := Copy(s_</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">, i_left + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, Length(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: #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> </td> </tr> </tbody> </table> </div> <p> </p> <p>Я знаю что в GetToken параметр SepChar (в моем случае c_fence) строка, не символ, но комментарий гласит, что функция ожидает единственный символ в этой строке, и это очевидно, поскольку если вы пошлете более одного символа, функция попросту несработает. ( Delete(aString,1,TEnd) будет ошибкой, если Length( SepChar ) &gt; 1 ).</p> <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> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Взято с </span>https://delphiworld.narod</p> <p style="text-align: right;"> </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: #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;">function StringToWords(const DelimitedText: string; ResultList: TStrings;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Delimiters: TDelimiter = []): boolean - разбивает отдельную строку на</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">состовляющие ее слова и результат помещает в TStringList</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">function StringsToWords(const DelimitedStrings: TStrings; ResultList: TStrings;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Delimiters: TDelimiter = []): boolean - разбивает любое количество строк на</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">состовляющие их слова и все помещяет в один TStringList</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Delimiters - список символов являющихся разделителями слов,</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;">Зависимости: Classes</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: Separator, separator@mail.kz, Алматы</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: Separator</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Дата: 13 ноября 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;"> spUtils;</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;">uses</span><span class="f_CodeExample" style="color: #000000;"> Classes;</span></p> <p class="p_CodeExample"> </p> <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;">TDelimiter = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">set</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span><span class="f_CodeExample" style="color: #ff0000;">#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></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;">StandartDelimiters: TDelimiter = [</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><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><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><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><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: #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><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><span class="f_CodeExample" style="color: #ff0000;">'.'</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">'&gt;'</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;">'&lt;'</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: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> StringToWords(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> DelimitedText: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; ResultList: TStrings;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Delimiters: TDelimiter = []; ListClear: boolean = true): boolean;</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;"> StringsToWords(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> DelimitedStrings: TStrings; ResultList: TStrings;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Delimiters: TDelimiter = []; ListClear: boolean = true): boolean;</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;"> StringToWords(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> DelimitedText: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; ResultList: TStrings;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Delimiters: TDelimiter = []; ListClear: boolean = true): boolean;</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, Len, Prev: word;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TempList: TStringList;</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 := 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;"> (ResultList &lt;&gt; </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</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;"> (DelimitedText &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;">try</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> TempList := TStringList.Create;</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;"> Delimiters = [] </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;"> Delimiters := StandartDelimiters;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Len := </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;"> Prev := </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;"> 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(DelimitedText) </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;"> Prev &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: #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;"> DelimitedText[i] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">in</span><span class="f_CodeExample" style="color: #000000;"> Delimiters </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;"> Len = </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;"> Prev := i + </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: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> TempList.Add(copy(DelimitedText, Prev, Len));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Len := </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;"> Prev := i + </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;">end</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;"> Inc(Len)</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: #008000; font-weight: bold;">not</span><span class="f_CodeExample" style="color: #000000;"> (DelimitedText[i] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">in</span><span class="f_CodeExample" style="color: #000000;"> Delimiters) </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;"> Prev := 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: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> Len &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;"> TempList.Add(copy(DelimitedText, Prev, Len));</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;"> TempList.Count &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;"> ListClear </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;"> ResultList.Assign(TempList)</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;"> ResultList.AddStrings(TempList);</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: #008000; font-weight: bold;">finally</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> TempList.Free</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: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> StringsToWords(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> DelimitedStrings: TStrings; ResultList: TStrings;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Delimiters: TDelimiter = []; ListClear: boolean = true): 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;"> Delimiters = [] </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;"> Delimiters := StandartDelimiters + [</span><span class="f_CodeExample" style="color: #ff0000;">#13</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></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;"> Delimiters := Delimiters + [</span><span class="f_CodeExample" style="color: #ff0000;">#13</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></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := StringToWords(DelimitedStrings.Text, ResultList, Delimiters,</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> ListClear)</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: #000000;">StringToWords(Edit1.Text, Memo1.Lines);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StringToWords(Edit1.Text, Memo1.Lines, [</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><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;">StringsToWords(Memo1.Lines, Memo2.Lines);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StringsToWords(Memo1.Lines, Memo2.Lines, [</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><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"> </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> </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.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;">T : Собственно строка, которая будет разбиваться на слова</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Mode: Режим, может быть</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">0: получение английских и русских слов</span></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: #000080;">2: только английских</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">List: Здесь хранятся найденые слова (по умолчанию = nil)</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;">P/S</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;">Зависимости: Windows, Classes</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: 777, nix@rbcmail.ru, Архангельск</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: 777</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Дата: 15 июня 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;"> StringToWords(T: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; Mode: Short; List: Tstrings = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</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, z: integer;</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;">c: Char;</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;"> Check;</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 &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;">and</span><span class="f_CodeExample" style="color: #000000;"> (List &lt;&gt; </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</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;"> List.Add(S);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> z := z + </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;"> 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: #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;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i := </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;">z := </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;">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: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> t &gt; </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: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> i &lt;= Length(t) + </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: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> c := t[i];</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;"> Mode </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;">0</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;"> (c </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;">or</span><span class="f_CodeExample" style="color: #000000;"> (c </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;">or</span><span class="f_CodeExample" style="color: #000000;"> (c </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;">'а'</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;">or</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> (c </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;">'А'</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;">and</span><span class="f_CodeExample" style="color: #000000;"> (c &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: #000000;"> s := s + c</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;"> Check;</span></p> <p class="p_CodeExample"><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;"> (c </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;">'а'</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;">or</span><span class="f_CodeExample" style="color: #000000;"> (c </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;">'А'</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;">and</span><span class="f_CodeExample" style="color: #000000;"> (c &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: #000000;"> s := s + c</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;"> Check;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #800000;">2</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;"> (c </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;">or</span><span class="f_CodeExample" style="color: #000000;"> (c </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;">and</span><span class="f_CodeExample" style="color: #000000;"> (c &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: #000000;"> s := s + c</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;"> check;</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;"> i := 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;">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;">result := z;</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: #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;">Source, Dest: Tstrings;</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;">Source := TstringList.Create;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Dest := TstringList.Create;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Source.LoadFromFile(</span><span class="f_CodeExample" style="color: #ff0000;">'c:\MyText.txt'</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;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000000;"> Source.Count - </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: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> StringToWords(Source[i], </span><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">, Dest);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Application.ProcessMessages;</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;">Dest.SaveToFile(</span><span class="f_CodeExample" style="color: #ff0000;">'c:\MyWords.txt'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">ShowMessage(</span><span class="f_CodeExample" style="color: #ff0000;">'Найдено '</span><span class="f_CodeExample" style="color: #000000;"> + IntToStr(Dest.Count) + </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"> </p> <p class="p_CodeExample"> </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: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> SplitTextIntoWords(</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;">; words: TstringList);</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;"> startpos, endpos: 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;"> Assert(Assigned(words));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> words.Clear;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> startpos := </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;">while</span><span class="f_CodeExample" style="color: #000000;"> startpos &lt;= 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: #000080;">// skip non-letters </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;"> (startpos &lt;= Length(S)) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">not</span><span class="f_CodeExample" style="color: #000000;"> IsCharAlpha(S[startpos]) </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(startpos);</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;"> startpos &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: #000080;">// find next non-letter </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> endpos := startpos + </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;">while</span><span class="f_CodeExample" style="color: #000000;"> (endpos &lt;= Length(S)) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> IsCharAlpha(S[endpos]) </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(endpos);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> words.Add(Copy(S, startpos, endpos - startpos));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> startpos := endpos + </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><span class="f_CodeExample" style="color: #000080;">{ If }</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: #000080;">{ While }</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: #000080;">{ SplitTextIntoWords }</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;"> StringMatchesMask(S, mask: </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;">case</span><span class="f_CodeExample" style="color: #000000;">_sensitive: Boolean): Boolean;</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;"> sIndex, maskIndex: 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: #008000; font-weight: bold;">not</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">case</span><span class="f_CodeExample" style="color: #000000;">_sensitive </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 := AnsiUpperCase(S);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> mask := AnsiUpperCase(mask);</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: #000080;">{ If }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := True; </span><span class="f_CodeExample" style="color: #000080;">// blatant optimism </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">sIndex := </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;"> maskIndex := </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;">while</span><span class="f_CodeExample" style="color: #000000;"> (sIndex &lt;= Length(S)) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (maskIndex &lt;= Length(mask)) </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;"> mask[maskIndex] </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;">'?'</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: #000080;">// matches any character </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Inc(sIndex);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Inc(maskIndex);</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: #000080;">{ case '?' }</span></p> <p class="p_CodeExample"><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;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// matches 0 or more characters, so need to check for </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// next character in mask </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Inc(maskIndex);</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;"> maskIndex &gt; Length(mask) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// * at end matches rest of string </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;">else</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> mask[maskindex] </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;">'*'</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: #008000; font-weight: bold;">raise</span><span class="f_CodeExample" style="color: #000000;"> Exception.Create(</span><span class="f_CodeExample" style="color: #ff0000;">'Invalid mask'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// look for mask character in 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;"> (sIndex &lt;= Length(S)) </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;"> (S[sIndex] &lt;&gt; mask[maskIndex]) </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(sIndex);</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;"> sIndex &gt; 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: #000080;">// character not found, no match </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: #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: #000080;">{ If }</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: #000080;">{ Case '*' }</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;"> S[sIndex] = mask[maskIndex] </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(sIndex);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Inc(maskIndex);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000080;">{ If }</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: #000080;">// no match </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: #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;">end</span><span class="f_CodeExample" style="color: #000000;">; </span><span class="f_CodeExample" style="color: #000080;">{ Case }</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: #000080;">{ While }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// if we have reached the end of both S and mask we have a complete </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// match, otherwise we only have a partial match </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;"> (sIndex &lt;= Length(S)) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">or</span><span class="f_CodeExample" style="color: #000000;"> (maskIndex &lt;= Length(mask)) </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 := False;</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: #000080;">{ stringMatchesMask }</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;"> FindMatchingWords(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> S, mask: </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;">case</span><span class="f_CodeExample" style="color: #000000;">_sensitive: Boolean; matches: Tstrings);</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;"> words: TstringList;</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;"> Assert(Assigned(matches));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> words := TstringList.Create;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">try</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SplitTextIntoWords(S, words);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> matches.Clear;</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;"> words.Count - </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: #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;"> stringMatchesMask(words[i], mask, </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">case</span><span class="f_CodeExample" style="color: #000000;">_sensitive) </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;"> matches.Add(words[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><span class="f_CodeExample" style="color: #000080;">{ For }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">finally</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> words.Free;</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"><span class="f_CodeExample" style="color: #000080;">The Form has one TMemo for the text to check, one TEdit for the mask, </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">one TCheckbox (check = case sensitive), one TListbox for the results, </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">one Tbutton </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;">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;"> FindMatchingWords(memo1.Text, edit1.Text, checkbox1.Checked, listbox1.Items);</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><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Взято с сайта: </span><span style="font-family: 'Times New Roman'; color: #0000ff; text-decoration: underline;">https://www.swissdelphicenter</span></p> <p style="text-align: right;"> </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> <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;">unit</span><span class="f_CodeExample" style="color: #000000;"> StrFuncs;</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;">uses</span><span class="f_CodeExample" style="color: #000000;"> SysUtils, Classes; </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;"> StrToArrays(str, r: </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;">out</span><span class="f_CodeExample" style="color: #000000;"> temp: TStrings): Boolean; </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;"> ArrayToStr(str: TStrings; r: </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"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> StrToArrays(str, r: </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;">out</span><span class="f_CodeExample" style="color: #000000;"> temp: TStrings): Boolean; </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;">j: 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;"> temp &lt;&gt; </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: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> temp.Clear; </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;"> str &lt;&gt; </span><span class="f_CodeExample" style="color: #ff0000;">''</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;"> j := Pos(r, 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;"> j = </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span><span class="f_CodeExample" style="color: #000000;"> j := 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;"> temp.Add(Copy(Str, </span><span class="f_CodeExample" style="color: #800000;">1</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: #000000;">)); </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;">, j + Length(r) - </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;"> Result := True; </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 := False; </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;">function</span><span class="f_CodeExample" style="color: #000000;"> ArrayToStr(str: TStrings; r: </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;">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 := </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;">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;"> Str.Count - </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: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := Result + Str.Strings[i] + r; </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"> </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><span style="color: #000000;">Приведу несколько простых функций, позволяющих работать с отдельными словами в строке. Возможно они пригодятся вам для разбивки текстовых полей на отдельные слова (for i := 1 to NumToken do ...) с последующим сохранением их в базе данных. </span></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;"> GetToken(aString, SepChar: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; TokenNum: 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: #000080;">{</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">параметры: aString : полная строка</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">SepChar : единственный символ, служащий</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;">TokenNum: номер требуемого слова (подстроки))</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">result : искомое слово или пустая строка, если количество слов</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">меньше значения 'TokenNum'</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;">var</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Token: </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;">StrLen: Byte;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TNum: Byte;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TEnd: Byte;</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"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StrLen := Length(aString);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TNum := </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;">TEnd := StrLen;</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;"> ((TNum &lt;= TokenNum) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (TEnd &lt;&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;">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;"> TEnd := Pos(SepChar, aString);</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;"> TEnd &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: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Token := Copy(aString, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, TEnd - </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(aString, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, TEnd);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Inc(TNum);</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;"> Token := aString;</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;">if</span><span class="f_CodeExample" style="color: #000000;"> TNum &gt;= TokenNum </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;"> GetToken1 := Token;</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;"> GetToken1 := </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"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> NumToken(aString, SepChar: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): Byte;</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;">parameters: aString : полная строка</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">SepChar : единственный символ, служащий</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;">result : количество найденных слов (подстрок)</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"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">RChar: Char;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StrLen: Byte;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TNum: Byte;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TEnd: Byte;</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"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> SepChar = </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;"> RChar := </span><span class="f_CodeExample" style="color: #ff0000;">'*'</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;"> RChar := </span><span class="f_CodeExample" style="color: #ff0000;">'#'</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;">StrLen := Length(aString);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TNum := </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;">TEnd := StrLen;</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;"> TEnd &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: #000000;"> Inc(TNum);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> TEnd := Pos(SepChar, aString);</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;"> TEnd &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: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> aString[TEnd] := RChar;</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;">Result := TNum;</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: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> CopyColumn(</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;">; c_fence: char;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i_</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">index</span><span class="f_CodeExample" style="color: #000000;">: 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, i_left: integer;</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;">result := EmptyStr;</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_</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;">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;"> 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;">i_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: #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;">string</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: #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;">string</span><span class="f_CodeExample" style="color: #000000;">[i] = c_fence </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: #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;">if</span><span class="f_CodeExample" style="color: #000000;"> 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;">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;"> result := Copy(s_</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">, i_left + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, i - i_left - </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;"> exit;</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;"> i_left := 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: #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;">Dec(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;">if</span><span class="f_CodeExample" style="color: #000000;"> 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;">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;"> result := Copy(s_</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">, i_left + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, Length(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: #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> </td> </tr> </tbody> </table> </div> <p> </p> <p>Я знаю что в GetToken параметр SepChar (в моем случае c_fence) строка, не символ, но комментарий гласит, что функция ожидает единственный символ в этой строке, и это очевидно, поскольку если вы пошлете более одного символа, функция попросту несработает. ( Delete(aString,1,TEnd) будет ошибкой, если Length( SepChar ) &gt; 1 ).</p> <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> </p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Взято с </span>https://delphiworld.narod</p> <p style="text-align: right;"> </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: #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;">function StringToWords(const DelimitedText: string; ResultList: TStrings;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Delimiters: TDelimiter = []): boolean - разбивает отдельную строку на</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">состовляющие ее слова и результат помещает в TStringList</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">function StringsToWords(const DelimitedStrings: TStrings; ResultList: TStrings;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Delimiters: TDelimiter = []): boolean - разбивает любое количество строк на</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">состовляющие их слова и все помещяет в один TStringList</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Delimiters - список символов являющихся разделителями слов,</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;">Зависимости: Classes</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: Separator, separator@mail.kz, Алматы</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: Separator</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Дата: 13 ноября 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;"> spUtils;</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;">uses</span><span class="f_CodeExample" style="color: #000000;"> Classes;</span></p> <p class="p_CodeExample"> </p> <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;">TDelimiter = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">set</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span><span class="f_CodeExample" style="color: #ff0000;">#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></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;">StandartDelimiters: TDelimiter = [</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><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><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><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><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: #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><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><span class="f_CodeExample" style="color: #ff0000;">'.'</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">'&gt;'</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;">'&lt;'</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: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> StringToWords(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> DelimitedText: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; ResultList: TStrings;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Delimiters: TDelimiter = []; ListClear: boolean = true): boolean;</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;"> StringsToWords(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> DelimitedStrings: TStrings; ResultList: TStrings;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Delimiters: TDelimiter = []; ListClear: boolean = true): boolean;</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;"> StringToWords(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> DelimitedText: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; ResultList: TStrings;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Delimiters: TDelimiter = []; ListClear: boolean = true): boolean;</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, Len, Prev: word;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TempList: TStringList;</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 := 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;"> (ResultList &lt;&gt; </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</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;"> (DelimitedText &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;">try</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> TempList := TStringList.Create;</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;"> Delimiters = [] </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;"> Delimiters := StandartDelimiters;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Len := </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;"> Prev := </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;"> 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(DelimitedText) </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;"> Prev &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: #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;"> DelimitedText[i] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">in</span><span class="f_CodeExample" style="color: #000000;"> Delimiters </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;"> Len = </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;"> Prev := i + </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: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> TempList.Add(copy(DelimitedText, Prev, Len));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Len := </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;"> Prev := i + </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;">end</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;"> Inc(Len)</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: #008000; font-weight: bold;">not</span><span class="f_CodeExample" style="color: #000000;"> (DelimitedText[i] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">in</span><span class="f_CodeExample" style="color: #000000;"> Delimiters) </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;"> Prev := 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: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> Len &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;"> TempList.Add(copy(DelimitedText, Prev, Len));</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;"> TempList.Count &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;"> ListClear </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;"> ResultList.Assign(TempList)</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;"> ResultList.AddStrings(TempList);</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: #008000; font-weight: bold;">finally</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> TempList.Free</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: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> StringsToWords(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> DelimitedStrings: TStrings; ResultList: TStrings;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Delimiters: TDelimiter = []; ListClear: boolean = true): 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;"> Delimiters = [] </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;"> Delimiters := StandartDelimiters + [</span><span class="f_CodeExample" style="color: #ff0000;">#13</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></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;"> Delimiters := Delimiters + [</span><span class="f_CodeExample" style="color: #ff0000;">#13</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></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := StringToWords(DelimitedStrings.Text, ResultList, Delimiters,</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> ListClear)</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: #000000;">StringToWords(Edit1.Text, Memo1.Lines);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StringToWords(Edit1.Text, Memo1.Lines, [</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><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;">StringsToWords(Memo1.Lines, Memo2.Lines);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StringsToWords(Memo1.Lines, Memo2.Lines, [</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><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"> </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> </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.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;">T : Собственно строка, которая будет разбиваться на слова</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Mode: Режим, может быть</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">0: получение английских и русских слов</span></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: #000080;">2: только английских</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">List: Здесь хранятся найденые слова (по умолчанию = nil)</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;">P/S</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;">Зависимости: Windows, Classes</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: 777, nix@rbcmail.ru, Архангельск</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: 777</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Дата: 15 июня 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;"> StringToWords(T: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; Mode: Short; List: Tstrings = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</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, z: integer;</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;">c: Char;</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;"> Check;</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 &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;">and</span><span class="f_CodeExample" style="color: #000000;"> (List &lt;&gt; </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</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;"> List.Add(S);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> z := z + </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;"> 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: #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;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i := </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;">z := </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;">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: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> t &gt; </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: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> i &lt;= Length(t) + </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: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> c := t[i];</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;"> Mode </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;">0</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;"> (c </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;">or</span><span class="f_CodeExample" style="color: #000000;"> (c </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;">or</span><span class="f_CodeExample" style="color: #000000;"> (c </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;">'а'</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;">or</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> (c </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;">'А'</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;">and</span><span class="f_CodeExample" style="color: #000000;"> (c &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: #000000;"> s := s + c</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;"> Check;</span></p> <p class="p_CodeExample"><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;"> (c </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;">'а'</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;">or</span><span class="f_CodeExample" style="color: #000000;"> (c </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;">'А'</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;">and</span><span class="f_CodeExample" style="color: #000000;"> (c &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: #000000;"> s := s + c</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;"> Check;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #800000;">2</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;"> (c </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;">or</span><span class="f_CodeExample" style="color: #000000;"> (c </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;">and</span><span class="f_CodeExample" style="color: #000000;"> (c &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: #000000;"> s := s + c</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;"> check;</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;"> i := 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;">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;">result := z;</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: #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;">Source, Dest: Tstrings;</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;">Source := TstringList.Create;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Dest := TstringList.Create;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Source.LoadFromFile(</span><span class="f_CodeExample" style="color: #ff0000;">'c:\MyText.txt'</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;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000000;"> Source.Count - </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: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> StringToWords(Source[i], </span><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">, Dest);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Application.ProcessMessages;</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;">Dest.SaveToFile(</span><span class="f_CodeExample" style="color: #ff0000;">'c:\MyWords.txt'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">ShowMessage(</span><span class="f_CodeExample" style="color: #ff0000;">'Найдено '</span><span class="f_CodeExample" style="color: #000000;"> + IntToStr(Dest.Count) + </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"> </p> <p class="p_CodeExample"> </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: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> SplitTextIntoWords(</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;">; words: TstringList);</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;"> startpos, endpos: 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;"> Assert(Assigned(words));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> words.Clear;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> startpos := </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;">while</span><span class="f_CodeExample" style="color: #000000;"> startpos &lt;= 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: #000080;">// skip non-letters </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;"> (startpos &lt;= Length(S)) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">not</span><span class="f_CodeExample" style="color: #000000;"> IsCharAlpha(S[startpos]) </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(startpos);</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;"> startpos &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: #000080;">// find next non-letter </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> endpos := startpos + </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;">while</span><span class="f_CodeExample" style="color: #000000;"> (endpos &lt;= Length(S)) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> IsCharAlpha(S[endpos]) </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(endpos);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> words.Add(Copy(S, startpos, endpos - startpos));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> startpos := endpos + </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><span class="f_CodeExample" style="color: #000080;">{ If }</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: #000080;">{ While }</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: #000080;">{ SplitTextIntoWords }</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;"> StringMatchesMask(S, mask: </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;">case</span><span class="f_CodeExample" style="color: #000000;">_sensitive: Boolean): Boolean;</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;"> sIndex, maskIndex: 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: #008000; font-weight: bold;">not</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">case</span><span class="f_CodeExample" style="color: #000000;">_sensitive </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 := AnsiUpperCase(S);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> mask := AnsiUpperCase(mask);</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: #000080;">{ If }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := True; </span><span class="f_CodeExample" style="color: #000080;">// blatant optimism </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">sIndex := </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;"> maskIndex := </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;">while</span><span class="f_CodeExample" style="color: #000000;"> (sIndex &lt;= Length(S)) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (maskIndex &lt;= Length(mask)) </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;"> mask[maskIndex] </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;">'?'</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: #000080;">// matches any character </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Inc(sIndex);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Inc(maskIndex);</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: #000080;">{ case '?' }</span></p> <p class="p_CodeExample"><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;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// matches 0 or more characters, so need to check for </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// next character in mask </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Inc(maskIndex);</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;"> maskIndex &gt; Length(mask) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// * at end matches rest of string </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;">else</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> mask[maskindex] </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;">'*'</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: #008000; font-weight: bold;">raise</span><span class="f_CodeExample" style="color: #000000;"> Exception.Create(</span><span class="f_CodeExample" style="color: #ff0000;">'Invalid mask'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// look for mask character in 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;"> (sIndex &lt;= Length(S)) </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;"> (S[sIndex] &lt;&gt; mask[maskIndex]) </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(sIndex);</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;"> sIndex &gt; 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: #000080;">// character not found, no match </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: #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: #000080;">{ If }</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: #000080;">{ Case '*' }</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;"> S[sIndex] = mask[maskIndex] </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(sIndex);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Inc(maskIndex);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000080;">{ If }</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: #000080;">// no match </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: #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;">end</span><span class="f_CodeExample" style="color: #000000;">; </span><span class="f_CodeExample" style="color: #000080;">{ Case }</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: #000080;">{ While }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// if we have reached the end of both S and mask we have a complete </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// match, otherwise we only have a partial match </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;"> (sIndex &lt;= Length(S)) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">or</span><span class="f_CodeExample" style="color: #000000;"> (maskIndex &lt;= Length(mask)) </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 := False;</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: #000080;">{ stringMatchesMask }</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;"> FindMatchingWords(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> S, mask: </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;">case</span><span class="f_CodeExample" style="color: #000000;">_sensitive: Boolean; matches: Tstrings);</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;"> words: TstringList;</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;"> Assert(Assigned(matches));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> words := TstringList.Create;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">try</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SplitTextIntoWords(S, words);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> matches.Clear;</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;"> words.Count - </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: #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;"> stringMatchesMask(words[i], mask, </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">case</span><span class="f_CodeExample" style="color: #000000;">_sensitive) </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;"> matches.Add(words[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><span class="f_CodeExample" style="color: #000080;">{ For }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">finally</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> words.Free;</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"><span class="f_CodeExample" style="color: #000080;">The Form has one TMemo for the text to check, one TEdit for the mask, </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">one TCheckbox (check = case sensitive), one TListbox for the results, </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">one Tbutton </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;">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;"> FindMatchingWords(memo1.Text, edit1.Text, checkbox1.Checked, listbox1.Items);</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><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Взято с сайта: </span><span style="font-family: 'Times New Roman'; color: #0000ff; text-decoration: underline;">https://www.swissdelphicenter</span></p> <p style="text-align: right;"> </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> <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;">unit</span><span class="f_CodeExample" style="color: #000000;"> StrFuncs;</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;">uses</span><span class="f_CodeExample" style="color: #000000;"> SysUtils, Classes; </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;"> StrToArrays(str, r: </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;">out</span><span class="f_CodeExample" style="color: #000000;"> temp: TStrings): Boolean; </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;"> ArrayToStr(str: TStrings; r: </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"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> StrToArrays(str, r: </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;">out</span><span class="f_CodeExample" style="color: #000000;"> temp: TStrings): Boolean; </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;">j: 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;"> temp &lt;&gt; </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: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> temp.Clear; </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;"> str &lt;&gt; </span><span class="f_CodeExample" style="color: #ff0000;">''</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;"> j := Pos(r, 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;"> j = </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span><span class="f_CodeExample" style="color: #000000;"> j := 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;"> temp.Add(Copy(Str, </span><span class="f_CodeExample" style="color: #800000;">1</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: #000000;">)); </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;">, j + Length(r) - </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;"> Result := True; </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 := False; </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;">function</span><span class="f_CodeExample" style="color: #000000;"> ArrayToStr(str: TStrings; r: </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;">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 := </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;">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;"> Str.Count - </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: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := Result + Str.Strings[i] + r; </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"> </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> Сканирование строки начиная с указанной позиции с целью нахождения слова 2013-08-20T16:49:57+07:00 2013-08-20T16:49:57+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/slova/skanirovanie-stroki-nachinaya-s-ukazannoj-pozitsii-s-tselyu-nakhozhdeniya-slova.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"><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"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">S - строка, в которой производится поиск;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">StartPos - на входе принимает позицию с которой начинается сканирование</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;">WordLen - на выходе содержит длину найденного слова;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Delimiters - множество, содержащее символы-разделители слов;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Возвращаемое значение - true если слово найдено, инече false;</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;">Автор: vuk, vuk@fcenter.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: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> WordScan(</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;">var</span><span class="f_CodeExample" style="color: #000000;"> StartPos, WordLen: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Delimiters: TSysCharSet): boolean;</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, 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;">Result := false;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">WordLen := </span><span class="f_CodeExample" style="color: #800000;">0</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;">i := StartPos;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">l := length(s);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StartPos := </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;">while</span><span class="f_CodeExample" style="color: #000000;"> i &lt;= l </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: #008000; font-weight: bold;">in</span><span class="f_CodeExample" style="color: #000000;"> Delimiters </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(i)</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;"> StartPos := i;</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"> </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;= l </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: #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;"> Delimiters) </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(i);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(WordLen);</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;"> break;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := WordLen &lt;&gt; </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;">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;">//Консольная программа, выводящая на экран слова из заданной строки.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">program</span><span class="f_CodeExample" style="color: #000000;"> Project1;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #0000ff;">{$APPTYPE CONSOLE}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">uses</span><span class="f_CodeExample" style="color: #000000;"> SysUtils;</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;">wStart, wLen: 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;">s := </span><span class="f_CodeExample" style="color: #ff0000;">'This is a test string. String contains delimiters.'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">wStart := </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;">wLen := </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;">while</span><span class="f_CodeExample" style="color: #000000;"> WordScan(s, wStart, wLen, [</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><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;">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;"> writeln(copy(s, wStart, wLen));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(wStart, wLen);</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;">readln;</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;">Функция предназначена для разбиения строки на слова. Границы слов</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"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">S - строка, в которой производится поиск;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">StartPos - на входе принимает позицию с которой начинается сканирование</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;">WordLen - на выходе содержит длину найденного слова;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Delimiters - множество, содержащее символы-разделители слов;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Возвращаемое значение - true если слово найдено, инече false;</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;">Автор: vuk, vuk@fcenter.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: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> WordScan(</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;">var</span><span class="f_CodeExample" style="color: #000000;"> StartPos, WordLen: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Delimiters: TSysCharSet): boolean;</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, 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;">Result := false;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">WordLen := </span><span class="f_CodeExample" style="color: #800000;">0</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;">i := StartPos;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">l := length(s);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StartPos := </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;">while</span><span class="f_CodeExample" style="color: #000000;"> i &lt;= l </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: #008000; font-weight: bold;">in</span><span class="f_CodeExample" style="color: #000000;"> Delimiters </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(i)</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;"> StartPos := i;</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"> </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;= l </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: #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;"> Delimiters) </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(i);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(WordLen);</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;"> break;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := WordLen &lt;&gt; </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;">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;">//Консольная программа, выводящая на экран слова из заданной строки.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">program</span><span class="f_CodeExample" style="color: #000000;"> Project1;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #0000ff;">{$APPTYPE CONSOLE}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">uses</span><span class="f_CodeExample" style="color: #000000;"> SysUtils;</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;">wStart, wLen: 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;">s := </span><span class="f_CodeExample" style="color: #ff0000;">'This is a test string. String contains delimiters.'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">wStart := </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;">wLen := </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;">while</span><span class="f_CodeExample" style="color: #000000;"> WordScan(s, wStart, wLen, [</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><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;">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;"> writeln(copy(s, wStart, wLen));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(wStart, wLen);</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;">readln;</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-20T16:42:35+07:00 2013-08-20T16:42:35+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/slova/slovar-unikalnykh-slov.html Super User toto44@inbox.ru <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000;">Словарь </span><span style="font-family: 'Times New Roman'; color: #000000;">уникальных </span><span style="font-family: 'Times New Roman'; color: #000000;">слов</span><span style="font-family: 'Times New Roman'; color: #000000;">.</span></p> <p style="margin: 7px 0px;"><span style="font-family: 'Times New Roman'; color: #000000;">Алгоритм </span><span style="font-family: 'Times New Roman'; color: #000000;">составления </span><span style="font-family: 'Times New Roman'; color: #000000;">словаря </span><span style="font-family: 'Times New Roman'; color: #000000;">всех </span><span style="font-family: 'Times New Roman'; color: #000000;">уникальных </span><span style="font-family: 'Times New Roman'; color: #000000;">слов </span><span style="font-family: 'Times New Roman'; color: #000000;">встречающихся </span><span style="font-family: 'Times New Roman'; color: #000000;">в </span><span style="font-family: 'Times New Roman'; color: #000000;">текстовом </span><span style="font-family: 'Times New Roman'; color: #000000;">файле</span><span style="font-family: 'Times New Roman'; color: #000000;">.</span><br /><span style="font-family: 'Times New Roman'; color: #000000;">По </span><span style="font-family: 'Times New Roman'; color: #000000;">результатам </span><span style="font-family: 'Times New Roman'; color: #000000;">тестирования</span><span style="font-family: 'Times New Roman'; color: #000000;">: </span><span style="font-family: 'Times New Roman'; color: #000000;">обработка </span><span style="font-family: 'Times New Roman'; color: #000000;">файла </span><span style="font-family: 'Times New Roman'; color: #000000;">объемом</span><span style="font-family: 'Times New Roman'; color: #000000;"> 3 </span><span style="font-family: 'Times New Roman'; color: #000000;">Мб</span><span style="font-family: 'Times New Roman'; color: #000000;"> (</span><span style="font-family: 'Times New Roman'; color: #000000;">уникальных </span><span style="font-family: 'Times New Roman'; color: #000000;">слов</span><span style="font-family: 'Times New Roman'; color: #000000;"> ~63 </span><span style="font-family: 'Times New Roman'; color: #000000;">тысячи</span><span style="font-family: 'Times New Roman'; color: #000000;">)</span><br /><span style="font-family: 'Times New Roman'; color: #000000;">занимает </span><span style="font-family: 'Times New Roman'; color: #000000;">около</span><span style="font-family: 'Times New Roman'; color: #000000;"> 3 </span><span style="font-family: 'Times New Roman'; color: #000000;">секунд</span><span style="font-family: 'Times New Roman'; color: #000000;">. (</span><span style="font-family: 'Times New Roman'; color: #000000;">Можно</span><span style="font-family: 'Times New Roman'; color: #000000;">, </span><span style="font-family: 'Times New Roman'; color: #000000;">конечно</span><span style="font-family: 'Times New Roman'; color: #000000;">, </span><span style="font-family: 'Times New Roman'; color: #000000;">и </span><span style="font-family: 'Times New Roman'; color: #000000;">еще </span><span style="font-family: 'Times New Roman'; color: #000000;">ускорить</span><span style="font-family: 'Times New Roman'; color: #000000;">, </span><span style="font-family: 'Times New Roman'; color: #000000;">но </span><span style="font-family: 'Times New Roman'; color: #000000;">уж </span><span style="font-family: 'Times New Roman'; color: #000000;">лениво </span><span style="font-family: 'Times New Roman'; color: #000000;">сильно</span><span style="font-family: 'Times New Roman'; color: #000000;"> ;)</span></p> <p style="margin: 7px 0px;"><span style="font-family: 'Times New Roman'; color: #000000;">Демо пример:<br /></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;">Unit1.pas</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;">unit Unit1;<br /><br />interface<br /><br />uses<br /> Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,<br /> Dialogs, StdCtrls, ComCtrls, Dictionary;<br /><br />type<br /> TForm1 = class(TForm)<br /> Button1: TButton;<br /> ProgressBar1: TProgressBar;<br /> Button2: TButton;<br /> Edit1: TEdit;<br /> Label1: TLabel;<br /> CheckBox1: TCheckBox;<br /> procedure Button1Click(Sender: TObject);<br /> procedure Button2Click(Sender: TObject);<br /> end;<br /><br />var<br /> Form1: TForm1;<br /><br />implementation<br /><br />uses ComObj;<br /><br />{$R *.dfm}<br /><br />procedure TForm1.Button1Click(Sender: TObject);<br />var<br /> SH: TDictionaryFounder;<br /> S: TStringList;<br /> M: TMemoryStream;<br /> I: Integer;<br /> Start: Cardinal;<br />begin<br /> S := TStringList.Create;<br /> try<br /> S.LoadFromFile('c:\1.txt');<br /> ProgressBar1.Position := 0;<br /> ProgressBar1.Max := S.Count;<br /> SH := TDictionaryFounder.Create;<br /> try<br /> Start := GetTickCount;<br /> for I := 0 to S.Count - 1 do<br /> begin<br /> SH.AddData(S.Strings[I]);<br /> ProgressBar1.Position := I;<br /> end;<br /> ShowMessage('Время составления словаря: ' + IntToStr(GetTickCount - Start));<br /> M := TMemoryStream.Create;<br /> try<br /> SH.SaveToStream(M);<br /> M.SaveToFile('c:\2.txt');<br /> ProgressBar1.Position := 0;<br /> Button2.Enabled := True;<br /> finally<br /> M.Free;<br /> end;<br /> finally<br /> SH.Free;<br /> end;<br /> finally<br /> S.Free;<br /> end;<br />end;<br /><br /><br />procedure TForm1.Button2Click(Sender: TObject);<br />var<br /> S: TDictionaryFinder;<br /> M: TMemoryStream;<br />begin<br /> S := TDictionaryFinder.Create;<br /> try<br /> M := TMemoryStream.Create;<br /> try<br /> M.LoadFromFile('c:\2.txt'); <br /> S.LoadFromStream(M);<br /> if S.Find(Edit1.Text, CheckBox1.Checked) then<br /> ShowMessage('Элемент найден')<br /> else<br /> ShowMessage('Элемент не найден');<br /> finally<br /> M.Free;<br /> end;<br /> finally<br /> S.Free;<br /> end;<br />end;<br /><br />end.<br /></span></p> </td> </tr> </tbody> </table> </div> <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;">Unit1.dfm</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;">object Form1: TForm1<br /> Left = 196<br /> Top = 110<br /> BorderIcons = [biSystemMenu]<br /> BorderStyle = bsSingle<br /> Caption = 'Dictionary demo'<br /> ClientHeight = 168<br /> ClientWidth = 227<br /> Color = clBtnFace<br /> Font.Charset = DEFAULT_CHARSET<br /> Font.Color = clWindowText<br /> Font.Height = -11<br /> Font.Name = 'MS Sans Serif'<br /> Font.Style = []<br /> OldCreateOrder = False<br /> Position = poScreenCenter<br /> PixelsPerInch = 96<br /> TextHeight = 13<br /> object Label1: TLabel<br /> Left = 24<br /> Top = 72<br /> Width = 136<br /> Height = 13<br /> Caption = #1042#1074#1077#1076#1080#1090#1077' '#1090#1077#1082#1089#1090' '#1076#1083#1103' '#1087#1086#1080#1089#1082#1072':'<br /> end<br /> object Button1: TButton<br /> Left = 24<br /> Top = 32<br /> Width = 185<br /> Height = 25<br /> Caption = #1057#1086#1079#1076#1072#1090#1100' '#1089#1083#1086#1074#1072#1088#1100<br /> TabOrder = 0<br /> OnClick = Button1Click<br /> end<br /> object ProgressBar1: TProgressBar<br /> Left = 8<br /> Top = 8<br /> Width = 209<br /> Height = 17<br /> TabOrder = 1<br /> end<br /> object Button2: TButton<br /> Left = 136<br /> Top = 136<br /> Width = 75<br /> Height = 25<br /> Caption = #1055#1086#1080#1089#1082<br /> Enabled = False<br /> TabOrder = 2<br /> OnClick = Button2Click<br /> end<br /> object Edit1: TEdit<br /> Left = 24<br /> Top = 88<br /> Width = 185<br /> Height = 21<br /> TabOrder = 3<br /> end<br /> object CheckBox1: TCheckBox<br /> Left = 24<br /> Top = 112<br /> Width = 185<br /> Height = 17<br /> Caption = #1048#1089#1082#1072#1090#1100' '#1074#1085#1091#1090#1088#1080' '#1089#1083#1086#1074<br /> TabOrder = 4<br /> end<br />end<br /></span><span class="f_CodeExample" style="color: #000080;"><br /></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> </span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;"> </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;">Project2.dpr</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;">program Project2;<br /><br />uses<br /> Forms,<br /> Unit1 in 'Unit1.pas' {Form1},<br /> Dictionary in 'Dictionary.pas';<br /><br />{$R *.res}<br /><br />begin<br /> Application.Initialize;<br /> Application.CreateForm(TForm1, Form1);<br /> Application.Run;<br />end.<br /></span></p> </td> </tr> </tbody> </table> </div> <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;">Dictionary.pas</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;">////////////////////////////////////////////////////////////////////////////////<br />//<br />// ****************************************************************************<br />// * Unit Name : Dictionary<br />// * Purpose : Набор классов для работы с индексированным списком поиска<br />// * Author : Александр Багель<br />// * Copyright : Центр Гранд 2001 - 2004 г.<br />// * Version : 1.00<br />// ****************************************************************************<br />//<br /><br />unit Dictionary;<br /><br />interface<br /><br />uses<br /> Windows, Classes, SysUtils{, FullTextGetter};<br /><br />type<br /> // Класс отвечающий за создание словаря уникальных слов<br /> TDictionaryFounder = class<br /> private<br /> FDict: TList;<br /> FDictMem: array of String;<br /> FDictMemCount: Integer;<br /> protected<br /> function GetPos(const Value: String): Integer; virtual;<br /> procedure Insert(Value: String; Position: Integer); virtual;<br /> function Prepare(const Value: String): String; virtual;<br /> public<br /> constructor Create;<br /> destructor Destroy; override;<br /> procedure AddData(Value: String); //overload;<br /> // procedure AddData(ObjText: IFullTextGetter); overload;<br /> procedure SaveToStream(var AStream: TMemoryStream);<br /> end;<br /><br /> // Класс осуществляющий поиск в словаре<br /> // полученном от TDictionaryFounder<br /> TDictionaryFinder = class<br /> private<br /> FDict: array of ShortString;<br /> FDictLength: Cardinal;<br /> protected<br /> function GetPos(const Value: ShortString;<br /> const SubStr: Boolean = False): Boolean; virtual;<br /> public<br /> destructor Destroy; override;<br /> procedure LoadFromStream(const AStream: TMemoryStream);<br /> function Find(const Value: String;<br /> const SubStr: Boolean = False): Boolean;<br /> end;<br /><br />implementation<br /><br />{ TDictionaryFounder }<br /><br />//<br />// Добавление информации для построения массива индексов<br />// =============================================================================<br />procedure TDictionaryFounder.AddData(Value: String);<br />var<br /> Tmp: String;<br /> Position, I: Integer;<br /> S: TStringList;<br />begin<br /> Value := Prepare(Value);<br /> S := TStringList.Create;<br /> try<br /> S.Text := Value;<br /> for I := 0 to S.Count - 1 do<br /> begin<br /> Tmp := S[I];<br /> if Tmp = '' then Continue;<br /> if FDict.Count = 0 then<br /> Insert(Tmp, 0)<br /> else<br /> begin<br /> Position := GetPos(Tmp);<br /> if (Position &gt;= 0) then<br /> if FDict.Count &gt; Position then<br /> begin<br /> if String(FDict.Items[Position]) &lt;&gt; Tmp then<br /> Insert(Tmp, Position);<br /> end<br /> else<br /> Insert(Tmp, Position);<br /> end;<br /> end;<br /> finally<br /> S.Free;<br /> end;<br />end;<br /><br />//<br />// Добавление информации для построения массива индексов<br />// Информация приходит из интерфейса<br />// =============================================================================<br />{procedure TDictionaryFounder.AddData(ObjText: IFullTextGetter);<br />var<br /> S: String;<br />begin<br /> if ObjText = nil then<br /> raise Exception.Create('IFullTextGetter is empty.');<br /> S := ObjText.GetText;<br /> AddData(S);<br />end; }<br /><br />constructor TDictionaryFounder.Create;<br />begin<br /> FDict := TList.Create;<br />end;<br /><br />destructor TDictionaryFounder.Destroy;<br />begin<br /> FDict.Free;<br /> FDictMemCount := 0;<br /> SetLength(FDictMem, FDictMemCount);<br /> inherited;<br />end;<br /><br />//<br />// Возвращает номер позиции где находится слово, или должно находится...<br />// Поиск методом половинного деления...<br />// =============================================================================<br />function TDictionaryFounder.GetPos(const Value: String): Integer;<br />var<br /> FLeft, FRight, FCurrent: Cardinal;<br />begin<br /> if FDict.Count = 0 then<br /> begin<br /> Result := 0;<br /> Exit;<br /> end;<br /> FLeft := 0;<br /> FRight := FDict.Count - 1;<br /> FCurrent := (FRight + FLeft) div 2;<br /> if String(FDict.Items[FLeft]) &gt; Value then<br /> begin<br /> Result := 0;<br /> Exit;<br /> end;<br /> if String(FDict.Items[FRight]) &lt; Value then<br /> begin<br /> Result := FRight + 1;<br /> Exit;<br /> end;<br /> repeat<br /> if String(FDict.Items[FCurrent]) = Value then<br /> begin<br /> Result := FCurrent;<br /> Exit;<br /> end;<br /> if String(FDict.Items[FCurrent]) &lt; Value then<br /> FLeft := FCurrent<br /> else<br /> FRight := FCurrent;<br /> FCurrent := (FRight + FLeft) div 2;<br /> until FLeft = FCurrent;<br /> if String(FDict.Items[FCurrent]) &lt; Value then Inc(FCurrent);<br /> Result := FCurrent;<br />end;<br /><br />//<br />// Добавление нового индекса в массив индексов<br />// =============================================================================<br />procedure TDictionaryFounder.Insert(Value: String; Position: Integer);<br />begin<br /> if FDictMemCount &lt; FDict.Count + 1 then<br /> begin<br /> Inc(FDictMemCount, FDict.Count + 1);<br /> SetLength(FDictMem, FDictMemCount);<br /> end;<br /> FDictMem[FDict.Count] := Value;<br /> FDict.Insert(Position, @FDictMem[FDict.Count][1]);<br />end;<br /><br />//<br />// Сохранение массива индексов в поток<br />// =============================================================================<br />procedure TDictionaryFounder.SaveToStream(var AStream: TMemoryStream);<br />var<br /> I: Integer;<br /> S: PChar;<br /> TmpS: TStringList;<br />begin<br /> if AStream = nil then Exit;<br /> TmpS := TStringList.Create;<br /> try<br /> for I := 0 to FDict.Count - 1 do<br /> begin<br /> S := FDict.Items[I];<br /> TmpS.Add(S);<br /> end;<br /> AStream.Position := 0;<br /> AStream.Size := Length(TmpS.Text);<br /> AStream.Write(TmpS.Text[1], Length(TmpS.Text));<br /> AStream.Position := 0;<br /> finally<br /> TmpS.Free;<br /> end;<br />end;<br /><br />//<br />// Подготовка данных к обработке...<br />// Удаляются все не буквенные символы, каждое слово начинется с новой строки...<br />// =============================================================================<br />function TDictionaryFounder.Prepare(const Value: String): String;<br />var<br /> I: Integer;<br /> Len: Cardinal;<br /> C: PAnsiChar;<br /> LastEnter: Boolean;<br />begin<br /> SetLength(Result, Length(Value) * 2);<br /> Len := 0;<br /> LastEnter := False;<br /> for I := 1 to Length(Value) do<br /> begin<br /> C := CharLower(@Value[I]);<br /> if C^ in ['a'..'z', 'а'..'я'] then<br /> begin<br /> Inc(Len);<br /> Result[Len] := C^;<br /> LastEnter := False;<br /> end<br /> else<br /> if not LastEnter then<br /> begin<br /> Inc(Len);<br /> Result[Len] := #13;<br /> Inc(Len);<br /> Result[Len] := #10;<br /> LastEnter := True;<br /> end;<br /> end;<br /> SetLength(Result, Len);<br />end;<br /><br />{ TDictionaryFinder }<br /><br />destructor TDictionaryFinder.Destroy;<br />begin<br /> FDictLength := 0;<br /> SetLength(FDict, FDictLength);<br /> inherited;<br />end;<br /><br />//<br />// Поиск введенных слов...<br />// =============================================================================<br />function TDictionaryFinder.Find(const Value: String;<br /> const SubStr: Boolean = False): Boolean;<br />var<br /> S: TStringList;<br /> I: Integer;<br />begin<br /> Result := False;<br /> if Value = '' then Exit;<br /> S := TStringList.Create;<br /> try<br /> S.Text := StringReplace(Value, ' ', #13#10, [rfReplaceAll]);<br /> S.Text := AnsiLowerCase(S.Text);<br /> if S.Count = 0 then Exit;<br /> for I := 0 to S.Count - 1 do<br /> begin<br /> Result := GetPos(S.Strings[I], SubStr);<br /> if not Result then Exit;<br /> end;<br /> finally<br /> S.Free;<br /> end;<br />end;<br /><br />//<br />// Поиск каждого слова в массиве индексов<br />// =============================================================================<br />function TDictionaryFinder.GetPos(const Value: ShortString;<br /> const SubStr: Boolean = False): Boolean;<br />var<br /> FLeft, FRight, FCurrent, I: Cardinal;<br />begin<br /> Result := False;<br /> if SubStr then<br /> begin<br /> for I := 0 to FDictLength - 1 do<br /> if Pos(Value, FDict[I]) &gt; 0 then<br /> begin<br /> Result := True;<br /> Exit;<br /> end;<br /> end<br /> else<br /> begin<br /> if FDictLength = 0 then Exit;<br /> FLeft := 0;<br /> FRight := FDictLength - 1;<br /> FCurrent := (FRight + FLeft) div 2;<br /> if FDict[FLeft] &gt; Value then Exit;<br /> if FDict[FRight] &lt; Value then Exit;<br /> if FDict[FLeft] = Value then<br /> begin<br /> Result := True;<br /> Exit;<br /> end;<br /> if FDict[FRight] = Value then<br /> begin<br /> Result := True;<br /> Exit;<br /> end;<br /> repeat<br /> if FDict[FCurrent] = Value then<br /> begin<br /> Result := True;<br /> Exit;<br /> end;<br /> if FDict[FCurrent] &lt; Value then<br /> FLeft := FCurrent<br /> else<br /> FRight := FCurrent;<br /> FCurrent := (FRight + FLeft) div 2;<br /> until FLeft = FCurrent;<br /> end;<br />end;<br /><br />//<br />// Загрузка массива индексов из потока<br />// =============================================================================<br />procedure TDictionaryFinder.LoadFromStream(const AStream: TMemoryStream);<br />var<br /> S: TStringList;<br /> I: Integer;<br />begin<br /> S := TStringList.Create;<br /> try<br /> AStream.Position := 0;<br /> S.LoadFromStream(AStream);<br /> FDictLength := S.Count;<br /> if FDictLength = 0 then Exit;<br /> SetLength(FDict, FDictLength);<br /> for I := 0 to FDictLength - 1 do<br /> FDict[I] := S.Strings[I];<br /> finally<br /> S.Free;<br /> end;<br />end;<br /><br />end.<br /></span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000;">Словарь </span><span style="font-family: 'Times New Roman'; color: #000000;">уникальных </span><span style="font-family: 'Times New Roman'; color: #000000;">слов</span><span style="font-family: 'Times New Roman'; color: #000000;">.</span></p> <p style="margin: 7px 0px;"><span style="font-family: 'Times New Roman'; color: #000000;">Алгоритм </span><span style="font-family: 'Times New Roman'; color: #000000;">составления </span><span style="font-family: 'Times New Roman'; color: #000000;">словаря </span><span style="font-family: 'Times New Roman'; color: #000000;">всех </span><span style="font-family: 'Times New Roman'; color: #000000;">уникальных </span><span style="font-family: 'Times New Roman'; color: #000000;">слов </span><span style="font-family: 'Times New Roman'; color: #000000;">встречающихся </span><span style="font-family: 'Times New Roman'; color: #000000;">в </span><span style="font-family: 'Times New Roman'; color: #000000;">текстовом </span><span style="font-family: 'Times New Roman'; color: #000000;">файле</span><span style="font-family: 'Times New Roman'; color: #000000;">.</span><br /><span style="font-family: 'Times New Roman'; color: #000000;">По </span><span style="font-family: 'Times New Roman'; color: #000000;">результатам </span><span style="font-family: 'Times New Roman'; color: #000000;">тестирования</span><span style="font-family: 'Times New Roman'; color: #000000;">: </span><span style="font-family: 'Times New Roman'; color: #000000;">обработка </span><span style="font-family: 'Times New Roman'; color: #000000;">файла </span><span style="font-family: 'Times New Roman'; color: #000000;">объемом</span><span style="font-family: 'Times New Roman'; color: #000000;"> 3 </span><span style="font-family: 'Times New Roman'; color: #000000;">Мб</span><span style="font-family: 'Times New Roman'; color: #000000;"> (</span><span style="font-family: 'Times New Roman'; color: #000000;">уникальных </span><span style="font-family: 'Times New Roman'; color: #000000;">слов</span><span style="font-family: 'Times New Roman'; color: #000000;"> ~63 </span><span style="font-family: 'Times New Roman'; color: #000000;">тысячи</span><span style="font-family: 'Times New Roman'; color: #000000;">)</span><br /><span style="font-family: 'Times New Roman'; color: #000000;">занимает </span><span style="font-family: 'Times New Roman'; color: #000000;">около</span><span style="font-family: 'Times New Roman'; color: #000000;"> 3 </span><span style="font-family: 'Times New Roman'; color: #000000;">секунд</span><span style="font-family: 'Times New Roman'; color: #000000;">. (</span><span style="font-family: 'Times New Roman'; color: #000000;">Можно</span><span style="font-family: 'Times New Roman'; color: #000000;">, </span><span style="font-family: 'Times New Roman'; color: #000000;">конечно</span><span style="font-family: 'Times New Roman'; color: #000000;">, </span><span style="font-family: 'Times New Roman'; color: #000000;">и </span><span style="font-family: 'Times New Roman'; color: #000000;">еще </span><span style="font-family: 'Times New Roman'; color: #000000;">ускорить</span><span style="font-family: 'Times New Roman'; color: #000000;">, </span><span style="font-family: 'Times New Roman'; color: #000000;">но </span><span style="font-family: 'Times New Roman'; color: #000000;">уж </span><span style="font-family: 'Times New Roman'; color: #000000;">лениво </span><span style="font-family: 'Times New Roman'; color: #000000;">сильно</span><span style="font-family: 'Times New Roman'; color: #000000;"> ;)</span></p> <p style="margin: 7px 0px;"><span style="font-family: 'Times New Roman'; color: #000000;">Демо пример:<br /></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;">Unit1.pas</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;">unit Unit1;<br /><br />interface<br /><br />uses<br /> Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,<br /> Dialogs, StdCtrls, ComCtrls, Dictionary;<br /><br />type<br /> TForm1 = class(TForm)<br /> Button1: TButton;<br /> ProgressBar1: TProgressBar;<br /> Button2: TButton;<br /> Edit1: TEdit;<br /> Label1: TLabel;<br /> CheckBox1: TCheckBox;<br /> procedure Button1Click(Sender: TObject);<br /> procedure Button2Click(Sender: TObject);<br /> end;<br /><br />var<br /> Form1: TForm1;<br /><br />implementation<br /><br />uses ComObj;<br /><br />{$R *.dfm}<br /><br />procedure TForm1.Button1Click(Sender: TObject);<br />var<br /> SH: TDictionaryFounder;<br /> S: TStringList;<br /> M: TMemoryStream;<br /> I: Integer;<br /> Start: Cardinal;<br />begin<br /> S := TStringList.Create;<br /> try<br /> S.LoadFromFile('c:\1.txt');<br /> ProgressBar1.Position := 0;<br /> ProgressBar1.Max := S.Count;<br /> SH := TDictionaryFounder.Create;<br /> try<br /> Start := GetTickCount;<br /> for I := 0 to S.Count - 1 do<br /> begin<br /> SH.AddData(S.Strings[I]);<br /> ProgressBar1.Position := I;<br /> end;<br /> ShowMessage('Время составления словаря: ' + IntToStr(GetTickCount - Start));<br /> M := TMemoryStream.Create;<br /> try<br /> SH.SaveToStream(M);<br /> M.SaveToFile('c:\2.txt');<br /> ProgressBar1.Position := 0;<br /> Button2.Enabled := True;<br /> finally<br /> M.Free;<br /> end;<br /> finally<br /> SH.Free;<br /> end;<br /> finally<br /> S.Free;<br /> end;<br />end;<br /><br /><br />procedure TForm1.Button2Click(Sender: TObject);<br />var<br /> S: TDictionaryFinder;<br /> M: TMemoryStream;<br />begin<br /> S := TDictionaryFinder.Create;<br /> try<br /> M := TMemoryStream.Create;<br /> try<br /> M.LoadFromFile('c:\2.txt'); <br /> S.LoadFromStream(M);<br /> if S.Find(Edit1.Text, CheckBox1.Checked) then<br /> ShowMessage('Элемент найден')<br /> else<br /> ShowMessage('Элемент не найден');<br /> finally<br /> M.Free;<br /> end;<br /> finally<br /> S.Free;<br /> end;<br />end;<br /><br />end.<br /></span></p> </td> </tr> </tbody> </table> </div> <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;">Unit1.dfm</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;">object Form1: TForm1<br /> Left = 196<br /> Top = 110<br /> BorderIcons = [biSystemMenu]<br /> BorderStyle = bsSingle<br /> Caption = 'Dictionary demo'<br /> ClientHeight = 168<br /> ClientWidth = 227<br /> Color = clBtnFace<br /> Font.Charset = DEFAULT_CHARSET<br /> Font.Color = clWindowText<br /> Font.Height = -11<br /> Font.Name = 'MS Sans Serif'<br /> Font.Style = []<br /> OldCreateOrder = False<br /> Position = poScreenCenter<br /> PixelsPerInch = 96<br /> TextHeight = 13<br /> object Label1: TLabel<br /> Left = 24<br /> Top = 72<br /> Width = 136<br /> Height = 13<br /> Caption = #1042#1074#1077#1076#1080#1090#1077' '#1090#1077#1082#1089#1090' '#1076#1083#1103' '#1087#1086#1080#1089#1082#1072':'<br /> end<br /> object Button1: TButton<br /> Left = 24<br /> Top = 32<br /> Width = 185<br /> Height = 25<br /> Caption = #1057#1086#1079#1076#1072#1090#1100' '#1089#1083#1086#1074#1072#1088#1100<br /> TabOrder = 0<br /> OnClick = Button1Click<br /> end<br /> object ProgressBar1: TProgressBar<br /> Left = 8<br /> Top = 8<br /> Width = 209<br /> Height = 17<br /> TabOrder = 1<br /> end<br /> object Button2: TButton<br /> Left = 136<br /> Top = 136<br /> Width = 75<br /> Height = 25<br /> Caption = #1055#1086#1080#1089#1082<br /> Enabled = False<br /> TabOrder = 2<br /> OnClick = Button2Click<br /> end<br /> object Edit1: TEdit<br /> Left = 24<br /> Top = 88<br /> Width = 185<br /> Height = 21<br /> TabOrder = 3<br /> end<br /> object CheckBox1: TCheckBox<br /> Left = 24<br /> Top = 112<br /> Width = 185<br /> Height = 17<br /> Caption = #1048#1089#1082#1072#1090#1100' '#1074#1085#1091#1090#1088#1080' '#1089#1083#1086#1074<br /> TabOrder = 4<br /> end<br />end<br /></span><span class="f_CodeExample" style="color: #000080;"><br /></span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> </span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;"> </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;">Project2.dpr</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;">program Project2;<br /><br />uses<br /> Forms,<br /> Unit1 in 'Unit1.pas' {Form1},<br /> Dictionary in 'Dictionary.pas';<br /><br />{$R *.res}<br /><br />begin<br /> Application.Initialize;<br /> Application.CreateForm(TForm1, Form1);<br /> Application.Run;<br />end.<br /></span></p> </td> </tr> </tbody> </table> </div> <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;">Dictionary.pas</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;">////////////////////////////////////////////////////////////////////////////////<br />//<br />// ****************************************************************************<br />// * Unit Name : Dictionary<br />// * Purpose : Набор классов для работы с индексированным списком поиска<br />// * Author : Александр Багель<br />// * Copyright : Центр Гранд 2001 - 2004 г.<br />// * Version : 1.00<br />// ****************************************************************************<br />//<br /><br />unit Dictionary;<br /><br />interface<br /><br />uses<br /> Windows, Classes, SysUtils{, FullTextGetter};<br /><br />type<br /> // Класс отвечающий за создание словаря уникальных слов<br /> TDictionaryFounder = class<br /> private<br /> FDict: TList;<br /> FDictMem: array of String;<br /> FDictMemCount: Integer;<br /> protected<br /> function GetPos(const Value: String): Integer; virtual;<br /> procedure Insert(Value: String; Position: Integer); virtual;<br /> function Prepare(const Value: String): String; virtual;<br /> public<br /> constructor Create;<br /> destructor Destroy; override;<br /> procedure AddData(Value: String); //overload;<br /> // procedure AddData(ObjText: IFullTextGetter); overload;<br /> procedure SaveToStream(var AStream: TMemoryStream);<br /> end;<br /><br /> // Класс осуществляющий поиск в словаре<br /> // полученном от TDictionaryFounder<br /> TDictionaryFinder = class<br /> private<br /> FDict: array of ShortString;<br /> FDictLength: Cardinal;<br /> protected<br /> function GetPos(const Value: ShortString;<br /> const SubStr: Boolean = False): Boolean; virtual;<br /> public<br /> destructor Destroy; override;<br /> procedure LoadFromStream(const AStream: TMemoryStream);<br /> function Find(const Value: String;<br /> const SubStr: Boolean = False): Boolean;<br /> end;<br /><br />implementation<br /><br />{ TDictionaryFounder }<br /><br />//<br />// Добавление информации для построения массива индексов<br />// =============================================================================<br />procedure TDictionaryFounder.AddData(Value: String);<br />var<br /> Tmp: String;<br /> Position, I: Integer;<br /> S: TStringList;<br />begin<br /> Value := Prepare(Value);<br /> S := TStringList.Create;<br /> try<br /> S.Text := Value;<br /> for I := 0 to S.Count - 1 do<br /> begin<br /> Tmp := S[I];<br /> if Tmp = '' then Continue;<br /> if FDict.Count = 0 then<br /> Insert(Tmp, 0)<br /> else<br /> begin<br /> Position := GetPos(Tmp);<br /> if (Position &gt;= 0) then<br /> if FDict.Count &gt; Position then<br /> begin<br /> if String(FDict.Items[Position]) &lt;&gt; Tmp then<br /> Insert(Tmp, Position);<br /> end<br /> else<br /> Insert(Tmp, Position);<br /> end;<br /> end;<br /> finally<br /> S.Free;<br /> end;<br />end;<br /><br />//<br />// Добавление информации для построения массива индексов<br />// Информация приходит из интерфейса<br />// =============================================================================<br />{procedure TDictionaryFounder.AddData(ObjText: IFullTextGetter);<br />var<br /> S: String;<br />begin<br /> if ObjText = nil then<br /> raise Exception.Create('IFullTextGetter is empty.');<br /> S := ObjText.GetText;<br /> AddData(S);<br />end; }<br /><br />constructor TDictionaryFounder.Create;<br />begin<br /> FDict := TList.Create;<br />end;<br /><br />destructor TDictionaryFounder.Destroy;<br />begin<br /> FDict.Free;<br /> FDictMemCount := 0;<br /> SetLength(FDictMem, FDictMemCount);<br /> inherited;<br />end;<br /><br />//<br />// Возвращает номер позиции где находится слово, или должно находится...<br />// Поиск методом половинного деления...<br />// =============================================================================<br />function TDictionaryFounder.GetPos(const Value: String): Integer;<br />var<br /> FLeft, FRight, FCurrent: Cardinal;<br />begin<br /> if FDict.Count = 0 then<br /> begin<br /> Result := 0;<br /> Exit;<br /> end;<br /> FLeft := 0;<br /> FRight := FDict.Count - 1;<br /> FCurrent := (FRight + FLeft) div 2;<br /> if String(FDict.Items[FLeft]) &gt; Value then<br /> begin<br /> Result := 0;<br /> Exit;<br /> end;<br /> if String(FDict.Items[FRight]) &lt; Value then<br /> begin<br /> Result := FRight + 1;<br /> Exit;<br /> end;<br /> repeat<br /> if String(FDict.Items[FCurrent]) = Value then<br /> begin<br /> Result := FCurrent;<br /> Exit;<br /> end;<br /> if String(FDict.Items[FCurrent]) &lt; Value then<br /> FLeft := FCurrent<br /> else<br /> FRight := FCurrent;<br /> FCurrent := (FRight + FLeft) div 2;<br /> until FLeft = FCurrent;<br /> if String(FDict.Items[FCurrent]) &lt; Value then Inc(FCurrent);<br /> Result := FCurrent;<br />end;<br /><br />//<br />// Добавление нового индекса в массив индексов<br />// =============================================================================<br />procedure TDictionaryFounder.Insert(Value: String; Position: Integer);<br />begin<br /> if FDictMemCount &lt; FDict.Count + 1 then<br /> begin<br /> Inc(FDictMemCount, FDict.Count + 1);<br /> SetLength(FDictMem, FDictMemCount);<br /> end;<br /> FDictMem[FDict.Count] := Value;<br /> FDict.Insert(Position, @FDictMem[FDict.Count][1]);<br />end;<br /><br />//<br />// Сохранение массива индексов в поток<br />// =============================================================================<br />procedure TDictionaryFounder.SaveToStream(var AStream: TMemoryStream);<br />var<br /> I: Integer;<br /> S: PChar;<br /> TmpS: TStringList;<br />begin<br /> if AStream = nil then Exit;<br /> TmpS := TStringList.Create;<br /> try<br /> for I := 0 to FDict.Count - 1 do<br /> begin<br /> S := FDict.Items[I];<br /> TmpS.Add(S);<br /> end;<br /> AStream.Position := 0;<br /> AStream.Size := Length(TmpS.Text);<br /> AStream.Write(TmpS.Text[1], Length(TmpS.Text));<br /> AStream.Position := 0;<br /> finally<br /> TmpS.Free;<br /> end;<br />end;<br /><br />//<br />// Подготовка данных к обработке...<br />// Удаляются все не буквенные символы, каждое слово начинется с новой строки...<br />// =============================================================================<br />function TDictionaryFounder.Prepare(const Value: String): String;<br />var<br /> I: Integer;<br /> Len: Cardinal;<br /> C: PAnsiChar;<br /> LastEnter: Boolean;<br />begin<br /> SetLength(Result, Length(Value) * 2);<br /> Len := 0;<br /> LastEnter := False;<br /> for I := 1 to Length(Value) do<br /> begin<br /> C := CharLower(@Value[I]);<br /> if C^ in ['a'..'z', 'а'..'я'] then<br /> begin<br /> Inc(Len);<br /> Result[Len] := C^;<br /> LastEnter := False;<br /> end<br /> else<br /> if not LastEnter then<br /> begin<br /> Inc(Len);<br /> Result[Len] := #13;<br /> Inc(Len);<br /> Result[Len] := #10;<br /> LastEnter := True;<br /> end;<br /> end;<br /> SetLength(Result, Len);<br />end;<br /><br />{ TDictionaryFinder }<br /><br />destructor TDictionaryFinder.Destroy;<br />begin<br /> FDictLength := 0;<br /> SetLength(FDict, FDictLength);<br /> inherited;<br />end;<br /><br />//<br />// Поиск введенных слов...<br />// =============================================================================<br />function TDictionaryFinder.Find(const Value: String;<br /> const SubStr: Boolean = False): Boolean;<br />var<br /> S: TStringList;<br /> I: Integer;<br />begin<br /> Result := False;<br /> if Value = '' then Exit;<br /> S := TStringList.Create;<br /> try<br /> S.Text := StringReplace(Value, ' ', #13#10, [rfReplaceAll]);<br /> S.Text := AnsiLowerCase(S.Text);<br /> if S.Count = 0 then Exit;<br /> for I := 0 to S.Count - 1 do<br /> begin<br /> Result := GetPos(S.Strings[I], SubStr);<br /> if not Result then Exit;<br /> end;<br /> finally<br /> S.Free;<br /> end;<br />end;<br /><br />//<br />// Поиск каждого слова в массиве индексов<br />// =============================================================================<br />function TDictionaryFinder.GetPos(const Value: ShortString;<br /> const SubStr: Boolean = False): Boolean;<br />var<br /> FLeft, FRight, FCurrent, I: Cardinal;<br />begin<br /> Result := False;<br /> if SubStr then<br /> begin<br /> for I := 0 to FDictLength - 1 do<br /> if Pos(Value, FDict[I]) &gt; 0 then<br /> begin<br /> Result := True;<br /> Exit;<br /> end;<br /> end<br /> else<br /> begin<br /> if FDictLength = 0 then Exit;<br /> FLeft := 0;<br /> FRight := FDictLength - 1;<br /> FCurrent := (FRight + FLeft) div 2;<br /> if FDict[FLeft] &gt; Value then Exit;<br /> if FDict[FRight] &lt; Value then Exit;<br /> if FDict[FLeft] = Value then<br /> begin<br /> Result := True;<br /> Exit;<br /> end;<br /> if FDict[FRight] = Value then<br /> begin<br /> Result := True;<br /> Exit;<br /> end;<br /> repeat<br /> if FDict[FCurrent] = Value then<br /> begin<br /> Result := True;<br /> Exit;<br /> end;<br /> if FDict[FCurrent] &lt; Value then<br /> FLeft := FCurrent<br /> else<br /> FRight := FCurrent;<br /> FCurrent := (FRight + FLeft) div 2;<br /> until FLeft = FCurrent;<br /> end;<br />end;<br /><br />//<br />// Загрузка массива индексов из потока<br />// =============================================================================<br />procedure TDictionaryFinder.LoadFromStream(const AStream: TMemoryStream);<br />var<br /> S: TStringList;<br /> I: Integer;<br />begin<br /> S := TStringList.Create;<br /> try<br /> AStream.Position := 0;<br /> S.LoadFromStream(AStream);<br /> FDictLength := S.Count;<br /> if FDictLength = 0 then Exit;<br /> SetLength(FDict, FDictLength);<br /> for I := 0 to FDictLength - 1 do<br /> FDict[I] := S.Strings[I];<br /> finally<br /> S.Free;<br /> end;<br />end;<br /><br />end.<br /></span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p> </p> <p> </p> <p> </p> Функция возвращающая N-ое слово в строке 2013-08-20T16:30:02+07:00 2013-08-20T16:30:02+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/slova/funktsiya-vozvrashchayushchaya-n-oe-slovo-v-stroke.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;">//Функция возвращающая N-ое слово в строке</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//Если N=0, то функция возвращает подстоку начиная с первого разделителя</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;"> GetWord(str:</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;n:word;sep: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><span class="f_CodeExample" style="color: #000000;"> i,space,l,j:integer;</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;">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;">l:=length(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;"> n=</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span><span class="f_CodeExample" style="color: #000080;">//особый параметр</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> j:=pos(GetWord(str,</span><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">,sep),str);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> GetWord:=copy(str,j,l-j+</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;"> 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;">space:=</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;">i:=</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;">while</span><span class="f_CodeExample" style="color: #000000;"> (space&lt;&gt;(n-</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;">and</span><span class="f_CodeExample" style="color: #000000;">(i&lt;=l) </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;"> i:=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;"> str[i]=sep </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span><span class="f_CodeExample" style="color: #000000;"> space:=space+</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;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i:=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;">buf:=</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;">while</span><span class="f_CodeExample" style="color: #000000;"> (i&lt;=l)</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;">(str[i]&lt;&gt;sep) </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;"> buf:=buf+str[i];</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> i:=i+</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;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">GetWord:=buf;</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>Автор: <span style="font-family: 'Times New Roman'; color: #0000ff; text-decoration: underline;">TP@MB@Y</span></p> <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><span style="color: #000000; font-weight: bold;">Взято с Vingrad ru</span><span style="color: #0000ff; text-decoration: underline;">https://forum.vingrad</span></p> <p style="text-align: right;"> </p> <hr size="1" noshade="noshade" style="color: #000000;" /> <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;"> GetToken(aString, SepChar: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; TokenNum: 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: #000080;">{</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">параметры: aString : полная строка</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">SepChar : единственный символ, служащий</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;">TokenNum: номер требуемого слова (подстроки))</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">result : искомое слово или пустая строка, если количество слов</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">меньше значения 'TokenNum'</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;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Token: </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;">StrLen: Byte;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TNum: Byte;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TEnd: Byte;</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;">StrLen := Length(aString);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TNum := </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;">TEnd := StrLen;</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;"> ((TNum &lt;= TokenNum) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (TEnd &lt;&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;">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;"> TEnd := Pos(SepChar, aString);</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;"> TEnd &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: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Token := Copy(aString, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, TEnd - </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(aString, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, TEnd);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Inc(TNum);</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;"> Token := aString;</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;">if</span><span class="f_CodeExample" style="color: #000000;"> TNum &gt;= TokenNum </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;"> GetToken1 := Token;</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;"> GetToken1 := </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"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> NumToken(aString, SepChar: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): Byte;</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;">parameters: aString : полная строка</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">SepChar : единственный символ, служащий</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;">result : количество найденных слов (подстрок)</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;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">RChar: Char;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StrLen: Byte;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TNum: Byte;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TEnd: Byte;</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;"> SepChar = </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;"> RChar := </span><span class="f_CodeExample" style="color: #ff0000;">'*'</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;"> RChar := </span><span class="f_CodeExample" style="color: #ff0000;">'#'</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;">StrLen := Length(aString);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TNum := </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;">TEnd := StrLen;</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;"> TEnd &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: #000000;"> Inc(TNum);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> TEnd := Pos(SepChar, aString);</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;"> TEnd &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: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> aString[TEnd] := RChar;</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;">Result := TNum;</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> <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: 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;"> CopyColumn(</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;">; c_fence: char; i_</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">index</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;">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, i_left: 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 := EmptyStr;</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_</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;">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;"> 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;">i_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: #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;">string</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: #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;">string</span><span class="f_CodeExample" style="color: #000000;">[i] = c_fence </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: #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;">if</span><span class="f_CodeExample" style="color: #000000;"> 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;">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;"> result := Copy(s_</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">, i_left + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, i - i_left - </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;"> exit;</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;"> i_left := 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: #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;">Dec(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;">if</span><span class="f_CodeExample" style="color: #000000;"> 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;">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;"> result := Copy(s_</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">, i_left + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, Length(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: #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> </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 style="text-align: right;"> </p> <hr size="1" noshade="noshade" style="color: #000000;" /> <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; Получение N-го слова из строки</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Зависимости: System</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: Gua, fbsdd@ukr.net, ICQ:141585495, Simferopol</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: Gua</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Дата: 02 мая 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: #000080;">{</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;">Smb: Разгранечительный символ</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">WordNmbr: Номер нужного сова</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;"> GetWord(Str, Smb: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; WordNmbr: 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;">SWord: </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;">StrLen, N: Byte;</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;">StrLen := SizeOf(Str);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">N := </span><span class="f_CodeExample" style="color: #800000;">1</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;">while</span><span class="f_CodeExample" style="color: #000000;"> ((WordNmbr &gt;= N) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (StrLen &lt;&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;">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;"> StrLen := Pos(Smb, 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;"> StrLen &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: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SWord := Copy(Str, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, StrLen - </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(Str, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, StrLen);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Inc(N);</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;"> SWord := 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> <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;"> WordNmbr &lt;= N </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 := SWord</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 := </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;">//Пример использования: </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">GetWord(</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><span class="f_CodeExample" style="color: #800000;">3</span><span class="f_CodeExample" style="color: #000000;">); </span><span class="f_CodeExample" style="color: #000080;">// Возвращает -&gt; 'текст'</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;">//Функция возвращающая N-ое слово в строке</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//Если N=0, то функция возвращает подстоку начиная с первого разделителя</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;"> GetWord(str:</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;n:word;sep: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><span class="f_CodeExample" style="color: #000000;"> i,space,l,j:integer;</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;">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;">l:=length(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;"> n=</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span><span class="f_CodeExample" style="color: #000080;">//особый параметр</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> j:=pos(GetWord(str,</span><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">,sep),str);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> GetWord:=copy(str,j,l-j+</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;"> 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;">space:=</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;">i:=</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;">while</span><span class="f_CodeExample" style="color: #000000;"> (space&lt;&gt;(n-</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;">and</span><span class="f_CodeExample" style="color: #000000;">(i&lt;=l) </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;"> i:=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;"> str[i]=sep </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span><span class="f_CodeExample" style="color: #000000;"> space:=space+</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;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i:=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;">buf:=</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;">while</span><span class="f_CodeExample" style="color: #000000;"> (i&lt;=l)</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;">(str[i]&lt;&gt;sep) </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;"> buf:=buf+str[i];</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> i:=i+</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;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">GetWord:=buf;</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>Автор: <span style="font-family: 'Times New Roman'; color: #0000ff; text-decoration: underline;">TP@MB@Y</span></p> <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><span style="color: #000000; font-weight: bold;">Взято с Vingrad ru</span><span style="color: #0000ff; text-decoration: underline;">https://forum.vingrad</span></p> <p style="text-align: right;"> </p> <hr size="1" noshade="noshade" style="color: #000000;" /> <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;"> GetToken(aString, SepChar: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; TokenNum: 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: #000080;">{</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">параметры: aString : полная строка</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">SepChar : единственный символ, служащий</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;">TokenNum: номер требуемого слова (подстроки))</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">result : искомое слово или пустая строка, если количество слов</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">меньше значения 'TokenNum'</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;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Token: </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;">StrLen: Byte;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TNum: Byte;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TEnd: Byte;</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;">StrLen := Length(aString);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TNum := </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;">TEnd := StrLen;</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;"> ((TNum &lt;= TokenNum) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (TEnd &lt;&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;">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;"> TEnd := Pos(SepChar, aString);</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;"> TEnd &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: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Token := Copy(aString, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, TEnd - </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(aString, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, TEnd);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Inc(TNum);</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;"> Token := aString;</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;">if</span><span class="f_CodeExample" style="color: #000000;"> TNum &gt;= TokenNum </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;"> GetToken1 := Token;</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;"> GetToken1 := </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"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> NumToken(aString, SepChar: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): Byte;</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;">parameters: aString : полная строка</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">SepChar : единственный символ, служащий</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;">result : количество найденных слов (подстрок)</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;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">RChar: Char;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StrLen: Byte;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TNum: Byte;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TEnd: Byte;</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;"> SepChar = </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;"> RChar := </span><span class="f_CodeExample" style="color: #ff0000;">'*'</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;"> RChar := </span><span class="f_CodeExample" style="color: #ff0000;">'#'</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;">StrLen := Length(aString);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TNum := </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;">TEnd := StrLen;</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;"> TEnd &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: #000000;"> Inc(TNum);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> TEnd := Pos(SepChar, aString);</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;"> TEnd &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: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> aString[TEnd] := RChar;</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;">Result := TNum;</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> <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: 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;"> CopyColumn(</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;">; c_fence: char; i_</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">index</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;">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, i_left: 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 := EmptyStr;</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_</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;">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;"> 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;">i_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: #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;">string</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: #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;">string</span><span class="f_CodeExample" style="color: #000000;">[i] = c_fence </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: #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;">if</span><span class="f_CodeExample" style="color: #000000;"> 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;">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;"> result := Copy(s_</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">, i_left + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, i - i_left - </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;"> exit;</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;"> i_left := 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: #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;">Dec(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;">if</span><span class="f_CodeExample" style="color: #000000;"> 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;">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;"> result := Copy(s_</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">, i_left + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, Length(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: #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> </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 style="text-align: right;"> </p> <hr size="1" noshade="noshade" style="color: #000000;" /> <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; Получение N-го слова из строки</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Зависимости: System</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: Gua, fbsdd@ukr.net, ICQ:141585495, Simferopol</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: Gua</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Дата: 02 мая 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: #000080;">{</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;">Smb: Разгранечительный символ</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">WordNmbr: Номер нужного сова</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;"> GetWord(Str, Smb: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; WordNmbr: 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;">SWord: </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;">StrLen, N: Byte;</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;">StrLen := SizeOf(Str);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">N := </span><span class="f_CodeExample" style="color: #800000;">1</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;">while</span><span class="f_CodeExample" style="color: #000000;"> ((WordNmbr &gt;= N) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (StrLen &lt;&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;">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;"> StrLen := Pos(Smb, 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;"> StrLen &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: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SWord := Copy(Str, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, StrLen - </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(Str, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, StrLen);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Inc(N);</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;"> SWord := 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> <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;"> WordNmbr &lt;= N </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 := SWord</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 := </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;">//Пример использования: </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">GetWord(</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><span class="f_CodeExample" style="color: #800000;">3</span><span class="f_CodeExample" style="color: #000000;">); </span><span class="f_CodeExample" style="color: #000080;">// Возвращает -&gt; 'текст'</span></p> <p class="p_CodeExample"> </p> </td> </tr> </tbody> </table> </div>