Разбор строки, выделение элементов, поиск Delphi — среда быстрой разработки, где в качестве языка программирования используется Object Pascal. На сегодняшний день позволяет разрабатывать ПО для Microsoft Windows, Mac OS, iOS и Android и входит в состав Embarcadero RAD Studio https://delphi-hlp.ru/index.php/rabota-so-strokami/razbor-stroki-vydelenie-elementov-poisk.feed 2022-09-13T05:01:09+07:00 Delphi help info@delphi-hlp.ru Joomla! - Open Source Content Management Выделение подстроки по контексту 2013-08-21T14:54:59+07:00 2013-08-21T14:54:59+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/razbor-stroki-vydelenie-elementov-poisk/vydelenie-podstroki-po-kontekstu.html Super User toto44@inbox.ru <p>Вот 2 функции которыми я очень часто пользуюсь - они выделяют из строки подстроку, которая находится до или после ключевого словаю Задача надо сказать частая, например есть строка:</p> <p> "Total-2.00$"</p> <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: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000; font-weight: bold;">GetBefore</span><span class="f_CodeExample" style="color: #000000;">(substr, str:</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">):</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{©Drkb v.3(2007): www. drkb . ru, </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">®Vit (Vitaly Nevzorov) - nevzorov @ yahoo.com}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> pos(substr,str)&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;"> result:=copy(str,</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">,pos(substr,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: #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"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000; font-weight: bold;">GetAfter</span><span class="f_CodeExample" style="color: #000000;">(substr, str:</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">):</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{©Drkb v.3(2007): www.drk b. ru, </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">®Vit (Vitaly Nevzorov) - nevzorov @ yahoo.com}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> pos(substr,str)&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;"> result:=copy(str,pos(substr,str)+length(substr),length(str))</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> </td> </tr> </tbody> </table> </div> <p> </p> <p>Примеры:</p> <p> 1) Найти название параметра (оно находится до символа "-"):</p> <p> <span class="f_CodeExample" style="color: #000000;">GetBefore(</span><span class="f_CodeExample" style="color: #ff0000;">'-'</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">'Total-2.00$'</span><span class="f_CodeExample" style="color: #000000;">)</span> <span class="f_CodeExample" style="color: #000080;">// Результат будет "Total"</span></p> <p class="p_CodeExample"> 2) Найти сумму денег (оно находится после символа "-"):</p> <p> <span class="f_CodeExample" style="color: #000000;">GetAfter(</span><span class="f_CodeExample" style="color: #ff0000;">'-'</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">'Total-2.00$'</span><span class="f_CodeExample" style="color: #000000;">)</span> <span class="f_CodeExample" style="color: #000080;">// Результат будет "2.00$"</span></p> <p class="p_CodeExample"> 3) Найти сумму денег без знака доллара и остатка строки(оно находится после символа "-", но до символа "$"):</p> <p> <span class="f_CodeExample" style="color: #000000;">GetBefore(</span><span class="f_CodeExample" style="color: #ff0000;">'$'</span><span class="f_CodeExample" style="color: #000000;">,GetAfter(</span><span class="f_CodeExample" style="color: #ff0000;">'-'</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">'Total-2.00$ (общая сумма)'</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #000080;">// Результат будет "2.00"</span></p> <p class="p_CodeExample"> </p> <p><span style="font-family: 'Times New Roman'; color: #ff0000; font-size: 10pt; font-weight: bold;">Автор:</span><span style="font-family: 'Times New Roman'; color: #0000ff; font-size: 10pt; font-weight: bold; text-decoration: underline;">Vit</span><span style="font-family: 'Times New Roman'; font-size: 10pt; font-weight: bold;"> </span></p> <p> </p> <p>Вот 2 функции которыми я очень часто пользуюсь - они выделяют из строки подстроку, которая находится до или после ключевого словаю Задача надо сказать частая, например есть строка:</p> <p> "Total-2.00$"</p> <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: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000; font-weight: bold;">GetBefore</span><span class="f_CodeExample" style="color: #000000;">(substr, str:</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">):</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{©Drkb v.3(2007): www. drkb . ru, </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">®Vit (Vitaly Nevzorov) - nevzorov @ yahoo.com}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> pos(substr,str)&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;"> result:=copy(str,</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">,pos(substr,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: #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"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000; font-weight: bold;">GetAfter</span><span class="f_CodeExample" style="color: #000000;">(substr, str:</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">):</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{©Drkb v.3(2007): www.drk b. ru, </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">®Vit (Vitaly Nevzorov) - nevzorov @ yahoo.com}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> pos(substr,str)&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;"> result:=copy(str,pos(substr,str)+length(substr),length(str))</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> </td> </tr> </tbody> </table> </div> <p> </p> <p>Примеры:</p> <p> 1) Найти название параметра (оно находится до символа "-"):</p> <p> <span class="f_CodeExample" style="color: #000000;">GetBefore(</span><span class="f_CodeExample" style="color: #ff0000;">'-'</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">'Total-2.00$'</span><span class="f_CodeExample" style="color: #000000;">)</span> <span class="f_CodeExample" style="color: #000080;">// Результат будет "Total"</span></p> <p class="p_CodeExample"> 2) Найти сумму денег (оно находится после символа "-"):</p> <p> <span class="f_CodeExample" style="color: #000000;">GetAfter(</span><span class="f_CodeExample" style="color: #ff0000;">'-'</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">'Total-2.00$'</span><span class="f_CodeExample" style="color: #000000;">)</span> <span class="f_CodeExample" style="color: #000080;">// Результат будет "2.00$"</span></p> <p class="p_CodeExample"> 3) Найти сумму денег без знака доллара и остатка строки(оно находится после символа "-", но до символа "$"):</p> <p> <span class="f_CodeExample" style="color: #000000;">GetBefore(</span><span class="f_CodeExample" style="color: #ff0000;">'$'</span><span class="f_CodeExample" style="color: #000000;">,GetAfter(</span><span class="f_CodeExample" style="color: #ff0000;">'-'</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">'Total-2.00$ (общая сумма)'</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #000080;">// Результат будет "2.00"</span></p> <p class="p_CodeExample"> </p> <p><span style="font-family: 'Times New Roman'; color: #ff0000; font-size: 10pt; font-weight: bold;">Автор:</span><span style="font-family: 'Times New Roman'; color: #0000ff; font-size: 10pt; font-weight: bold; text-decoration: underline;">Vit</span><span style="font-family: 'Times New Roman'; font-size: 10pt; font-weight: bold;"> </span></p> <p> </p> Деление строки не несколько строк 2013-08-21T14:49:57+07:00 2013-08-21T14:49:57+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/razbor-stroki-vydelenie-elementov-poisk/delenie-stroki-ne-neskolko-strok.html Super User toto44@inbox.ru <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ **** UBPFD *********** by delphibase.endimus.com ****</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">&gt;&gt; Делит строку аStr на три строки St1,St2,St3 длиной Long1,Long2,Long3</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Делит строку аStr на три строки St1,St2,St3 длиной Long1,Long2,Long3</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;">Автор: Сергей, nfkazak@inbox.ru, Краснодар</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: VIP BANK</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;">procedure</span><span class="f_CodeExample" style="color: #000000;"> DivPart(aStr: </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;"> St1, St2, St3: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; Long1, Long2, Long3:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">byte);</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, pos, Long: 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;">St1 := </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;">St2 := </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;">St3 := </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;">aStr := Trim(aStr);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Long := Length(aStr);</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;"> Long &lt;= Long1 </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> St1 := aStr;</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;">Pos := Long1;</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;"> Long1 + </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;"> aStr[i] = </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;"> Pos := i;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">St1 := TrimRight(Copy(aStr, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, Pos));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Delete(aStr, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, Pos);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">aStr := TrimLeft(aStr);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Long := Length(aStr);</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;"> Long &lt;= Long2 </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;"> St2 := aStr;</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;">Pos := Long2;</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;"> Long2 + </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;"> aStr[i] = </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;"> Pos := i;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">St2 := TrimRight(Copy(aStr, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, Pos));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">St3 := Trim(Copy(aStr, Pos + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, Long3))</span></p> <p 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><span style="font-family: 'Courier New'; color: #ff6600; font-size: 8pt; font-weight: bold;">Drkb::00841</span></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;">Параметры: Str: WideString - Строка для разбивки</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Delimiter: String - Разделитель подстрок с строке Str</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;">Зависимости: System, Sysutils, Classes</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: Stoma, stoma @ bitex.bg</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;"> Tokenize(Str: WideString; Delimiter: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): 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;">tmpStrList: TStringList;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">tmpString, tmpVal: WideString;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">DelimPos: 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;">tmpStrList := TStringList.Create;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TmpString := Str;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">DelimPos := </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;"> DelimPos &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;"> DelimPos := LastDelimiter(Delimiter, TmpString);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> tmpVal := Copy(TmpString, DelimPos + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, Length(TmpString));</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;"> tmpVal &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: #000000;"> tmpStrList.Add(UpperCase(tmpVal));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Delete(TmpString, DelimPos, Length(TmpString));</span></p> <p class="p_CodeExample"><span 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;">Tokenize := tmpStrList;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Пример использования: </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> TForm1.GetDirNames(FullPath: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): TStringList;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">GetDirNames := Tokenize(FullPath, </span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p style="text-align: right;"><span style="font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #ff6600; font-size: 8pt; font-weight: bold;"> </span></p> <p style="text-align: right;"> </p> <hr size="1" noshade="noshade" style="color: #000000;" /> <p> </p> <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;"> Explode(</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;">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;">; Border, 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;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> 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: #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;"> 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;"> S2 := S + Border;</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;"> a[i] := Copy(S2, </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">,Pos(Border, S2) - </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(S2, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">,Length(a[i] + Border));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Inc(i);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">until</span><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;">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;">// How to use it: </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Und hier ein Beispiel zur Verwendung: </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;"> 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;"> A: </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"><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;">'Ein Text durch Leerzeichen getrennt'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SetLength(A, </span><span class="f_CodeExample" style="color: #800000;">10</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Explode(A, </span><span class="f_CodeExample" style="color: #ff0000;">' '</span><span class="f_CodeExample" style="color: #000000;">, S);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> ShowMessage(A[</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">] + </span><span class="f_CodeExample" style="color: #ff0000;">' '</span><span class="f_CodeExample" style="color: #000000;"> + A[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">] + </span><span class="f_CodeExample" style="color: #ff0000;">' '</span><span class="f_CodeExample" style="color: #000000;"> + A[</span><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">] + </span><span class="f_CodeExample" style="color: #ff0000;">' '</span><span class="f_CodeExample" style="color: #000000;"> + A[</span><span class="f_CodeExample" style="color: #800000;">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;"> + A[</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;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> </td> </tr> </tbody> </table> </div> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ **** UBPFD *********** by delphibase.endimus.com ****</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">&gt;&gt; Делит строку аStr на три строки St1,St2,St3 длиной Long1,Long2,Long3</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Делит строку аStr на три строки St1,St2,St3 длиной Long1,Long2,Long3</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;">Автор: Сергей, nfkazak@inbox.ru, Краснодар</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: VIP BANK</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;">procedure</span><span class="f_CodeExample" style="color: #000000;"> DivPart(aStr: </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;"> St1, St2, St3: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; Long1, Long2, Long3:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">byte);</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, pos, Long: 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;">St1 := </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;">St2 := </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;">St3 := </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;">aStr := Trim(aStr);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Long := Length(aStr);</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;"> Long &lt;= Long1 </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> St1 := aStr;</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;">Pos := Long1;</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;"> Long1 + </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;"> aStr[i] = </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;"> Pos := i;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">St1 := TrimRight(Copy(aStr, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, Pos));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Delete(aStr, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, Pos);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">aStr := TrimLeft(aStr);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Long := Length(aStr);</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;"> Long &lt;= Long2 </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;"> St2 := aStr;</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;">Pos := Long2;</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;"> Long2 + </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;"> aStr[i] = </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;"> Pos := i;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">St2 := TrimRight(Copy(aStr, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, Pos));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">St3 := Trim(Copy(aStr, Pos + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, Long3))</span></p> <p 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><span style="font-family: 'Courier New'; color: #ff6600; font-size: 8pt; font-weight: bold;">Drkb::00841</span></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;">Параметры: Str: WideString - Строка для разбивки</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Delimiter: String - Разделитель подстрок с строке Str</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;">Зависимости: System, Sysutils, Classes</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: Stoma, stoma @ bitex.bg</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;"> Tokenize(Str: WideString; Delimiter: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): 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;">tmpStrList: TStringList;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">tmpString, tmpVal: WideString;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">DelimPos: 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;">tmpStrList := TStringList.Create;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TmpString := Str;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">DelimPos := </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;"> DelimPos &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;"> DelimPos := LastDelimiter(Delimiter, TmpString);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> tmpVal := Copy(TmpString, DelimPos + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, Length(TmpString));</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;"> tmpVal &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: #000000;"> tmpStrList.Add(UpperCase(tmpVal));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Delete(TmpString, DelimPos, Length(TmpString));</span></p> <p class="p_CodeExample"><span 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;">Tokenize := tmpStrList;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Пример использования: </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> TForm1.GetDirNames(FullPath: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): TStringList;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">GetDirNames := Tokenize(FullPath, </span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p style="text-align: right;"><span style="font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #ff6600; font-size: 8pt; font-weight: bold;"> </span></p> <p style="text-align: right;"> </p> <hr size="1" noshade="noshade" style="color: #000000;" /> <p> </p> <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;"> Explode(</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;">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;">; Border, 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;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> 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: #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;"> 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;"> S2 := S + Border;</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;"> a[i] := Copy(S2, </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">,Pos(Border, S2) - </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(S2, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">,Length(a[i] + Border));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Inc(i);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">until</span><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;">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;">// How to use it: </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Und hier ein Beispiel zur Verwendung: </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;"> 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;"> A: </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"><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;">'Ein Text durch Leerzeichen getrennt'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SetLength(A, </span><span class="f_CodeExample" style="color: #800000;">10</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Explode(A, </span><span class="f_CodeExample" style="color: #ff0000;">' '</span><span class="f_CodeExample" style="color: #000000;">, S);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> ShowMessage(A[</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">] + </span><span class="f_CodeExample" style="color: #ff0000;">' '</span><span class="f_CodeExample" style="color: #000000;"> + A[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">] + </span><span class="f_CodeExample" style="color: #ff0000;">' '</span><span class="f_CodeExample" style="color: #000000;"> + A[</span><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">] + </span><span class="f_CodeExample" style="color: #ff0000;">' '</span><span class="f_CodeExample" style="color: #000000;"> + A[</span><span class="f_CodeExample" style="color: #800000;">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;"> + A[</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;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> </td> </tr> </tbody> </table> </div> Замена подстрок 2013-08-21T14:51:50+07:00 2013-08-21T14:51:50+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/razbor-stroki-vydelenie-elementov-poisk/zamena-podstrok.html Super User toto44@inbox.ru <p>Автор: Сергей Шамайтис</p> <p> </p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> ReplaceSub(str, sub1, sub2: </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;">aPos: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">rslt: </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;">aPos := Pos(sub1, str);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">rslt := </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;"> (aPos &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;"> rslt := rslt + Copy(str, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, aPos - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">) + sub2;</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;">, aPos + Length(sub1) - </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;"> aPos := Pos(sub1, 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"><span class="f_CodeExample" style="color: #000000;">Result := rslt + str;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> </td> </tr> </tbody> </table> </div> <p 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;">function</span><span class="f_CodeExample" style="color: #000000;"> ReplaceStr(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> S, Srch, Replace: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{замена подстроки в строке}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">I: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Source: </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;">Source := S;</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;">repeat</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> I := Pos(Srch, Source);</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 &amp;gt;</span></p> <p class="p_CodeExample"><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 := Result + Copy(Source, </span><span class="f_CodeExample" style="color: #800000;">1</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: #000000;">) + Replace;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Source := Copy(Source, I + Length(Srch), MaxInt);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := Result + Source;</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;"> I&amp;lt;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">= </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p style="text-align: right;"><span style="font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #ff6600; font-size: 8pt; font-weight: bold;"> </span></p> <p>https://delphiworld.narod.</p> <p>DelphiWorld 6.0</p> <p style="text-align: right;"> </p> <p style="text-align: right;"> </p> <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;">Автор: Евгений Валяев (RhinoFC), rhinofc@sniiggims.ru, ICQ:55263922, Новосибирск</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: RhinoFC</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;"> StrReplace(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> Str, Str1, Str2: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// str - исходная строка</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// str1 - подстрока, подлежащая замене</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// str2 - заменяющая строка</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;">P, 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 := str;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">L := Length(Str1);</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;"> P := Pos(Str1, Result); </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;"> P &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;"> Delete(Result, P, L); </span><span class="f_CodeExample" style="color: #000080;">// удаляем ее</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Insert(Str2, Result, P); </span><span class="f_CodeExample" style="color: #000080;">// вставляем новую</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">until</span><span class="f_CodeExample" style="color: #000000;"> P = </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"> </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>А стандартная функция <span style="font-weight: bold;">StringReplace</span> чем не устраивает?</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: #ff0000; font-size: 10pt; font-weight: bold;">Автор:</span><span style="font-family: 'Times New Roman'; color: #0000ff; font-size: 10pt; font-weight: bold; text-decoration: underline;">Vit</span></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;">function</span><span class="f_CodeExample" style="color: #000000;"> ReplaceSub(str, sub1, sub2: </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;">aPos: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">rslt: </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;">aPos := Pos(sub1, str);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">rslt := </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;"> (aPos &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;"> rslt := rslt + Copy(str, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, aPos - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">) + sub2;</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;">, aPos + Length(sub1) - </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;"> aPos := Pos(sub1, 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"><span class="f_CodeExample" style="color: #000000;">Result := rslt + str;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">; </span></p> </td> </tr> </tbody> </table> </div> <p 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;">function</span><span class="f_CodeExample" style="color: #000000;"> ReplaceStr(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> S, Srch, Replace: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{замена подстроки в строке}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">I: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Source: </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;">Source := S;</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;">repeat</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> I := Pos(Srch, Source);</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 &amp;gt;</span></p> <p class="p_CodeExample"><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 := Result + Copy(Source, </span><span class="f_CodeExample" style="color: #800000;">1</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: #000000;">) + Replace;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Source := Copy(Source, I + Length(Srch), MaxInt);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := Result + Source;</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;"> I&amp;lt;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">= </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p style="text-align: right;"><span style="font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #ff6600; font-size: 8pt; font-weight: bold;"> </span></p> <p>https://delphiworld.narod.</p> <p>DelphiWorld 6.0</p> <p style="text-align: right;"> </p> <p style="text-align: right;"> </p> <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;">Автор: Евгений Валяев (RhinoFC), rhinofc@sniiggims.ru, ICQ:55263922, Новосибирск</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: RhinoFC</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;"> StrReplace(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> Str, Str1, Str2: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// str - исходная строка</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// str1 - подстрока, подлежащая замене</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// str2 - заменяющая строка</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;">P, 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 := str;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">L := Length(Str1);</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;"> P := Pos(Str1, Result); </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;"> P &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;"> Delete(Result, P, L); </span><span class="f_CodeExample" style="color: #000080;">// удаляем ее</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Insert(Str2, Result, P); </span><span class="f_CodeExample" style="color: #000080;">// вставляем новую</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">until</span><span class="f_CodeExample" style="color: #000000;"> P = </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"> </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>А стандартная функция <span style="font-weight: bold;">StringReplace</span> чем не устраивает?</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: #ff0000; font-size: 10pt; font-weight: bold;">Автор:</span><span style="font-family: 'Times New Roman'; color: #0000ff; font-size: 10pt; font-weight: bold; text-decoration: underline;">Vit</span></p> Как найти строку в строке начиная с определённой позиции? 2013-08-21T14:39:00+07:00 2013-08-21T14:39:00+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/razbor-stroki-vydelenie-elementov-poisk/kak-najti-stroku-v-stroke-nachinaya-s-opredeljonnoj-pozitsii.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: #000080;">//-----------------------------------------------------------------------------</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Name: cnsSmartPos</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Author: Com-N-Sense</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Date:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Purpose: Find a substring in a string starting from any position in the string.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Params: SubStr - a substring for search.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// S - the source string to search within</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// StartPos - the index position to start the search.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Result: Integer - the position of the substring,</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// zero - if the substring was not found</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Remarks: This is the original Delphi "Pos" function modified to support</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// the start pos parameter.</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;">function</span><span class="f_CodeExample" style="color: #000000;"> SmartPosAsm(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> substr : AnsiString; </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> s : AnsiString; StartPos : Cardinal) : Integer;</span></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;">StrRec = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">packed</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">record</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> allocSiz: Longint;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> refCnt: Longint;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> length: Longint;</span></p> <p class="p_CodeExample"><span 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;">const</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">skew = sizeof(StrRec);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">asm</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ -&gt;EAX Pointer to substr }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ EDX Pointer to string }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ &lt;-EAX Position of substr in s or 0 }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> TEST EAX,EAX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JE @@noWork</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> TEST EDX,EDX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JE @@stringEmpty</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PUSH EBX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PUSH ESI</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PUSH EDI</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV ESI,EAX </span><span class="f_CodeExample" style="color: #000080;">{ Point ESI to substr }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV EDI,EDX </span><span class="f_CodeExample" style="color: #000080;">{ Point EDI to s }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV EAX,ECX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV ECX,[EDI-skew].StrRec.length </span><span class="f_CodeExample" style="color: #000080;">{ ECX = Length(s) }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> ADD EDI,EAX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SUB ECX,EAX</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PUSH EDI </span><span class="f_CodeExample" style="color: #000080;">{ remember s position to calculate index }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV EDX,[ESI-skew].StrRec.length </span><span class="f_CodeExample" style="color: #000080;">{ EDX = Length(substr) </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> DEC EDX { EDX = Length(substr) - 1 }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JS @@fail </span><span class="f_CodeExample" style="color: #000080;">{ &lt; 0 ? return 0 }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV AL,[ESI] </span><span class="f_CodeExample" style="color: #000080;">{ AL = first char of substr }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> INC ESI </span><span class="f_CodeExample" style="color: #000080;">{ Point ESI to 2'nd char of substr }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SUB ECX,EDX </span><span class="f_CodeExample" style="color: #000080;">{ #positions in s to look at }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ = Length(s) - Length(substr) + 1 }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JLE @@fail</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">@@loop:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> REPNE SCASB</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JNE @@fail</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV EBX,ECX </span><span class="f_CodeExample" style="color: #000080;">{ save outer loop counter }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PUSH ESI </span><span class="f_CodeExample" style="color: #000080;">{ save outer loop substr pointer }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PUSH EDI </span><span class="f_CodeExample" style="color: #000080;">{ save outer loop s pointer }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV ECX,EDX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> REPE CMPSB</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> POP EDI </span><span class="f_CodeExample" style="color: #000080;">{ restore outer loop s pointer }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> POP ESI </span><span class="f_CodeExample" style="color: #000080;">{ restore outer loop substr pointer }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JE @@found</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV ECX,EBX </span><span class="f_CodeExample" style="color: #000080;">{ restore outer loop counter }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JMP @@loop</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">@@fail:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> POP EDX </span><span class="f_CodeExample" style="color: #000080;">{ get rid of saved s pointer }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">XOR</span><span class="f_CodeExample" style="color: #000000;"> EAX,EAX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JMP @@exit</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">@@stringEmpty:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">XOR</span><span class="f_CodeExample" style="color: #000000;"> EAX,EAX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JMP @@noWork</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">@@found:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> POP EDX </span><span class="f_CodeExample" style="color: #000080;">{ restore pointer to first char of s }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV EAX,EDI </span><span class="f_CodeExample" style="color: #000080;">{ EDI points of char after match }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SUB EAX,EDX </span><span class="f_CodeExample" style="color: #000080;">{ the difference is the correct index }</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;"> POP EDI</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> POP ESI</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> POP EBX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">@@noWork:</span></p> <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;">//SmartPosAsm</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;"> cnsSmartPos(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> substr : AnsiString; </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> s : AnsiString; StartPos : Cardinal) : 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;">dec(StartPos);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := SmartPosAsm(SubStr,S,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;"> Result &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: #000000;"> Result := Result + StartPos;</span></p> <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;">//cnsSmartPos</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> <hr size="1" noshade="noshade" style="color: #000000;" /> <p> </p> <p>Круто конечно, но есть стандартная функция:</p> <p> </p> <p>function PosEx(const SubStr, S: string; Offset: Cardinal = 1): Integer;</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="font-family: 'Times New Roman'; color: #ff0000; font-size: 10pt; font-weight: bold;">Автор:</span><span style="font-family: 'Times New Roman'; color: #0000ff; font-size: 10pt; font-weight: bold; text-decoration: underline;">Vit</span></p> <p> </p> <p style="text-align: right;"> </p> <p style="text-align: right;"> </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;">{ **** 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;">S - строка, в которой искать</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">SubStr - образец</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">fromPos - с какой позиции</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;">Если образец не найден, возвращает 0</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;">Автор: Romkin, romkin @ pochtamt.ru, Москва</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: Модернизированная функция из SysUtils</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;"> TailPos(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> S, SubStr: AnsiString; fromPos: integer): integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">asm</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PUSH EDI</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PUSH ESI</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PUSH EBX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PUSH EAX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">OR</span><span class="f_CodeExample" style="color: #000000;"> EAX,EAX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JE @@</span><span class="f_CodeExample" style="color: #800000;">2</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">OR</span><span class="f_CodeExample" style="color: #000000;"> EDX,EDX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JE @@</span><span class="f_CodeExample" style="color: #800000;">2</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> DEC ECX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JS @@</span><span class="f_CodeExample" style="color: #800000;">2</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV EBX,[EAX-</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: #000000;"> SUB EBX,ECX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JLE @@</span><span class="f_CodeExample" style="color: #800000;">2</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SUB EBX,[EDX-</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: #000000;"> JL @@</span><span class="f_CodeExample" style="color: #800000;">2</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> INC EBX</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> ADD EAX,ECX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV ECX,EBX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV EBX,[EDX-</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: #000000;"> DEC EBX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV EDI,EAX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">@@</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">: MOV ESI,EDX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> LODSB</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> REPNE SCASB</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JNE @@</span><span class="f_CodeExample" style="color: #800000;">2</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV EAX,ECX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PUSH EDI</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV ECX,EBX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> REPE CMPSB</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> POP EDI</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV ECX,EAX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JNE @@</span><span class="f_CodeExample" style="color: #800000;">1</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> LEA EAX,[EDI-</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;"> POP EDX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SUB EAX,EDX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> INC EAX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JMP @@</span><span class="f_CodeExample" style="color: #800000;">3</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">@@</span><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">: POP EAX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">XOR</span><span class="f_CodeExample" style="color: #000000;"> EAX,EAX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">@@</span><span class="f_CodeExample" style="color: #800000;">3</span><span class="f_CodeExample" style="color: #000000;">: POP EBX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> POP ESI</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> POP EDI</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p style="text-align: right;"><span style="font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #ff6600; font-size: 8pt; font-weight: bold;"> </span></p> <p style="text-align: right;"> </p> <hr size="1" noshade="noshade" style="color: #000000;" /> <p> </p> <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;">Substr - подстрока, S - строка, fromPos - с какой позиции искать</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;">Ограничения - как для ansiStrPos</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;">Автор: Romkin, romkin @ pochtamt.ru, Москва</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: Romkin</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;"> fAnsiPos(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> Substr, S: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; FromPos: integer): Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">P: PChar;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">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;">P := AnsiStrPos(PChar(S) + fromPos - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, PChar(SubStr));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> P &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: #000000;"> Result := Integer(P) - Integer(PChar(S)) + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </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: #000080;">//-----------------------------------------------------------------------------</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Name: cnsSmartPos</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Author: Com-N-Sense</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Date:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Purpose: Find a substring in a string starting from any position in the string.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Params: SubStr - a substring for search.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// S - the source string to search within</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// StartPos - the index position to start the search.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Result: Integer - the position of the substring,</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// zero - if the substring was not found</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Remarks: This is the original Delphi "Pos" function modified to support</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// the start pos parameter.</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;">function</span><span class="f_CodeExample" style="color: #000000;"> SmartPosAsm(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> substr : AnsiString; </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> s : AnsiString; StartPos : Cardinal) : Integer;</span></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;">StrRec = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">packed</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">record</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> allocSiz: Longint;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> refCnt: Longint;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> length: Longint;</span></p> <p class="p_CodeExample"><span 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;">const</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">skew = sizeof(StrRec);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">asm</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ -&gt;EAX Pointer to substr }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ EDX Pointer to string }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ &lt;-EAX Position of substr in s or 0 }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> TEST EAX,EAX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JE @@noWork</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> TEST EDX,EDX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JE @@stringEmpty</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PUSH EBX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PUSH ESI</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PUSH EDI</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV ESI,EAX </span><span class="f_CodeExample" style="color: #000080;">{ Point ESI to substr }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV EDI,EDX </span><span class="f_CodeExample" style="color: #000080;">{ Point EDI to s }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV EAX,ECX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV ECX,[EDI-skew].StrRec.length </span><span class="f_CodeExample" style="color: #000080;">{ ECX = Length(s) }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> ADD EDI,EAX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SUB ECX,EAX</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PUSH EDI </span><span class="f_CodeExample" style="color: #000080;">{ remember s position to calculate index }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV EDX,[ESI-skew].StrRec.length </span><span class="f_CodeExample" style="color: #000080;">{ EDX = Length(substr) </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> DEC EDX { EDX = Length(substr) - 1 }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JS @@fail </span><span class="f_CodeExample" style="color: #000080;">{ &lt; 0 ? return 0 }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV AL,[ESI] </span><span class="f_CodeExample" style="color: #000080;">{ AL = first char of substr }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> INC ESI </span><span class="f_CodeExample" style="color: #000080;">{ Point ESI to 2'nd char of substr }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SUB ECX,EDX </span><span class="f_CodeExample" style="color: #000080;">{ #positions in s to look at }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ = Length(s) - Length(substr) + 1 }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JLE @@fail</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">@@loop:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> REPNE SCASB</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JNE @@fail</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV EBX,ECX </span><span class="f_CodeExample" style="color: #000080;">{ save outer loop counter }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PUSH ESI </span><span class="f_CodeExample" style="color: #000080;">{ save outer loop substr pointer }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PUSH EDI </span><span class="f_CodeExample" style="color: #000080;">{ save outer loop s pointer }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV ECX,EDX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> REPE CMPSB</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> POP EDI </span><span class="f_CodeExample" style="color: #000080;">{ restore outer loop s pointer }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> POP ESI </span><span class="f_CodeExample" style="color: #000080;">{ restore outer loop substr pointer }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JE @@found</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV ECX,EBX </span><span class="f_CodeExample" style="color: #000080;">{ restore outer loop counter }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JMP @@loop</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">@@fail:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> POP EDX </span><span class="f_CodeExample" style="color: #000080;">{ get rid of saved s pointer }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">XOR</span><span class="f_CodeExample" style="color: #000000;"> EAX,EAX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JMP @@exit</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">@@stringEmpty:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">XOR</span><span class="f_CodeExample" style="color: #000000;"> EAX,EAX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JMP @@noWork</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">@@found:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> POP EDX </span><span class="f_CodeExample" style="color: #000080;">{ restore pointer to first char of s }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV EAX,EDI </span><span class="f_CodeExample" style="color: #000080;">{ EDI points of char after match }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SUB EAX,EDX </span><span class="f_CodeExample" style="color: #000080;">{ the difference is the correct index }</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;"> POP EDI</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> POP ESI</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> POP EBX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">@@noWork:</span></p> <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;">//SmartPosAsm</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;"> cnsSmartPos(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> substr : AnsiString; </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> s : AnsiString; StartPos : Cardinal) : 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;">dec(StartPos);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := SmartPosAsm(SubStr,S,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;"> Result &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: #000000;"> Result := Result + StartPos;</span></p> <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;">//cnsSmartPos</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> <hr size="1" noshade="noshade" style="color: #000000;" /> <p> </p> <p>Круто конечно, но есть стандартная функция:</p> <p> </p> <p>function PosEx(const SubStr, S: string; Offset: Cardinal = 1): Integer;</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="font-family: 'Times New Roman'; color: #ff0000; font-size: 10pt; font-weight: bold;">Автор:</span><span style="font-family: 'Times New Roman'; color: #0000ff; font-size: 10pt; font-weight: bold; text-decoration: underline;">Vit</span></p> <p> </p> <p style="text-align: right;"> </p> <p style="text-align: right;"> </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;">{ **** 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;">S - строка, в которой искать</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">SubStr - образец</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">fromPos - с какой позиции</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;">Если образец не найден, возвращает 0</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;">Автор: Romkin, romkin @ pochtamt.ru, Москва</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: Модернизированная функция из SysUtils</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;"> TailPos(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> S, SubStr: AnsiString; fromPos: integer): integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">asm</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PUSH EDI</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PUSH ESI</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PUSH EBX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PUSH EAX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">OR</span><span class="f_CodeExample" style="color: #000000;"> EAX,EAX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JE @@</span><span class="f_CodeExample" style="color: #800000;">2</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">OR</span><span class="f_CodeExample" style="color: #000000;"> EDX,EDX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JE @@</span><span class="f_CodeExample" style="color: #800000;">2</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> DEC ECX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JS @@</span><span class="f_CodeExample" style="color: #800000;">2</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV EBX,[EAX-</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: #000000;"> SUB EBX,ECX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JLE @@</span><span class="f_CodeExample" style="color: #800000;">2</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SUB EBX,[EDX-</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: #000000;"> JL @@</span><span class="f_CodeExample" style="color: #800000;">2</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> INC EBX</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> ADD EAX,ECX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV ECX,EBX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV EBX,[EDX-</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: #000000;"> DEC EBX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV EDI,EAX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">@@</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">: MOV ESI,EDX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> LODSB</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> REPNE SCASB</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JNE @@</span><span class="f_CodeExample" style="color: #800000;">2</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV EAX,ECX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PUSH EDI</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV ECX,EBX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> REPE CMPSB</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> POP EDI</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV ECX,EAX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JNE @@</span><span class="f_CodeExample" style="color: #800000;">1</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> LEA EAX,[EDI-</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;"> POP EDX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SUB EAX,EDX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> INC EAX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JMP @@</span><span class="f_CodeExample" style="color: #800000;">3</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">@@</span><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">: POP EAX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">XOR</span><span class="f_CodeExample" style="color: #000000;"> EAX,EAX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">@@</span><span class="f_CodeExample" style="color: #800000;">3</span><span class="f_CodeExample" style="color: #000000;">: POP EBX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> POP ESI</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> POP EDI</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p style="text-align: right;"><span style="font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #ff6600; font-size: 8pt; font-weight: bold;"> </span></p> <p style="text-align: right;"> </p> <hr size="1" noshade="noshade" style="color: #000000;" /> <p> </p> <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;">Substr - подстрока, S - строка, fromPos - с какой позиции искать</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;">Ограничения - как для ansiStrPos</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;">Автор: Romkin, romkin @ pochtamt.ru, Москва</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: Romkin</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;"> fAnsiPos(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> Substr, S: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; FromPos: integer): Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">P: PChar;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">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;">P := AnsiStrPos(PChar(S) + fromPos - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, PChar(SubStr));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> P &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: #000000;"> Result := Integer(P) - Integer(PChar(S)) + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> </td> </tr> </tbody> </table> </div> Как разделить строку на элементы, Аналог VB функции Split 2013-08-20T20:43:52+07:00 2013-08-20T20:43:52+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/razbor-stroki-vydelenie-elementov-poisk/kak-razdelit-stroku-na-elementy-analog-vb-funktsii-split.html Super User toto44@inbox.ru <p><span style="font-family: 'Times New Roman'; color: #000000;">Вариант 1. </span></p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000;">В Дельфи есть специальный класс для хранения массивов строк - TStringList - очень рекомендую. Вот как вашу строку превратить в TStringList:</span></p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000;">Объявление переменной</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;">var</span><span class="f_CodeExample" style="color: #000000;"> t: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;">t:=TStringList.create; </span><span class="f_CodeExample" style="color: #000080;">//создаём класс</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">t.text:=stringReplace(</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;">#13#10</span><span class="f_CodeExample" style="color: #000000;">,[rfReplaceAll]);</span><span class="f_CodeExample" style="color: #000080;">//мы заменяем все пробелы на символы конца строки</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//теперь можно убедится что у вас строка разбина на элементы:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">showmessage(t[</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;">showmessage(t[</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;">showmessage(t[</span><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">]);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">showmessage(t[</span><span class="f_CodeExample" style="color: #800000;">3</span><span class="f_CodeExample" style="color: #000000;">]);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">...</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//после работы надо уничтожить класс</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">t.free;</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><span style="font-family: 'Times New Roman'; color: #ff0000; font-size: 10pt; font-weight: bold;">Автор:</span><span style="font-family: 'Times New Roman'; color: #0000ff; font-size: 10pt; font-weight: bold; text-decoration: underline;">Vit</span><span style="font-family: 'Times New Roman'; font-size: 10pt; 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> </p> <p> </p> <p> </p> <hr size="1" noshade="noshade" style="color: #000000;" /> <p><span style="font-family: 'Times New Roman'; color: #000000;">Вариант 2. Используем стандартные массивы:</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;">var</span><span class="f_CodeExample" style="color: #000000;"> a:</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">array</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span><span class="f_CodeExample" style="color: #000080;">//наш массив</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><span class="f_CodeExample" style="color: #000080;">//строка которую мы будем разбивать</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">s:=</span><span class="f_CodeExample" style="color: #ff0000;">'Windows Messages SysUtils Variants Classes Graphics Controls Forms'</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><span class="f_CodeExample" style="color: #000080;">//мы постепенно заполняем массив на каждом шаге цикла по 1 элементу</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> setlength(a,length(a)+</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span><span class="f_CodeExample" style="color: #000080;">//увеличиваем размер массива на 1</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> pos(</span><span class="f_CodeExample" style="color: #ff0000;">' '</span><span class="f_CodeExample" style="color: #000000;">,s)&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: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> a[length(a)-</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">]:=copy(s,</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, pos(</span><span class="f_CodeExample" style="color: #ff0000;">' '</span><span class="f_CodeExample" style="color: #000000;">,s));</span><span class="f_CodeExample" style="color: #000080;">//присвоение последнему элементу массива первого слова</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> s:=copy(s,pos(</span><span class="f_CodeExample" style="color: #ff0000;">' '</span><span class="f_CodeExample" style="color: #000000;">,s)+</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: #000080;">//удаляем из строки первое слово</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: #000080;">//в строке осталось только одно слово</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> a[length(a)-</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">]:=s;</span><span class="f_CodeExample" style="color: #000080;">// присвоим последнее слово</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> break;</span><span class="f_CodeExample" style="color: #000080;">//выход из цикла</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Until</span><span class="f_CodeExample" style="color: #000000;"> False;</span><span class="f_CodeExample" style="color: #000080;">//цикл бесконечный, выход изнутри</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//теперь проверяем что получили</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">showmessage(a[</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;">showmessage(a[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">]);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">showmessage(a[</span><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">]);</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000;">После использования массива не забудте освободить память a:=nil или setlength(a,0)</span></p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #ff0000; font-size: 10pt; font-weight: bold;">Автор:</span><span style="font-family: 'Times New Roman'; color: #0000ff; font-size: 10pt; font-weight: bold; text-decoration: underline;">Vit</span><span style="font-family: 'Times New Roman'; font-size: 10pt; font-weight: bold;">  </span></p> <p> </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> </p> <p> </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;"> SplitOnWords(</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:</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; Strings: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;">p,sp:PChar;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">str:</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></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;">include(Delimiters,</span><span class="f_CodeExample" style="color: #ff0000;">#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: #000000;">p:=pointer(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;"> true </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;">//пропускаем все разделители в начале</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;"> p^ </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;">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;"> p^=</span><span class="f_CodeExample" style="color: #ff0000;">#0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> exit</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(p);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> sp:=p;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//пока не кончилось слово.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">not</span><span class="f_CodeExample" style="color: #000000;"> (p^ </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;">do</span><span class="f_CodeExample" style="color: #000000;"> inc(p);</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;"> SetLength(str,cardinal(p)-cardinal(sp));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Move(sp^,pointer(str)^,cardinal(p)-cardinal(sp));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Strings.Add(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"><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> </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: #ff0000; font-size: 10pt; font-weight: bold;">Автор:</span><span style="font-family: 'Times New Roman'; color: #0000ff; font-size: 10pt; font-weight: bold; text-decoration: underline;">Fantasist</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> </p> <p> </p> <hr size="1" noshade="noshade" style="color: #000000;" /> <p><span style="font-family: 'Times New Roman'; color: #000000;">См. также </span>Парсинг строк</p> <p><span style="font-family: 'Times New Roman'; color: #000000;">Вариант 1. </span></p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000;">В Дельфи есть специальный класс для хранения массивов строк - TStringList - очень рекомендую. Вот как вашу строку превратить в TStringList:</span></p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000;">Объявление переменной</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;">var</span><span class="f_CodeExample" style="color: #000000;"> t: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;">t:=TStringList.create; </span><span class="f_CodeExample" style="color: #000080;">//создаём класс</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">t.text:=stringReplace(</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;">#13#10</span><span class="f_CodeExample" style="color: #000000;">,[rfReplaceAll]);</span><span class="f_CodeExample" style="color: #000080;">//мы заменяем все пробелы на символы конца строки</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//теперь можно убедится что у вас строка разбина на элементы:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">showmessage(t[</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;">showmessage(t[</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;">showmessage(t[</span><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">]);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">showmessage(t[</span><span class="f_CodeExample" style="color: #800000;">3</span><span class="f_CodeExample" style="color: #000000;">]);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">...</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//после работы надо уничтожить класс</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">t.free;</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><span style="font-family: 'Times New Roman'; color: #ff0000; font-size: 10pt; font-weight: bold;">Автор:</span><span style="font-family: 'Times New Roman'; color: #0000ff; font-size: 10pt; font-weight: bold; text-decoration: underline;">Vit</span><span style="font-family: 'Times New Roman'; font-size: 10pt; 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> </p> <p> </p> <p> </p> <hr size="1" noshade="noshade" style="color: #000000;" /> <p><span style="font-family: 'Times New Roman'; color: #000000;">Вариант 2. Используем стандартные массивы:</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;">var</span><span class="f_CodeExample" style="color: #000000;"> a:</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">array</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span><span class="f_CodeExample" style="color: #000080;">//наш массив</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><span class="f_CodeExample" style="color: #000080;">//строка которую мы будем разбивать</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">s:=</span><span class="f_CodeExample" style="color: #ff0000;">'Windows Messages SysUtils Variants Classes Graphics Controls Forms'</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><span class="f_CodeExample" style="color: #000080;">//мы постепенно заполняем массив на каждом шаге цикла по 1 элементу</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> setlength(a,length(a)+</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span><span class="f_CodeExample" style="color: #000080;">//увеличиваем размер массива на 1</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> pos(</span><span class="f_CodeExample" style="color: #ff0000;">' '</span><span class="f_CodeExample" style="color: #000000;">,s)&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: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> a[length(a)-</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">]:=copy(s,</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, pos(</span><span class="f_CodeExample" style="color: #ff0000;">' '</span><span class="f_CodeExample" style="color: #000000;">,s));</span><span class="f_CodeExample" style="color: #000080;">//присвоение последнему элементу массива первого слова</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> s:=copy(s,pos(</span><span class="f_CodeExample" style="color: #ff0000;">' '</span><span class="f_CodeExample" style="color: #000000;">,s)+</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: #000080;">//удаляем из строки первое слово</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: #000080;">//в строке осталось только одно слово</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> a[length(a)-</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">]:=s;</span><span class="f_CodeExample" style="color: #000080;">// присвоим последнее слово</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> break;</span><span class="f_CodeExample" style="color: #000080;">//выход из цикла</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Until</span><span class="f_CodeExample" style="color: #000000;"> False;</span><span class="f_CodeExample" style="color: #000080;">//цикл бесконечный, выход изнутри</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//теперь проверяем что получили</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">showmessage(a[</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;">showmessage(a[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">]);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">showmessage(a[</span><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">]);</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000;">После использования массива не забудте освободить память a:=nil или setlength(a,0)</span></p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #ff0000; font-size: 10pt; font-weight: bold;">Автор:</span><span style="font-family: 'Times New Roman'; color: #0000ff; font-size: 10pt; font-weight: bold; text-decoration: underline;">Vit</span><span style="font-family: 'Times New Roman'; font-size: 10pt; font-weight: bold;">  </span></p> <p> </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> </p> <p> </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;"> SplitOnWords(</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:</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; Strings: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;">p,sp:PChar;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">str:</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></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;">include(Delimiters,</span><span class="f_CodeExample" style="color: #ff0000;">#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: #000000;">p:=pointer(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;"> true </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;">//пропускаем все разделители в начале</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;"> p^ </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;">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;"> p^=</span><span class="f_CodeExample" style="color: #ff0000;">#0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> exit</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(p);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> sp:=p;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//пока не кончилось слово.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">not</span><span class="f_CodeExample" style="color: #000000;"> (p^ </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;">do</span><span class="f_CodeExample" style="color: #000000;"> inc(p);</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;"> SetLength(str,cardinal(p)-cardinal(sp));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Move(sp^,pointer(str)^,cardinal(p)-cardinal(sp));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Strings.Add(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"><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> </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: #ff0000; font-size: 10pt; font-weight: bold;">Автор:</span><span style="font-family: 'Times New Roman'; color: #0000ff; font-size: 10pt; font-weight: bold; text-decoration: underline;">Fantasist</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> </p> <p> </p> <hr size="1" noshade="noshade" style="color: #000000;" /> <p><span style="font-family: 'Times New Roman'; color: #000000;">См. также </span>Парсинг строк</p> Количество вхождений подстроки в строку 2013-08-21T14:46:31+07:00 2013-08-21T14:46:31+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/razbor-stroki-vydelenie-elementov-poisk/kolichestvo-vkhozhdenij-podstroki-v-stroku.html Super User toto44@inbox.ru <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> CountPos(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> subtext: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; Text: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">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(subtext) = </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;">or</span><span class="f_CodeExample" style="color: #000000;"> (Length(Text) = </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;">or</span><span class="f_CodeExample" style="color: #000000;"> (Pos(subtext, Text) = </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := </span><span class="f_CodeExample" style="color: #800000;">0</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := (Length(Text) - Length(StringReplace(Text, subtext, </span><span class="f_CodeExample" style="color: #ff0000;">''</span><span class="f_CodeExample" style="color: #000000;">, [rfReplaceAll]))) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">div</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Length(subtext);</span></p> <p 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> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ **** UBPFD *********** by delphibase.endimus.com ****</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">&gt;&gt; Подсчёт количества вхождений символа в строке</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Функцийка считает количество повторений</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">символа заданного InputSubStr в строке InputStr.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Зависимости: Стандартные модули</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: Ru, DiVo_Ru@rambler.ru, Одесса (Украина)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: DiVo 2003 creator Ru</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Дата: 18 ноября 2003 г.</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;"> CntChRepet(InputStr: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; InputSubStr: char): integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">result := </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(InputStr) </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;"> InputStr[i] = InputSubStr </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(result);</span></p> <p 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> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ **** UBPFD *********** by delphibase.endimus.com ****</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">&gt;&gt; Подсчитать количество вхождений подстроки в строке</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Понадобилось подсчитать количество вхождений подстроки в строку,</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">вот и появилась эта функция. Возможно в ней и нет изюминки,</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">но может кому и пригодится.</span></p> <p class="p_CodeExample"> </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;">Автор: Дмитрий, bestonix@mail.ru, ICQ:155133146, Тольятти</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;">Дата: 17 октября 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;"> CntRecurrences(substr, str: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">cnt, p: 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;">cnt := </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;"> 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;"> p := Pos(substr, 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;"> p &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;"> inc(cnt)</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;"> p := </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;">, (p + Length(substr) - </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 := cnt;</span></p> <p 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>Автор: ___Nikolay</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: #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;"> SymbolEntersCount(s: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; ch: char): integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> Trim(s) &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;">for</span><span class="f_CodeExample" style="color: #000000;"> i := </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000000;"> Length(s) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> s[i] = ch </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(Result);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> </td> </tr> </tbody> </table> </div> <p 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> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> CountPos(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> subtext: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; Text: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">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(subtext) = </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;">or</span><span class="f_CodeExample" style="color: #000000;"> (Length(Text) = </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;">or</span><span class="f_CodeExample" style="color: #000000;"> (Pos(subtext, Text) = </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := </span><span class="f_CodeExample" style="color: #800000;">0</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := (Length(Text) - Length(StringReplace(Text, subtext, </span><span class="f_CodeExample" style="color: #ff0000;">''</span><span class="f_CodeExample" style="color: #000000;">, [rfReplaceAll]))) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">div</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Length(subtext);</span></p> <p 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> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ **** UBPFD *********** by delphibase.endimus.com ****</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">&gt;&gt; Подсчёт количества вхождений символа в строке</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Функцийка считает количество повторений</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">символа заданного InputSubStr в строке InputStr.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Зависимости: Стандартные модули</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: Ru, DiVo_Ru@rambler.ru, Одесса (Украина)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: DiVo 2003 creator Ru</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Дата: 18 ноября 2003 г.</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;"> CntChRepet(InputStr: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; InputSubStr: char): integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">result := </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(InputStr) </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;"> InputStr[i] = InputSubStr </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(result);</span></p> <p 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> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ **** UBPFD *********** by delphibase.endimus.com ****</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">&gt;&gt; Подсчитать количество вхождений подстроки в строке</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Понадобилось подсчитать количество вхождений подстроки в строку,</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">вот и появилась эта функция. Возможно в ней и нет изюминки,</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">но может кому и пригодится.</span></p> <p class="p_CodeExample"> </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;">Автор: Дмитрий, bestonix@mail.ru, ICQ:155133146, Тольятти</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;">Дата: 17 октября 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;"> CntRecurrences(substr, str: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">cnt, p: 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;">cnt := </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;"> 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;"> p := Pos(substr, 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;"> p &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;"> inc(cnt)</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;"> p := </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;">, (p + Length(substr) - </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 := cnt;</span></p> <p 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>Автор: ___Nikolay</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: #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;"> SymbolEntersCount(s: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; ch: char): integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> Trim(s) &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;">for</span><span class="f_CodeExample" style="color: #000000;"> i := </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000000;"> Length(s) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> s[i] = ch </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(Result);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> </td> </tr> </tbody> </table> </div> <p 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> Модуль поиска по маске (более совершеный нежели дельфийский masks) 2013-08-21T14:48:11+07:00 2013-08-21T14:48:11+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/razbor-stroki-vydelenie-elementov-poisk/modul-poiska-po-maske-bolee-sovershenyj-nezheli-delfijskij-masks.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;">unit</span><span class="f_CodeExample" style="color: #000000;"> awMachMask; </span><span class="f_CodeExample" style="color: #000080;">// © Alexandr Petrovich Sysoev</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: #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;">// файловым фильтрам программы Total Commander.</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;">// Каждый шаблон аналогичен шаблону имен файлов в MS-DOS и MS Windows,</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;">// символы ';' или ' ' (пробел) то он обязательно должен быть заключен в</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;">// Текст (имя файла) будет считаться соответствующим списку шаблонов только</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;">// Формальное описание синтаксиса списка шаблонов:</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;">// Полный список шаблонов :: [&lt;список включаемых шаблонов&gt;]['|'&lt;список исключаемых шаблонов&gt;]</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// список включаемых шаблонов :: &lt;список шаблонов&gt;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// список исключаемых шаблонов :: &lt;список шаблонов&gt;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// список шаблонов :: &lt;шаблон&gt;[';'&lt;шаблон&gt;]</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;">// MS-DOS и MS Windows, т.е. может включать</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;">// быть удвоены. Если шаблон включает символы</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;">// Например:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// '*.ini;*.wav' - соответствует любым файлам с расшиениями 'ini'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// или 'wav'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// '*.*|*.exe' - соответствует любым файлам, кроме файлов с</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// расширением 'EXE'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// '*.mp3;*.wav|?.*;??.*' - соответствует любым файлам с расшиениями 'mp3'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// и 'wav' за исключением файлов у которых имя</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;">// '|awString.*' - соответствует любым файлам за исключением файлов</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// с именем awString и любым расширением.</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;"> IsMatchMask (aText, aMask :pChar ) :Boolean; overload;</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;"> IsMatchMask (aText, aMask :</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">String</span><span class="f_CodeExample" style="color: #000000;">; aFileNameMode :Boolean =True) :Boolean; overload;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Выполняют сопоставление текста aText с одним шаблоном aMask.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Возвращает True если сопоставление выполнено успешно, т.е. текст</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// aText соответствует шаблону aMask.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Если aFileNameModd=True, то объект используется для сопоставления</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// имен файлов с шаблоном. А именно, в этом случае, если aText не</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;"> IsMatchMaskList (aText, aMaskList :</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">String</span><span class="f_CodeExample" style="color: #000000;">; aFileNameMode :Boolean =True): Boolean;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Выполняет сопоставление текста aText со списком шаблонов aMaskList.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Возвращает True если сопоставление выполнено успешно, т.е. текст</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// aText соответствует списку шаблонов aMaskList.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Если aFileNameModd=True, то объект используется для сопоставления</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// имен файлов с шаблоном. А именно, в этом случае, если aText не</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;">// списку шаблонов, эффективнее будет воспользоваться объектом tMatchMaskList.</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;">tMatchMaskList = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">class</span><span class="f_CodeExample" style="color: #000000;">(tObject)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Private</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> fMaskList :</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;"> fCaseSensitive :Boolean;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> fFileNameMode :Boolean;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> fPrepared :Boolean;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> fIncludeMasks :tStringList;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> fExcludeMasks :tStringList;</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;"> SetMaskList (v :</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;">procedure</span><span class="f_CodeExample" style="color: #000000;"> SetCaseSensitive (v :Boolean);</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Public</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">constructor</span><span class="f_CodeExample" style="color: #000000;"> Create (</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Const</span><span class="f_CodeExample" style="color: #000000;"> aMaskList :</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: #ff0000;">''</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Создает объект. Если задан параметр aMaskList, то он присваивается</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// свойству MaskList.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">destructor</span><span class="f_CodeExample" style="color: #000000;"> Destroy; </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">override</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;"> PrepareMasks;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Осуществляет компиляцию списка шаблонов во внутреннюю структуру</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// используемую при сопоставлении текста.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Вызов данного метода не является обязательным и при необходимости</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// будет вызван автоматически.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Function</span><span class="f_CodeExample" style="color: #000000;"> IsMatch (aText :</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">String</span><span class="f_CodeExample" style="color: #000000;">) :Boolean;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Выполняет сопоставление текста aText со списком шаблонов MaskList.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Возвращает True если сопоставление выполнено успешно, т.е. текст</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// aText соответствует списку шаблонов MaskList.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Property</span><span class="f_CodeExample" style="color: #000000;"> MaskList :</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">String</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Read</span><span class="f_CodeExample" style="color: #000000;"> fMaskList </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Write</span><span class="f_CodeExample" style="color: #000000;"> SetMaskList ;</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;">Property</span><span class="f_CodeExample" style="color: #000000;"> CaseSensitive :Boolean </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Read</span><span class="f_CodeExample" style="color: #000000;"> fCaseSensitive </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Write</span><span class="f_CodeExample" style="color: #000000;"> SetCaseSensitive </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">default</span><span class="f_CodeExample" style="color: #000000;"> False;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Если False (по умолчанию), то при сопоставлении текста будет</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;">// Иначе, если True, сопоставление будет проводиться с учетом регистра.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Property</span><span class="f_CodeExample" style="color: #000000;"> FileNameMode :Boolean </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Read</span><span class="f_CodeExample" style="color: #000000;"> fFileNameMode </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Write</span><span class="f_CodeExample" style="color: #000000;"> fFileNameMode </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">default</span><span class="f_CodeExample" style="color: #000000;"> True;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Если True (по умолчанию), то объект используется для сопоставления</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// имен файлов с шаблоном. А именно, в этом случае, если aText не</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;">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;">implementation</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">uses</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">SysUtils</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;"> IsMatchMask (aText, aMask :pChar ) :Boolean; overload;</span></p> <p class="p_CodeExample"><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;">While</span><span class="f_CodeExample" style="color: #000000;"> True </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Do</span><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;"> aMask^ </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><span class="f_CodeExample" style="color: #000080;">// соответствует любому числу любых символов кроме конца строки</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// переместиться на очередной символ шаблона, при этом, подряд</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// идущие '*' эквивалентны одному, поэтому пропуск всех '*'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">repeat</span><span class="f_CodeExample" style="color: #000000;"> Inc(aMask); </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Until</span><span class="f_CodeExample" style="color: #000000;"> (aMask^&lt;&gt;</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: #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: #008000; font-weight: bold;">If</span><span class="f_CodeExample" style="color: #000000;"> aMask^ &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;">While</span><span class="f_CodeExample" style="color: #000000;"> (aText^ &lt;&gt; </span><span class="f_CodeExample" style="color: #ff0000;">#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;"> (aText^ &lt;&gt; aMask^) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Do</span><span class="f_CodeExample" style="color: #000000;"> Inc(aText);</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;"> aText^ &lt;&gt; </span><span class="f_CodeExample" style="color: #ff0000;">#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: #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: #008000; font-weight: bold;">If</span><span class="f_CodeExample" style="color: #000000;"> IsMatchMask (aText+</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, aMask-</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Then</span><span class="f_CodeExample" style="color: #000000;"> Break; </span><span class="f_CodeExample" style="color: #000080;">// это СОВПАДЕНИЕ</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// продолжение не совпало, значит считаем что здесь закончилось</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// соответствие '*'. Продолжим сопоставление со следующего</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// символа шаблона</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Inc(aMask); Inc(aText); </span><span class="f_CodeExample" style="color: #000080;">// иначе переходим к следующему символу</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">End</span></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;"> (aMask^ = </span><span class="f_CodeExample" style="color: #ff0000;">#0</span><span class="f_CodeExample" style="color: #000000;">) </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;"> Break </span><span class="f_CodeExample" style="color: #000080;">// это СОВПАДЕНИЕ</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Else</span><span class="f_CodeExample" style="color: #000080;">// конец строки но не конец шаблона</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Exit </span><span class="f_CodeExample" style="color: #000080;">// это НЕ СОВПАДЕНИЕ</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">End</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </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: #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;"> (aText^ = </span><span class="f_CodeExample" style="color: #ff0000;">#0</span><span class="f_CodeExample" style="color: #000000;">) </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;"> Exit </span><span class="f_CodeExample" style="color: #000080;">// это НЕ СОВПАДЕНИЕ</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;">begin</span><span class="f_CodeExample" style="color: #000080;">// иначе</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Inc(aMask); Inc(aText); </span><span class="f_CodeExample" style="color: #000080;">// иначе переходим к следующему символу</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">End</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Else</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;"> aMask^ &lt;&gt; aText^ </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;"> Exit </span><span class="f_CodeExample" style="color: #000080;">// это НЕ СОВПАДЕНИЕ</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;">begin</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;"> (aMask^ = </span><span class="f_CodeExample" style="color: #ff0000;">#0</span><span class="f_CodeExample" style="color: #000000;">) </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;"> Break; </span><span class="f_CodeExample" style="color: #000080;">// это СОВПАДЕНИЕ</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Inc(aMask); Inc(aText); </span><span class="f_CodeExample" style="color: #000080;">// иначе переходим к следующему символу</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">End</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span 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 := True;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">End</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Function</span><span class="f_CodeExample" style="color: #000000;"> IsMatchMask (aText, aMask :</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">String</span><span class="f_CodeExample" style="color: #000000;">; aFileNameMode :Boolean =True) :Boolean; overload;</span></p> <p class="p_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;"> aFileNameMode </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">And</span><span class="f_CodeExample" style="color: #000000;"> (Pos(</span><span class="f_CodeExample" style="color: #ff0000;">'.'</span><span class="f_CodeExample" style="color: #000000;">,aText)=</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span><span class="f_CodeExample" style="color: #000000;"> aText := aText+</span><span class="f_CodeExample" style="color: #ff0000;">'.'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := IsMatchMask(pChar(aText),pChar(aMask));</span></p> <p class="p_CodeExample"><span 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;"> IsMatchMaskList (aText, aMaskList :</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">String</span><span class="f_CodeExample" style="color: #000000;">; aFileNameMode :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;">With</span><span class="f_CodeExample" style="color: #000000;"> tMatchMaskList.Create(aMaskList) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Do</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">try</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> FileNameMode := aFileNameMode;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := IsMatch(aText);</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;"> 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"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">/////////////////////////////////////////////////////////// tFileMask</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> tMatchMaskList.SetMaskList (v :</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">String</span><span class="f_CodeExample" style="color: #000000;"> );</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">If</span><span class="f_CodeExample" style="color: #000000;"> fMaskList = v </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Then</span><span class="f_CodeExample" style="color: #000000;"> Exit;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">fMaskList := v;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">fPrepared := 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"> </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;"> tMatchMaskList.SetCaseSensitive (v :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;"> fCaseSensitive = v </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Then</span><span class="f_CodeExample" style="color: #000000;"> Exit;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">fCaseSensitive := v;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">fPrepared := 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"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">constructor</span><span class="f_CodeExample" style="color: #000000;"> tMatchMaskList.Create (</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Const</span><span class="f_CodeExample" style="color: #000000;"> aMaskList :</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;">MaskList := aMaskList;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">fFileNameMode := True;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">fIncludeMasks := TStringList.Create; </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">With</span><span class="f_CodeExample" style="color: #000000;"> fIncludeMasks </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Do</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Delimiter := </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: #000080;">// Sorted := True;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Duplicates := dupIgnore;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">End</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">fExcludeMasks := tStringList.Create; </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">With</span><span class="f_CodeExample" style="color: #000000;"> fExcludeMasks </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Do</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Delimiter := </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: #000080;">// Sorted := True;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Duplicates := dupIgnore;</span></p> <p class="p_CodeExample"><span 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;">destructor</span><span class="f_CodeExample" style="color: #000000;"> tMatchMaskList.Destroy;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">fIncludeMasks.Free;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">fExcludeMasks.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"> </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;"> tMatchMaskList.PrepareMasks;</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;"> CleanList(l :tStrings);</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 :Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">For</span><span class="f_CodeExample" style="color: #000000;"> i := l.Count-</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">downto</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Do</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">If</span><span class="f_CodeExample" style="color: #000000;"> l[i] = </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;"> l.Delete(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"> </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;">i :Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">If</span><span class="f_CodeExample" style="color: #000000;"> fPrepared </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Then</span><span class="f_CodeExample" style="color: #000000;"> Exit;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">If</span><span class="f_CodeExample" style="color: #000000;"> CaseSensitive </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 := MaskList</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> s := UpperCase(MaskList);</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i := Pos(</span><span class="f_CodeExample" style="color: #ff0000;">'|'</span><span class="f_CodeExample" style="color: #000000;">,s);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">If</span><span class="f_CodeExample" style="color: #000000;"> i = </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></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> fIncludeMasks.DelimitedText := s;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> fExcludeMasks.DelimitedText := </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></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;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> fIncludeMasks.DelimitedText := Copy(s,</span><span class="f_CodeExample" style="color: #800000;">1</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: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> fExcludeMasks.DelimitedText := Copy(s,i+</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">,MaxInt);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">End</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">CleanList(fIncludeMasks);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">CleanList(fExcludeMasks);</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// если список включаемых шаблонов пуст а</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// список исключаемых шаблонов не пуст, то</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// имеется ввиду что список включаемых шаблонов равен &lt;все файлы&gt;</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;"> (fIncludeMasks.Count = </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;"> (fExcludeMasks.Count &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;">Then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> fIncludeMasks.Add(</span><span class="f_CodeExample" style="color: #ff0000;">'*'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">fPrepared := True;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">End</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Function</span><span class="f_CodeExample" style="color: #000000;"> tMatchMaskList.IsMatch (aText :</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">String</span><span class="f_CodeExample" style="color: #000000;">) :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 :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: #008000; font-weight: bold;">If</span><span class="f_CodeExample" style="color: #000000;"> aText = </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;"> 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: #008000; font-weight: bold;">Not</span><span class="f_CodeExample" style="color: #000000;"> CaseSensitive </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Then</span><span class="f_CodeExample" style="color: #000000;"> aText := UpperCase(aText);</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;"> FileNameMode </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">And</span><span class="f_CodeExample" style="color: #000000;"> (Pos(</span><span class="f_CodeExample" style="color: #ff0000;">'.'</span><span class="f_CodeExample" style="color: #000000;">,aText)=</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span><span class="f_CodeExample" style="color: #000000;"> aText := aText+</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: #008000; font-weight: bold;">Not</span><span class="f_CodeExample" style="color: #000000;"> fPrepared </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Then</span><span class="f_CodeExample" style="color: #000000;"> PrepareMasks;</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;">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;"> fIncludeMasks.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;">If</span><span class="f_CodeExample" style="color: #000000;"> IsMatchMask(PChar(aText),PChar(fIncludeMasks[i])) </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></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: #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;"> Result </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;">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;"> fExcludeMasks.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;">If</span><span class="f_CodeExample" style="color: #000000;"> IsMatchMask(PChar(aText),PChar(fExcludeMasks[i])) </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></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;"> Break;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">End</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">End</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </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;">end</span><span class="f_CodeExample" style="color: #000000;">.</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p> </p> <p> <span style="font-family: 'Times New Roman'; color: #ff0000; font-size: 10pt; font-weight: bold;">Автор:</span><span style="font-family: 'Times New Roman'; color: #0000ff; font-size: 10pt; font-weight: bold; text-decoration: underline;">Петрович</span></p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Взято из </span><span style="color: #0000ff; font-size: 10pt; font-weight: bold; text-decoration: underline;">https://forum.sources</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;"> awMachMask; </span><span class="f_CodeExample" style="color: #000080;">// © Alexandr Petrovich Sysoev</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: #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;">// файловым фильтрам программы Total Commander.</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;">// Каждый шаблон аналогичен шаблону имен файлов в MS-DOS и MS Windows,</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;">// символы ';' или ' ' (пробел) то он обязательно должен быть заключен в</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;">// Текст (имя файла) будет считаться соответствующим списку шаблонов только</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;">// Формальное описание синтаксиса списка шаблонов:</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;">// Полный список шаблонов :: [&lt;список включаемых шаблонов&gt;]['|'&lt;список исключаемых шаблонов&gt;]</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// список включаемых шаблонов :: &lt;список шаблонов&gt;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// список исключаемых шаблонов :: &lt;список шаблонов&gt;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// список шаблонов :: &lt;шаблон&gt;[';'&lt;шаблон&gt;]</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;">// MS-DOS и MS Windows, т.е. может включать</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;">// быть удвоены. Если шаблон включает символы</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;">// Например:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// '*.ini;*.wav' - соответствует любым файлам с расшиениями 'ini'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// или 'wav'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// '*.*|*.exe' - соответствует любым файлам, кроме файлов с</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// расширением 'EXE'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// '*.mp3;*.wav|?.*;??.*' - соответствует любым файлам с расшиениями 'mp3'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// и 'wav' за исключением файлов у которых имя</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;">// '|awString.*' - соответствует любым файлам за исключением файлов</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// с именем awString и любым расширением.</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;"> IsMatchMask (aText, aMask :pChar ) :Boolean; overload;</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;"> IsMatchMask (aText, aMask :</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">String</span><span class="f_CodeExample" style="color: #000000;">; aFileNameMode :Boolean =True) :Boolean; overload;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Выполняют сопоставление текста aText с одним шаблоном aMask.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Возвращает True если сопоставление выполнено успешно, т.е. текст</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// aText соответствует шаблону aMask.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Если aFileNameModd=True, то объект используется для сопоставления</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// имен файлов с шаблоном. А именно, в этом случае, если aText не</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;"> IsMatchMaskList (aText, aMaskList :</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">String</span><span class="f_CodeExample" style="color: #000000;">; aFileNameMode :Boolean =True): Boolean;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Выполняет сопоставление текста aText со списком шаблонов aMaskList.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Возвращает True если сопоставление выполнено успешно, т.е. текст</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// aText соответствует списку шаблонов aMaskList.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Если aFileNameModd=True, то объект используется для сопоставления</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// имен файлов с шаблоном. А именно, в этом случае, если aText не</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;">// списку шаблонов, эффективнее будет воспользоваться объектом tMatchMaskList.</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;">tMatchMaskList = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">class</span><span class="f_CodeExample" style="color: #000000;">(tObject)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Private</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> fMaskList :</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;"> fCaseSensitive :Boolean;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> fFileNameMode :Boolean;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> fPrepared :Boolean;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> fIncludeMasks :tStringList;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> fExcludeMasks :tStringList;</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;"> SetMaskList (v :</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;">procedure</span><span class="f_CodeExample" style="color: #000000;"> SetCaseSensitive (v :Boolean);</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Public</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">constructor</span><span class="f_CodeExample" style="color: #000000;"> Create (</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Const</span><span class="f_CodeExample" style="color: #000000;"> aMaskList :</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: #ff0000;">''</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Создает объект. Если задан параметр aMaskList, то он присваивается</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// свойству MaskList.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">destructor</span><span class="f_CodeExample" style="color: #000000;"> Destroy; </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">override</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;"> PrepareMasks;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Осуществляет компиляцию списка шаблонов во внутреннюю структуру</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// используемую при сопоставлении текста.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Вызов данного метода не является обязательным и при необходимости</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// будет вызван автоматически.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Function</span><span class="f_CodeExample" style="color: #000000;"> IsMatch (aText :</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">String</span><span class="f_CodeExample" style="color: #000000;">) :Boolean;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Выполняет сопоставление текста aText со списком шаблонов MaskList.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Возвращает True если сопоставление выполнено успешно, т.е. текст</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// aText соответствует списку шаблонов MaskList.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Property</span><span class="f_CodeExample" style="color: #000000;"> MaskList :</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">String</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Read</span><span class="f_CodeExample" style="color: #000000;"> fMaskList </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Write</span><span class="f_CodeExample" style="color: #000000;"> SetMaskList ;</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;">Property</span><span class="f_CodeExample" style="color: #000000;"> CaseSensitive :Boolean </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Read</span><span class="f_CodeExample" style="color: #000000;"> fCaseSensitive </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Write</span><span class="f_CodeExample" style="color: #000000;"> SetCaseSensitive </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">default</span><span class="f_CodeExample" style="color: #000000;"> False;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Если False (по умолчанию), то при сопоставлении текста будет</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;">// Иначе, если True, сопоставление будет проводиться с учетом регистра.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Property</span><span class="f_CodeExample" style="color: #000000;"> FileNameMode :Boolean </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Read</span><span class="f_CodeExample" style="color: #000000;"> fFileNameMode </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Write</span><span class="f_CodeExample" style="color: #000000;"> fFileNameMode </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">default</span><span class="f_CodeExample" style="color: #000000;"> True;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Если True (по умолчанию), то объект используется для сопоставления</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// имен файлов с шаблоном. А именно, в этом случае, если aText не</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;">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;">implementation</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">uses</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">SysUtils</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;"> IsMatchMask (aText, aMask :pChar ) :Boolean; overload;</span></p> <p class="p_CodeExample"><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;">While</span><span class="f_CodeExample" style="color: #000000;"> True </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Do</span><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;"> aMask^ </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><span class="f_CodeExample" style="color: #000080;">// соответствует любому числу любых символов кроме конца строки</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// переместиться на очередной символ шаблона, при этом, подряд</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// идущие '*' эквивалентны одному, поэтому пропуск всех '*'</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">repeat</span><span class="f_CodeExample" style="color: #000000;"> Inc(aMask); </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Until</span><span class="f_CodeExample" style="color: #000000;"> (aMask^&lt;&gt;</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: #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: #008000; font-weight: bold;">If</span><span class="f_CodeExample" style="color: #000000;"> aMask^ &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;">While</span><span class="f_CodeExample" style="color: #000000;"> (aText^ &lt;&gt; </span><span class="f_CodeExample" style="color: #ff0000;">#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;"> (aText^ &lt;&gt; aMask^) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Do</span><span class="f_CodeExample" style="color: #000000;"> Inc(aText);</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;"> aText^ &lt;&gt; </span><span class="f_CodeExample" style="color: #ff0000;">#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: #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: #008000; font-weight: bold;">If</span><span class="f_CodeExample" style="color: #000000;"> IsMatchMask (aText+</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, aMask-</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Then</span><span class="f_CodeExample" style="color: #000000;"> Break; </span><span class="f_CodeExample" style="color: #000080;">// это СОВПАДЕНИЕ</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// продолжение не совпало, значит считаем что здесь закончилось</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// соответствие '*'. Продолжим сопоставление со следующего</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// символа шаблона</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Inc(aMask); Inc(aText); </span><span class="f_CodeExample" style="color: #000080;">// иначе переходим к следующему символу</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">End</span></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;"> (aMask^ = </span><span class="f_CodeExample" style="color: #ff0000;">#0</span><span class="f_CodeExample" style="color: #000000;">) </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;"> Break </span><span class="f_CodeExample" style="color: #000080;">// это СОВПАДЕНИЕ</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Else</span><span class="f_CodeExample" style="color: #000080;">// конец строки но не конец шаблона</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Exit </span><span class="f_CodeExample" style="color: #000080;">// это НЕ СОВПАДЕНИЕ</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">End</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </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: #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;"> (aText^ = </span><span class="f_CodeExample" style="color: #ff0000;">#0</span><span class="f_CodeExample" style="color: #000000;">) </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;"> Exit </span><span class="f_CodeExample" style="color: #000080;">// это НЕ СОВПАДЕНИЕ</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;">begin</span><span class="f_CodeExample" style="color: #000080;">// иначе</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Inc(aMask); Inc(aText); </span><span class="f_CodeExample" style="color: #000080;">// иначе переходим к следующему символу</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">End</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Else</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;"> aMask^ &lt;&gt; aText^ </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;"> Exit </span><span class="f_CodeExample" style="color: #000080;">// это НЕ СОВПАДЕНИЕ</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;">begin</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;"> (aMask^ = </span><span class="f_CodeExample" style="color: #ff0000;">#0</span><span class="f_CodeExample" style="color: #000000;">) </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;"> Break; </span><span class="f_CodeExample" style="color: #000080;">// это СОВПАДЕНИЕ</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Inc(aMask); Inc(aText); </span><span class="f_CodeExample" style="color: #000080;">// иначе переходим к следующему символу</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">End</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span 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 := True;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">End</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Function</span><span class="f_CodeExample" style="color: #000000;"> IsMatchMask (aText, aMask :</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">String</span><span class="f_CodeExample" style="color: #000000;">; aFileNameMode :Boolean =True) :Boolean; overload;</span></p> <p class="p_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;"> aFileNameMode </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">And</span><span class="f_CodeExample" style="color: #000000;"> (Pos(</span><span class="f_CodeExample" style="color: #ff0000;">'.'</span><span class="f_CodeExample" style="color: #000000;">,aText)=</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span><span class="f_CodeExample" style="color: #000000;"> aText := aText+</span><span class="f_CodeExample" style="color: #ff0000;">'.'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := IsMatchMask(pChar(aText),pChar(aMask));</span></p> <p class="p_CodeExample"><span 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;"> IsMatchMaskList (aText, aMaskList :</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">String</span><span class="f_CodeExample" style="color: #000000;">; aFileNameMode :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;">With</span><span class="f_CodeExample" style="color: #000000;"> tMatchMaskList.Create(aMaskList) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Do</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">try</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> FileNameMode := aFileNameMode;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := IsMatch(aText);</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;"> 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"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">/////////////////////////////////////////////////////////// tFileMask</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> tMatchMaskList.SetMaskList (v :</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">String</span><span class="f_CodeExample" style="color: #000000;"> );</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">If</span><span class="f_CodeExample" style="color: #000000;"> fMaskList = v </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Then</span><span class="f_CodeExample" style="color: #000000;"> Exit;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">fMaskList := v;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">fPrepared := 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"> </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;"> tMatchMaskList.SetCaseSensitive (v :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;"> fCaseSensitive = v </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Then</span><span class="f_CodeExample" style="color: #000000;"> Exit;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">fCaseSensitive := v;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">fPrepared := 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"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">constructor</span><span class="f_CodeExample" style="color: #000000;"> tMatchMaskList.Create (</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Const</span><span class="f_CodeExample" style="color: #000000;"> aMaskList :</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;">MaskList := aMaskList;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">fFileNameMode := True;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">fIncludeMasks := TStringList.Create; </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">With</span><span class="f_CodeExample" style="color: #000000;"> fIncludeMasks </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Do</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Delimiter := </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: #000080;">// Sorted := True;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Duplicates := dupIgnore;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">End</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">fExcludeMasks := tStringList.Create; </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">With</span><span class="f_CodeExample" style="color: #000000;"> fExcludeMasks </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Do</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Delimiter := </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: #000080;">// Sorted := True;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Duplicates := dupIgnore;</span></p> <p class="p_CodeExample"><span 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;">destructor</span><span class="f_CodeExample" style="color: #000000;"> tMatchMaskList.Destroy;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">fIncludeMasks.Free;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">fExcludeMasks.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"> </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;"> tMatchMaskList.PrepareMasks;</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;"> CleanList(l :tStrings);</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 :Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">For</span><span class="f_CodeExample" style="color: #000000;"> i := l.Count-</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">downto</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Do</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">If</span><span class="f_CodeExample" style="color: #000000;"> l[i] = </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;"> l.Delete(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"> </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;">i :Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">If</span><span class="f_CodeExample" style="color: #000000;"> fPrepared </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Then</span><span class="f_CodeExample" style="color: #000000;"> Exit;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">If</span><span class="f_CodeExample" style="color: #000000;"> CaseSensitive </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 := MaskList</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> s := UpperCase(MaskList);</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i := Pos(</span><span class="f_CodeExample" style="color: #ff0000;">'|'</span><span class="f_CodeExample" style="color: #000000;">,s);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">If</span><span class="f_CodeExample" style="color: #000000;"> i = </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></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> fIncludeMasks.DelimitedText := s;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> fExcludeMasks.DelimitedText := </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></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;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> fIncludeMasks.DelimitedText := Copy(s,</span><span class="f_CodeExample" style="color: #800000;">1</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: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> fExcludeMasks.DelimitedText := Copy(s,i+</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">,MaxInt);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">End</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">CleanList(fIncludeMasks);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">CleanList(fExcludeMasks);</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// если список включаемых шаблонов пуст а</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// список исключаемых шаблонов не пуст, то</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// имеется ввиду что список включаемых шаблонов равен &lt;все файлы&gt;</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;"> (fIncludeMasks.Count = </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;"> (fExcludeMasks.Count &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;">Then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> fIncludeMasks.Add(</span><span class="f_CodeExample" style="color: #ff0000;">'*'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">fPrepared := True;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">End</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Function</span><span class="f_CodeExample" style="color: #000000;"> tMatchMaskList.IsMatch (aText :</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">String</span><span class="f_CodeExample" style="color: #000000;">) :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 :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: #008000; font-weight: bold;">If</span><span class="f_CodeExample" style="color: #000000;"> aText = </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;"> 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: #008000; font-weight: bold;">Not</span><span class="f_CodeExample" style="color: #000000;"> CaseSensitive </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Then</span><span class="f_CodeExample" style="color: #000000;"> aText := UpperCase(aText);</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;"> FileNameMode </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">And</span><span class="f_CodeExample" style="color: #000000;"> (Pos(</span><span class="f_CodeExample" style="color: #ff0000;">'.'</span><span class="f_CodeExample" style="color: #000000;">,aText)=</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span><span class="f_CodeExample" style="color: #000000;"> aText := aText+</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: #008000; font-weight: bold;">Not</span><span class="f_CodeExample" style="color: #000000;"> fPrepared </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Then</span><span class="f_CodeExample" style="color: #000000;"> PrepareMasks;</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;">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;"> fIncludeMasks.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;">If</span><span class="f_CodeExample" style="color: #000000;"> IsMatchMask(PChar(aText),PChar(fIncludeMasks[i])) </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></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: #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;"> Result </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;">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;"> fExcludeMasks.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;">If</span><span class="f_CodeExample" style="color: #000000;"> IsMatchMask(PChar(aText),PChar(fExcludeMasks[i])) </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></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;"> Break;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">End</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">End</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </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;">end</span><span class="f_CodeExample" style="color: #000000;">.</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p> </p> <p> <span style="font-family: 'Times New Roman'; color: #ff0000; font-size: 10pt; font-weight: bold;">Автор:</span><span style="font-family: 'Times New Roman'; color: #0000ff; font-size: 10pt; font-weight: bold; text-decoration: underline;">Петрович</span></p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Взято из </span><span style="color: #0000ff; font-size: 10pt; font-weight: bold; text-decoration: underline;">https://forum.sources</span></p> Нахождение последнего вхождения подстроки в строку 2013-08-21T14:53:26+07:00 2013-08-21T14:53:26+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/razbor-stroki-vydelenie-elementov-poisk/nakhozhdenie-poslednego-vkhozhdeniya-podstroki-v-stroku.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;">подстроки FindS в строку SrcS, т.е. первое с конца.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Если возвращает ноль, то подстрока не найдена.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Можно использовать в текстовых редакторах</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">при поиске текста вверх от курсора ввода.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Зависимости: System</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: Fenik, chook_nu @ uraltc.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;"> PosR2L(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> FindS, SrcS: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{Функция возвращает начало последнего вхождения</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">подстроки FindS в строку SrcS, т.е. первое с конца.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Если возвращает ноль, то подстрока не найдена.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Можно использовать в текстовых редакторах</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">при поиске текста вверх от курсора ввода.}</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> InvertS(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> S: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{Инверсия строки S}</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: 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;"> Len := Length(S);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SetLength(Result, Len);</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;"> Len </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result[i] := S[Len - 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"> </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;">ps: 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: #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;"> функции Pos(Substr, S: string): string;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> Если подстрока Substr есть в строке 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"><span class="f_CodeExample" style="color: #000000;">ps := Pos(InvertS(FindS), InvertS(SrcS));</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: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> ps &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;"> Result := Length(SrcS) - Length(FindS) - ps + </span><span class="f_CodeExample" style="color: #800000;">2</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: #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: #000000;">Пример использования: </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">p := PosR2L(</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: #000080;">// p:=18;</span></p> </td> </tr> </tbody> </table> </div> <p style="text-align: right;"><span style="font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #ff6600; font-size: 8pt; font-weight: bold;"> </span></p> <hr size="1" noshade="noshade" style="color: #000000;" /> <p> </p> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Letzte Position von SubStr in S ermitteln. </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Returns the last occurence of SubStr in S. </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;"> LastPos(SubStr, S: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Found, Len, Pos: 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;"> Pos := Length(S);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Len := Length(SubStr);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Found := </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;"> (Pos &gt; </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (Found = </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: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> Copy(S, Pos, Len) = SubStr </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;"> Found := Pos;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Dec(Pos);</span></p> <p class="p_CodeExample"><span 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;"> LastPos := Found;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> </td> </tr> </tbody> </table> </div> <p> </p> <p 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;">// by Manuel Wiersch </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;"> LastPos(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> SubStr: AnsiString; </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> S: AnsiString): LongInt;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">asm</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> TEST EAX,EAX </span><span class="f_CodeExample" style="color: #000080;">// EAX auf 0 prufen (d.h. SubStr = nil) </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JE @@noWork </span><span class="f_CodeExample" style="color: #000080;">// wenn EAX = 0 dann Sprung zu noWork </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> TEST EDX,EDX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Test ob S = nil </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JE @@stringEmpty </span><span class="f_CodeExample" style="color: #000080;">// bei Erfolg -&gt; Sprung zum Label 'stringEmpty' </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PUSH EBX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PUSH ESI</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PUSH EDI </span><span class="f_CodeExample" style="color: #000080;">// Register auf dem Stack sichern Grund: OH </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// OH: "In einer asm-Anweisung mu? der Inhalt </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// der Register EDI, ESI, ESP, EBP und EBX </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// erhalten bleiben (dh. vorher auf dem Stack </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// speichern) MOV ESI, EAX </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// ESI = Sourceindex -&gt; Adresse vom SubStr </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV EDI, EDX </span><span class="f_CodeExample" style="color: #000080;">// EDI = Destinationindex -&gt; Adresse von S </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV ECX,[EDI-</span><span class="f_CodeExample" style="color: #800000;">4</span><span class="f_CodeExample" style="color: #000000;">] </span><span class="f_CodeExample" style="color: #000080;">// Lange von S ins Zahlregister </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV EDX,[ESI-</span><span class="f_CodeExample" style="color: #800000;">4</span><span class="f_CodeExample" style="color: #000000;">] </span><span class="f_CodeExample" style="color: #000080;">// Lange des SubStr in EDX </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> DEC EDX </span><span class="f_CodeExample" style="color: #000080;">// Length(SubStr) - 1 </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JS @@fail</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Vorzeichenbedingter Sprung (JumpIfSign) </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// d.h. (EDX &lt; 0) -&gt; Sprung zu 'fail' </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> STD; </span><span class="f_CodeExample" style="color: #000080;">// SetDirectionFlag -&gt; Stringroutinen von hinten </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// abarbeiten </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> ADD ESI, EDX </span><span class="f_CodeExample" style="color: #000080;">// Pointer auf das letzte Zeichen vom SubStr </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> ADD EDI, ECX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> DEC EDI </span><span class="f_CodeExample" style="color: #000080;">// Pointer auf das letzte Zeichen von S </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV AL, [ESI] </span><span class="f_CodeExample" style="color: #000080;">// letztes Zeichen des SubStr in AL laden </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> DEC ESI </span><span class="f_CodeExample" style="color: #000080;">// Pointer auf das vorletzte Zeichen setzen. </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SUB ECX, EDX </span><span class="f_CodeExample" style="color: #000080;">// Anzahl der Stringdurchlaufe </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// = Length(s) - Length(substr) + 1 </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JLE @@fail </span><span class="f_CodeExample" style="color: #000080;">// Sprung zu 'fail' wenn ECX &lt;= 0 </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">@@loop:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> REPNE SCASB </span><span class="f_CodeExample" style="color: #000080;">// Wdh. solange ungleich (repeat while not equal) </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// scan string for byte </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JNE @@fail</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV EBX,ECX </span><span class="f_CodeExample" style="color: #000080;">{ Zahleregister, ESI und EDI sichern, da nun der </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> Vergleich durchgefuhrt wird ob die nachfolgenden </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> Zeichen von SubStr in S vorhanden sind }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PUSH ESI</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PUSH EDI</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV ECX,EDX </span><span class="f_CodeExample" style="color: #000080;">// Lange des SubStrings in ECX </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> REPE CMPSB </span><span class="f_CodeExample" style="color: #000080;">// Solange (ECX &gt; 0) und (Compare string fo byte) </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// dh. solange S[i] = SubStr[i] </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> POP EDI</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> POP ESI </span><span class="f_CodeExample" style="color: #000080;">// alten Source- und Destinationpointer vom Stack holen </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JE @@found </span><span class="f_CodeExample" style="color: #000080;">// Und schon haben wir den Index da ECX = 0 </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// dh. alle Zeichen wurden gefunden </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV ECX, EBX </span><span class="f_CodeExample" style="color: #000080;">// ECX wieder auf alte Anzahl setzen und </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JMP @@loop </span><span class="f_CodeExample" style="color: #000080;">// Start bei 'loop' </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">@@fail:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">XOR</span><span class="f_CodeExample" style="color: #000000;"> EAX,EAX </span><span class="f_CodeExample" style="color: #000080;">// EAX auf 0 setzen </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JMP @@exit @@stringEmpty:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">XOR</span><span class="f_CodeExample" style="color: #000000;"> EAX,EAX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JMP @@noWork @@found:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV EAX, EBX </span><span class="f_CodeExample" style="color: #000080;">// in EBX steht nun der aktuelle Index </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> INC EAX </span><span class="f_CodeExample" style="color: #000080;">// um 1 erhohen, um die Position des 1. Zeichens zu </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// bekommen </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;"> POP EDI</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> POP ESI</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> POP EBX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">@@noWork: CLD; </span><span class="f_CodeExample" style="color: #000080;">// DirectionFlag loschen </span></p> <p 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;">подстроки FindS в строку SrcS, т.е. первое с конца.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Если возвращает ноль, то подстрока не найдена.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Можно использовать в текстовых редакторах</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">при поиске текста вверх от курсора ввода.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Зависимости: System</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: Fenik, chook_nu @ uraltc.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;"> PosR2L(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> FindS, SrcS: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{Функция возвращает начало последнего вхождения</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">подстроки FindS в строку SrcS, т.е. первое с конца.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Если возвращает ноль, то подстрока не найдена.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Можно использовать в текстовых редакторах</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">при поиске текста вверх от курсора ввода.}</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> InvertS(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> S: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{Инверсия строки S}</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: 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;"> Len := Length(S);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SetLength(Result, Len);</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;"> Len </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result[i] := S[Len - 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"> </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;">ps: 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: #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;"> функции Pos(Substr, S: string): string;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> Если подстрока Substr есть в строке 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"><span class="f_CodeExample" style="color: #000000;">ps := Pos(InvertS(FindS), InvertS(SrcS));</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: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> ps &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;"> Result := Length(SrcS) - Length(FindS) - ps + </span><span class="f_CodeExample" style="color: #800000;">2</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: #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: #000000;">Пример использования: </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">p := PosR2L(</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: #000080;">// p:=18;</span></p> </td> </tr> </tbody> </table> </div> <p style="text-align: right;"><span style="font-family: 'Arial Unicode MS', 'Lucida Sans Unicode', 'Arial'; color: #ff6600; font-size: 8pt; font-weight: bold;"> </span></p> <hr size="1" noshade="noshade" style="color: #000000;" /> <p> </p> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Letzte Position von SubStr in S ermitteln. </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Returns the last occurence of SubStr in S. </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;"> LastPos(SubStr, S: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Found, Len, Pos: 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;"> Pos := Length(S);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Len := Length(SubStr);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Found := </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;"> (Pos &gt; </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (Found = </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: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> Copy(S, Pos, Len) = SubStr </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;"> Found := Pos;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Dec(Pos);</span></p> <p class="p_CodeExample"><span 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;"> LastPos := Found;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> </td> </tr> </tbody> </table> </div> <p> </p> <p 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;">// by Manuel Wiersch </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;"> LastPos(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> SubStr: AnsiString; </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> S: AnsiString): LongInt;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">asm</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> TEST EAX,EAX </span><span class="f_CodeExample" style="color: #000080;">// EAX auf 0 prufen (d.h. SubStr = nil) </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JE @@noWork </span><span class="f_CodeExample" style="color: #000080;">// wenn EAX = 0 dann Sprung zu noWork </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> TEST EDX,EDX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Test ob S = nil </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JE @@stringEmpty </span><span class="f_CodeExample" style="color: #000080;">// bei Erfolg -&gt; Sprung zum Label 'stringEmpty' </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PUSH EBX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PUSH ESI</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PUSH EDI </span><span class="f_CodeExample" style="color: #000080;">// Register auf dem Stack sichern Grund: OH </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// OH: "In einer asm-Anweisung mu? der Inhalt </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// der Register EDI, ESI, ESP, EBP und EBX </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// erhalten bleiben (dh. vorher auf dem Stack </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// speichern) MOV ESI, EAX </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// ESI = Sourceindex -&gt; Adresse vom SubStr </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV EDI, EDX </span><span class="f_CodeExample" style="color: #000080;">// EDI = Destinationindex -&gt; Adresse von S </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV ECX,[EDI-</span><span class="f_CodeExample" style="color: #800000;">4</span><span class="f_CodeExample" style="color: #000000;">] </span><span class="f_CodeExample" style="color: #000080;">// Lange von S ins Zahlregister </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV EDX,[ESI-</span><span class="f_CodeExample" style="color: #800000;">4</span><span class="f_CodeExample" style="color: #000000;">] </span><span class="f_CodeExample" style="color: #000080;">// Lange des SubStr in EDX </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> DEC EDX </span><span class="f_CodeExample" style="color: #000080;">// Length(SubStr) - 1 </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JS @@fail</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Vorzeichenbedingter Sprung (JumpIfSign) </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// d.h. (EDX &lt; 0) -&gt; Sprung zu 'fail' </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> STD; </span><span class="f_CodeExample" style="color: #000080;">// SetDirectionFlag -&gt; Stringroutinen von hinten </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// abarbeiten </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> ADD ESI, EDX </span><span class="f_CodeExample" style="color: #000080;">// Pointer auf das letzte Zeichen vom SubStr </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> ADD EDI, ECX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> DEC EDI </span><span class="f_CodeExample" style="color: #000080;">// Pointer auf das letzte Zeichen von S </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV AL, [ESI] </span><span class="f_CodeExample" style="color: #000080;">// letztes Zeichen des SubStr in AL laden </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> DEC ESI </span><span class="f_CodeExample" style="color: #000080;">// Pointer auf das vorletzte Zeichen setzen. </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SUB ECX, EDX </span><span class="f_CodeExample" style="color: #000080;">// Anzahl der Stringdurchlaufe </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// = Length(s) - Length(substr) + 1 </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JLE @@fail </span><span class="f_CodeExample" style="color: #000080;">// Sprung zu 'fail' wenn ECX &lt;= 0 </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">@@loop:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> REPNE SCASB </span><span class="f_CodeExample" style="color: #000080;">// Wdh. solange ungleich (repeat while not equal) </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// scan string for byte </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JNE @@fail</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV EBX,ECX </span><span class="f_CodeExample" style="color: #000080;">{ Zahleregister, ESI und EDI sichern, da nun der </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> Vergleich durchgefuhrt wird ob die nachfolgenden </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> Zeichen von SubStr in S vorhanden sind }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PUSH ESI</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PUSH EDI</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV ECX,EDX </span><span class="f_CodeExample" style="color: #000080;">// Lange des SubStrings in ECX </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> REPE CMPSB </span><span class="f_CodeExample" style="color: #000080;">// Solange (ECX &gt; 0) und (Compare string fo byte) </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// dh. solange S[i] = SubStr[i] </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> POP EDI</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> POP ESI </span><span class="f_CodeExample" style="color: #000080;">// alten Source- und Destinationpointer vom Stack holen </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JE @@found </span><span class="f_CodeExample" style="color: #000080;">// Und schon haben wir den Index da ECX = 0 </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// dh. alle Zeichen wurden gefunden </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV ECX, EBX </span><span class="f_CodeExample" style="color: #000080;">// ECX wieder auf alte Anzahl setzen und </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JMP @@loop </span><span class="f_CodeExample" style="color: #000080;">// Start bei 'loop' </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">@@fail:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">XOR</span><span class="f_CodeExample" style="color: #000000;"> EAX,EAX </span><span class="f_CodeExample" style="color: #000080;">// EAX auf 0 setzen </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JMP @@exit @@stringEmpty:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">XOR</span><span class="f_CodeExample" style="color: #000000;"> EAX,EAX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> JMP @@noWork @@found:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MOV EAX, EBX </span><span class="f_CodeExample" style="color: #000080;">// in EBX steht nun der aktuelle Index </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> INC EAX </span><span class="f_CodeExample" style="color: #000080;">// um 1 erhohen, um die Position des 1. Zeichens zu </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// bekommen </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;"> POP EDI</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> POP ESI</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> POP EBX</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">@@noWork: CLD; </span><span class="f_CodeExample" style="color: #000080;">// DirectionFlag loschen </span></p> <p 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-21T15:01:06+07:00 2013-08-21T15:01:06+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/razbor-stroki-vydelenie-elementov-poisk/neskolko-rasshirennykh-funktsij-po-opredeleniyu-pozitsii.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;">// Get the Position of a string, starting at the end </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Ruckwartiges Vorkommen einer Zeichenkette innerhalb eines strings, Position von hinten </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;"> LastPos(SearchStr, Str: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> i: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> TempStr: </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 := Pos(SearchStr, 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;"> Result = </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;"> 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(Str) &gt; </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (Length(SearchStr) &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;">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;">for</span><span class="f_CodeExample" style="color: #000000;"> i := Length(Str) + Length(SearchStr) - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">downto</span><span class="f_CodeExample" style="color: #000000;"> Result </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;"> TempStr := Copy(Str, i, 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;"> Pos(SearchStr, TempStr) &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;"> Result := 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"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Search for the next occurence of a string from a certain Position </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Nachstes Vorkommen einer Zeichenkette ab einer frei definierbaren Stelle im string </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;"> NextPos(SearchStr, Str: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; Position: Integer): 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;"> Delete(Str, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, Position - </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 := Pos(SearchStr, upperCase(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;"> Result = </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;"> 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(Str) &gt; </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (Length(SearchStr) &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;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := Result + Position + </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"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Get the number of characters from a certain Position to the string to be searched </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Anzahl der Zeichen von einer definierbaren Position zur gesuchten Zeichenkette </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;"> NextPosRel(SearchStr, Str: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; Position: Integer): 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;"> Delete(Str, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, Position - </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 := Pos(SearchStr, UpperCase(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: #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;">// simple replacement for strings </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// einfaches Ersetzen von Zeichenketten </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;"> ReplaceStr(Str, SearchStr, ReplaceStr: </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;">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;"> Pos(SearchStr, Str) &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;"> Insert(ReplaceStr, Str, Pos(SearchStr, Str));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Delete(Str, Pos(SearchStr, Str), Length(SearchStr));</span></p> <p class="p_CodeExample"><span 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 := Str;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <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;">// Get the Position of a string, starting at the end </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Ruckwartiges Vorkommen einer Zeichenkette innerhalb eines strings, Position von hinten </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;"> LastPos(SearchStr, Str: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> i: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> TempStr: </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 := Pos(SearchStr, 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;"> Result = </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;"> 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(Str) &gt; </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (Length(SearchStr) &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;">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;">for</span><span class="f_CodeExample" style="color: #000000;"> i := Length(Str) + Length(SearchStr) - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">downto</span><span class="f_CodeExample" style="color: #000000;"> Result </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;"> TempStr := Copy(Str, i, 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;"> Pos(SearchStr, TempStr) &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;"> Result := 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"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Search for the next occurence of a string from a certain Position </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Nachstes Vorkommen einer Zeichenkette ab einer frei definierbaren Stelle im string </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;"> NextPos(SearchStr, Str: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; Position: Integer): 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;"> Delete(Str, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, Position - </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 := Pos(SearchStr, upperCase(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;"> Result = </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;"> 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(Str) &gt; </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (Length(SearchStr) &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;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := Result + Position + </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"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Get the number of characters from a certain Position to the string to be searched </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Anzahl der Zeichen von einer definierbaren Position zur gesuchten Zeichenkette </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;"> NextPosRel(SearchStr, Str: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; Position: Integer): 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;"> Delete(Str, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, Position - </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 := Pos(SearchStr, UpperCase(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: #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;">// simple replacement for strings </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// einfaches Ersetzen von Zeichenketten </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;"> ReplaceStr(Str, SearchStr, ReplaceStr: </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;">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;"> Pos(SearchStr, Str) &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;"> Insert(ReplaceStr, Str, Pos(SearchStr, Str));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Delete(Str, Pos(SearchStr, Str), Length(SearchStr));</span></p> <p class="p_CodeExample"><span 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 := Str;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p> </p> Парсинг строк 2013-08-21T14:36:29+07:00 2013-08-21T14:36:29+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/razbor-stroki-vydelenie-elementov-poisk/parsing-strok.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><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">unit</span><span style="font-family: 'Courier New'; font-size: 10pt;"> splitfns;</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">interface</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">uses</span><span style="font-family: 'Courier New'; font-size: 10pt;"> Classes, Sysutils;</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">function</span><span style="font-family: 'Courier New'; font-size: 10pt;"> GetNextToken(</span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">Const</span><span style="font-family: 'Courier New'; font-size: 10pt;"> S: </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">string</span><span style="font-family: 'Courier New'; font-size: 10pt;">; Separator: TSysCharSet; </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">var</span><span style="font-family: 'Courier New'; font-size: 10pt;"> StartPos: integer): </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">String</span><span style="font-family: 'Courier New'; font-size: 10pt;">;</span></p> <p> </p> <p><span style="font-family: 'Courier New'; color: #000080; font-size: 10pt;">{Returns the next token (substring) from string S, starting at index StartPos and ending 1 character</span></p> <p><span style="font-family: 'Courier New'; color: #000080; font-size: 10pt;">before the next occurrence of Separator (or at the end of S, whichever comes first).}</span></p> <p> </p> <p><span style="font-family: 'Courier New'; color: #000080; font-size: 10pt;">{StartPos returns the starting position for the next token, 1 more than the position in S of</span></p> <p><span style="font-family: 'Courier New'; color: #000080; font-size: 10pt;">the end of this token}</span></p> <p> </p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">procedure</span><span style="font-family: 'Courier New'; font-size: 10pt;"> Split(</span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">const</span><span style="font-family: 'Courier New'; font-size: 10pt;"> S: </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">String</span><span style="font-family: 'Courier New'; font-size: 10pt;">; Separator: TSysCharSet; MyStringList: TStringList);</span></p> <p> </p> <p><span style="font-family: 'Courier New'; color: #000080; font-size: 10pt;">{Splits a string containing designated separators into tokens and adds them to MyStringList NOTE: MyStringList must be Created before being passed to this procedure and Freed after use}</span></p> <p> </p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">function</span><span style="font-family: 'Courier New'; font-size: 10pt;"> AddToken (</span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">const</span><span style="font-family: 'Courier New'; font-size: 10pt;"> aToken, S: </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">String</span><span style="font-family: 'Courier New'; font-size: 10pt;">; Separator: Char; StringLimit: integer): </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">String</span><span style="font-family: 'Courier New'; font-size: 10pt;">;</span></p> <p> </p> <p><span style="font-family: 'Courier New'; color: #000080; font-size: 10pt;">{Used to join 2 strings with a separator character between them and can be used in a Join function}</span></p> <p><span style="font-family: 'Courier New'; color: #000080; font-size: 10pt;">{The StringLimit parameter prevents the length of the Result String from exceeding a preset maximum}</span></p> <p> </p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">implementation</span></p> <p> </p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">function</span><span style="font-family: 'Courier New'; font-size: 10pt;"> GetNextToken(</span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">Const</span><span style="font-family: 'Courier New'; font-size: 10pt;"> S: </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">string</span><span style="font-family: 'Courier New'; font-size: 10pt;">; Separator: TSysCharSet; </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">var</span><span style="font-family: 'Courier New'; font-size: 10pt;"> StartPos: integer): </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">String</span><span style="font-family: 'Courier New'; font-size: 10pt;">;</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">var</span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">Index</span><span style="font-family: 'Courier New'; font-size: 10pt;">: integer;</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">begin</span></p> <p><span style="font-family: 'Courier New'; font-size: 10pt;"> Result := </span><span style="font-family: 'Courier New'; color: #ff0000; font-size: 10pt;">''</span><span style="font-family: 'Courier New'; font-size: 10pt;">;</span></p> <p><span style="font-family: 'Courier New'; color: #000080; font-size: 10pt;">{Step over repeated separators}</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">While</span><span style="font-family: 'Courier New'; font-size: 10pt;"> (S[StartPos] </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">in</span><span style="font-family: 'Courier New'; font-size: 10pt;"> Separator) </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">and</span><span style="font-family: 'Courier New'; font-size: 10pt;"> (StartPos &lt;= length(S)) </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">do</span><span style="font-family: 'Courier New'; font-size: 10pt;"> StartPos := StartPos + </span><span style="font-family: 'Courier New'; color: #800000; font-size: 10pt;">1</span><span style="font-family: 'Courier New'; font-size: 10pt;">;</span></p> <p> </p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">if</span><span style="font-family: 'Courier New'; font-size: 10pt;"> StartPos &gt; length(S) </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">then</span><span style="font-family: 'Courier New'; font-size: 10pt;"> Exit;</span></p> <p> </p> <p><span style="font-family: 'Courier New'; color: #000080; font-size: 10pt;">{Set Index to StartPos}</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">Index</span><span style="font-family: 'Courier New'; font-size: 10pt;"> := StartPos;</span></p> <p> </p> <p><span style="font-family: 'Courier New'; color: #000080; font-size: 10pt;">{Find the next Separator}</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">While</span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">not</span><span style="font-family: 'Courier New'; font-size: 10pt;"> (S[</span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">Index</span><span style="font-family: 'Courier New'; font-size: 10pt;">] </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">in</span><span style="font-family: 'Courier New'; font-size: 10pt;"> Separator) </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">and</span><span style="font-family: 'Courier New'; font-size: 10pt;"> (</span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">Index</span><span style="font-family: 'Courier New'; font-size: 10pt;"> &lt;= length(S))</span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">do</span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">Index</span><span style="font-family: 'Courier New'; font-size: 10pt;"> := </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">Index</span><span style="font-family: 'Courier New'; font-size: 10pt;"> + </span><span style="font-family: 'Courier New'; color: #800000; font-size: 10pt;">1</span><span style="font-family: 'Courier New'; font-size: 10pt;">;</span></p> <p> </p> <p><span style="font-family: 'Courier New'; color: #000080; font-size: 10pt;">{Copy the token to the Result}</span></p> <p><span style="font-family: 'Courier New'; font-size: 10pt;"> Result := Copy(S, StartPos, </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">Index</span><span style="font-family: 'Courier New'; font-size: 10pt;"> - StartPos);</span></p> <p> </p> <p><span style="font-family: 'Courier New'; color: #000080; font-size: 10pt;">{SetStartPos to next Character after the Separator}</span></p> <p><span style="font-family: 'Courier New'; font-size: 10pt;"> StartPos := </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">Index</span><span style="font-family: 'Courier New'; font-size: 10pt;"> + </span><span style="font-family: 'Courier New'; color: #800000; font-size: 10pt;">1</span><span style="font-family: 'Courier New'; font-size: 10pt;">;</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">end</span><span style="font-family: 'Courier New'; font-size: 10pt;">;</span></p> <p> </p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">procedure</span><span style="font-family: 'Courier New'; font-size: 10pt;"> Split(</span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">const</span><span style="font-family: 'Courier New'; font-size: 10pt;"> S: </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">String</span><span style="font-family: 'Courier New'; font-size: 10pt;">; Separator: TSysCharSet; MyStringList: TStringList);</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">var</span><span style="font-family: 'Courier New'; font-size: 10pt;"> Start: integer;</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">begin</span></p> <p><span style="font-family: 'Courier New'; font-size: 10pt;"> Start := </span><span style="font-family: 'Courier New'; color: #800000; font-size: 10pt;">1</span><span style="font-family: 'Courier New'; font-size: 10pt;">;</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">While</span><span style="font-family: 'Courier New'; font-size: 10pt;"> Start &lt;= Length(S) </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">do</span><span style="font-family: 'Courier New'; font-size: 10pt;"> MyStringList.Add(GetNextToken(S, Separator, Start));</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">end</span><span style="font-family: 'Courier New'; font-size: 10pt;">;</span></p> <p> </p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">function</span><span style="font-family: 'Courier New'; font-size: 10pt;"> AddToken (</span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">const</span><span style="font-family: 'Courier New'; font-size: 10pt;"> aToken, S: </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">String</span><span style="font-family: 'Courier New'; font-size: 10pt;">; Separator: Char; StringLimit: integer): </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">String</span><span style="font-family: 'Courier New'; font-size: 10pt;">;</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">begin</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">if</span><span style="font-family: 'Courier New'; font-size: 10pt;"> Length(aToken) + Length(S) &lt; StringLimit </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">then</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">begin</span></p> <p><span style="font-family: 'Courier New'; color: #000080; font-size: 10pt;">{Add a separator unless the Result string is empty}</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">if</span><span style="font-family: 'Courier New'; font-size: 10pt;"> S = </span><span style="font-family: 'Courier New'; color: #ff0000; font-size: 10pt;">''</span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">then</span><span style="font-family: 'Courier New'; font-size: 10pt;"> Result := </span><span style="font-family: 'Courier New'; color: #ff0000; font-size: 10pt;">''</span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">else</span><span style="font-family: 'Courier New'; font-size: 10pt;"> Result := S + Separator;</span></p> <p> </p> <p><span style="font-family: 'Courier New'; color: #000080; font-size: 10pt;">{Add the token}</span></p> <p><span style="font-family: 'Courier New'; font-size: 10pt;"> Result := Result + aToken;</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">end</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">else</span></p> <p><span style="font-family: 'Courier New'; color: #000080; font-size: 10pt;">{if the StringLimit would be</span></p> <p><span style="font-family: 'Courier New'; color: #000080; font-size: 10pt;"> exceeded, raise an exception}</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">Raise</span><span style="font-family: 'Courier New'; font-size: 10pt;"> Exception.Create(</span><span style="font-family: 'Courier New'; color: #ff0000; font-size: 10pt;">'Cannot add token'</span><span style="font-family: 'Courier New'; font-size: 10pt;">);</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">end</span><span style="font-family: 'Courier New'; font-size: 10pt;">;</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">end</span><span style="font-family: 'Courier New'; font-size: 10pt;">. </span></p> <p> </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: #000000;">...</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">data:= TStringList.Create;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">splited:=TStringList.Create;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">data.LoadFromFile(s);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Split(data.Text,[</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;">#10</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">#13</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #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;">'}'</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><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;">'"'</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;">#0</span><span class="f_CodeExample" style="color: #000000;">],splited);</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;"> splited.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: #008000; font-weight: bold;">not</span><span class="f_CodeExample" style="color: #000000;"> words.Find(splited.Strings,adr) </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;"> words.Add(splited.Strings[i]);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> application.processmessages;[i]</span><span class="f_CodeExample" style="color: #000080;">//make program to respond to user </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> //commands while processing in case of very long string.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">...</span></p> </td> </tr> </tbody> </table> </div> <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><span style="font-family: 'Times New Roman'; color: #ff0000; font-size: 10pt; font-weight: bold;">Автор:</span><span style="font-family: 'Times New Roman'; color: #0000ff; font-size: 10pt; font-weight: bold; text-decoration: underline;">Song</span></p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Взято из </span><span style="color: #0000ff; font-size: 10pt; font-weight: bold; text-decoration: underline;">https://forum.sources</span></p> <p> </p> <p> </p> <hr size="1" noshade="noshade" style="color: #000000;" /> <p> </p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000;">Некоторое время назад одна любезная душа прислала мне этот модуль. Я нашел его весьма полезным, но применять его вам надлежит с некоторой долей осторожности, ибо тэг %s иногда приводит к исключительным ситуациям.</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;">unit</span><span class="f_CodeExample" style="color: #000000;"> Scanf;</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"><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;">type</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">EFormatError = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">class</span><span class="f_CodeExample" style="color: #000000;">(ExCeption);</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;"> Sscanf(</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;">const</span><span class="f_CodeExample" style="color: #000000;"> fmt: </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;">const</span><span class="f_CodeExample" style="color: #000000;"> Pointers: </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: #000000;"> Pointer): Integer;</span></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: #000080;">{ Sscanf выполняет синтаксический разбор входной строки. Параметры...</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"><span class="f_CodeExample" style="color: #000080;">fmt - 'C' scanf-форматоподобная строка для управления разбором</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">%d - преобразование в Long Integer</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">%f - преобразование в Extended Float</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">%s - преобразование в строку (ограничено пробелами)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">другой символ - приращение позиции 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;">Pointers - массив указателей на присваиваемые переменные</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">результат - количество действительно присвоенных переменных</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Например, ...</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Sscanf('Name. Bill Time. 7:32.77 Age. 8',</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">'. %s . %d:%f . %d', [@Name, @hrs, @min, @age]);</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;">Name = Bill hrs = 7 min = 32.77 age = 8 }</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;"> Sscanf(</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;">const</span><span class="f_CodeExample" style="color: #000000;"> fmt: </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;">const</span><span class="f_CodeExample" style="color: #000000;"> Pointers: </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: #000000;"> Pointer): Integer;</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;">i, j, n, m: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">s1: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">L: LongInt;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">X: Extended;</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;"> GetInt: 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;"> s1 := </span><span class="f_CodeExample" style="color: #ff0000;">''</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> (s[n] = </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;"> (Length(s) &gt; n) </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(n);</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[n] </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;">'0'</span><span class="f_CodeExample" style="color: #000000;">..</span><span class="f_CodeExample" style="color: #ff0000;">'9'</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">'+'</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;">and</span><span class="f_CodeExample" style="color: #000000;"> (Length(s) &gt;= n) </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;"> s1 := s1 + s[n];</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><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := Length(s1);</span></p> <p class="p_CodeExample"><span 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;"> GetFloat: 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;"> s1 := </span><span class="f_CodeExample" style="color: #ff0000;">''</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> (s[n] = </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;"> (Length(s) &gt; n) </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(n);</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[n] </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;">'0'</span><span class="f_CodeExample" style="color: #000000;">..</span><span class="f_CodeExample" style="color: #ff0000;">'9'</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">'+'</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;">'e'</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">])</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (Length(s) &gt;= n) </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;"> s1 := s1 + s[n];</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><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := Length(s1);</span></p> <p class="p_CodeExample"><span 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;"> GetString: 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;"> s1 := </span><span class="f_CodeExample" style="color: #ff0000;">''</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> (s[n] = </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;"> (Length(s) &gt; n) </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(n);</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[n] &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;"> (Length(s) &gt;= n) </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;"> s1 := s1 + s[n];</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><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := Length(s1);</span></p> <p class="p_CodeExample"><span 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;"> ScanStr(c: 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: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> (s[n] &lt;&gt; c) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (Length(s) &gt; n) </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(n);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(n);</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;"> (n &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: #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"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> GetFmt: 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;">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;"> (TRUE) </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;"> (fmt[m] = </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;"> (Length(fmt) &gt; m) </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(m);</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;"> (m &gt;= Length(fmt)) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> break;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> (fmt[m] = </span><span class="f_CodeExample" style="color: #ff0000;">'%'</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(m);</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;"> fmt[m] </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;">'d'</span><span class="f_CodeExample" style="color: #000000;">: Result := vtInteger;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #ff0000;">'f'</span><span class="f_CodeExample" style="color: #000000;">: Result := vtExtended;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #ff0000;">'s'</span><span class="f_CodeExample" style="color: #000000;">: Result := vtString;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(m);</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;"> (ScanStr(fmt[m]) = False) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> break;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(m);</span></p> <p class="p_CodeExample"><span 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;">begin</span></p> <p class="p_CodeExample"> </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"><span class="f_CodeExample" style="color: #000000;">m := </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 := </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: #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;"> High(Pointers) </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 := GetFmt;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">case</span><span class="f_CodeExample" style="color: #000000;"> j </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;"> vtInteger:</span></p> <p class="p_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;"> GetInt &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;"> L := StrToInt(s1);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Move(L, Pointers[i]^, SizeOf(LongInt));</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: #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"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> vtExtended:</span></p> <p class="p_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;"> GetFloat &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;"> X := StrToFloat(s1);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Move(X, Pointers[i]^, SizeOf(Extended));</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: #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"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> vtString:</span></p> <p class="p_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;"> GetString &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;"> Move(s1, Pointers[i]^, Length(s1) + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(Result);</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"><span 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;">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"><span 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;">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> </p> <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;">// Parse a string, for example: </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// How do I get the "B" from "A|B|C|D|E|F"? </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;"> Parse(Char, S: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; Count: Integer): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> I: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> T: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #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[Length(S)] &lt;&gt; Char </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 + Char;</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;"> Count </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> T := Copy(S, </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">, Pos(Char, S) - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> S := Copy(S, Pos(Char, S) + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, Length(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: #000000;"> Result := T;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TForm1.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;"> ShowMessage(Parse(</span><span class="f_CodeExample" style="color: #ff0000;">'|'</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">'A|B|C|D|E|F'</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </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: </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Parse([Character, for example "|"], [The string], </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">[The number, the "B" is the 2nd part of the string]); </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">This function is handy to use when sending data over the internet, </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">for example a chat program: Name|Text. Note: Be sure there's no "Char" in the string! </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Use a unused character like "|" or "?". </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><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> <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><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">unit</span><span style="font-family: 'Courier New'; font-size: 10pt;"> splitfns;</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">interface</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">uses</span><span style="font-family: 'Courier New'; font-size: 10pt;"> Classes, Sysutils;</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">function</span><span style="font-family: 'Courier New'; font-size: 10pt;"> GetNextToken(</span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">Const</span><span style="font-family: 'Courier New'; font-size: 10pt;"> S: </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">string</span><span style="font-family: 'Courier New'; font-size: 10pt;">; Separator: TSysCharSet; </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">var</span><span style="font-family: 'Courier New'; font-size: 10pt;"> StartPos: integer): </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">String</span><span style="font-family: 'Courier New'; font-size: 10pt;">;</span></p> <p> </p> <p><span style="font-family: 'Courier New'; color: #000080; font-size: 10pt;">{Returns the next token (substring) from string S, starting at index StartPos and ending 1 character</span></p> <p><span style="font-family: 'Courier New'; color: #000080; font-size: 10pt;">before the next occurrence of Separator (or at the end of S, whichever comes first).}</span></p> <p> </p> <p><span style="font-family: 'Courier New'; color: #000080; font-size: 10pt;">{StartPos returns the starting position for the next token, 1 more than the position in S of</span></p> <p><span style="font-family: 'Courier New'; color: #000080; font-size: 10pt;">the end of this token}</span></p> <p> </p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">procedure</span><span style="font-family: 'Courier New'; font-size: 10pt;"> Split(</span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">const</span><span style="font-family: 'Courier New'; font-size: 10pt;"> S: </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">String</span><span style="font-family: 'Courier New'; font-size: 10pt;">; Separator: TSysCharSet; MyStringList: TStringList);</span></p> <p> </p> <p><span style="font-family: 'Courier New'; color: #000080; font-size: 10pt;">{Splits a string containing designated separators into tokens and adds them to MyStringList NOTE: MyStringList must be Created before being passed to this procedure and Freed after use}</span></p> <p> </p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">function</span><span style="font-family: 'Courier New'; font-size: 10pt;"> AddToken (</span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">const</span><span style="font-family: 'Courier New'; font-size: 10pt;"> aToken, S: </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">String</span><span style="font-family: 'Courier New'; font-size: 10pt;">; Separator: Char; StringLimit: integer): </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">String</span><span style="font-family: 'Courier New'; font-size: 10pt;">;</span></p> <p> </p> <p><span style="font-family: 'Courier New'; color: #000080; font-size: 10pt;">{Used to join 2 strings with a separator character between them and can be used in a Join function}</span></p> <p><span style="font-family: 'Courier New'; color: #000080; font-size: 10pt;">{The StringLimit parameter prevents the length of the Result String from exceeding a preset maximum}</span></p> <p> </p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">implementation</span></p> <p> </p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">function</span><span style="font-family: 'Courier New'; font-size: 10pt;"> GetNextToken(</span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">Const</span><span style="font-family: 'Courier New'; font-size: 10pt;"> S: </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">string</span><span style="font-family: 'Courier New'; font-size: 10pt;">; Separator: TSysCharSet; </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">var</span><span style="font-family: 'Courier New'; font-size: 10pt;"> StartPos: integer): </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">String</span><span style="font-family: 'Courier New'; font-size: 10pt;">;</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">var</span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">Index</span><span style="font-family: 'Courier New'; font-size: 10pt;">: integer;</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">begin</span></p> <p><span style="font-family: 'Courier New'; font-size: 10pt;"> Result := </span><span style="font-family: 'Courier New'; color: #ff0000; font-size: 10pt;">''</span><span style="font-family: 'Courier New'; font-size: 10pt;">;</span></p> <p><span style="font-family: 'Courier New'; color: #000080; font-size: 10pt;">{Step over repeated separators}</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">While</span><span style="font-family: 'Courier New'; font-size: 10pt;"> (S[StartPos] </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">in</span><span style="font-family: 'Courier New'; font-size: 10pt;"> Separator) </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">and</span><span style="font-family: 'Courier New'; font-size: 10pt;"> (StartPos &lt;= length(S)) </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">do</span><span style="font-family: 'Courier New'; font-size: 10pt;"> StartPos := StartPos + </span><span style="font-family: 'Courier New'; color: #800000; font-size: 10pt;">1</span><span style="font-family: 'Courier New'; font-size: 10pt;">;</span></p> <p> </p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">if</span><span style="font-family: 'Courier New'; font-size: 10pt;"> StartPos &gt; length(S) </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">then</span><span style="font-family: 'Courier New'; font-size: 10pt;"> Exit;</span></p> <p> </p> <p><span style="font-family: 'Courier New'; color: #000080; font-size: 10pt;">{Set Index to StartPos}</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">Index</span><span style="font-family: 'Courier New'; font-size: 10pt;"> := StartPos;</span></p> <p> </p> <p><span style="font-family: 'Courier New'; color: #000080; font-size: 10pt;">{Find the next Separator}</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">While</span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">not</span><span style="font-family: 'Courier New'; font-size: 10pt;"> (S[</span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">Index</span><span style="font-family: 'Courier New'; font-size: 10pt;">] </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">in</span><span style="font-family: 'Courier New'; font-size: 10pt;"> Separator) </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">and</span><span style="font-family: 'Courier New'; font-size: 10pt;"> (</span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">Index</span><span style="font-family: 'Courier New'; font-size: 10pt;"> &lt;= length(S))</span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">do</span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">Index</span><span style="font-family: 'Courier New'; font-size: 10pt;"> := </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">Index</span><span style="font-family: 'Courier New'; font-size: 10pt;"> + </span><span style="font-family: 'Courier New'; color: #800000; font-size: 10pt;">1</span><span style="font-family: 'Courier New'; font-size: 10pt;">;</span></p> <p> </p> <p><span style="font-family: 'Courier New'; color: #000080; font-size: 10pt;">{Copy the token to the Result}</span></p> <p><span style="font-family: 'Courier New'; font-size: 10pt;"> Result := Copy(S, StartPos, </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">Index</span><span style="font-family: 'Courier New'; font-size: 10pt;"> - StartPos);</span></p> <p> </p> <p><span style="font-family: 'Courier New'; color: #000080; font-size: 10pt;">{SetStartPos to next Character after the Separator}</span></p> <p><span style="font-family: 'Courier New'; font-size: 10pt;"> StartPos := </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">Index</span><span style="font-family: 'Courier New'; font-size: 10pt;"> + </span><span style="font-family: 'Courier New'; color: #800000; font-size: 10pt;">1</span><span style="font-family: 'Courier New'; font-size: 10pt;">;</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">end</span><span style="font-family: 'Courier New'; font-size: 10pt;">;</span></p> <p> </p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">procedure</span><span style="font-family: 'Courier New'; font-size: 10pt;"> Split(</span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">const</span><span style="font-family: 'Courier New'; font-size: 10pt;"> S: </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">String</span><span style="font-family: 'Courier New'; font-size: 10pt;">; Separator: TSysCharSet; MyStringList: TStringList);</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">var</span><span style="font-family: 'Courier New'; font-size: 10pt;"> Start: integer;</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">begin</span></p> <p><span style="font-family: 'Courier New'; font-size: 10pt;"> Start := </span><span style="font-family: 'Courier New'; color: #800000; font-size: 10pt;">1</span><span style="font-family: 'Courier New'; font-size: 10pt;">;</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">While</span><span style="font-family: 'Courier New'; font-size: 10pt;"> Start &lt;= Length(S) </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">do</span><span style="font-family: 'Courier New'; font-size: 10pt;"> MyStringList.Add(GetNextToken(S, Separator, Start));</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">end</span><span style="font-family: 'Courier New'; font-size: 10pt;">;</span></p> <p> </p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">function</span><span style="font-family: 'Courier New'; font-size: 10pt;"> AddToken (</span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">const</span><span style="font-family: 'Courier New'; font-size: 10pt;"> aToken, S: </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">String</span><span style="font-family: 'Courier New'; font-size: 10pt;">; Separator: Char; StringLimit: integer): </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">String</span><span style="font-family: 'Courier New'; font-size: 10pt;">;</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">begin</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">if</span><span style="font-family: 'Courier New'; font-size: 10pt;"> Length(aToken) + Length(S) &lt; StringLimit </span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">then</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">begin</span></p> <p><span style="font-family: 'Courier New'; color: #000080; font-size: 10pt;">{Add a separator unless the Result string is empty}</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">if</span><span style="font-family: 'Courier New'; font-size: 10pt;"> S = </span><span style="font-family: 'Courier New'; color: #ff0000; font-size: 10pt;">''</span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">then</span><span style="font-family: 'Courier New'; font-size: 10pt;"> Result := </span><span style="font-family: 'Courier New'; color: #ff0000; font-size: 10pt;">''</span><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">else</span><span style="font-family: 'Courier New'; font-size: 10pt;"> Result := S + Separator;</span></p> <p> </p> <p><span style="font-family: 'Courier New'; color: #000080; font-size: 10pt;">{Add the token}</span></p> <p><span style="font-family: 'Courier New'; font-size: 10pt;"> Result := Result + aToken;</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">end</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">else</span></p> <p><span style="font-family: 'Courier New'; color: #000080; font-size: 10pt;">{if the StringLimit would be</span></p> <p><span style="font-family: 'Courier New'; color: #000080; font-size: 10pt;"> exceeded, raise an exception}</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">Raise</span><span style="font-family: 'Courier New'; font-size: 10pt;"> Exception.Create(</span><span style="font-family: 'Courier New'; color: #ff0000; font-size: 10pt;">'Cannot add token'</span><span style="font-family: 'Courier New'; font-size: 10pt;">);</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">end</span><span style="font-family: 'Courier New'; font-size: 10pt;">;</span></p> <p><span style="font-family: 'Courier New'; color: #008000; font-size: 10pt; font-weight: bold;">end</span><span style="font-family: 'Courier New'; font-size: 10pt;">. </span></p> <p> </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: #000000;">...</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">data:= TStringList.Create;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">splited:=TStringList.Create;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">data.LoadFromFile(s);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Split(data.Text,[</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;">#10</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">#13</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #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;">'}'</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><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;">'"'</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;">#0</span><span class="f_CodeExample" style="color: #000000;">],splited);</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;"> splited.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: #008000; font-weight: bold;">not</span><span class="f_CodeExample" style="color: #000000;"> words.Find(splited.Strings,adr) </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;"> words.Add(splited.Strings[i]);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> application.processmessages;[i]</span><span class="f_CodeExample" style="color: #000080;">//make program to respond to user </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> //commands while processing in case of very long string.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">...</span></p> </td> </tr> </tbody> </table> </div> <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><span style="font-family: 'Times New Roman'; color: #ff0000; font-size: 10pt; font-weight: bold;">Автор:</span><span style="font-family: 'Times New Roman'; color: #0000ff; font-size: 10pt; font-weight: bold; text-decoration: underline;">Song</span></p> <p><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Взято из </span><span style="color: #0000ff; font-size: 10pt; font-weight: bold; text-decoration: underline;">https://forum.sources</span></p> <p> </p> <p> </p> <hr size="1" noshade="noshade" style="color: #000000;" /> <p> </p> <p> </p> <p><span style="font-family: 'Times New Roman'; color: #000000;">Некоторое время назад одна любезная душа прислала мне этот модуль. Я нашел его весьма полезным, но применять его вам надлежит с некоторой долей осторожности, ибо тэг %s иногда приводит к исключительным ситуациям.</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;">unit</span><span class="f_CodeExample" style="color: #000000;"> Scanf;</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"><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;">type</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">EFormatError = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">class</span><span class="f_CodeExample" style="color: #000000;">(ExCeption);</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;"> Sscanf(</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;">const</span><span class="f_CodeExample" style="color: #000000;"> fmt: </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;">const</span><span class="f_CodeExample" style="color: #000000;"> Pointers: </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: #000000;"> Pointer): Integer;</span></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: #000080;">{ Sscanf выполняет синтаксический разбор входной строки. Параметры...</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"><span class="f_CodeExample" style="color: #000080;">fmt - 'C' scanf-форматоподобная строка для управления разбором</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">%d - преобразование в Long Integer</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">%f - преобразование в Extended Float</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">%s - преобразование в строку (ограничено пробелами)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">другой символ - приращение позиции 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;">Pointers - массив указателей на присваиваемые переменные</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">результат - количество действительно присвоенных переменных</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Например, ...</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Sscanf('Name. Bill Time. 7:32.77 Age. 8',</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">'. %s . %d:%f . %d', [@Name, @hrs, @min, @age]);</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;">Name = Bill hrs = 7 min = 32.77 age = 8 }</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;"> Sscanf(</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;">const</span><span class="f_CodeExample" style="color: #000000;"> fmt: </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;">const</span><span class="f_CodeExample" style="color: #000000;"> Pointers: </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: #000000;"> Pointer): Integer;</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;">i, j, n, m: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">s1: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">L: LongInt;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">X: Extended;</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;"> GetInt: 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;"> s1 := </span><span class="f_CodeExample" style="color: #ff0000;">''</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> (s[n] = </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;"> (Length(s) &gt; n) </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(n);</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[n] </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;">'0'</span><span class="f_CodeExample" style="color: #000000;">..</span><span class="f_CodeExample" style="color: #ff0000;">'9'</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">'+'</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;">and</span><span class="f_CodeExample" style="color: #000000;"> (Length(s) &gt;= n) </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;"> s1 := s1 + s[n];</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><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := Length(s1);</span></p> <p class="p_CodeExample"><span 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;"> GetFloat: 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;"> s1 := </span><span class="f_CodeExample" style="color: #ff0000;">''</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> (s[n] = </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;"> (Length(s) &gt; n) </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(n);</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[n] </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;">'0'</span><span class="f_CodeExample" style="color: #000000;">..</span><span class="f_CodeExample" style="color: #ff0000;">'9'</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">'+'</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;">'e'</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">])</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (Length(s) &gt;= n) </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;"> s1 := s1 + s[n];</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><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := Length(s1);</span></p> <p class="p_CodeExample"><span 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;"> GetString: 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;"> s1 := </span><span class="f_CodeExample" style="color: #ff0000;">''</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> (s[n] = </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;"> (Length(s) &gt; n) </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(n);</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[n] &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;"> (Length(s) &gt;= n) </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;"> s1 := s1 + s[n];</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><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := Length(s1);</span></p> <p class="p_CodeExample"><span 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;"> ScanStr(c: 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: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #000000;"> (s[n] &lt;&gt; c) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (Length(s) &gt; n) </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(n);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(n);</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;"> (n &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: #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"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> GetFmt: 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;">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;"> (TRUE) </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;"> (fmt[m] = </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;"> (Length(fmt) &gt; m) </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(m);</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;"> (m &gt;= Length(fmt)) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> break;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> (fmt[m] = </span><span class="f_CodeExample" style="color: #ff0000;">'%'</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(m);</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;"> fmt[m] </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;">'d'</span><span class="f_CodeExample" style="color: #000000;">: Result := vtInteger;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #ff0000;">'f'</span><span class="f_CodeExample" style="color: #000000;">: Result := vtExtended;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #ff0000;">'s'</span><span class="f_CodeExample" style="color: #000000;">: Result := vtString;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(m);</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;"> (ScanStr(fmt[m]) = False) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> break;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(m);</span></p> <p class="p_CodeExample"><span 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;">begin</span></p> <p class="p_CodeExample"> </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"><span class="f_CodeExample" style="color: #000000;">m := </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 := </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: #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;"> High(Pointers) </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 := GetFmt;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">case</span><span class="f_CodeExample" style="color: #000000;"> j </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;"> vtInteger:</span></p> <p class="p_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;"> GetInt &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;"> L := StrToInt(s1);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Move(L, Pointers[i]^, SizeOf(LongInt));</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: #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"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> vtExtended:</span></p> <p class="p_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;"> GetFloat &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;"> X := StrToFloat(s1);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Move(X, Pointers[i]^, SizeOf(Extended));</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: #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"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> vtString:</span></p> <p class="p_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;"> GetString &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;"> Move(s1, Pointers[i]^, Length(s1) + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(Result);</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"><span 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;">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"><span 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;">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> </p> <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;">// Parse a string, for example: </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// How do I get the "B" from "A|B|C|D|E|F"? </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;"> Parse(Char, S: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; Count: Integer): </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> I: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> T: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #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[Length(S)] &lt;&gt; Char </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 + Char;</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;"> Count </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> T := Copy(S, </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">, Pos(Char, S) - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> S := Copy(S, Pos(Char, S) + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, Length(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: #000000;"> Result := T;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> TForm1.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;"> ShowMessage(Parse(</span><span class="f_CodeExample" style="color: #ff0000;">'|'</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">'A|B|C|D|E|F'</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </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: </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Parse([Character, for example "|"], [The string], </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">[The number, the "B" is the 2nd part of the string]); </span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">This function is handy to use when sending data over the internet, </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">for example a chat program: Name|Text. Note: Be sure there's no "Char" in the string! </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Use a unused character like "|" or "?". </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><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> Поиск N-ого вхождения подстроки в строку 2013-08-21T15:02:32+07:00 2013-08-21T15:02:32+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/razbor-stroki-vydelenie-elementov-poisk/poisk-n-ogo-vkhozhdeniya-podstroki-v-stroku.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; Поиск N-ого вхождения подстроки в строку</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;">Автор: panov, panov @ hotbox.ru, Екатеринбург</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: panov</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;"> SearchString(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> FindStr, SourceString: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; Num: Integer):</span></p> <p class="p_CodeExample"><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;">FirstSym: PChar; </span><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;"> MyPos(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> FindStr, SourceString: PChar; Num: Integer): PChar;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := AnsiStrPos(SourceString, FindStr);</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;"> (Result = </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: #000000;"> Exit; </span><span class="f_CodeExample" style="color: #000080;">//Подстрока не найдена</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Inc(Result); </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;"> Num = </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Exit; </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;"> num &gt; </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := MyPos(FindStr, Result, num - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//Рекурсивный поиск следующего вхождения</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">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;">FirstSym := PChar(SourceString);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//Присваиваем адрес первого символа исходной строки</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := MyPos(PChar(FindStr), PChar(SourceString), Num) - FirstSym;</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;"> Result &lt; </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;"> Result := </span><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;">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;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StrF, StrSrc: </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;">n: 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;">...</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StrF := </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;">StrSrc := </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;">n := SearchString(StrF, StrSrc, </span><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">); </span><span class="f_CodeExample" style="color: #000080;">//n будет равна 19</span></p> <p 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> <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;">Зависимости: SysUtils</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: panov, panov @ hotbox.ru, Екатеринбург</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: panov</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;"> SearchString(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> FindStr, SourceString: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; Num: Integer):</span></p> <p class="p_CodeExample"><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;">FirstSym: PChar; </span><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;"> MyPos(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> FindStr, SourceString: PChar; Num: Integer): PChar;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := AnsiStrPos(SourceString, FindStr);</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;"> (Result = </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: #000000;"> Exit; </span><span class="f_CodeExample" style="color: #000080;">//Подстрока не найдена</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Inc(Result); </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;"> Num = </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Exit; </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;"> num &gt; </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := MyPos(FindStr, Result, num - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//Рекурсивный поиск следующего вхождения</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">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;">FirstSym := PChar(SourceString);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//Присваиваем адрес первого символа исходной строки</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := MyPos(PChar(FindStr), PChar(SourceString), Num) - FirstSym;</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;"> Result &lt; </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;"> Result := </span><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;">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;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StrF, StrSrc: </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;">n: 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;">...</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StrF := </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;">StrSrc := </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;">n := SearchString(StrF, StrSrc, </span><span class="f_CodeExample" style="color: #800000;">2</span><span class="f_CodeExample" style="color: #000000;">); </span><span class="f_CodeExample" style="color: #000080;">//n будет равна 19</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> </td> </tr> </tbody> </table> </div> <p> </p> Произвести поиск байта или слова в строке 2013-08-21T15:16:53+07:00 2013-08-21T15:16:53+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/razbor-stroki-vydelenie-elementov-poisk/proizvesti-poisk-bajta-ili-slova-v-stroke.html Super User toto44@inbox.ru <p>У семейства x86 есть группа специализированных строковых инструкций, одна из которых - scasb/scasw - производит поиск байта/слова в строке. Использовать преимущества этой инструкции в Delphi позволяют длинные строки, которых в старых паскалях не было.</p> <p> </p> <p>Никаких сложностей с пониманием, на мой взгляд, быть не должно. Единственное это смена режима открытия файла (FileMode := 0), которая позволит открыть файлы заблокированные ядром Windows и сдвиг указателя файла при чтении нового блока влево на длину искомой строки. Сдвиг делается на случай разрезания искомой строки на части при чтении файла. Полный текст проверенной программы:</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;">program</span><span class="f_CodeExample" style="color: #000000;"> search;</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"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> buffSize = </span><span class="f_CodeExample" style="color: #800000;">16384</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;"> F : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">File</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;"> buff : AnsiString;</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;"> oldFileMode : integer;</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;"> SearchString: shortString=</span><span class="f_CodeExample" style="color: #ff0000;">'SunSB'</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;"> SearchPos : integer = -</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;">var</span><span class="f_CodeExample" style="color: #000000;"> readed : integer;</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;"> blockStart: 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;"> SetLength( buff, buffSize);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> assignFile( F, </span><span class="f_CodeExample" style="color: #ff0000;">'Speedometer2.exe'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> oldFileMode := FileMode;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> FileMode := </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;"> reset( F,</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: #008000; font-weight: bold;">not</span><span class="f_CodeExample" style="color: #000000;"> eof( F ) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> blockStart := filePos( F );</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> blockRead( F, buff[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">], buffSize, readed);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SearchPos:=Pos( SearchString, buff );</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;"> SearchPos &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: #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;">'Substr found at pos '</span><span class="f_CodeExample" style="color: #000000;">,</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> blockStart+SearchPos );</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> break;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> readed=buffSize </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;"> seek( F, ( filePos( F ) -</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> length( SearchString )));</span></p> <p class="p_CodeExample"><span 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;"> closeFile( F );</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> FileMode := oldFileMode;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SetLength( buff, </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;"> );</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> SearchPos = </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;"> WriteLn( </span><span class="f_CodeExample" style="color: #ff0000;">'Substr not found.'</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> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> </td> </tr> </tbody> </table> </div> <p>У семейства x86 есть группа специализированных строковых инструкций, одна из которых - scasb/scasw - производит поиск байта/слова в строке. Использовать преимущества этой инструкции в Delphi позволяют длинные строки, которых в старых паскалях не было.</p> <p> </p> <p>Никаких сложностей с пониманием, на мой взгляд, быть не должно. Единственное это смена режима открытия файла (FileMode := 0), которая позволит открыть файлы заблокированные ядром Windows и сдвиг указателя файла при чтении нового блока влево на длину искомой строки. Сдвиг делается на случай разрезания искомой строки на части при чтении файла. Полный текст проверенной программы:</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;">program</span><span class="f_CodeExample" style="color: #000000;"> search;</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"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> buffSize = </span><span class="f_CodeExample" style="color: #800000;">16384</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;"> F : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">File</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;"> buff : AnsiString;</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;"> oldFileMode : integer;</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;"> SearchString: shortString=</span><span class="f_CodeExample" style="color: #ff0000;">'SunSB'</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;"> SearchPos : integer = -</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;">var</span><span class="f_CodeExample" style="color: #000000;"> readed : integer;</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;"> blockStart: 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;"> SetLength( buff, buffSize);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> assignFile( F, </span><span class="f_CodeExample" style="color: #ff0000;">'Speedometer2.exe'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> oldFileMode := FileMode;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> FileMode := </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;"> reset( F,</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: #008000; font-weight: bold;">not</span><span class="f_CodeExample" style="color: #000000;"> eof( F ) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> blockStart := filePos( F );</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> blockRead( F, buff[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">], buffSize, readed);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SearchPos:=Pos( SearchString, buff );</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;"> SearchPos &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: #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;">'Substr found at pos '</span><span class="f_CodeExample" style="color: #000000;">,</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> blockStart+SearchPos );</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> break;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> readed=buffSize </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;"> seek( F, ( filePos( F ) -</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> length( SearchString )));</span></p> <p class="p_CodeExample"><span 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;"> closeFile( F );</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> FileMode := oldFileMode;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SetLength( buff, </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;"> );</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> SearchPos = </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;"> WriteLn( </span><span class="f_CodeExample" style="color: #ff0000;">'Substr not found.'</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> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> </td> </tr> </tbody> </table> </div> Расщепление строки с разделителями на массив строк 2013-08-21T15:03:46+07:00 2013-08-21T15:03:46+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/razbor-stroki-vydelenie-elementov-poisk/rasshcheplenie-stroki-s-razdelitelyami-na-massiv-strok.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;">Зависимости: System</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: ALL.exe, Alexe @ 054.pfr.ru, ICQ:161857370, Kostroma</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: ALL.exe</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;">type</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TSepArr = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">array</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; </span><span class="f_CodeExample" style="color: #000080;">// массив "записей"</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TSepRec = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">record</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Rec: TSepArr; </span><span class="f_CodeExample" style="color: #000080;">// сами "записи"</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Max: integer; </span><span class="f_CodeExample" style="color: #000080;">// количество полученных "записей"</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <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;"> GetSeparatorRec(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> sRows: </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;">cSeparator: char = </span><span class="f_CodeExample" style="color: #ff0000;">','</span><span class="f_CodeExample" style="color: #000000;">): TSepRec;</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;">cCol: </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: #000000;"> integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i, j: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">bSTRING: boolean;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result.Max := -</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: #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;">bSTRING := False;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">SetLength(cCol, j);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">cCol[</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">] := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">;</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(sRows) </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;"> sRows[i] = </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;"> bSTRING := </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">not</span><span class="f_CodeExample" style="color: #000000;"> bSTRING;</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;"> (sRows[i] = cSeparator) </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;"> bSTRING) </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;"> j := 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;"> SetLength(cCol, j);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> cCol[j - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">] := 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: #000000;">j := 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;">SetLength(cCol, j);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">cCol[j - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">] := Length(sRows) + </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: #000000;">Result.Max := High(cCol);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> Result.Max &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;"> SetLength(Result.Rec, Result.Max + </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.Rec[</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">] := IntToStr(Result.Max);</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;"> Result.Max </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result.Rec[i] := Copy(sRows, cCol[i - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">] + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, cCol[i] - cCol[i - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">] - </span><span class="f_CodeExample" style="color: #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"> </p> <p class="p_CodeExample"><span 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;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">R: TSepRec;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">R := GetSeparatorRec(</span><span class="f_CodeExample" style="color: #ff0000;">'123.45-ABCDEF-"A-B-C"-"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: #000080;">// результат:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">R.Max = </span><span class="f_CodeExample" style="color: #800000;">5</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">R.Rec = (</span><span class="f_CodeExample" style="color: #ff0000;">'5'</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">'123.45'</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">'ABCDEF'</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">'"A;B;C"'</span><span class="f_CodeExample" style="color: #000000;">, </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> </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;">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;">Зависимости: System</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор: ALL.exe, Alexe @ 054.pfr.ru, ICQ:161857370, Kostroma</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: ALL.exe</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;">type</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TSepArr = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">array</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; </span><span class="f_CodeExample" style="color: #000080;">// массив "записей"</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">TSepRec = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">record</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Rec: TSepArr; </span><span class="f_CodeExample" style="color: #000080;">// сами "записи"</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Max: integer; </span><span class="f_CodeExample" style="color: #000080;">// количество полученных "записей"</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <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;"> GetSeparatorRec(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> sRows: </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;">cSeparator: char = </span><span class="f_CodeExample" style="color: #ff0000;">','</span><span class="f_CodeExample" style="color: #000000;">): TSepRec;</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;">cCol: </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: #000000;"> integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i, j: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">bSTRING: boolean;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result.Max := -</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: #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;">bSTRING := False;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">SetLength(cCol, j);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">cCol[</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">] := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">;</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(sRows) </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;"> sRows[i] = </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;"> bSTRING := </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">not</span><span class="f_CodeExample" style="color: #000000;"> bSTRING;</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;"> (sRows[i] = cSeparator) </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;"> bSTRING) </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;"> j := 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;"> SetLength(cCol, j);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> cCol[j - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">] := 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: #000000;">j := 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;">SetLength(cCol, j);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">cCol[j - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">] := Length(sRows) + </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: #000000;">Result.Max := High(cCol);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> Result.Max &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;"> SetLength(Result.Rec, Result.Max + </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.Rec[</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">] := IntToStr(Result.Max);</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;"> Result.Max </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result.Rec[i] := Copy(sRows, cCol[i - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">] + </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, cCol[i] - cCol[i - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">] - </span><span class="f_CodeExample" style="color: #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"> </p> <p class="p_CodeExample"><span 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;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">R: TSepRec;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">R := GetSeparatorRec(</span><span class="f_CodeExample" style="color: #ff0000;">'123.45-ABCDEF-"A-B-C"-"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: #000080;">// результат:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">R.Max = </span><span class="f_CodeExample" style="color: #800000;">5</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">R.Rec = (</span><span class="f_CodeExample" style="color: #ff0000;">'5'</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">'123.45'</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">'ABCDEF'</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">'"A;B;C"'</span><span class="f_CodeExample" style="color: #000000;">, </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> </td> </tr> </tbody> </table> </div> <p> </p> Регулярные выражения 2013-08-21T14:43:15+07:00 2013-08-21T14:43:15+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/razbor-stroki-vydelenie-elementov-poisk/regulyarnye-vyrazheniya.html Super User toto44@inbox.ru <p> </p> <p>It is possible to use regular expressions in Delphi thanks to their implementation inside "Microsoft(r) Windows(r) Script".First of all I want to say that this article isn't a theoretical analisys of the regular expressions but an explanation of how to use them in Delphi. First of all I suggest you to download the latest version of "Microsoft(r) Windows(r) Script" at the following url:</p> <p> </p> <p>https://msdn.microsoft.com/downloads/default.asp?URL=/downloads/sample.asp?url=/msdn-files/027/001/733/msdncompositedoc . xml</p> <p> </p> <p>Download the desired package. Once downloaded, run it to install.</p> <p> </p> <p>It will be installed Microsoft(r) Windows(r) Script wich containes:</p> <p> </p> <p><span class="f_CourierFixed"> Visual Basic(r) Script Edition (VBScript.) Version 5.6,</span></p> <p><span class="f_CourierFixed"> JScript(r) Version 5.6, Windows Script Components,</span></p> <p><span class="f_CourierFixed"> Windows Script Host 5.6,</span></p> <p><span class="f_CourierFixed"> Windows Script Runtime Version 5.6.</span></p> <p> </p> <p>We are interested in the implementation of regular expressions, which is in the file "vbscript.dll". Every time you will want to run a program, wich exploits regular expressions by using "Microsoft(r) Windows(r) Script", on a given computer, it will be needed to copy the file "vbscript.dll" on the target computer and register it with the following command line:</p> <p> </p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">regsvr32 vbscript.dll</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p>Note that the auto-installing package, you have downloaded from the internet, automatically do it.</p> <p> </p> <p>Now let's go to import the type library in Delphi:</p> <p> </p> <p>In the delphi menu, select "Project" then "Import type library": it shows a mask containing a list. Inside the list select "Microsoft VBScript Regular Expressions" (followed by a version number). It is possible that there are more then one item with this name (it only changes the version number): in this situation select the item with the higher version number. In date September the 23th 2002, the package that can be downloaded from Microsoft's internet site returns the following value:</p> <p> </p> <p>"Microsoft VBScript Regular Expressions 5.5 (Version 5.5)"</p> <p> </p> <p>This version supplies the following "Class Names"</p> <p>}</p> <p> </p> <p>TRegExp</p> <p>TMatch</p> <p>TMatchCollection</p> <p>TSubMatches</p> <p> </p> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Define the name of the pascal unit, wich will be the type library import unit, in</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">the edit box "Unit dir name".</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Uncheck the checkbox "Generate Component Wrapper" (we are only interested in the</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">pascal source)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">and press the button "Create Unit" to create the import unit.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Let's assume to have the latest available version in date</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">September the 23th i.e.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> "Microsoft VBScript Regular Expressions 5.5 (Version 5.5)"</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">The following "interface" are declared:</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;">IRegExp = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">interface</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">IMatch = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">interface</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">IMatchCollection = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">interface</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">IRegExp2 = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">interface</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">IMatch2 = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">interface</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">IMatchCollection2 = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">interface</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">ISubMatches = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">interface</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;">IRegExp and IRegExp2 are different versions (IRegExp2 is the latest)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">of the same "interface". Idem for the other "interface".</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Then there are the declarations of CoClasses defined in Type Library.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">We map each CoClass to its Default Interface:</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;">RegExp = IRegExp2;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Match = IMatch2;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MatchCollection = IMatchCollection2;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">SubMatches = ISubMatches;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//IRegExp2 is the "main" "interface":</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// 1) properties:</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> a) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">property</span><span class="f_CodeExample" style="color: #000000;"> Pattern: WideString </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">read</span><span class="f_CodeExample" style="color: #000000;"> Get_Pattern</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">write</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Set</span><span class="f_CodeExample" style="color: #000000;">_Pattern;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//regular expression</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> b) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">property</span><span class="f_CodeExample" style="color: #000000;"> IgnoreCase: WordBool </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">read</span><span class="f_CodeExample" style="color: #000000;"> Get_IgnoreCase</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">write</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Set</span><span class="f_CodeExample" style="color: #000000;">_IgnoreCase;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//"case insensitive" search (TRUE o FALSE)</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> c) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">property</span><span class="f_CodeExample" style="color: #000000;"> Global: WordBool </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">read</span><span class="f_CodeExample" style="color: #000000;"> Get_Global </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">write</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Set</span><span class="f_CodeExample" style="color: #000000;">_Global;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//TRUE for global search on the input string of the method "Execute"</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//FALSE if you want to stop after the first match</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> d) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">property</span><span class="f_CodeExample" style="color: #000000;"> Multiline: WordBool </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">read</span><span class="f_CodeExample" style="color: #000000;"> Get_Multiline</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">write</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Set</span><span class="f_CodeExample" style="color: #000000;">_Multiline;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//If the input string contains '\n' charachters, it contains several</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//rows. If Multiline = FALSE (default value) then the regular</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//expression must be tested distinctly on each row.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//If Multiline = TRUE the regular expression must be tested on the</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//whole input string.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// 2) methods:</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> a) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> Execute(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> sourceString: WideString): IDispatch;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">safecall</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//it returns a Matches collection object containing a match object</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//for each succesfull match</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> b) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> Test(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> sourceString: WideString): WordBool;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">safecall</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//it returns TRUE if the regular expression can succesfully be</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//matched against the string</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> c) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> Replace(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> sourceString: WideString;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> replaceString: WideString): WideString;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">safecall</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//it replaces all the matches, inside "sourceString" with the</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//replace string "replaceString".</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//You can use the values $1, $2, $3, ... in order to define a</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//replace-string made by substrings of the pattern.</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;">IMatchCollection2 collects all the matches</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">For example:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">}</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MatchesCollection: IMatchCollection2;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{...}</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MatchesCollection := Execute(InputStr) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">as</span><span class="f_CodeExample" style="color: #000000;"> IMatchCollection2;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">for</span><span class="f_CodeExample" style="color: #000000;"> i := </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000000;"> MatchesCollection.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;"> Memo1.Lines.Add((MatchesCollection.Item[i] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">as</span><span class="f_CodeExample" style="color: #000000;"> IMatch2).Value);</span></p> <p class="p_CodeExample"><span 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: #000080;">{Remember that you can substitute the "interface" types with</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">the CoClass types:</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">RegExp (IRegExp2)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Match (IMatch2)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">MatchCollection (IMatchCollection2)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">SubMatches (ISubMatches)</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">The main properties of IMatchCollection2 are:}</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> a) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">property</span><span class="f_CodeExample" style="color: #000000;"> Item[</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">index</span><span class="f_CodeExample" style="color: #000000;">: Integer]: IDispatch </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">read</span><span class="f_CodeExample" style="color: #000000;"> Get_Item;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">default</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//Matches array; index in [0..n]</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> b) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">property</span><span class="f_CodeExample" style="color: #000000;"> Count: Integer </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">read</span><span class="f_CodeExample" style="color: #000000;"> Get_Count;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//Number of matches</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{The Item property returns "IMatch2" values</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">IMatch2 represents each succesfull match</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">The main properties are}</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> a) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">property</span><span class="f_CodeExample" style="color: #000000;"> Value: WideString </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">read</span><span class="f_CodeExample" style="color: #000000;"> Get_Value;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//matched value or text</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> b) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">property</span><span class="f_CodeExample" style="color: #000000;"> FirstIndex: Integer </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">read</span><span class="f_CodeExample" style="color: #000000;"> Get_FirstIndex;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//the position within the original string where the match occurred.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//Note that the first position in a string is 0</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> c) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">property</span><span class="f_CodeExample" style="color: #000000;"> Length: Integer </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">read</span><span class="f_CodeExample" style="color: #000000;"> Get_Length;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//length of the matched string</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> d) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">property</span><span class="f_CodeExample" style="color: #000000;"> SubMatches: IDispatch </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">read</span><span class="f_CodeExample" style="color: #000000;"> Get_SubMatches;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//substrings ($1, $2, $3, ...)</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ISubMatches collects the values of $1, $2, $3, ...</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">The main properties are}</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> a) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">property</span><span class="f_CodeExample" style="color: #000000;"> Item[</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">index</span><span class="f_CodeExample" style="color: #000000;">: Integer]: OleVariant </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">read</span><span class="f_CodeExample" style="color: #000000;"> Get_Item;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">default</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//for example Item[3] is $3; note that index values start from 0</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">property</span><span class="f_CodeExample" style="color: #000000;"> Count: Integer </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">read</span><span class="f_CodeExample" style="color: #000000;"> Get_Count;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//number of substrings</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;">Short description of $1, $2, $3, ...</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">They are defined in the following manner:</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">let's scan the pattern from left to right:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">$1 is the substring from the first open parenthesis to the corrisponding</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">closed one.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">$1 is the substring from the second open parenthesis to the corrisponding</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">closed one.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">$1 is the substring from the third open parenthesis to the corrisponding</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">closed one.</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;">For example: let's consider the following pattern</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">(FTP|HTTP)://([_a-z\d\-]+(\.[_a-z\d\-]+)+)((/[ _a-z\d\-\\\.]+)+)*</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">$1 = FTP|HTTP</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">$2 = [_a-z\d\-]+(\.[_a-z\d\-]+)+</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">$3 = \.[_a-z\d\-]+</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">$4 = (/[ _a-z\d\-\\\.]+)+</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">$5 = /[ _a-z\d\-\\\.]+</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Finally a couple of examples:</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Save an html file from the internet and name it "Test.htm".</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Create a new delphi project: drop 2 buttons (btSearch e btReplace)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">and a Memo (Memo1); of course include in the "uses" directive the</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">name of the import unit.</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;">//returns all links in "Test.htm" and $1, $2, $3, etc...</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.btSearchClick(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;">i, j: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">FileStream: TFileStream;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">InputStr, InputFile: </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;">RegExp1: RegExp;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MatchCollection1: MatchCollection;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Match1: Match;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">SubMatches1: ISubMatches;</span></p> <p class="p_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;">//</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">InputFile := </span><span class="f_CodeExample" style="color: #ff0000;">'Test.htm'</span><span class="f_CodeExample" style="color: #000000;">; </span><span class="f_CodeExample" style="color: #000080;">//input file</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">FileStream := TFileStream.Create(InputFile, fmOpenRead);</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">SetLength(InputStr, FileStream.Size);</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">FileStream.</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Read</span><span class="f_CodeExample" style="color: #000000;">(InputStr[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">], FileStream.Size);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//load "Test.htm" in InputString</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">RegExp1 := CoRegExp.Create;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">with</span><span class="f_CodeExample" style="color: #000000;"> RegExp1 </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;">//I want to search all links</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Pattern := </span><span class="f_CodeExample" style="color: #ff0000;">'(FTP|HTTP)://([_a-z\d\-]+(\.[_a-z\d\-]+)+)'</span><span class="f_CodeExample" style="color: #000000;"> +</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #ff0000;">'((/[ _a-z\d\-\\\.]+)+)*'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> IgnoreCase := True; </span><span class="f_CodeExample" style="color: #000080;">//"case insensitive" search</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Global := True; </span><span class="f_CodeExample" style="color: #000080;">//I want to search all the matches</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MatchCollection1 := Execute(InputStr) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">as</span><span class="f_CodeExample" style="color: #000000;"> MatchCollection;</span></p> <p class="p_CodeExample"><span 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;">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;"> MatchCollection1.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;"> Match1 := MatchCollection1.Item[i] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">as</span><span class="f_CodeExample" style="color: #000000;"> Match;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Memo1.Lines.Add(Match1.Value);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SubMatches1 := Match1.SubMatches </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">as</span><span class="f_CodeExample" style="color: #000000;"> SubMatches;</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;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000000;"> SubMatches1.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;"> Memo1.Lines.Add(</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;"> + inttostr(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: #ff0000;">' = '</span><span class="f_CodeExample" style="color: #000000;"> + VarToStr(SubMatches1.Item[j]));</span></p> <p class="p_CodeExample"><span 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: #000000;">RegExp1 := </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</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;">FileStream.Free;</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"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//I replace all links in "Test.htm" with a new string and</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//save the result string in the new file "Test_out.htm"</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.btReplaceClick(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;">i: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">InFileStream, OutFileStream: TFileStream;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">InputStr, OutputStr, InputFile, OutputFile: </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;">RegExp1: RegExp;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MatchCollection1: MatchCollection;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Match1: Match;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">SubMatches1: ISubMatches;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">InputFile := </span><span class="f_CodeExample" style="color: #ff0000;">'Test.htm'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">OutputFile := </span><span class="f_CodeExample" style="color: #ff0000;">'Test_out.htm'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">InFileStream := TFileStream.Create(InputFile, fmOpenRead);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">SetLength(InputStr, InFileStream.Size);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">InFileStream.</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Read</span><span class="f_CodeExample" style="color: #000000;">(InputStr[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">], InFileStream.Size);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">InFileStream.Free;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">RegExp1 := CoRegExp.Create;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">with</span><span class="f_CodeExample" style="color: #000000;"> RegExp1 </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;"> Pattern := </span><span class="f_CodeExample" style="color: #ff0000;">'(FTP|HTTP)://([_a-z\d\-]+(\.[_a-z\d\-]+)+)'</span><span class="f_CodeExample" style="color: #000000;"> +</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #ff0000;">'((/[ _a-z\d\-\\\.]+)+)*'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> IgnoreCase := True;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Global := True;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> OutputStr := Replace(InputStr, </span><span class="f_CodeExample" style="color: #ff0000;">'$2'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">OutFileStream := TFileStream.Create(OutputFile, fmCreate);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">SetLength(OutputStr, Length(OutputStr));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">OutFileStream.</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Write</span><span class="f_CodeExample" style="color: #000000;">(OutputStr[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">], Length(OutputStr));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">OutFileStream.Free;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">RegExp1 := </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</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;">'replace completed'</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> </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>https://www.swissdelphicenter.ch/en/tipsindex</p> <p> </p> <p>It is possible to use regular expressions in Delphi thanks to their implementation inside "Microsoft(r) Windows(r) Script".First of all I want to say that this article isn't a theoretical analisys of the regular expressions but an explanation of how to use them in Delphi. First of all I suggest you to download the latest version of "Microsoft(r) Windows(r) Script" at the following url:</p> <p> </p> <p>https://msdn.microsoft.com/downloads/default.asp?URL=/downloads/sample.asp?url=/msdn-files/027/001/733/msdncompositedoc . xml</p> <p> </p> <p>Download the desired package. Once downloaded, run it to install.</p> <p> </p> <p>It will be installed Microsoft(r) Windows(r) Script wich containes:</p> <p> </p> <p><span class="f_CourierFixed"> Visual Basic(r) Script Edition (VBScript.) Version 5.6,</span></p> <p><span class="f_CourierFixed"> JScript(r) Version 5.6, Windows Script Components,</span></p> <p><span class="f_CourierFixed"> Windows Script Host 5.6,</span></p> <p><span class="f_CourierFixed"> Windows Script Runtime Version 5.6.</span></p> <p> </p> <p>We are interested in the implementation of regular expressions, which is in the file "vbscript.dll". Every time you will want to run a program, wich exploits regular expressions by using "Microsoft(r) Windows(r) Script", on a given computer, it will be needed to copy the file "vbscript.dll" on the target computer and register it with the following command line:</p> <p> </p> <div style="text-align: justify; text-indent: 0px; margin: 7px 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">regsvr32 vbscript.dll</span></p> </td> </tr> </tbody> </table> </div> <p> </p> <p>Note that the auto-installing package, you have downloaded from the internet, automatically do it.</p> <p> </p> <p>Now let's go to import the type library in Delphi:</p> <p> </p> <p>In the delphi menu, select "Project" then "Import type library": it shows a mask containing a list. Inside the list select "Microsoft VBScript Regular Expressions" (followed by a version number). It is possible that there are more then one item with this name (it only changes the version number): in this situation select the item with the higher version number. In date September the 23th 2002, the package that can be downloaded from Microsoft's internet site returns the following value:</p> <p> </p> <p>"Microsoft VBScript Regular Expressions 5.5 (Version 5.5)"</p> <p> </p> <p>This version supplies the following "Class Names"</p> <p>}</p> <p> </p> <p>TRegExp</p> <p>TMatch</p> <p>TMatchCollection</p> <p>TSubMatches</p> <p> </p> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"> <table style="border-bottom: #c0c0c0 1px solid; border-left: #000000 1px solid; background-color: #ffffc4; border-spacing: 0px; border-top: #000000 1px solid; border-right: #c0c0c0 1px solid;" border="1" cellspacing="0" cellpadding="5" bgcolor="#ffffc4"> <tbody> <tr align="left" valign="top"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p style="text-align: justify;"><span style="font-family: 'Times New Roman'; color: #000000; font-weight: bold;">Code:</span></p> </td> </tr> <tr align="left"> <td style="border-bottom: #000000 1px solid; border-left: #c0c0c0 1px solid; border-top: #c0c0c0 1px solid; border-right: #000000 1px solid;"> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Define the name of the pascal unit, wich will be the type library import unit, in</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">the edit box "Unit dir name".</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Uncheck the checkbox "Generate Component Wrapper" (we are only interested in the</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">pascal source)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">and press the button "Create Unit" to create the import unit.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Let's assume to have the latest available version in date</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">September the 23th i.e.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> "Microsoft VBScript Regular Expressions 5.5 (Version 5.5)"</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">The following "interface" are declared:</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;">IRegExp = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">interface</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">IMatch = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">interface</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">IMatchCollection = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">interface</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">IRegExp2 = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">interface</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">IMatch2 = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">interface</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">IMatchCollection2 = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">interface</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">ISubMatches = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">interface</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;">IRegExp and IRegExp2 are different versions (IRegExp2 is the latest)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">of the same "interface". Idem for the other "interface".</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Then there are the declarations of CoClasses defined in Type Library.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">We map each CoClass to its Default Interface:</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;">RegExp = IRegExp2;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Match = IMatch2;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MatchCollection = IMatchCollection2;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">SubMatches = ISubMatches;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//IRegExp2 is the "main" "interface":</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// 1) properties:</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> a) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">property</span><span class="f_CodeExample" style="color: #000000;"> Pattern: WideString </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">read</span><span class="f_CodeExample" style="color: #000000;"> Get_Pattern</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">write</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Set</span><span class="f_CodeExample" style="color: #000000;">_Pattern;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//regular expression</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> b) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">property</span><span class="f_CodeExample" style="color: #000000;"> IgnoreCase: WordBool </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">read</span><span class="f_CodeExample" style="color: #000000;"> Get_IgnoreCase</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">write</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Set</span><span class="f_CodeExample" style="color: #000000;">_IgnoreCase;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//"case insensitive" search (TRUE o FALSE)</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> c) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">property</span><span class="f_CodeExample" style="color: #000000;"> Global: WordBool </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">read</span><span class="f_CodeExample" style="color: #000000;"> Get_Global </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">write</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Set</span><span class="f_CodeExample" style="color: #000000;">_Global;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//TRUE for global search on the input string of the method "Execute"</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//FALSE if you want to stop after the first match</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> d) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">property</span><span class="f_CodeExample" style="color: #000000;"> Multiline: WordBool </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">read</span><span class="f_CodeExample" style="color: #000000;"> Get_Multiline</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">write</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Set</span><span class="f_CodeExample" style="color: #000000;">_Multiline;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//If the input string contains '\n' charachters, it contains several</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//rows. If Multiline = FALSE (default value) then the regular</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//expression must be tested distinctly on each row.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//If Multiline = TRUE the regular expression must be tested on the</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//whole input string.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// 2) methods:</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> a) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> Execute(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> sourceString: WideString): IDispatch;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">safecall</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//it returns a Matches collection object containing a match object</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//for each succesfull match</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> b) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> Test(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> sourceString: WideString): WordBool;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">safecall</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//it returns TRUE if the regular expression can succesfully be</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//matched against the string</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> c) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> Replace(</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> sourceString: WideString;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">const</span><span class="f_CodeExample" style="color: #000000;"> replaceString: WideString): WideString;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">safecall</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//it replaces all the matches, inside "sourceString" with the</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//replace string "replaceString".</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//You can use the values $1, $2, $3, ... in order to define a</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//replace-string made by substrings of the pattern.</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;">IMatchCollection2 collects all the matches</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">For example:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">}</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MatchesCollection: IMatchCollection2;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{...}</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MatchesCollection := Execute(InputStr) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">as</span><span class="f_CodeExample" style="color: #000000;"> IMatchCollection2;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">for</span><span class="f_CodeExample" style="color: #000000;"> i := </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000000;"> MatchesCollection.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;"> Memo1.Lines.Add((MatchesCollection.Item[i] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">as</span><span class="f_CodeExample" style="color: #000000;"> IMatch2).Value);</span></p> <p class="p_CodeExample"><span 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: #000080;">{Remember that you can substitute the "interface" types with</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">the CoClass types:</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">RegExp (IRegExp2)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Match (IMatch2)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">MatchCollection (IMatchCollection2)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">SubMatches (ISubMatches)</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">The main properties of IMatchCollection2 are:}</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> a) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">property</span><span class="f_CodeExample" style="color: #000000;"> Item[</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">index</span><span class="f_CodeExample" style="color: #000000;">: Integer]: IDispatch </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">read</span><span class="f_CodeExample" style="color: #000000;"> Get_Item;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">default</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//Matches array; index in [0..n]</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> b) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">property</span><span class="f_CodeExample" style="color: #000000;"> Count: Integer </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">read</span><span class="f_CodeExample" style="color: #000000;"> Get_Count;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//Number of matches</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{The Item property returns "IMatch2" values</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">IMatch2 represents each succesfull match</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">The main properties are}</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> a) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">property</span><span class="f_CodeExample" style="color: #000000;"> Value: WideString </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">read</span><span class="f_CodeExample" style="color: #000000;"> Get_Value;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//matched value or text</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> b) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">property</span><span class="f_CodeExample" style="color: #000000;"> FirstIndex: Integer </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">read</span><span class="f_CodeExample" style="color: #000000;"> Get_FirstIndex;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//the position within the original string where the match occurred.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//Note that the first position in a string is 0</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> c) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">property</span><span class="f_CodeExample" style="color: #000000;"> Length: Integer </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">read</span><span class="f_CodeExample" style="color: #000000;"> Get_Length;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//length of the matched string</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> d) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">property</span><span class="f_CodeExample" style="color: #000000;"> SubMatches: IDispatch </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">read</span><span class="f_CodeExample" style="color: #000000;"> Get_SubMatches;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//substrings ($1, $2, $3, ...)</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ISubMatches collects the values of $1, $2, $3, ...</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">The main properties are}</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> a) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">property</span><span class="f_CodeExample" style="color: #000000;"> Item[</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">index</span><span class="f_CodeExample" style="color: #000000;">: Integer]: OleVariant </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">read</span><span class="f_CodeExample" style="color: #000000;"> Get_Item;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">default</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//for example Item[3] is $3; note that index values start from 0</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">property</span><span class="f_CodeExample" style="color: #000000;"> Count: Integer </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">read</span><span class="f_CodeExample" style="color: #000000;"> Get_Count;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//number of substrings</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;">Short description of $1, $2, $3, ...</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">They are defined in the following manner:</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">let's scan the pattern from left to right:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">$1 is the substring from the first open parenthesis to the corrisponding</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">closed one.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">$1 is the substring from the second open parenthesis to the corrisponding</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">closed one.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">$1 is the substring from the third open parenthesis to the corrisponding</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">closed one.</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;">For example: let's consider the following pattern</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">(FTP|HTTP)://([_a-z\d\-]+(\.[_a-z\d\-]+)+)((/[ _a-z\d\-\\\.]+)+)*</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">$1 = FTP|HTTP</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">$2 = [_a-z\d\-]+(\.[_a-z\d\-]+)+</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">$3 = \.[_a-z\d\-]+</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">$4 = (/[ _a-z\d\-\\\.]+)+</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">$5 = /[ _a-z\d\-\\\.]+</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Finally a couple of examples:</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Save an html file from the internet and name it "Test.htm".</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Create a new delphi project: drop 2 buttons (btSearch e btReplace)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">and a Memo (Memo1); of course include in the "uses" directive the</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">name of the import unit.</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;">//returns all links in "Test.htm" and $1, $2, $3, etc...</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.btSearchClick(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;">i, j: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">FileStream: TFileStream;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">InputStr, InputFile: </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;">RegExp1: RegExp;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MatchCollection1: MatchCollection;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Match1: Match;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">SubMatches1: ISubMatches;</span></p> <p class="p_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;">//</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">InputFile := </span><span class="f_CodeExample" style="color: #ff0000;">'Test.htm'</span><span class="f_CodeExample" style="color: #000000;">; </span><span class="f_CodeExample" style="color: #000080;">//input file</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">FileStream := TFileStream.Create(InputFile, fmOpenRead);</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">SetLength(InputStr, FileStream.Size);</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">FileStream.</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Read</span><span class="f_CodeExample" style="color: #000000;">(InputStr[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">], FileStream.Size);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//load "Test.htm" in InputString</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">RegExp1 := CoRegExp.Create;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">with</span><span class="f_CodeExample" style="color: #000000;"> RegExp1 </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;">//I want to search all links</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Pattern := </span><span class="f_CodeExample" style="color: #ff0000;">'(FTP|HTTP)://([_a-z\d\-]+(\.[_a-z\d\-]+)+)'</span><span class="f_CodeExample" style="color: #000000;"> +</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #ff0000;">'((/[ _a-z\d\-\\\.]+)+)*'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> IgnoreCase := True; </span><span class="f_CodeExample" style="color: #000080;">//"case insensitive" search</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Global := True; </span><span class="f_CodeExample" style="color: #000080;">//I want to search all the matches</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> MatchCollection1 := Execute(InputStr) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">as</span><span class="f_CodeExample" style="color: #000000;"> MatchCollection;</span></p> <p class="p_CodeExample"><span 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;">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;"> MatchCollection1.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;"> Match1 := MatchCollection1.Item[i] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">as</span><span class="f_CodeExample" style="color: #000000;"> Match;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Memo1.Lines.Add(Match1.Value);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SubMatches1 := Match1.SubMatches </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">as</span><span class="f_CodeExample" style="color: #000000;"> SubMatches;</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;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">to</span><span class="f_CodeExample" style="color: #000000;"> SubMatches1.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;"> Memo1.Lines.Add(</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;"> + inttostr(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: #ff0000;">' = '</span><span class="f_CodeExample" style="color: #000000;"> + VarToStr(SubMatches1.Item[j]));</span></p> <p class="p_CodeExample"><span 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: #000000;">RegExp1 := </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</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;">FileStream.Free;</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"> </p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//I replace all links in "Test.htm" with a new string and</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//save the result string in the new file "Test_out.htm"</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.btReplaceClick(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;">i: integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">InFileStream, OutFileStream: TFileStream;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">InputStr, OutputStr, InputFile, OutputFile: </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;">RegExp1: RegExp;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">MatchCollection1: MatchCollection;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Match1: Match;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">SubMatches1: ISubMatches;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">InputFile := </span><span class="f_CodeExample" style="color: #ff0000;">'Test.htm'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">OutputFile := </span><span class="f_CodeExample" style="color: #ff0000;">'Test_out.htm'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">InFileStream := TFileStream.Create(InputFile, fmOpenRead);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">SetLength(InputStr, InFileStream.Size);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">InFileStream.</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Read</span><span class="f_CodeExample" style="color: #000000;">(InputStr[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">], InFileStream.Size);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">InFileStream.Free;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">RegExp1 := CoRegExp.Create;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">with</span><span class="f_CodeExample" style="color: #000000;"> RegExp1 </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;"> Pattern := </span><span class="f_CodeExample" style="color: #ff0000;">'(FTP|HTTP)://([_a-z\d\-]+(\.[_a-z\d\-]+)+)'</span><span class="f_CodeExample" style="color: #000000;"> +</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #ff0000;">'((/[ _a-z\d\-\\\.]+)+)*'</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> IgnoreCase := True;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Global := True;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> OutputStr := Replace(InputStr, </span><span class="f_CodeExample" style="color: #ff0000;">'$2'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">OutFileStream := TFileStream.Create(OutputFile, fmCreate);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">SetLength(OutputStr, Length(OutputStr));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">OutFileStream.</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Write</span><span class="f_CodeExample" style="color: #000000;">(OutputStr[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">], Length(OutputStr));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">OutFileStream.Free;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">RegExp1 := </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</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;">'replace completed'</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> </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>https://www.swissdelphicenter.ch/en/tipsindex</p> Текст между двумя определёнными строками 2013-08-21T15:17:49+07:00 2013-08-21T15:17:49+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/razbor-stroki-vydelenie-elementov-poisk/tekst-mezhdu-dvumya-opredeljonnymi-strokami.html Super User toto44@inbox.ru <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"><br /> <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;"> IsolateText( </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;">; Tag1, Tag2: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">String</span><span class="f_CodeExample" style="color: #000000;">; list: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;"> pScan, pEnd, pTag1, pTag2: PChar;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> foundText: </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;"> searchtext: </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;">{ Set up pointers we need for the search. HTML is not case sensitive, so</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> we need to perform the search on a uppercased copy of S.}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> searchtext := Uppercase(S);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Tag1:= Uppercase( Tag1 );</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Tag2:= Uppercase( Tag2 );</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> pTag1:= PChar(Tag1);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> pTag2:= PChar(Tag2);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> pScan:= PChar(searchtext);</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: #000080;">{ Search for next occurence of Tag1. }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> pScan:= StrPos( pScan, pTag1 );</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;"> pScan &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><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ Found one, hop over it, then search from that position</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> forward for the next occurence of Tag2. }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Inc(pScan, Length( Tag1 ));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> pEnd := StrPos( pScan, pTag2 );</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;"> pEnd &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><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ Found start and end tag, isolate text between,</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> add it to the list. We need to get the text from</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> the original S, however, since we want the un-uppercased</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> version! So we calculate the address pScan would hold if</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> the search had been performed on S instead of searchtext. }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SetString( foundText, </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Pchar(S) + (pScan- PChar(searchtext) ),</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> pEnd - pScan );</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> list.Add( foundText );</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ Continue next search after the found end tag. }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> pScan := pEnd + Length(tag2);</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><span class="f_CodeExample" style="color: #000080;">{ Error, no end tag found for start tag, abort. }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> pScan := </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Nil</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;">Until</span><span class="f_CodeExample" style="color: #000000;"> pScan = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Nil</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> </td> </tr> </tbody> </table> </div> <p> </p> <div style="text-align: left; text-indent: 0px; margin: 0px; padding: 0px;"><br /> <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;"> IsolateText( </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;">; Tag1, Tag2: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">String</span><span class="f_CodeExample" style="color: #000000;">; list: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;"> pScan, pEnd, pTag1, pTag2: PChar;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> foundText: </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;"> searchtext: </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;">{ Set up pointers we need for the search. HTML is not case sensitive, so</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> we need to perform the search on a uppercased copy of S.}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> searchtext := Uppercase(S);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Tag1:= Uppercase( Tag1 );</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Tag2:= Uppercase( Tag2 );</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> pTag1:= PChar(Tag1);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> pTag2:= PChar(Tag2);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> pScan:= PChar(searchtext);</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: #000080;">{ Search for next occurence of Tag1. }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> pScan:= StrPos( pScan, pTag1 );</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;"> pScan &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><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ Found one, hop over it, then search from that position</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> forward for the next occurence of Tag2. }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Inc(pScan, Length( Tag1 ));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> pEnd := StrPos( pScan, pTag2 );</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;"> pEnd &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><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ Found start and end tag, isolate text between,</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> add it to the list. We need to get the text from</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> the original S, however, since we want the un-uppercased</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> version! So we calculate the address pScan would hold if</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> the search had been performed on S instead of searchtext. }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> SetString( foundText, </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Pchar(S) + (pScan- PChar(searchtext) ),</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> pEnd - pScan );</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> list.Add( foundText );</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{ Continue next search after the found end tag. }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> pScan := pEnd + Length(tag2);</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><span class="f_CodeExample" style="color: #000080;">{ Error, no end tag found for start tag, abort. }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> pScan := </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Nil</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;">Until</span><span class="f_CodeExample" style="color: #000000;"> pScan = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">Nil</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> </td> </tr> </tbody> </table> </div> <p> </p> Фильтрованный поиск в строке 2013-08-21T15:14:36+07:00 2013-08-21T15:14:36+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/razbor-stroki-vydelenie-elementov-poisk/filtrovannyj-poisk-v-stroke.html Super User toto44@inbox.ru <p>Автор: David Stidolph</p> <p> </p> <p>Есть множество задач, где необходимо использование так называемой "дикой карты", то есть поиск в строке по фильтру, когда в качестве поиска используется подстрока с символом "*" (звездочка). Например, если необходимо выяснить наличие подстроки 'St' с какими-либо символами перед ней, то в качестве параметра для поиска задается подстрока вида '*St'. Звездочка может присутствовать как в начале/конце подстроки, так и по обеим ее сторонам. Также при составлении фильтра вместо любого одиночного символа возможна подстановка знака вопроса.</p> <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: #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;">Для примера: MatchStrings('David Stidolph','*St*') возвратит True.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор оригинального C-кода Sean Stanley</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор портации на Delphi David Stidolph</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;"> MatchStrings(source, pattern: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): 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;">pSource: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">array</span><span class="f_CodeExample" style="color: #000000;">[</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">..</span><span class="f_CodeExample" style="color: #800000;">255</span><span class="f_CodeExample" style="color: #000000;">] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span><span class="f_CodeExample" style="color: #000000;"> Char;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">pPattern: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">array</span><span class="f_CodeExample" style="color: #000000;">[</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">..</span><span class="f_CodeExample" style="color: #800000;">255</span><span class="f_CodeExample" style="color: #000000;">] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span><span class="f_CodeExample" style="color: #000000;"> Char;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> MatchPattern(element, pattern: PChar): 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;"> IsPatternWild(pattern: PChar): 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;"> t: 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 := StrScan(pattern, </span><span class="f_CodeExample" style="color: #ff0000;">'*'</span><span class="f_CodeExample" style="color: #000000;">) &lt;&gt; </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</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: #008000; font-weight: bold;">not</span><span class="f_CodeExample" style="color: #000000;"> Result </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 := StrScan(pattern, </span><span class="f_CodeExample" style="color: #ff0000;">'?'</span><span class="f_CodeExample" style="color: #000000;">) &lt;&gt; </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</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: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;"> = StrComp(pattern, </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;"> Result := True</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;"> (element^ = Chr(</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;"> (pattern^ &lt;&gt; Chr(</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">)) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := False</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;"> element^ = Chr(</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #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: #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;"> pattern^ </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><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> MatchPattern(element, @pattern[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">]) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #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 := MatchPattern(@element[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">], pattern);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #ff0000;">'?'</span><span class="f_CodeExample" style="color: #000000;">: Result := MatchPattern(@element[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">], @pattern[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">]);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> element^ = pattern^ </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 := MatchPattern(@element[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">], @pattern[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">])</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #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"><span 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;">StrPCopy(pSource, source);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StrPCopy(pPattern, pattern);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := MatchPattern(pSource, pPattern);</span></p> <p class="p_CodeExample"><span 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>Автор: David Stidolph</p> <p> </p> <p>Есть множество задач, где необходимо использование так называемой "дикой карты", то есть поиск в строке по фильтру, когда в качестве поиска используется подстрока с символом "*" (звездочка). Например, если необходимо выяснить наличие подстроки 'St' с какими-либо символами перед ней, то в качестве параметра для поиска задается подстрока вида '*St'. Звездочка может присутствовать как в начале/конце подстроки, так и по обеим ее сторонам. Также при составлении фильтра вместо любого одиночного символа возможна подстановка знака вопроса.</p> <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: #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;">Для примера: MatchStrings('David Stidolph','*St*') возвратит True.</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор оригинального C-кода Sean Stanley</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Автор портации на Delphi David Stidolph</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;"> MatchStrings(source, pattern: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): 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;">pSource: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">array</span><span class="f_CodeExample" style="color: #000000;">[</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">..</span><span class="f_CodeExample" style="color: #800000;">255</span><span class="f_CodeExample" style="color: #000000;">] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span><span class="f_CodeExample" style="color: #000000;"> Char;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">pPattern: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">array</span><span class="f_CodeExample" style="color: #000000;">[</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">..</span><span class="f_CodeExample" style="color: #800000;">255</span><span class="f_CodeExample" style="color: #000000;">] </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">of</span><span class="f_CodeExample" style="color: #000000;"> Char;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> MatchPattern(element, pattern: PChar): 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;"> IsPatternWild(pattern: PChar): 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;"> t: 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 := StrScan(pattern, </span><span class="f_CodeExample" style="color: #ff0000;">'*'</span><span class="f_CodeExample" style="color: #000000;">) &lt;&gt; </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</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: #008000; font-weight: bold;">not</span><span class="f_CodeExample" style="color: #000000;"> Result </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 := StrScan(pattern, </span><span class="f_CodeExample" style="color: #ff0000;">'?'</span><span class="f_CodeExample" style="color: #000000;">) &lt;&gt; </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">nil</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: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;"> = StrComp(pattern, </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;"> Result := True</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;"> (element^ = Chr(</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;"> (pattern^ &lt;&gt; Chr(</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">)) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Result := False</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;"> element^ = Chr(</span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #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: #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;"> pattern^ </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><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> MatchPattern(element, @pattern[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">]) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #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 := MatchPattern(@element[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">], pattern);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #ff0000;">'?'</span><span class="f_CodeExample" style="color: #000000;">: Result := MatchPattern(@element[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">], @pattern[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">]);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> element^ = pattern^ </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 := MatchPattern(@element[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">], @pattern[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">])</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #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"><span 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;">StrPCopy(pSource, source);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StrPCopy(pPattern, pattern);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Result := MatchPattern(pSource, pPattern);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> </td> </tr> </tbody> </table> </div> Функции для парсинга строк 2013-08-21T15:07:17+07:00 2013-08-21T15:07:17+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/razbor-stroki-vydelenie-elementov-poisk/funktsii-dlya-parsinga-strok.html Super User toto44@inbox.ru <p>Здесь представлен модуль, в котором я разметил много методов для подобной работы. Некоторые функции поименованы по-шведски, но, может быть, Вы сможете понять, что они делают.</p> <p> Вам потребуется один из методов, называющийся stringreplaceall, который принимает при параметра - исходную строку, подстроку для поиска и подстроку для замены, и возвращает измененную строку. Будьте осторожны, если Вы меняется одну подстроку на другую, чьей частью является первая. Вы должны делать это в два прохода, или Вы попадете в бесконечный цикл.</p> <p> Так, если Вы имеете текст, содержащий слово Joe, и Вы хотите все его вхождения изменить на Joey, то Вы должны сделать сперва нечто похожее на:</p> <p>text := stringreplaceall(text, 'Joe', 'Joeey');</p> <p>И потом:</p> <p>text := stringreplaceall(text, 'Joeey', 'Joey');</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;">unit</span><span class="f_CodeExample" style="color: #000000;"> sparfunc;</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></p> <p class="p_CodeExample"><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;"> antaltecken (orgtext,soktext : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">) : integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> beginsWith (text,teststreng : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">):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;"> endsWith (text,teststreng : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">):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;"> hamtastreng (text,strt,slut : </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;">function</span><span class="f_CodeExample" style="color: #000000;"> hamtastrengmellan (text,strt,slut : </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;">function</span><span class="f_CodeExample" style="color: #000000;"> nastadelare (progtext : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">):integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> rtf2sgml (text : </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;">function</span><span class="f_CodeExample" style="color: #000000;"> sgml2win(text : </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;">function</span><span class="f_CodeExample" style="color: #000000;"> sgml2mac(text : </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;">function</span><span class="f_CodeExample" style="color: #000000;"> sgml2rtf(text : </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;">function</span><span class="f_CodeExample" style="color: #000000;"> sistamening(text : </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;">function</span><span class="f_CodeExample" style="color: #000000;"> stringnthfield (text,delim : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; vilken : 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;">function</span><span class="f_CodeExample" style="color: #000000;"> stringreplace (text,byt,mot : </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;">function</span><span class="f_CodeExample" style="color: #000000;"> stringreplaceall (text,byt,mot : </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;">function</span><span class="f_CodeExample" style="color: #000000;"> text2sgml (text : </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;">procedure</span><span class="f_CodeExample" style="color: #000000;"> SurePath (pathen : </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;">procedure</span><span class="f_CodeExample" style="color: #000000;"> KopieraFil (infil,utfil : </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;">function</span><span class="f_CodeExample" style="color: #000000;"> LasInEnTextfil (filnamn : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">) : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">implementation</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> LasInEnTextfil (filnamn : </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;">infil : textfile;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">temptext, filtext : </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;">filtext := </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: #000080;">//Oppna angiven fil och las in den</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;"> assignfile (infil,filnamn); </span><span class="f_CodeExample" style="color: #000080;">//Koppla en textfilsvariabel till pathname</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> reset (infil); </span><span class="f_CodeExample" style="color: #000080;">//Oppna filen</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//Sa lange vi inte natt slutet</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">not</span><span class="f_CodeExample" style="color: #000000;"> eof(infil) </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;"> readln (infil,temptext); </span><span class="f_CodeExample" style="color: #000080;">//Las in en rad</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> filtext := filtext+temptext; </span><span class="f_CodeExample" style="color: #000080;">//Lagg den till variabeln SGMLTEXT</span></p> <p class="p_CodeExample"><span 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;"> closefile (infil); </span><span class="f_CodeExample" style="color: #000080;">//Stang filen</span></p> <p class="p_CodeExample"><span 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 := filtext;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> KopieraFil (infil,utfil : </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;">InStream : TFileStream;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">OutStream : TFileStream;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">InStream := TFileStream.Create(infil,fmOpenRead);</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;"> OutStream := TFileStream.Create(utfil,fmOpenWrite </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">or</span><span class="f_CodeExample" style="color: #000000;"> fmCreate);</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;"> OutStream.CopyFrom(InStream,</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;">finally</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> OutStream.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;">finally</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> InStream.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: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> SurePath (pathen : </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;">temprad,del1 : </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;">antal : 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;">antal := antaltecken (pathen,</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;"> antal &lt; </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;"> createdir(pathen)</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;"> pathen[length(pathen)] &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: #000000;"> pathen := pathen+</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;"> pathen := stringreplace(pathen,</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;"> del1 := copy(pathen,</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">,pos(</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">,pathen));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> pathen := stringreplace(pathen,del1,</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;"> del1 := stringreplace(del1,</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;"> createdir (del1);</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;"> pathen &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;"> temprad := copy(pathen,</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">,pos(</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">,pathen));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> pathen := stringreplace(pathen,temprad,</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;"> del1 := del1+ temprad;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> temprad := </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;"> createdir(del1);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> antaltecken (orgtext,soktext : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">) : integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i,traffar,soklengd : 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;">traffar := </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;">soklengd := length(soktext);</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(orgtext) </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;"> soktext = copy(orgtext,i,soklengd) </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;"> traffar := traffar +</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 := traffar;</span></p> <p class="p_CodeExample"><span 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;"> nastadelare (progtext : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">):integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i,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: #000000;">i := pos(</span><span class="f_CodeExample" style="color: #ff0000;">'.'</span><span class="f_CodeExample" style="color: #000000;">,progtext);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">j := pos(</span><span class="f_CodeExample" style="color: #ff0000;">'!'</span><span class="f_CodeExample" style="color: #000000;">,progtext);</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 &lt; i) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (j &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;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> i := j;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">j := pos(</span><span class="f_CodeExample" style="color: #ff0000;">'!'</span><span class="f_CodeExample" style="color: #000000;">,progtext);</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 &lt; i) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (j &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;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> i := j;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">j := pos(</span><span class="f_CodeExample" style="color: #ff0000;">'?'</span><span class="f_CodeExample" style="color: #000000;">,progtext);</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 &lt; i) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (j &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;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> i := j;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">result := 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"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> stringnthfield (text,delim : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; vilken : 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;">start,slut,i : integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">temptext : </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;">start := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> vilken &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;"> temptext := 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;"> vilken = </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> start := </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;"> slut := pos (delim,text);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">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;"> vilken -</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;"> start := pos(delim,temptext)+length(delim);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> temptext := copy(temptext,start,length(temptext));</span></p> <p class="p_CodeExample"><span 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;"> slut := pos (delim,temptext);</span></p> <p class="p_CodeExample"><span 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;"> start &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;"> slut = </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;"> slut := length(text);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result := copy (temptext,</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">,slut-</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result := text;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result := text;</span></p> <p class="p_CodeExample"><span 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;"> StringReplaceAll (text,byt,mot : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;"> ) :</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{Funktion for att byta ut alla forekomster av en strang mot en</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">annan strang in en strang. Den konverterade strangen returneras.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Om byt finns i mot maste vi ga via en temporar variant!!!}</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;">plats : 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;">while</span><span class="f_CodeExample" style="color: #000000;"> pos(byt,text) &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;"> plats := pos(byt,text);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> delete (text,plats,length(byt));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> insert (mot,text,plats);</span></p> <p class="p_CodeExample"><span 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 := text;</span></p> <p class="p_CodeExample"><span 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;"> StringReplace (text,byt,mot : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;"> ) :</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{Funktion for att byta ut den forsta forekomsten av en strang mot en</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">annan strang in en strang. Den konverterade strangen returneras.}</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;">plats : 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;"> pos(byt,text) &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;"> plats := pos(byt,text);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> delete (text,plats,length(byt));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> insert (mot,text,plats);</span></p> <p class="p_CodeExample"><span 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 := text;</span></p> <p class="p_CodeExample"><span 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;"> hamtastreng (text,strt,slut : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">):</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{Funktion for att hamta ut en delstrang ur en annan strang.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Om start och slut finns i text sa returneras en strang dar start</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">ingar i borjan och fram till tecknet fore slut.}</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;">stplats,slutplats : integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">resultat : </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;">resultat :=</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;">stplats := pos(strt,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;"> stplats &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;"> text := copy (text,stplats,length(text));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> slutplats := pos(slut,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;"> slutplats &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;"> resultat := copy(text,</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">,slutplats-</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 := resultat;</span></p> <p class="p_CodeExample"><span 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;"> hamtastrengmellan (text,strt,slut : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">):</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{Funktion for att hamta ut en delstrang ur en annan strang.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Om start och slut finns i text sa returneras en strang dar start</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">ingar i borjan och fram till tecknet fore slut.}</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;">stplats,slutplats : integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">resultat : </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;">resultat :=</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;">stplats := pos(strt,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;"> stplats &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;"> text := copy (text,stplats+length(strt),length(text));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> slutplats := pos(slut,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;"> slutplats &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;"> resultat := copy(text,</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">,slutplats-</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 := resultat;</span></p> <p class="p_CodeExample"><span 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;"> endsWith (text,teststreng : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">):boolean;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{Kollar om en strang slutar med en annan strang.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Returnerar true eller false.}</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;">textlngd,testlngd : integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">kollstreng : </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;">testlngd := length(teststreng);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">textlngd := 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;"> textlngd &gt; testlngd </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;"> kollstreng := copy (text,(textlngd+</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">)-testlngd,testlngd);</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;"> kollstreng = teststreng </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 := 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></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"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> beginsWith (text,teststreng : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">):boolean;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{Funktion for att kolla om text borjar med teststreng.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Returnerar true eller false.}</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;">textlngd,testlngd : integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">kollstreng : </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;">testlngd := length(teststreng);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">textlngd := 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;"> textlngd &gt; = testlngd </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;"> kollstreng := copy (text,</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">,testlngd);</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;"> kollstreng = teststreng </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 := 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></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"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> sistamening(text : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">) : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//Funktion for att ta fram sista meningen i en strang. Soker pa !?.</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;">i :=length(text)-</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;"> (copy(text,i,</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">) &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;"> (copy(text,i,</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">) &lt; &gt; </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;">and</span><span class="f_CodeExample" style="color: #000000;"> (copy(text,i,</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">) &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;"> dec(i);</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: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> break</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: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> i &gt; </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result := copy(text,i,length(text))</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"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> text2sgml(text : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">) : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{Funktion som byter ut alla ovanliga tecken mot entiteter.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Den fardiga texten returneras.}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'&amp;'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'##amp;'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'##amp'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'&amp;'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'?'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'&amp;Aelig;'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'c'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'c'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'C'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'C'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'n'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'n'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'N'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'N'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'y'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'y'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'Y'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'Y'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'y'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'y'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">result := text;</span></p> <p class="p_CodeExample"><span 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;"> sgml2win(text : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">) : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{Funktion som ersatter alla entiteter mot deras tecken i</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">windows. Den fardiga strangen returneras.}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'&amp;Aelig;'</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;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;"> ,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;"> ,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'c'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'c'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'C'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'C'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;"> ,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;"> ,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;"> ,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;"> ,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;"> ,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;"> ,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;"> ,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;"> ,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'n'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'n'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'N'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'N'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;"> ,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;"> ,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;"> ,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;"> ,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'y'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'y'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'Y'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'Y'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'y'</span><span class="f_CodeExample" style="color: #000000;"> ,</span><span class="f_CodeExample" style="color: #ff0000;">'y'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'&amp;'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'&amp;'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">result := text;</span></p> <p class="p_CodeExample"><span 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;"> sgml2mac(text : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">) : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{Funktion som ersatter alla entiteter mot deras tecken i</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">mac. Den fardiga strangen returneras.}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">135</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">231</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'?'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">190</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'&amp;Aelig;'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">174</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">136</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">203</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">140</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">129</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">128</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">138</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;"> ,chr(</span><span class="f_CodeExample" style="color: #800000;">229</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;"> ,chr(</span><span class="f_CodeExample" style="color: #800000;">137</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">139</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">204</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'c'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">141</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'C'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">130</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">142</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">131</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">143</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">233</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;"> ,chr(</span><span class="f_CodeExample" style="color: #800000;">144</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;"> ,chr(</span><span class="f_CodeExample" style="color: #800000;">230</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;"> ,chr(</span><span class="f_CodeExample" style="color: #800000;">145</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;"> ,chr(</span><span class="f_CodeExample" style="color: #800000;">232</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;"> ,chr(</span><span class="f_CodeExample" style="color: #800000;">148</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;"> ,chr(</span><span class="f_CodeExample" style="color: #800000;">235</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;"> ,chr(</span><span class="f_CodeExample" style="color: #800000;">146</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;"> ,chr(</span><span class="f_CodeExample" style="color: #800000;">234</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;"> ,chr(</span><span class="f_CodeExample" style="color: #800000;">147</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;"> ,chr(</span><span class="f_CodeExample" style="color: #800000;">237</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;"> ,chr(</span><span class="f_CodeExample" style="color: #800000;">149</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;"> ,chr(</span><span class="f_CodeExample" style="color: #800000;">236</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'n'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">150</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'N'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">132</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">152</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">241</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">151</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">238</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;"> ,chr(</span><span class="f_CodeExample" style="color: #800000;">239</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;"> ,chr(</span><span class="f_CodeExample" style="color: #800000;">153</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">191</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">175</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">155</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">239</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">154</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">133</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">159</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">134</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">156</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">242</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;"> ,chr(</span><span class="f_CodeExample" style="color: #800000;">158</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;"> ,chr(</span><span class="f_CodeExample" style="color: #800000;">243</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">244</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">157</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'y'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'y'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'y'</span><span class="f_CodeExample" style="color: #000000;"> ,chr(</span><span class="f_CodeExample" style="color: #800000;">216</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'Y'</span><span class="f_CodeExample" style="color: #000000;"> ,chr(</span><span class="f_CodeExample" style="color: #800000;">217</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'&amp;'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">38</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">result := text;</span></p> <p class="p_CodeExample"><span 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;"> sgml2rtf(text : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">) : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{Funktion for att byta ut sgml-entiteter mot de koder som</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">galler i RTF-textrutorna.}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">text := stringreplaceall (text,</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;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'HSALSKCAB'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'HSALSKCAB'</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;">text := stringreplaceall (text,</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;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'c6'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'&amp;Aelig;'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'e6'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'e1'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'c1'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'e0'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'c0'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'e5'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'c5'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'c2'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'e2'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'e3'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'c3'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'e4'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'c4'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'c'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'e7'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'C'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'c7'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'e9'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'c9'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'e8'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'c8'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'ea'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'ca'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'eb'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'cb'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'ee'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'ce'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'ed'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'cd'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'ec'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'cc'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;"> ,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'ef'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;"> ,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'cf'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'n'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'f1'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'N'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'d1'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'f6'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'d6'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'f3'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'d3'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'f2'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'d2'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'f8'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'d8'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'d4'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'f4'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'f5'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'d5'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'fa'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'da'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'fb'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'db'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'d9'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'f9'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'fc'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'dc'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'y'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'fd'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'Y'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'dd'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'y'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'ff'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'a3'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">text := stringreplaceall (text,</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;">text := stringreplaceall (text,</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;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'&amp;'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'&amp;'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">result := text;</span></p> <p class="p_CodeExample"><span 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;"> rtf2sgml (text : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">) : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{Funktion for att konvertera en RTF-rad till SGML-text.}</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;">temptext : </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;">start : 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;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'&amp;'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'##amp;'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'##amp'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'&amp;'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'c6'</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;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'e6'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'&amp;Aelig;'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'e5'</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></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'c5'</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></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'e4'</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></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'c4'</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></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'e1'</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></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'c1'</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></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'e0'</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></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'c0'</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></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'c2'</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></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'e2'</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></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'e3'</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></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'c3'</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></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'e7'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'c'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'c7'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'C'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'e9'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'c9'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'e8'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'c8'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'ea'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'ca'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'eb'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'cb'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'ee'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'ce'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'ed'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'cd'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'ec'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'cc'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'ef'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'cf'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'f1'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'n'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'d1'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'N'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'f3'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'d3'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'f2'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'d2'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'d4'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'f4'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'f5'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'d5'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'f8'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'d8'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'f6'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'d6'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'fc'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'dc'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'fa'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'da'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'fb'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'db'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'d9'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'f9'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'fd'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'y'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'dd'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'Y'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'ff'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'y'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'a3'</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;">text := stringreplaceall (text,</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;">text := stringreplaceall (text,</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;">if</span><span class="f_CodeExample" style="color: #000000;"> (beginswith (text, </span><span class="f_CodeExample" style="color: #ff0000;">'{\rtf1\'</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;">(beginswith (text, </span><span class="f_CodeExample" style="color: #ff0000;">'{\colortbl\'</span><span class="f_CodeExample" style="color: #000000;">)) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result := </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;"> 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;">//text := stringreplaceall (text,'{\fonttbl',''); {Skall alltid tas bort}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//temptext := hamtastreng (text,'{\rtf1','{\f0');{Skall alltid tas bort}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//text := stringreplace (text,temptext,'');</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//temptext := hamtastreng (text,'{\f0','{\f1');{Skall alltid tas bort}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//text := stringreplace (text,temptext,'');</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//temptext := hamtastreng (text,'{\f1','{\f2');{Skall alltid tas bort}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//text := stringreplace (text,temptext,'');</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//text := stringreplaceall (text,'{\f2\fswiss\fprq2 System;}}','');{Skall alltid tas bort}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//text := stringreplaceall (text,'{\colortbl\red0\green0\blue0;}','');{Skall alltid tas bort}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{I version 2.01 av Delphi finns inte \cf0 med i RTF-rutan. Tog darfor bort</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">det efter \fs16 och la istallet en egen tvatt av \cf0.}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//temptext := hamtastreng (text,'{\rtf1','\deflang');</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//text := stringreplace (text,temptext,''); {Hamta och radera allt fran start till deflang}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\cf0'</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;">temptext := hamtastreng (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\deflang'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\pard'</span><span class="f_CodeExample" style="color: #000000;">);</span><span class="f_CodeExample" style="color: #000080;">{Plocka fran deflang till pard for att fa }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplace (text,temptext,</span><span class="f_CodeExample" style="color: #ff0000;">''</span><span class="f_CodeExample" style="color: #000000;">);</span><span class="f_CodeExample" style="color: #000080;">{oavsett vilken lang det ar. Norska o svenska ar olika}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\ltrpar'</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;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\ql'</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;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\ltrch'</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: #000080;">{Har skall vi plocka bort fs och flera olika siffror beroende pa vilka alternativ vi godkanner.}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//text := stringreplaceall (text,'\fs16','');{8 punkter}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//text := stringreplaceall (text,'\fs20','');{10 punkter}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{Nu stadar vi istallet bort alla tvasiffriga fontsize.}</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 (</span><span class="f_CodeExample" style="color: #ff0000;">'\fs'</span><span class="f_CodeExample" style="color: #000000;">,text) &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: #000080;">//application.processmessages;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> start := pos (</span><span class="f_CodeExample" style="color: #ff0000;">'\fs'</span><span class="f_CodeExample" style="color: #000000;">,text);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Delete(text,start,</span><span class="f_CodeExample" style="color: #800000;">5</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;">while</span><span class="f_CodeExample" style="color: #000000;"> pos (</span><span class="f_CodeExample" style="color: #ff0000;">'\f'</span><span class="f_CodeExample" style="color: #000000;">,text) &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: #000080;">//application.processmessages;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> start := pos (</span><span class="f_CodeExample" style="color: #ff0000;">'\f'</span><span class="f_CodeExample" style="color: #000000;">,text);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Delete(text,start,</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;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\pard\li200-200{\*\pn\pnlvlblt\pnf1\pnindent200{\pntxtb\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'b7}}\plain '</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">' &lt; /P &gt; &lt; UL &gt; '</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'{\pntext\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'b7\tab}'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">' &lt; LI &gt; '</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text, </span><span class="f_CodeExample" style="color: #ff0000;">'\par &lt; LI &gt; '</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">' &lt; LI &gt; '</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text, </span><span class="f_CodeExample" style="color: #ff0000;">'\par &lt; UL &gt; '</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">' &lt; UL &gt; '</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\pard\plain '</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">' &lt; P &gt; '</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\par \plain\b\ul '</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">' &lt; /P &gt; &lt; MELLIS &gt; '</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\plain\b\ul '</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">' &lt; /P &gt; &lt; MELLIS &gt; '</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\plain'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">' &lt; /MELLIS &gt; '</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\par }'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">' &lt; /P &gt; '</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> (pos (</span><span class="f_CodeExample" style="color: #ff0000;">'\par \tab '</span><span class="f_CodeExample" style="color: #000000;">,text) &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;">or</span><span class="f_CodeExample" style="color: #000000;"> (pos (</span><span class="f_CodeExample" style="color: #ff0000;">' &lt; P &gt; \tab '</span><span class="f_CodeExample" style="color: #000000;">,text) &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;">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;"> text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\par \tab '</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">' &lt; TR &gt; &lt; TD &gt; '</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">' &lt; P &gt; \tab '</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">' &lt; TR &gt; &lt; TD &gt; '</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\tab '</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">' &lt; /TD &gt; &lt; TD &gt; '</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">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;"> text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\tab '</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;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\par '</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">' &lt; /P &gt; &lt; P &gt; '</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">text := stringreplaceall (text,</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;">text := stringreplaceall (text,</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;">if</span><span class="f_CodeExample" style="color: #000000;"> pos(</span><span class="f_CodeExample" style="color: #ff0000;">' &lt; TD &gt; '</span><span class="f_CodeExample" style="color: #000000;">,text) &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;"> text := text+</span><span class="f_CodeExample" style="color: #ff0000;">' &lt; /TD &gt; &lt; /TR &gt; '</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> pos(</span><span class="f_CodeExample" style="color: #ff0000;">' &lt; LI &gt; '</span><span class="f_CodeExample" style="color: #000000;">,text) &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;"> text := text+</span><span class="f_CodeExample" style="color: #ff0000;">' &lt; /LI &gt; '</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">result := text;</span></p> <p class="p_CodeExample"><span 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"> </p> <p class="p_CodeExample"> </p> </td> </tr> </tbody> </table> </div> <p>Здесь представлен модуль, в котором я разметил много методов для подобной работы. Некоторые функции поименованы по-шведски, но, может быть, Вы сможете понять, что они делают.</p> <p> Вам потребуется один из методов, называющийся stringreplaceall, который принимает при параметра - исходную строку, подстроку для поиска и подстроку для замены, и возвращает измененную строку. Будьте осторожны, если Вы меняется одну подстроку на другую, чьей частью является первая. Вы должны делать это в два прохода, или Вы попадете в бесконечный цикл.</p> <p> Так, если Вы имеете текст, содержащий слово Joe, и Вы хотите все его вхождения изменить на Joey, то Вы должны сделать сперва нечто похожее на:</p> <p>text := stringreplaceall(text, 'Joe', 'Joeey');</p> <p>И потом:</p> <p>text := stringreplaceall(text, 'Joeey', 'Joey');</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;">unit</span><span class="f_CodeExample" style="color: #000000;"> sparfunc;</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></p> <p class="p_CodeExample"><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;"> antaltecken (orgtext,soktext : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">) : integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> beginsWith (text,teststreng : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">):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;"> endsWith (text,teststreng : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">):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;"> hamtastreng (text,strt,slut : </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;">function</span><span class="f_CodeExample" style="color: #000000;"> hamtastrengmellan (text,strt,slut : </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;">function</span><span class="f_CodeExample" style="color: #000000;"> nastadelare (progtext : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">):integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> rtf2sgml (text : </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;">function</span><span class="f_CodeExample" style="color: #000000;"> sgml2win(text : </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;">function</span><span class="f_CodeExample" style="color: #000000;"> sgml2mac(text : </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;">function</span><span class="f_CodeExample" style="color: #000000;"> sgml2rtf(text : </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;">function</span><span class="f_CodeExample" style="color: #000000;"> sistamening(text : </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;">function</span><span class="f_CodeExample" style="color: #000000;"> stringnthfield (text,delim : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; vilken : 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;">function</span><span class="f_CodeExample" style="color: #000000;"> stringreplace (text,byt,mot : </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;">function</span><span class="f_CodeExample" style="color: #000000;"> stringreplaceall (text,byt,mot : </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;">function</span><span class="f_CodeExample" style="color: #000000;"> text2sgml (text : </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;">procedure</span><span class="f_CodeExample" style="color: #000000;"> SurePath (pathen : </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;">procedure</span><span class="f_CodeExample" style="color: #000000;"> KopieraFil (infil,utfil : </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;">function</span><span class="f_CodeExample" style="color: #000000;"> LasInEnTextfil (filnamn : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">) : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">implementation</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> LasInEnTextfil (filnamn : </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;">infil : textfile;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">temptext, filtext : </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;">filtext := </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: #000080;">//Oppna angiven fil och las in den</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;"> assignfile (infil,filnamn); </span><span class="f_CodeExample" style="color: #000080;">//Koppla en textfilsvariabel till pathname</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> reset (infil); </span><span class="f_CodeExample" style="color: #000080;">//Oppna filen</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//Sa lange vi inte natt slutet</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">while</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">not</span><span class="f_CodeExample" style="color: #000000;"> eof(infil) </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;"> readln (infil,temptext); </span><span class="f_CodeExample" style="color: #000080;">//Las in en rad</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> filtext := filtext+temptext; </span><span class="f_CodeExample" style="color: #000080;">//Lagg den till variabeln SGMLTEXT</span></p> <p class="p_CodeExample"><span 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;"> closefile (infil); </span><span class="f_CodeExample" style="color: #000080;">//Stang filen</span></p> <p class="p_CodeExample"><span 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 := filtext;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> KopieraFil (infil,utfil : </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;">InStream : TFileStream;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">OutStream : TFileStream;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">InStream := TFileStream.Create(infil,fmOpenRead);</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;"> OutStream := TFileStream.Create(utfil,fmOpenWrite </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">or</span><span class="f_CodeExample" style="color: #000000;"> fmCreate);</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;"> OutStream.CopyFrom(InStream,</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;">finally</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> OutStream.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;">finally</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> InStream.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: #008000; font-weight: bold;">procedure</span><span class="f_CodeExample" style="color: #000000;"> SurePath (pathen : </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;">temprad,del1 : </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;">antal : 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;">antal := antaltecken (pathen,</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;"> antal &lt; </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;"> createdir(pathen)</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;"> pathen[length(pathen)] &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: #000000;"> pathen := pathen+</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;"> pathen := stringreplace(pathen,</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;"> del1 := copy(pathen,</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">,pos(</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">,pathen));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> pathen := stringreplace(pathen,del1,</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;"> del1 := stringreplace(del1,</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;"> createdir (del1);</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;"> pathen &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;"> temprad := copy(pathen,</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">,pos(</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">,pathen));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> pathen := stringreplace(pathen,temprad,</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;"> del1 := del1+ temprad;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> temprad := </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;"> createdir(del1);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> antaltecken (orgtext,soktext : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">) : integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i,traffar,soklengd : 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;">traffar := </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;">soklengd := length(soktext);</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(orgtext) </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;"> soktext = copy(orgtext,i,soklengd) </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;"> traffar := traffar +</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 := traffar;</span></p> <p class="p_CodeExample"><span 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;"> nastadelare (progtext : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">):integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">var</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">i,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: #000000;">i := pos(</span><span class="f_CodeExample" style="color: #ff0000;">'.'</span><span class="f_CodeExample" style="color: #000000;">,progtext);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">j := pos(</span><span class="f_CodeExample" style="color: #ff0000;">'!'</span><span class="f_CodeExample" style="color: #000000;">,progtext);</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 &lt; i) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (j &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;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> i := j;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">j := pos(</span><span class="f_CodeExample" style="color: #ff0000;">'!'</span><span class="f_CodeExample" style="color: #000000;">,progtext);</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 &lt; i) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (j &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;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> i := j;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">j := pos(</span><span class="f_CodeExample" style="color: #ff0000;">'?'</span><span class="f_CodeExample" style="color: #000000;">,progtext);</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 &lt; i) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">and</span><span class="f_CodeExample" style="color: #000000;"> (j &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;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> i := j;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">result := 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"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> stringnthfield (text,delim : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">; vilken : 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;">start,slut,i : integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">temptext : </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;">start := </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> vilken &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;"> temptext := 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;"> vilken = </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> start := </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;"> slut := pos (delim,text);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">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;"> vilken -</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;"> start := pos(delim,temptext)+length(delim);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> temptext := copy(temptext,start,length(temptext));</span></p> <p class="p_CodeExample"><span 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;"> slut := pos (delim,temptext);</span></p> <p class="p_CodeExample"><span 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;"> start &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;"> slut = </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;"> slut := length(text);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result := copy (temptext,</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">,slut-</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result := text;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result := text;</span></p> <p class="p_CodeExample"><span 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;"> StringReplaceAll (text,byt,mot : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;"> ) :</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{Funktion for att byta ut alla forekomster av en strang mot en</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">annan strang in en strang. Den konverterade strangen returneras.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Om byt finns i mot maste vi ga via en temporar variant!!!}</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;">plats : 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;">while</span><span class="f_CodeExample" style="color: #000000;"> pos(byt,text) &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;"> plats := pos(byt,text);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> delete (text,plats,length(byt));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> insert (mot,text,plats);</span></p> <p class="p_CodeExample"><span 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 := text;</span></p> <p class="p_CodeExample"><span 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;"> StringReplace (text,byt,mot : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;"> ) :</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{Funktion for att byta ut den forsta forekomsten av en strang mot en</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">annan strang in en strang. Den konverterade strangen returneras.}</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;">plats : 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;"> pos(byt,text) &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;"> plats := pos(byt,text);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> delete (text,plats,length(byt));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> insert (mot,text,plats);</span></p> <p class="p_CodeExample"><span 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 := text;</span></p> <p class="p_CodeExample"><span 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;"> hamtastreng (text,strt,slut : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">):</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{Funktion for att hamta ut en delstrang ur en annan strang.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Om start och slut finns i text sa returneras en strang dar start</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">ingar i borjan och fram till tecknet fore slut.}</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;">stplats,slutplats : integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">resultat : </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;">resultat :=</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;">stplats := pos(strt,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;"> stplats &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;"> text := copy (text,stplats,length(text));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> slutplats := pos(slut,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;"> slutplats &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;"> resultat := copy(text,</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">,slutplats-</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 := resultat;</span></p> <p class="p_CodeExample"><span 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;"> hamtastrengmellan (text,strt,slut : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">):</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{Funktion for att hamta ut en delstrang ur en annan strang.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Om start och slut finns i text sa returneras en strang dar start</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">ingar i borjan och fram till tecknet fore slut.}</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;">stplats,slutplats : integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">resultat : </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;">resultat :=</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;">stplats := pos(strt,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;"> stplats &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;"> text := copy (text,stplats+length(strt),length(text));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> slutplats := pos(slut,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;"> slutplats &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;"> resultat := copy(text,</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">,slutplats-</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 := resultat;</span></p> <p class="p_CodeExample"><span 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;"> endsWith (text,teststreng : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">):boolean;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{Kollar om en strang slutar med en annan strang.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Returnerar true eller false.}</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;">textlngd,testlngd : integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">kollstreng : </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;">testlngd := length(teststreng);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">textlngd := 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;"> textlngd &gt; testlngd </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;"> kollstreng := copy (text,(textlngd+</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">)-testlngd,testlngd);</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;"> kollstreng = teststreng </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 := 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></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"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> beginsWith (text,teststreng : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">):boolean;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{Funktion for att kolla om text borjar med teststreng.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Returnerar true eller false.}</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;">textlngd,testlngd : integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">kollstreng : </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;">testlngd := length(teststreng);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">textlngd := 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;"> textlngd &gt; = testlngd </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;"> kollstreng := copy (text,</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">,testlngd);</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;"> kollstreng = teststreng </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 := 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></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"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> sistamening(text : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">) : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//Funktion for att ta fram sista meningen i en strang. Soker pa !?.</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;">i :=length(text)-</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;"> (copy(text,i,</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">) &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;"> (copy(text,i,</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">) &lt; &gt; </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;">and</span><span class="f_CodeExample" style="color: #000000;"> (copy(text,i,</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">) &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;"> dec(i);</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: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> break</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: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> i &gt; </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result := copy(text,i,length(text))</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"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> text2sgml(text : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">) : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{Funktion som byter ut alla ovanliga tecken mot entiteter.</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Den fardiga texten returneras.}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'&amp;'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'##amp;'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'##amp'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'&amp;'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'?'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'&amp;Aelig;'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'c'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'c'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'C'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'C'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'n'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'n'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'N'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'N'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'y'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'y'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'Y'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'Y'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'y'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'y'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">result := text;</span></p> <p class="p_CodeExample"><span 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;"> sgml2win(text : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">) : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{Funktion som ersatter alla entiteter mot deras tecken i</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">windows. Den fardiga strangen returneras.}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'&amp;Aelig;'</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;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;"> ,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;"> ,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'c'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'c'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'C'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'C'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;"> ,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;"> ,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;"> ,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;"> ,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;"> ,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;"> ,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;"> ,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;"> ,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'n'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'n'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'N'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'N'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;"> ,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;"> ,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;"> ,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;"> ,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'y'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'y'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'Y'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'Y'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'y'</span><span class="f_CodeExample" style="color: #000000;"> ,</span><span class="f_CodeExample" style="color: #ff0000;">'y'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'&amp;'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'&amp;'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">result := text;</span></p> <p class="p_CodeExample"><span 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;"> sgml2mac(text : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">) : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{Funktion som ersatter alla entiteter mot deras tecken i</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">mac. Den fardiga strangen returneras.}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">135</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">231</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'?'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">190</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'&amp;Aelig;'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">174</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">136</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">203</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">140</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">129</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">128</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">138</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;"> ,chr(</span><span class="f_CodeExample" style="color: #800000;">229</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;"> ,chr(</span><span class="f_CodeExample" style="color: #800000;">137</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'a'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">139</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'A'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">204</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'c'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">141</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'C'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">130</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">142</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">131</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">143</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">233</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;"> ,chr(</span><span class="f_CodeExample" style="color: #800000;">144</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;"> ,chr(</span><span class="f_CodeExample" style="color: #800000;">230</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;"> ,chr(</span><span class="f_CodeExample" style="color: #800000;">145</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;"> ,chr(</span><span class="f_CodeExample" style="color: #800000;">232</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;"> ,chr(</span><span class="f_CodeExample" style="color: #800000;">148</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;"> ,chr(</span><span class="f_CodeExample" style="color: #800000;">235</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;"> ,chr(</span><span class="f_CodeExample" style="color: #800000;">146</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;"> ,chr(</span><span class="f_CodeExample" style="color: #800000;">234</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;"> ,chr(</span><span class="f_CodeExample" style="color: #800000;">147</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;"> ,chr(</span><span class="f_CodeExample" style="color: #800000;">237</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;"> ,chr(</span><span class="f_CodeExample" style="color: #800000;">149</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;"> ,chr(</span><span class="f_CodeExample" style="color: #800000;">236</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'n'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">150</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'N'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">132</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">152</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">241</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">151</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">238</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;"> ,chr(</span><span class="f_CodeExample" style="color: #800000;">239</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;"> ,chr(</span><span class="f_CodeExample" style="color: #800000;">153</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">191</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">175</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">155</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">239</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">154</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">133</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">159</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">134</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">156</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">242</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;"> ,chr(</span><span class="f_CodeExample" style="color: #800000;">158</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;"> ,chr(</span><span class="f_CodeExample" style="color: #800000;">243</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">244</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">157</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'y'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'y'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'y'</span><span class="f_CodeExample" style="color: #000000;"> ,chr(</span><span class="f_CodeExample" style="color: #800000;">216</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'Y'</span><span class="f_CodeExample" style="color: #000000;"> ,chr(</span><span class="f_CodeExample" style="color: #800000;">217</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'&amp;'</span><span class="f_CodeExample" style="color: #000000;">,chr(</span><span class="f_CodeExample" style="color: #800000;">38</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">result := text;</span></p> <p class="p_CodeExample"><span 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;"> sgml2rtf(text : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">) : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{Funktion for att byta ut sgml-entiteter mot de koder som</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">galler i RTF-textrutorna.}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">text := stringreplaceall (text,</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;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'HSALSKCAB'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'HSALSKCAB'</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;">text := stringreplaceall (text,</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;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'c6'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'&amp;Aelig;'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'e6'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'e1'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'c1'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'e0'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'c0'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'e5'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'c5'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'c2'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'e2'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'e3'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'c3'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'e4'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'c4'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'c'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'e7'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'C'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'c7'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'e9'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'c9'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'e8'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'c8'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'ea'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'ca'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'eb'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'cb'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'ee'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'ce'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'ed'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'cd'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'ec'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'cc'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;"> ,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'ef'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;"> ,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'cf'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'n'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'f1'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'N'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'d1'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'f6'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'d6'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'f3'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'d3'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'f2'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'d2'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'f8'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'d8'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'d4'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'f4'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'f5'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'d5'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'fa'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'da'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'fb'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'db'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'d9'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'f9'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'fc'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'dc'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'y'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'fd'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'Y'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'dd'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'y'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'ff'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'a3'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">text := stringreplaceall (text,</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;">text := stringreplaceall (text,</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;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'&amp;'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'&amp;'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">result := text;</span></p> <p class="p_CodeExample"><span 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;"> rtf2sgml (text : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">) : </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{Funktion for att konvertera en RTF-rad till SGML-text.}</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;">temptext : </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;">start : 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;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'&amp;'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'##amp;'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'##amp'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'&amp;'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'c6'</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;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'e6'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'&amp;Aelig;'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'e5'</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></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'c5'</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></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'e4'</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></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'c4'</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></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'e1'</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></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'c1'</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></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'e0'</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></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'c0'</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></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'c2'</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></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'e2'</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></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'e3'</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></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'c3'</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></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'e7'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'c'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'c7'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'C'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'e9'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'c9'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'e8'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'c8'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'ea'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'ca'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'eb'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'e'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'cb'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'E'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'ee'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'ce'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'ed'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'cd'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'ec'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'cc'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'ef'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'i'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'cf'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'I'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'f1'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'n'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'d1'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'N'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'f3'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'d3'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'f2'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'d2'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'d4'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'f4'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'f5'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'d5'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'f8'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'d8'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'f6'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'o'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'d6'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'O'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'fc'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'dc'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'fa'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'da'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'fb'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'db'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'d9'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'U'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'f9'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'u'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'fd'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'y'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'dd'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'Y'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'ff'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'y'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'a3'</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;">text := stringreplaceall (text,</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;">text := stringreplaceall (text,</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;">if</span><span class="f_CodeExample" style="color: #000000;"> (beginswith (text, </span><span class="f_CodeExample" style="color: #ff0000;">'{\rtf1\'</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;">(beginswith (text, </span><span class="f_CodeExample" style="color: #ff0000;">'{\colortbl\'</span><span class="f_CodeExample" style="color: #000000;">)) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result := </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;"> 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;">//text := stringreplaceall (text,'{\fonttbl',''); {Skall alltid tas bort}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//temptext := hamtastreng (text,'{\rtf1','{\f0');{Skall alltid tas bort}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//text := stringreplace (text,temptext,'');</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//temptext := hamtastreng (text,'{\f0','{\f1');{Skall alltid tas bort}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//text := stringreplace (text,temptext,'');</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//temptext := hamtastreng (text,'{\f1','{\f2');{Skall alltid tas bort}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//text := stringreplace (text,temptext,'');</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//text := stringreplaceall (text,'{\f2\fswiss\fprq2 System;}}','');{Skall alltid tas bort}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//text := stringreplaceall (text,'{\colortbl\red0\green0\blue0;}','');{Skall alltid tas bort}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{I version 2.01 av Delphi finns inte \cf0 med i RTF-rutan. Tog darfor bort</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">det efter \fs16 och la istallet en egen tvatt av \cf0.}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//temptext := hamtastreng (text,'{\rtf1','\deflang');</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//text := stringreplace (text,temptext,''); {Hamta och radera allt fran start till deflang}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\cf0'</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;">temptext := hamtastreng (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\deflang'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">'\pard'</span><span class="f_CodeExample" style="color: #000000;">);</span><span class="f_CodeExample" style="color: #000080;">{Plocka fran deflang till pard for att fa }</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplace (text,temptext,</span><span class="f_CodeExample" style="color: #ff0000;">''</span><span class="f_CodeExample" style="color: #000000;">);</span><span class="f_CodeExample" style="color: #000080;">{oavsett vilken lang det ar. Norska o svenska ar olika}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\ltrpar'</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;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\ql'</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;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\ltrch'</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: #000080;">{Har skall vi plocka bort fs och flera olika siffror beroende pa vilka alternativ vi godkanner.}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//text := stringreplaceall (text,'\fs16','');{8 punkter}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//text := stringreplaceall (text,'\fs20','');{10 punkter}</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">{Nu stadar vi istallet bort alla tvasiffriga fontsize.}</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 (</span><span class="f_CodeExample" style="color: #ff0000;">'\fs'</span><span class="f_CodeExample" style="color: #000000;">,text) &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: #000080;">//application.processmessages;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> start := pos (</span><span class="f_CodeExample" style="color: #ff0000;">'\fs'</span><span class="f_CodeExample" style="color: #000000;">,text);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Delete(text,start,</span><span class="f_CodeExample" style="color: #800000;">5</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;">while</span><span class="f_CodeExample" style="color: #000000;"> pos (</span><span class="f_CodeExample" style="color: #ff0000;">'\f'</span><span class="f_CodeExample" style="color: #000000;">,text) &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: #000080;">//application.processmessages;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> start := pos (</span><span class="f_CodeExample" style="color: #ff0000;">'\f'</span><span class="f_CodeExample" style="color: #000000;">,text);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Delete(text,start,</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;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\pard\li200-200{\*\pn\pnlvlblt\pnf1\pnindent200{\pntxtb\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'b7}}\plain '</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">' &lt; /P &gt; &lt; UL &gt; '</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'{\pntext\'</span><span class="f_CodeExample" style="color: #000000;">+chr(</span><span class="f_CodeExample" style="color: #800000;">39</span><span class="f_CodeExample" style="color: #000000;">)+</span><span class="f_CodeExample" style="color: #ff0000;">'b7\tab}'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">' &lt; LI &gt; '</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text, </span><span class="f_CodeExample" style="color: #ff0000;">'\par &lt; LI &gt; '</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">' &lt; LI &gt; '</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text, </span><span class="f_CodeExample" style="color: #ff0000;">'\par &lt; UL &gt; '</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">' &lt; UL &gt; '</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\pard\plain '</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">' &lt; P &gt; '</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\par \plain\b\ul '</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">' &lt; /P &gt; &lt; MELLIS &gt; '</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\plain\b\ul '</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">' &lt; /P &gt; &lt; MELLIS &gt; '</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\plain'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">' &lt; /MELLIS &gt; '</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\par }'</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">' &lt; /P &gt; '</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> (pos (</span><span class="f_CodeExample" style="color: #ff0000;">'\par \tab '</span><span class="f_CodeExample" style="color: #000000;">,text) &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;">or</span><span class="f_CodeExample" style="color: #000000;"> (pos (</span><span class="f_CodeExample" style="color: #ff0000;">' &lt; P &gt; \tab '</span><span class="f_CodeExample" style="color: #000000;">,text) &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;">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;"> text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\par \tab '</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">' &lt; TR &gt; &lt; TD &gt; '</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">' &lt; P &gt; \tab '</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">' &lt; TR &gt; &lt; TD &gt; '</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\tab '</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">' &lt; /TD &gt; &lt; TD &gt; '</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">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;"> text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\tab '</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;">text := stringreplaceall (text,</span><span class="f_CodeExample" style="color: #ff0000;">'\par '</span><span class="f_CodeExample" style="color: #000000;">,</span><span class="f_CodeExample" style="color: #ff0000;">' &lt; /P &gt; &lt; P &gt; '</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">text := stringreplaceall (text,</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;">text := stringreplaceall (text,</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;">text := stringreplaceall (text,</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;">if</span><span class="f_CodeExample" style="color: #000000;"> pos(</span><span class="f_CodeExample" style="color: #ff0000;">' &lt; TD &gt; '</span><span class="f_CodeExample" style="color: #000000;">,text) &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;"> text := text+</span><span class="f_CodeExample" style="color: #ff0000;">' &lt; /TD &gt; &lt; /TR &gt; '</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> pos(</span><span class="f_CodeExample" style="color: #ff0000;">' &lt; LI &gt; '</span><span class="f_CodeExample" style="color: #000000;">,text) &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;"> text := text+</span><span class="f_CodeExample" style="color: #ff0000;">' &lt; /LI &gt; '</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">result := text;</span></p> <p class="p_CodeExample"><span 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"> </p> <p class="p_CodeExample"> </p> </td> </tr> </tbody> </table> </div> Функция для разворачивания строк 2013-08-21T15:09:45+07:00 2013-08-21T15:09:45+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/razbor-stroki-vydelenie-elementov-poisk/funktsiya-dlya-razvorachivaniya-strok.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"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Входные параметры:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Input - входная строка, которую необходимо представить в "развернутом виде"</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #ff0000; font-weight: bold;">на входе: 1,3,5-10,15</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #ff0000; font-weight: bold;">на выходе: 1,3,5,6,7,8,9,10,15 </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;">Автор: Ru, DiVo_Ru @ rambler.ru, Одесса</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: DiVo 2002, creator Ru</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">***************************************************** }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> DecStr(Input: </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, j, t: 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: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> pos(</span><span class="f_CodeExample" style="color: #ff0000;">'-'</span><span class="f_CodeExample" style="color: #000000;">, Input) &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;">while</span><span class="f_CodeExample" style="color: #000000;"> length(Input) &lt;&gt; </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> Input[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">] = </span><span class="f_CodeExample" style="color: #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;"> i := strtoint(s);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> delete(Input, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result := result + s + </span><span class="f_CodeExample" style="color: #ff0000;">','</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> 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></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;"> Input[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">] = </span><span class="f_CodeExample" style="color: #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;"> i := strtoint(s);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> delete(Input, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> t := pos(</span><span class="f_CodeExample" style="color: #ff0000;">','</span><span class="f_CodeExample" style="color: #000000;">, Input);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result := result + s + </span><span class="f_CodeExample" style="color: #ff0000;">','</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> 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 = </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;"> j := strtoint(Input);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Input := </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></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;"> j := strtoint(copy(Input, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, t - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> delete(Input, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, t);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(i);</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; j + </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 + inttostr(i) + </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;"> inc(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></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;"> s := s + Input[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">];</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> delete(Input, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result := Input;</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 &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: #000000;"> result := result + s;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </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;"> 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"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Входные параметры:</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Input - входная строка, которую необходимо представить в "развернутом виде"</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #ff0000; font-weight: bold;">на входе: 1,3,5-10,15</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #ff0000; font-weight: bold;">на выходе: 1,3,5,6,7,8,9,10,15 </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;">Автор: Ru, DiVo_Ru @ rambler.ru, Одесса</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">Copyright: DiVo 2002, creator Ru</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;"> </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">***************************************************** }</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">function</span><span class="f_CodeExample" style="color: #000000;"> DecStr(Input: </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, j, t: 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: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> pos(</span><span class="f_CodeExample" style="color: #ff0000;">'-'</span><span class="f_CodeExample" style="color: #000000;">, Input) &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;">while</span><span class="f_CodeExample" style="color: #000000;"> length(Input) &lt;&gt; </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">do</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> Input[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">] = </span><span class="f_CodeExample" style="color: #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;"> i := strtoint(s);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> delete(Input, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result := result + s + </span><span class="f_CodeExample" style="color: #ff0000;">','</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> 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></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;"> Input[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">] = </span><span class="f_CodeExample" style="color: #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;"> i := strtoint(s);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> delete(Input, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> t := pos(</span><span class="f_CodeExample" style="color: #ff0000;">','</span><span class="f_CodeExample" style="color: #000000;">, Input);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result := result + s + </span><span class="f_CodeExample" style="color: #ff0000;">','</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> 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 = </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;"> j := strtoint(Input);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Input := </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></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;"> j := strtoint(copy(Input, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, t - </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> delete(Input, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, t);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> inc(i);</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; j + </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 + inttostr(i) + </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;"> inc(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></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;"> s := s + Input[</span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">];</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> delete(Input, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #800000;">1</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">else</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> result := Input;</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 &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: #000000;"> result := result + s;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"> </p> </td> </tr> </tbody> </table> </div> <p> </p> Функция приблизительного (нечеткого) сравнения строк 2013-08-21T15:11:21+07:00 2013-08-21T15:11:21+07:00 https://delphi-hlp.ru/index.php/rabota-so-strokami/razbor-stroki-vydelenie-elementov-poisk/funktsiya-priblizitelnogo-nechetkogo-sravneniya-strok.html Super User toto44@inbox.ru <p>Автор: Дмитрий Кузан</p> <p> </p> <p>Недавно в поисках информации по интеллектуальным алгоритмам сравнения я нашел такой алгоритм — алгоритм сравнения (совпадения) двух строк, Так как он был написан на VBA, я под свои нужды переписал его на Delphi</p> <p> </p> <p>Уважаемые пользователи проекта DelphiWorld, я думаю данная функция пригодится тем, кто часто пишет функции поиска, особенно когда поиск приблизителен. То есть, например, в БД забито "Иванав Иван" - с ошибкой при наборе, а ищется "Иванов". Так вот, данный алгоритм может вам найти "Иванав" при вводе "Иванов",а также при "Иван Иванов" - даже наоборот с определенной степенью релевантности при сравнении. А используя сравнение в процентном отношении, вы можете производить поиск по неточным данным с более-менее степенью похожести.</p> <p> </p> <p>Еще раз повторяю, алгоритм не мой, я только его портировал на Delphi.</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: #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;">//MaxMatching - максимальная длина подстроки (достаточно 3-4)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//strInputMatching - сравниваемая строка</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//strInputStandart - строка-образец</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;">// if IndistinctMatching(4, "поисковая строка", "оригинальная строка - эталон") &gt; 40 then ...</span></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;">TRetCount = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">packed</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">record</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> lngSubRows: Word;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> lngCountLike: Word;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <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;"> Matching(StrInputA: WideString;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StrInputB: WideString;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">lngLen: Integer): TRetCount;</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;">TempRet: TRetCount;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">PosStrB: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">PosStrA: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StrA: WideString;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StrB: WideString;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StrTempA: WideString;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StrTempB: WideString;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StrA := </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">(StrInputA);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StrB := </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">(StrInputB);</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">for</span><span class="f_CodeExample" style="color: #000000;"> PosStrA := </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(strA) - lngLen + </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;"> StrTempA := System.Copy(strA, PosStrA, lngLen);</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PosStrB := </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;">for</span><span class="f_CodeExample" style="color: #000000;"> PosStrB := </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(strB) - lngLen + </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;"> StrTempB := System.Copy(strB, PosStrB, lngLen);</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;"> SysUtils.AnsiCompareText(StrTempA, StrTempB) = </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;"> Inc(TempRet.lngCountLike);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> break;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Inc(TempRet.lngSubRows);</span></p> <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;">// PosStrA</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Matching.lngCountLike := TempRet.lngCountLike;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Matching.lngSubRows := TempRet.lngSubRows;</span></p> <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;">{ function }</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;"> IndistinctMatching(MaxMatching: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">strInputMatching: WideString;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">strInputStandart: WideString): 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;">gret: TRetCount;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">tret: TRetCount;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">lngCurLen: Integer; </span><span class="f_CodeExample" style="color: #000080;">//текущая длина подстроки</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #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;"> (MaxMatching = </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;">or</span><span class="f_CodeExample" style="color: #000000;"> (Length(strInputMatching) = </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;">or</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> (Length(strInputStandart) = </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> IndistinctMatching := </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;"> 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"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">gret.lngCountLike := </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;">gret.lngSubRows := </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: #000080;">// Цикл прохода по длине сравниваемой фразы</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;"> lngCurLen := </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;"> MaxMatching </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;">//Сравниваем строку A со строкой B</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> tret := Matching(strInputMatching, strInputStandart, lngCurLen);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> gret.lngCountLike := gret.lngCountLike + tret.lngCountLike;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> gret.lngSubRows := gret.lngSubRows + tret.lngSubRows;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//Сравниваем строку B со строкой A</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> tret := Matching(strInputStandart, strInputMatching, lngCurLen);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> gret.lngCountLike := gret.lngCountLike + tret.lngCountLike;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> gret.lngSubRows := gret.lngSubRows + tret.lngSubRows;</span></p> <p class="p_CodeExample"><span 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;"> gret.lngSubRows = </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;"> IndistinctMatching := </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;"> 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"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">IndistinctMatching := Trunc((gret.lngCountLike / gret.lngSubRows) * </span><span class="f_CodeExample" style="color: #800000;">100</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #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> <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;">uses</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Math;</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;"> DoStringMatch(s1, s2: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): Double;</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, iMin, iMax, iSameCount: 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;"> iMax := Max(Length(s1), Length(s2));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> iMin := Min(Length(s1), Length(s2));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> iSameCount := -</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;">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;"> iMax </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;"> i &gt; iMin </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> break;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> s1[i] = s2[i] </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(iSameCount)</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"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> iSameCount &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;"> Result := (iSameCount / iMax) * </span><span class="f_CodeExample" style="color: #800000;">100</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: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">.</span><span class="f_CodeExample" style="color: #800000;">00</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;">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;"> match: Double;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> match := DoStringMatch(</span><span class="f_CodeExample" style="color: #ff0000;">'SwissDelphiCenter'</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">'SwissDelphiCenter.ch'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> ShowMessage(FloatToStr(match) + </span><span class="f_CodeExample" style="color: #ff0000;">' % match.'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Resultat: 85% </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Result : 85% </span></p> <p 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>Автор: Дмитрий Кузан</p> <p> </p> <p>Недавно в поисках информации по интеллектуальным алгоритмам сравнения я нашел такой алгоритм — алгоритм сравнения (совпадения) двух строк, Так как он был написан на VBA, я под свои нужды переписал его на Delphi</p> <p> </p> <p>Уважаемые пользователи проекта DelphiWorld, я думаю данная функция пригодится тем, кто часто пишет функции поиска, особенно когда поиск приблизителен. То есть, например, в БД забито "Иванав Иван" - с ошибкой при наборе, а ищется "Иванов". Так вот, данный алгоритм может вам найти "Иванав" при вводе "Иванов",а также при "Иван Иванов" - даже наоборот с определенной степенью релевантности при сравнении. А используя сравнение в процентном отношении, вы можете производить поиск по неточным данным с более-менее степенью похожести.</p> <p> </p> <p>Еще раз повторяю, алгоритм не мой, я только его портировал на Delphi.</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: #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;">//MaxMatching - максимальная длина подстроки (достаточно 3-4)</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//strInputMatching - сравниваемая строка</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//strInputStandart - строка-образец</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;">// if IndistinctMatching(4, "поисковая строка", "оригинальная строка - эталон") &gt; 40 then ...</span></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;">TRetCount = </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">packed</span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">record</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> lngSubRows: Word;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> lngCountLike: Word;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <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;"> Matching(StrInputA: WideString;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StrInputB: WideString;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">lngLen: Integer): TRetCount;</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;">TempRet: TRetCount;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">PosStrB: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">PosStrA: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StrA: WideString;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StrB: WideString;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StrTempA: WideString;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StrTempB: WideString;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StrA := </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">(StrInputA);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">StrB := </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">(StrInputB);</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">for</span><span class="f_CodeExample" style="color: #000000;"> PosStrA := </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(strA) - lngLen + </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;"> StrTempA := System.Copy(strA, PosStrA, lngLen);</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> PosStrB := </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;">for</span><span class="f_CodeExample" style="color: #000000;"> PosStrB := </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(strB) - lngLen + </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;"> StrTempB := System.Copy(strB, PosStrB, lngLen);</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;"> SysUtils.AnsiCompareText(StrTempA, StrTempB) = </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;"> Inc(TempRet.lngCountLike);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> break;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">end</span><span class="f_CodeExample" style="color: #000000;">;</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Inc(TempRet.lngSubRows);</span></p> <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;">// PosStrA</span></p> <p class="p_CodeExample"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Matching.lngCountLike := TempRet.lngCountLike;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">Matching.lngSubRows := TempRet.lngSubRows;</span></p> <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;">{ function }</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;"> IndistinctMatching(MaxMatching: Integer;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">strInputMatching: WideString;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">strInputStandart: WideString): 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;">gret: TRetCount;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">tret: TRetCount;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">lngCurLen: Integer; </span><span class="f_CodeExample" style="color: #000080;">//текущая длина подстроки</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #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;"> (MaxMatching = </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;">or</span><span class="f_CodeExample" style="color: #000000;"> (Length(strInputMatching) = </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;">or</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> (Length(strInputStandart) = </span><span class="f_CodeExample" style="color: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">) </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> IndistinctMatching := </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;"> 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"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">gret.lngCountLike := </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;">gret.lngSubRows := </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: #000080;">// Цикл прохода по длине сравниваемой фразы</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;"> lngCurLen := </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;"> MaxMatching </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;">//Сравниваем строку A со строкой B</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> tret := Matching(strInputMatching, strInputStandart, lngCurLen);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> gret.lngCountLike := gret.lngCountLike + tret.lngCountLike;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> gret.lngSubRows := gret.lngSubRows + tret.lngSubRows;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">//Сравниваем строку B со строкой A</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> tret := Matching(strInputStandart, strInputMatching, lngCurLen);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> gret.lngCountLike := gret.lngCountLike + tret.lngCountLike;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> gret.lngSubRows := gret.lngSubRows + tret.lngSubRows;</span></p> <p class="p_CodeExample"><span 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;"> gret.lngSubRows = </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;"> IndistinctMatching := </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;"> 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"> </p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;">IndistinctMatching := Trunc((gret.lngCountLike / gret.lngSubRows) * </span><span class="f_CodeExample" style="color: #800000;">100</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #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> <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;">uses</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> Math;</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;"> DoStringMatch(s1, s2: </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">string</span><span class="f_CodeExample" style="color: #000000;">): Double;</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, iMin, iMax, iSameCount: 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;"> iMax := Max(Length(s1), Length(s2));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> iMin := Min(Length(s1), Length(s2));</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> iSameCount := -</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;">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;"> iMax </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;"> i &gt; iMin </span><span class="f_CodeExample" style="color: #008000; font-weight: bold;">then</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> break;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> s1[i] = s2[i] </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(iSameCount)</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"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">if</span><span class="f_CodeExample" style="color: #000000;"> iSameCount &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;"> Result := (iSameCount / iMax) * </span><span class="f_CodeExample" style="color: #800000;">100</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: #800000;">0</span><span class="f_CodeExample" style="color: #000000;">.</span><span class="f_CodeExample" style="color: #800000;">00</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;">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;"> match: Double;</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #008000; font-weight: bold;">begin</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> match := DoStringMatch(</span><span class="f_CodeExample" style="color: #ff0000;">'SwissDelphiCenter'</span><span class="f_CodeExample" style="color: #000000;">, </span><span class="f_CodeExample" style="color: #ff0000;">'SwissDelphiCenter.ch'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000000;"> ShowMessage(FloatToStr(match) + </span><span class="f_CodeExample" style="color: #ff0000;">' % match.'</span><span class="f_CodeExample" style="color: #000000;">);</span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Resultat: 85% </span></p> <p class="p_CodeExample"><span class="f_CodeExample" style="color: #000080;">// Result : 85% </span></p> <p 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>