Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2005.09.11;
Скачать: [xml.tar.bz2];

Вниз

Подсчет заглавных букв   Найти похожие ветки 

 
Shamansky   (2005-08-08 17:14) [0]

Мастера подскажите как подсчитать количество заглавных букв в строке?


 
Ega23 ©   (2005-08-08 17:24) [1]


function MyFunc(aStr:String):Integer;
var
i:Integer;
ss:string;
begin
Result:=0;
ss:=ANSIUpperCase(aStr);
for i:=1 to Length(aStr) do
 if aStr[i]=ss[i] then Result:=Result+1;
end;


 
Shamansky   (2005-08-08 17:33) [2]

Спасибо


 
Kolan ©   (2005-08-08 17:40) [3]

procedure TForm1.BitBtn1Click(Sender: TObject);
var
 S: string;
 I: Integer;
 Count: Integer;
begin
 Count := 0;
 S := Edit1.Text;
 for I := 1 to Length(S) do
   if S[I] in ["A".."Z"] then
     Count := Count + 1;
 ShowMessage(IntToStr(Count));
end;


Если русские то множество надо заменить на множество русских букв.
S[I] in ["А".."Я"]


 
Fay ©   (2005-08-08 17:53) [4]

Kolan ©   (08.08.05 17:40) [3]
>> S[I] in ["А".."Я"]
Нет.


 
Kolan ©   (2005-08-08 18:00) [5]

В Edit.Text
Почему Же Нет?
var
 S: string;
 I: Integer;
 Count: Integer;
 Tick: Longint;
begin
 S := Edit1.Text;
 Count := 0;
 Tick := GetTickCount;
 for I := 1 to Length(S) do
   if S[I] in ["À".."ß"] then
     Count := Count + 1;
 Tick := GetTickCount - Tick;
 Edit2.Text := IntToStr(Count) + " " + IntToStr(Tick);
end;


Ответ:
3 0


 
Ega23 ©   (2005-08-08 18:00) [6]

2 Kolan ©   (08.08.05 17:40) [3]

Про язык речи не шло, не так-ли?
И потом, что-то я не уверен про "Я".


 
Kolan ©   (2005-08-08 18:05) [7]

Кстати а как бы скорость замерить.


> Про язык речи не шло, не так-ли?

Так так


> И потом, что-то я не уверен про "Я".

А что тут может быть(интересно...) :)


 
Fay ©   (2005-08-08 18:07) [8]

2 Kolan ©   (08.08.05 18:00) [5]
Проверь с "Ну Ё-МОЁ!"


 
Ega23 ©   (2005-08-08 18:16) [9]

Точно! Не "Я", а "Ё". С "Ё" какие-то проблемы.


 
Kolan ©   (2005-08-08 18:21) [10]

Угу понял.

А так.
procedure TForm1.BitBtn1Click(Sender: TObject);
var
 S: string;
 I: Integer;
 Count: Integer;
 Tick: Longint;
begin
 S := Edit1.Text;
 Count := 0;
 Tick := GetTickCount;
 for I := 1 to Length(S) do
   if S[I] in (["А".."Я", "Ё"]) then
     Count := Count + 1;
 Tick := GetTickCount - Tick;
 Edit2.Text := IntToStr(Count) + " " + IntToStr(Tick);
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
var
 S: string;
 I: Integer;
 Count: Integer;
 Tick: Longint;
begin
 S := Edit1.Text;
 Count := 0;
 Tick := GetTickCount;
 for I := 1 to Length(S) do
   if ((Ord(S[I]) >= 192) and (Ord(S[I]) <= 222)) or (Ord(S[I]) = 168) then
     Count := Count + 1;
 Tick := GetTickCount - Tick;
 Edit2.Text := IntToStr(Count) + " " + IntToStr(Tick);
end;


 
Poirot ©   (2005-08-08 18:27) [11]

Есть замечательная тулза time гнусная помоему вот с ней и запусти:) малентький и шустрый , а потом статистическими методами на основе выборки из 1000 испытаний проверь что быстрее:) а проще посчитай количество инструкций для процессора в каждом из случаев:)


 
begin...end ©   (2005-08-08 18:36) [12]

> Poirot ©   (08.08.05 18:27) [11]

GetTickCount -- тоже нормально, если число итераций цикла увеличить. Ещё лучше -- QueryPerformanceCounter. В обоих случаях желательно повысить приоритет текущего потока (GetCurrentThread -> SetThreadPriority).


 
Amoeba ©   (2005-08-09 11:10) [13]

Правильное решение дано в Ega23 ©   (08.08.05 17:24) [1]


 
Anatoly Podgoretsky ©   (2005-08-09 11:52) [14]

for I := 1 to Length(S) do
  if IsCharUpper(S[I]) then Count := Count + 1;



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2005.09.11;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.012 c
3-1122897204
Ольга
2005-08-01 15:53
2005.09.11
Формирование запроса к таблице с ненормальной датой


10-1102078432
Dmitriy O.
2004-12-03 15:53
2005.09.11
Как с помощью TExcelApplication работать с Sheets ??


3-1122629751
Сергей Н.
2005-07-29 13:35
2005.09.11
Type mismatch for field


1-1124742231
Phantomouse
2005-08-23 00:23
2005.09.11
TWebBrowser и Видео


3-1122975375
surkis
2005-08-02 13:36
2005.09.11
DBGRID.MultiSelect





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский