AnsiCompareText — Функция Delphi

Delphi 2006. Справочное пособие: Язык Delphi, классы, функции Win32 и .NET. — Архангельский А.Я.

Сравнение строк осуществляется по символам, начиная с первого. Если очередные символы не равны друг другу, то строка, в которой символ больше, считается больше другой строки и функция возвращает соответствующее значение. Заглавные буквы (символы, набранные в верхнем регистре) считаются больше прописных (набранных в нижнем регистре). Сравнение символов кириллицы производится в соответствии с русским алфавитом. Считается, что латинские символы меньше символов кириллицы, символы цифр меньше символов букв, символы пунктуации (включая пробел) меньше символов цифр. Если в процессе сравнения оказывается, что в одной строке символы закончились, а в другой еще имеются, строка с меньшим числом символов считается меньшей.

Функция применима к русским текстам, в то время, как аналогичная функция CompareStr может на русских текстах давать сбои.

Следующие операторы обеспечивают различные действия (обозначены многоточиями) в зависимости от сравнения текстов в окнах Editl и Edit2.

AnsiCompareText — Функция Delphi

Строки в Delphi состоят из одоного (тип ShortString ) или двух байтов (тип AnsiString, WideString ), содержащих указание количества символов в строке, и последовательности символов. Таким образом ShortString максимально может содержать до 255 символов и занимать память 2 байта ..256 байт, а AnsiString или WideString — максимально могут содержать примерно 2 x 10 30 символов и занимать память 4 байта .. 2 Гбайта.

В типе AnsiString символы кодируются в коде ANSI, а в типе WideString — в коде Unicode.

Общим типом является тип String , который может соответствовать как типу ShortString , так и типу AnsiString . Это определяется директивой компилятора $H . По умолчанию используется <$H+>, и тип String равен типу AnsiString .

Кроме того имеется тип PChar , представляющий так называемую строку с завершающим нулем. Строки с завершающим нулем не содержат байтов длины. В отличие от обычных строк они состоят из последовательности ненулевых символов, за которым следует символ NULL (#0). Никаких ограничений на длину строк с завершающим нулем не накладывается. Фактически он указывает на символ

Расширенный синтаксис позволяет ставить в соответствие строкам с завершающим нулем символьный массив типа

где X — положительное число типа Integer , определяющее количество символов в строке, не считая завершающего символа с кодом 0. В отличие от типа String , символ с индексом 0 здесь является первым символом строки, а последний символ с индексом X — завершающим символом с кодом 0. (см. Функции работы со строками с завершающим нулем)

Список литературы:

  1. Гофман В.Э., Хомоненко А.Д. Delphi 6. — СПб. БХВ-Петербург, 2002. — 1152 с.: ил.
  2. Турбо Паскаль 7.0 — К. Торгово-издательское бюро BHV, 1996 — 448 с.: ил.
  3. Delphi7 Help

» AnsiCompareText

Вот столкнулся с проблемой на одном из компьютеров клиента:

AnsiCompareText( AnsiUpperCase(‘Штульп’), AnsiUpperCase(‘ШТУЛЬП’)) дает 0 (т.е. верно работает)
AnsiCompareText( ‘Штульп’, ‘ШТУЛЬП’) дает -1

Какие у кого будут идеи? Кроме как везде менять в коде AnsiCompareText на свою функцию

Если я заглядываю в своей xe3 внутрь AnsiCompareText, я вижу там:

Код: function AnsiCompareText(const S1, S2: string):
begin
Result := CompareString(LOCALE_USER_DEFAULT, NORM_IGNORECASE, PChar(S1),
Length(S1), PChar(S2), Length(S2)) — CSTR_EQUAL;
end;

Может быть у вас есть ещё одна AnsiCompareText, не из System.SysUtils?
Чему равно LOCALE_USER_DEFAULT?

Тоже так думал. Но все стандартно, у меня работает как положено, у клиента — нет.

Самое интересное — что проблема именно в слове «Штульп». Другие русские слова оно сравнивает нормально и результат ожидаемый. Какой-то глюк именно в системе, нигде больше такого не наблюдаю

Код:
Function vsSameText(s1, s2: string): boolean;
begin

result := AnsiCompareStr(AnsiUpperCase(s1), AnsiUpperCase(s2)) = 0;

NickNNN, а какая версия Windows у клиента и какая именно активная локаль?

Чтобы проверил я при подобной проблеме:
1. KDPo > 2. Возможно из за иной локализации, чем русская, какая то из букв может неверно сравниваться, простым кодом это можно отловить:

Код:
s1 := ‘Штульп’;
s2 := ‘ШТУЛЬП’;
for I := 1 to Length(s1) do
if AnsiCompareText(s1[I], s2[I]) <> 0 then
ShowMessage(‘ неверно сравнивается с ‘);

Тест в итоге проводился именно с константами.
AnsiCompareText( ‘Штульп’, ‘ШТУЛЬП’);
Функция возвращала -1.

Какая у клиента локаль узнаю позже. Стоит Windows Server 2008 русский

А почему тогда AnsiCompareStr( AnsiUpperCase(‘Штульп’), AnsiUpperCase(‘ШТУЛЬП’)) — работает?
Или AnsiCompareStr( AnsiUpperCase(‘Штульп’), AnsiUpperCase(‘ШТУЛЬП’)) <> AnsiCompareText( ‘Штульп’, ‘ШТУЛЬП’) ?

Похоже, ne_viens что-то знает про мягкий знак в украинской локали.

Или AnsiCompareStr( AnsiUpperCase(‘Штульп’), AnsiUpperCase(‘ШТУЛЬП’)) <> AnsiCompareText( ‘Штульп’, ‘ШТУЛЬП’)

Конечно, не равны.
В первом случае вы сравниваете ‘Ь’ и ‘Ь’
Во втором — ‘ь’ и ‘Ь’, и всё упирается в реализацию механизма сравнения без учёта регистра.

В любом случае, код, который предлагает asutp2 может прояснить причины.
Выполните его у клиента, глядишь, и мир станет понятнее.

Конечно, не равны.
В первом случае вы сравниваете ‘Ь’ и ‘Ь’
Во втором — ‘ь’ и ‘Ь’, и всё упирается в реализацию механизма сравнения без учёта регистра.

Тогда AnsiUpperCase(‘ь’) и AnsiUpperCase(‘Ь’) должны были давать разный результат. В данном случае имеет место именно глюк, а не особенность

Это из-за глюка в CompareStringW();
Все выше названные функции являются её производными.
Причём глюк этот наблюдается только в Win7 и Srv2008R2,
в XP, Win8, Win10, Srv2012R2 Ь и ь одинаковые при NORM_IGNORECASE в UA локали.

Спасибо, так и есть.

в потолке открылся люк,
не пугайся — это глюк
(с) колыбельная экипажа подводной лодки

Глюк, я твой отец.
(с) Билл Вейдер

который является правильным методом сравнения текста для международной заявки . AnsiCompareText или CompareText?

Я использую Delphi 2009, чтобы написать приложение, которое использует базу данных Access.

Я заметил , что MS Access’ ORDER BY , кажется, сортировка международных наборов символов , как AnsiCompareText в то время как на протяжении всего моего приложения, я использую SysUtils.CompareText .

Какой правильный вызов я должен использовать для сравнения?

Примечание: Я использую США Английский как мой локали.

К сожалению, я не так много знаю об этом. Есть много веб-сайтов, в которых обсуждаются темы, связанные в длину, но я не видел, обсуждение которых является наиболее подходящим.

CompareText делает ASCII Comparision в то время как AnsiCompareText использует кодовую ANSI (или в Delphi 2009+ Юникод таблицу) для сравнения символов. Так CompareText работает только если у вас есть простой текст на английском языке.

Мне кажется, что правильное сравнение является тот, который дает те же результаты, как базы данных, если только ради консистенция в. Используйте AnsiCompareText и тогда вам не придется беспокоиться о несовпадающих результатов.

AnsiCompareText — Функция Delphi

Thunderbird 3 is really, really, REALLY slow
Hi Everyone, I’m using 3.04 on Vista 32 with Lightening 1.0b1 Forgive me if this has been asked and answered, perhaps someone would be kind enough to point me to a solution. What’s Happening; Opening a message into a new window OR displaying a new message in the preview pane (after clicking on it or deleting the one above it) takes 3-10 seconds. This is a relatively recent problem. I keep the inbox small, a dozen messages or so, the rest are filed in folders. I compact daily. I have a dozen or so POP3 accounts I poll at the same time, never was a problem before. W.

March upgrade is slow slow slow, really slow. bad bad bad. how do I undo it?
Name: mk Product: Firefox Summary: March upgrade is slow slow slow, really slow. bad bad bad. how do I undo it? Comments: bad bad bad slow slow slow Browser Details: Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13 From URL: http://hendrix.mozilla.org/ .

TB3 Really, Really (Really) slow at initialization, and NO feedback
Windows XP, SP3, Ever since TB3, starting up Thunderbird shows the hourglass very briefly. then I have time to go get coffee. But I wait and wait, and wonder if it aborted. so I click it again. and wait, then I end up with TWO thunderbirds. This AM it was bad enough that I ended up with THREE Thunderbirds eating my lunch. If I launch the task list to see if Thunderbird has a process running, it takes so long for the task list to com up, Thunderbird beats it. It sure would be nice to have an hourglass or some sort of feedback to let me know it’s is starting. newbie O.

Slow Really slow load
Name: Doug Email: dougatfiredivdotcom Product: Firefox Summary: Slow Really slow load Comments: The latest browser update is even slower than the last. Not complaining just sayin. Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2) Gecko/20100105 Firefox/3.6 GTBDFff GTB7.0 (.NET CLR 3.5.30729) Browser Details: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2) Gecko/20100105 Firefox/3.6 GTBDFff GTB7.0 (.NET CLR 3.5.30729) From URL: http://hendrix.mozilla.org/ Note to readers: Hendrix gives no expectation of a response to this feedback but if you wish t.

Slow slow slow
Name: Product: Firefox Release Candidate Summary: Slow slow slow Comments: Firefox has gotten so slow as of late it’s incredible. I’ve had switch back over to safari for some tasks just so I can say. look something up on IMDb. I still love you firefox! Browser Details: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.2b5) Gecko/20091204 Firefox/3.6b5 From URL: http://hendrix.mozilla.org/ Note to readers: Hendrix gives no expectation of a response to this feedback but if you wish to provide one you must BCC (not CC) the sender for them to see it.

SLOW SLOW SLOW
Name: Tom Horstman Email: th577atyahoodotcom Product: Firefox Summary: SLOW SLOW SLOW Comments: I have been a user for 2-3 years. It seams that each «new» version gets slower and slower to load the pages. The latest is the slowest. Just some feed back to think about. MS Explorer is now much faster than Firefox. Browser Details: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3 .

Slow slow very slow
Hi I have updated my opensuse 11.2 to 11.3. i use it on HP Laptop pavillion when the PC boot, i wait at least 5 min before to get kdm screen login i have look at the boot text console, and saw opensuse is block on line sm_notify » «idmapd» any idea ? i don’t think is a nfs problem but ? regards — Enthalpie ———————————————————————— What is the output of: Code: ——————— rpm -qa | grep courier-imap ——————— and Code: ——————— .

Web Services Really Slow on One Box
Currently, out of three identical machines, all running the same web service locally, one of them runs much slow than the others. That one machine runs every web service very slowly. Does anyone have any idea what would cause this? Identical machines means, all the 3 machines have equal RAM available? and the one which is running slow has any other extra processers are running. If you are accessing the WS out side from that machine, how about network speed! Is that machine is running with different network connection speed. I would think all these matters, otherwise, I could not .

slow slow slow
Name: Alex Fitzsimmons Email: monkeyboyfactoryatnetscapedotnet Product: Firefox Summary: slow slow slow Comments: Since the last batch of updates were released (2007) all my Mozilla software has started to experience painful opening procedures. What did you guys do? These programs now take forever to open. Sometimes it is more effective to shut it down and use the 2nd attempt to open the software. Mozilla is the ONLY program that has developed this problem. I am disappointed because it has driven my girlfriend (A Mac using Video/Visual artist) to go back to using IE. Now tha.

slow, slow, slow.
Name: Phil Mishler Email: pmish20atgmaildotcom Product: Firefox Release Candidate Summary: slow, slow, slow. Comments: Just installed Firefox 3.6 beta 5. Three times I closed it out and reloaded. Each time it took 2 min. 15 sec. to load. Chrome takes 2 seconds. Guess which I will use. Browser Details: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2b5) Gecko/20091204 Firefox/3.6b5 (.NET CLR 3.5.30729) From URL: http://hendrix.mozilla.org/ Note to readers: Hendrix gives no expectation of a response to this feedback but if you wish to provide one you must BCC (.

Slow, Slow, Slow.
For some unknown reason, Thunderbird is running as slow as molasses=92. Is there anything that can be done to speed the emailer up?? Thank You.. On 05/07/2011 10:26 AM, Navy wrote: > For some unknown reason, Thunderbird is running as slow as > molasses�. Is there anything that can be done to speed the emailer > up?? > > Thank You.. > This could be related to your other problem so take it one thing at a time. Under Help menu, open troubleshooting information and paste it to another post here. Might show something (BTW, while there, Opening Containing Fo.

Slow. slow. slow
What could be the cause to slow down the Netware server. Any command type on the console it takes quite sometime to execute. Sometime take couple of minutes. I had unload all the services & modules. I had run the RAID check consistency & vrepair, but no help. The server is installed with NW5.1 SP4 & running BM3.5 sp3 but i had unload the BM modules. William C. wrote: > What could be the cause to slow down the Netware server. > Any command type on the console it takes quite sometime to execute. Sometime > take couple of minutes. I had unload all the .

slow. slow. slow
Name: Jack Inyart Email: jackatmacinyartdotcom Product: Firefox Summary: slow. slow. slow Comments: I recently downloaded and installed FireFox 3. I am so very disapppointed in the product, in contrast to my previous experiences with FF2. Firefox 3 is so slow to load any page that I am seriously considering returning to either Internet Explorer or, if possible, removing FF3 and returning to FF2 if that would be possible. I have been running comparisons on «time to load» between FF3 and IE 7 and the IE 7 loads pages in about 1/10 to 1/5 the time that .

AnsiCompareText — Функция Delphi

Интересует такой вопрос — как нужно правильно сравнивать между собой на равенство строки string ?

Я обычно сравниваю по старинке как S1 = S2 , иногда привожу к одному регистру через LowerCase .

Но заметил что в исходникак VCL строки часто сравниваются не с = , а спомощью функций CompareStr , AnsiCompareStr , AnsiCompareText и подобных.

Так чем же грозит сравнивание S1 = S2 и как правильно сравнивать строки ?

AnsiCompareStr сравнивает с учетом локали. CompareStr может не работать на национальных алфавитах


> как правильно сравнивать строки ?

S1 = S2

все остальное имеет отношение к сравнению текста, ибо строка это тип переменной

Если только на равенство и без учета тек.локали, то вариант S1=S2 вполне достаточен.

CompareStr — регистрочувствительное сравнение на меньше/равно/больше без учета тек.локали

CompareText — регистронечувствительное сравнение на меньше/равно/больше без учета тек.локали

AnsiCompareStr — регистрочувствительное сравнение на меньше/равно/больше с учетом тек.локали

AnsiCompareText — регистронечувствительное сравнение на меньше/равно/больше с учетом тек.локали.

Что «правильней» — это решать тебе в каждом конкретном случае.

«»ABC и «ABC » — это разные или одинаковые строки?

Т.е. если мне нужно сравнивать на посимвольное равенство — то метод S1 = S2 вполне рабочий ?

Просто прочитал статью http://www.delphikingdom.com/asp/viewitem.asp?catalog >поразился множеству вариантов сравнения, и стали меня одолевать смутные сомнения, что я чегото неправильно делаю.

И еще смутило то, что для CompareStr используется функция, написанная на ассемблере, но уже для AnsiCompareStr — функция WinAPI.


> Anatoly Podgoretsky © (08.07.09 11:45) [4]
> «»ABC и «ABC » — это разные или одинаковые строки?

Если набранные только латиницей или только кирилицей — то одинаковые. В чём фокус ?


> Т.е. если мне нужно сравнивать на посимвольное равенство
> — то метод S1 = S2 вполне рабочий ?

а в чем сомнения? конечно

> И еще смутило то, что для CompareStr используется функция,
> написанная на ассемблере, но уже для AnsiCompareStr — функция
> WinAPI

а чего смущаться? CompareString — она как раз с учетом локали может сравнивать

Фокуса нет, здесь нужен еще и TRIM кроме регистронезависимого сравнения.

Вот для примера кусок кода:

const
PARAM_Username = «user_name»;
PARAM_Password = «password»;

function GetParamValue(Params: TStrings; const ParamName: string; Erase: boolean = false): string;
var
i: integer;
begin
result := «»;
for i := Params.Count -1 downto 0 do
// а можно написать и вот так
// if Params.Names[i] = ParamName
if 0 = AnsiCompareText(Params.Names[i], ParamName)
then begin
result := Params.ValueFromIndex[i];
if Erase
then Params.Delete(i);
break;
end;
end;

Понимаю теперь — что зря я втулил AnsiCompareText — достаточно было и простого сравнения :)

> достаточно было и простого сравнения

достаточно было и Params.IndexOfName )

а нафига Erase при этом — я не понимаю, функция должна возвращать значения, а удалять — отдельная процедура(если так хочется удалить из параметров)

> Просто прочитал статью
> http://www.delphikingdom.com/asp/viewitem.asp?catalog >> поразился множеству вариантов сравнения

Странно. «Compare» в тексте статьи встречается всего 1 раз :)

Это связано с тем, что функция AnsiPos использует функции StrPos и CompareString, предназначенные для работы со строками PChar .


> clickmaker © (08.07.09 12:48) [11]
> достаточно было и Params.IndexOfName )


> Игорь Шевченко © (08.07.09 20:54) [12]
> Result := Params.Values[ParamName]
>
> а нафига — я не понимаю, функция должна возвращать значения, а удалять — отдельная процедура(если так хочется удалить из параметров)

В данном случае можно уже писать и так — раньше там было больше операторов, имменя для этого мне нужен был обратный цикл.

Erase при этом нафига — для того чтобы отделить обработанные параметры от необработанных. Например нужно просто узнать из параметров имя пользователя — для этого достаточно и Values[ParamName], но иногда имя пользователя нужно занести в одно поле — а остальные параметры в мемо.

AnsiCompareText Routine

Unit Edit

Description Edit

Definition (Delphi 6):

Definition (Delphi 2009):

Definition (Delphi 2010, XE):

Technical Comments Edit

(Known issues / Documentation clarifications / Things to be aware of)

Examples Edit

(Please provide links to articles/source code that show how to use this item.)

See Also Edit

(Please provide links to items specifically related to this item.)

User Comments/Tips Edit

(Please leave your name with your comment.)

AnsiCompareText — Функция Delphi

AnsiCompareText сравнивает строки без учета регистра:

Ins, совсем забыл

03.01.2008, 19:08 #5
Функция AnsiCompareStr сравнивает String1 и String2 на равенство, игнорируя регистр.

Это современная Региональная безопасная форма CompareStr.

Все Ansi команды поддержкой многобайтовые символы.

Она возвращает следующие значения:

String1: отрицательное число
String1 = String2: 0
String1 > String2: положительное число

DelphiComponent.ru — бесплатно видеоуроки по Delphi, статьи, исходники

Процедуры и функции для работы со строками в Delphi

Строки очень часто используются в программах — хотя бы для вывода раз­личных сообщений пользователю, чтобы он не заблудился в интерфейсе. Ну, для таких простых случаев вполне достаточно тех сведений, которые вы получили на уроке, посвящённом строкам. Если же у вас более серьёз­ные намерения и вы хотите манипулировать строками по своему желанию (например, вы пишете какую-нибудь словесную игру вроде Балды или Ло­гогрифов), то в Delphi найдётся всё нужное и для таких любителей словес­ности и жонглирования приставками и суффиксами.

Для определённости в примерах будем считать, что

Когда мы изучали простые операции со строками, то рассматривали кон­катенацию строк с помощью оператора +. Но объединить две строки можно и функцией

которая возвращает «сумму» двух строк:

Для сравнения строк вместо операторов отношения можно использовать следующие функции.

Обе функции сравнивают строки s1 и s2. Первая — с учётом регистра букв (прописные/строчные), вторая — без учёта.

Эти функции возвращают значение

0, если строки равны;

Их нельзя применять к русским словам, поэтому лучше пользоваться функциями:

которые одинаково хорошо работают и с латинскими, и с русскими буква­ми.

Теперь перейдём к процедурам и функциям, которые выполняют со сло­вами более сложные действия.

Довольно часто нужно преобразовать все буквы слова либо к верхнему, либо к нижнему регистру. Если слова состоят только из латинских букв, то можно использовать функции:

Первая переводит слова в нижний регистр (строчные буквы), вторая — в верхний (прописные буквы). Для русских ( и для латинских ) букв годятся функции :

Функция AnsiLowerCase (S1) вернёт строку «смородина».

Функция AnsiUpperCase (’смородина’) вернёт строку «СМОРОДИНА».

Процедуры вывода сообщений на экран (обычно в метку или список) тре­буют в качестве параметра строку, а что делать, если нужно предъявить пользователю число? — Преобразовать число в строку! Это можно сде­лать и самостоятельно, но гораздо удобнее воспользоваться встроенными функциями Delphi.

Чаще других в программах применяют функции для преобразования це­лых чисел в строку:

Например, IntToStr (1234) вернёт строку «1234».

Для действительных чисел тоже имеется подобная функция

Если вы хотите узнать, как десятичное число записывается в 16-ричной системе счисления, примените к нему функции:

Например, IntToHex (12 34, 8) вернёт строку «000004D2», а IntToHex (2009, 4) — строку «07D9».

Второй параметр — Digits — задаёт число цифр в 16-ричном числе.

При вводе данных из файла или некоторых компонентов вместо числа мы получаем строку символов. И хотя она состоит из цифр, это не число. В этом случае поможет функция

Причём строка S может содержать не только десятичное, но и 16-ричное число.

Например, функции StrToInt(’$07D9’) и StrToInt(’2009’) вернут одно и то же число 2009.

Однако эта функция «опасна»: если в строке обнаружится хотя бы один неверный символ, возникнет ошибка. Если у вас есть обоснованные со­мнения в правильности строки, лучше обратиться к надёжной функции

Она возвращает TRUE, если строка преобразована в число без ошибок, и FALSE, если с ошибками. Переменная Value (в нашем примере i) хранит число.

В примере строка ‘$07D9s’ содержит неверный символ «s», поэтому функ­ция вернёт FALSE и строку печатать не нужно (на самом деле значение переменной i будет равно 2009, так как функция успеет конвертировать первые символы строки — до первой «нецифры»).

Так же можно использовать и процедуру:

V — переменная целого или действительного типа.

Code — переменная целого типа, в которой возвращается номер ошибочно­го символа в строке. Если таких символов нет, то значение этой перемен­ной будет равно нулю.

В результате выполнения этого примера будет напечатано число 2009.

Этот код также напечатает число 2009, но значение переменной i будет равно не нулю, как в первом случае, а 6, так как шестой символ строки не является 16-ричной цифрой.

Аналогичные функции для вещественных чисел:

В начале и/или конце строки могут присутствовать ненужные пробелы. От них легко избавиться , применив функции

Первая удаляет начальные пробелы, вторая — конечные, третья — и те, и другие. Эти функции возвращают новую строку — уже без пробелов.

Узнать длину строки (число символов в ней) можно с помощью функции

Например , Length (S1) вернёт 9, а Length(S2) — 7.

Ну, а теперь — самые интересные процедуры и функции!

Удаляем часть строки S от символа номер Index:

Здесь Count — число удаляемых символов.

Например, после выполнения процедуры:

строка si будет иметь значение «РОДИНА».

А после процедуры delete(s2,5,3); строка s2 будет урезана до «ПАРА».

Если значение переменной Index меньше единицы или больше длины строки, то строка останется без изменений. Ничего не слу­чится со строкой и если Count меньше единицы.

Если же Count больше, чем число символов в строке, начиная с In­dex, то будут удалены все символы до конца строки.

Процедура Insert действует противоположно — она вставляет подстроку Substr в строку Dest после символа номер Index:

Например, после выполнения процедуры insert (’З’, s1,6); строка s1 превратится в смешное слово «СМОРОЗДИНА».

А процедура insert (’КА’, s2,8); позволит нам насладиться неологиз­неологиз­мом «ПАРАШЮТКА».

Если же мы не хотим портить исходную строку, как это делает процедура Delete, то можем создать новую строку, вырезав из любой строки нужный нам кусок:

Например, строка s примет значение «ПАРА» после выполнения функции s:=copy(s2,1,4);

Обратите внимание: чтобы получить то же самое слово, что и в примере с delete(s2,5,3);, мы указали другие значение параметров в вызове функции!

Функция copy (s1,4,9) вернёт в переменную s слово «РОДИНА».

И последняя функция находит позицию подстроки substr в строке str. function Pos(const substr: string; const str: string): Integer;

Если в строке искомая подстрока встречается несколько раз, то первый вызов функции Pos вернёт позицию первого вхождения, после чего поиск нужно продолжить со следующей позиции. Например, в слове ФЕЛЬДФЕБЕЛЬ так можно найти обе «ели».

Если же подстроки в строке нет, то вернётся безнадёжный ноль!

AnsiCompareText

Soyez le premier à donner votre avis sur cette source.

Vue 2 095 fois — Téléchargée 672 fois

Description

function AnsiCompareText(const S1, S2: string; MaxLength: Integer = 0): Integer;
AnsiCompareText compare S1 et S2, sans tenir compte des différences majuscules/minuscules.
ET SANS TENIR COMPTE DES ACCENTS.
L’opération de comparaison est contrôlée par le pilote de langue actuellement installé.
AnsiCompareText renvoie une valeur inférieure à 0 si S1 S2 et renvoie 0 si S1 = S2.
MaxLength définit éventuellement un champ de test à partir de la position [1]

ChoixPilote permet de sélectionner 3 Pilotes:
Tenir compte MAJ/Min
Sans tenir compte MAJ/min
Sans tenir compte MAJ/min et accentuation
modification le 25III2020
une dernière modification ?
Un exemple d’utilisation (DicoFrancais.dpr)

modif : ajout de AnsiPos qui utilise avec AnsiCompareText le même pilote (18IX2020)
ajout de AnsiPosDansMot indique si la recherche représente une partie d’un mot

Илон Маск рекомендует:  Шаблон сайта черного тона HTML, CSS, 1 страница
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL