| 
| 
 | Вопрос # 4 884/ вопрос решён / | 
 |  Здравствуйте, уважаемые эксперты! Как сделать поиск по тексту чтобы при этом не учитывался регистр букв? 
|  |   Вопрос задал: eclipse (статус: Посетитель)Вопрос отправлен: 5 января 2011, 15:22
 Состояние вопроса: решён, ответов: 1.
 |  Ответ #1. Отвечает эксперт: min@y™ Ну, для начала, ищешь:
 function PosIgnoreCase(const Substr, S: string): Integer;
begin
  Result:= Pos(UpperCase(Substr), UpperCase(S));
end;Затем копируешь функцией Copy(), где индекс - результат функции PosIgnoreCase(). Написать, как ею пользоваться, или сам знаешь? 
|  | Ответ отправил: min@y™ (статус: Доктор наук)Время отправки: 5 января 2011, 16:33
 Оценка за ответ: 5
 Комментарий к оценке: я так и знал |  
 Мини-форум вопросаВсего сообщений: 8; последнее сообщение — 5 января 2011, 19:17; участников в обсуждении: 3. 
|   | Ерёмин А.А. (статус: *Администратор), 5 января 2011, 15:28 [#1]:Привести обе строки к одному регистру и потом искать. |  
|   | eclipse (статус: Посетитель), 5 января 2011, 15:31 [#2]:Блин немного не так задал вопрос... Как перевести то я знаю UpperCase() или LowerCase() ... а вот как найти в тексте нужную строку и скопировать без изменения регистра букв? |  
|   | eclipse (статус: Посетитель), 5 января 2011, 16:52 [#3]:Я примерно так и предполагал, но думал мож есть какая функция. |  5 января 2011, 16:53: Статус вопроса изменён на решённый (изменил автор вопроса — eclipse): решён 5 января 2011, 17:07: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Алгоритмы, преобразования модератором Ерёмин А.А. 
|   | eclipse (статус: Посетитель), 5 января 2011, 18:17 [#4]:В бщем немного поколдовал и вот так получилось: 
 procedure TForm1.CopyCase(NeededString, OldString, SearchString: string);
 var ss, ss2, ss3: string;
 i, x, positia, positia2: Integer;
 function IsLowerCase(Ch: Char): boolean;
 begin
 Result:=Ch=AnsiLowerCase(Ch);
 end;
 begin
 ss:= SearchString;
 ss2:= Copy(ss, Pos(OldString, LowerCase(ss)), Length(OldString));
 if Length(NeededString) <> Length(OldString) then
 ss2:= Copy(ss2, 0, Length(ss2) - Length(NeededString));
 ss3:= NeededString;
 ShowMessage(ss2);
 for x:=0 to Length(ss2) do
 if IsLowerCase(ss2[x]) then
 ss3[x]:=ansilowerCase(ss3[x])[1]
 else
 ss3[x]:=ansiUpperCase(ss3[x])[1];
 ShowMessage(ss3);
 ss:= Copy(ss, 0, Pos(OldString, LowerCase(ss))-1) + ss3 + Copy(ss, Pos(OldString, LowerCase(ss)) + 10, MaxInt);
 ShowMessage(ss);
 end;
 
 Ну тут, как говорится, тока приготовилось... есть лишние моменты.
 |  
|   | min@y™ (статус: Доктор наук), 5 января 2011, 18:55 [#5]:Ёпрст! Ды шо ж вы все лепите код без форматирования, а??!!11 Ну вот как его читать?! Шож за матьтвою? Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | min@y™ (статус: Доктор наук), 5 января 2011, 18:58 [#6]:Особенно прикалывают индивиды, вываливающие целые полотенца кода без форматирования и (тем более) комментариев с просьбой найти ошибку. ЩАС!!! ЩАС ВСЁ БРОШУ И БУДУ РАСШИФРОВЫВАТЬ! Ога... Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | eclipse (статус: Посетитель), 5 января 2011, 19:06 [#7]:ЫЫЫЫЫЫ Да ладно ты min@y! я так... чисто то что получилось метолом тыка кинул... написал же... а потом всё приведу в человеческий вид. |  
|   | min@y™ (статус: Доктор наук), 5 января 2011, 19:17 [#8]:Вот приведи сначала в Ч.В., а потом вываливай. И не надо коверкать мой ник!
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |