Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Делфи. Не могу найт ошибку, помогите

Евгения Везель Профи (509), закрыт 9 лет назад
Слова в тексте разделены пробелом.
Подсчитать количество слов, длина которых не превышает 4-х букв. вот что у меня получилось, много гуглила, вроде так должно быть, но в итогк выдает 0.Что не так?

nit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; Label1: TLabel; procedure Work(); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1; MyStr:string; i,count:integer;implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);beginWork();end;
procedure TForm1.Work;beginEdit1.Text:=MyStr;i:=1;count:=0;while pos('',MyStr)>0 do beginif pos('',MyStr)-i<6 thencount:=count+1;i:=pos('',MyStr);MyStr[i]:='0';if i > Length(Mystr)-5 thencount:=count+1;end; label1.Caption:=IntToStr(count);end;end.
Лучший ответ
Gennady Гений (60210) 9 лет назад
Ну, во-первых, с какого вы свойству Text присваиваете значение MyStr (кстати, пустое) , а не наоборот?

А во-вторых, зачем такие сложности?

MyStr := MyStr + ' '; // чтобы не потерять последнее слово
while Pos(' ', MyStr) > 0 do begin
tmpS := Copy(MyStr, 1, Pos(' ', MyStr) - 1); // копируем слово без пробела
if (Length(tmpS) <=4) and (tmpS <> '') then Inc(Count); // подсчитываем слова, удовлетворяющие условию
Delete(MyStr, 1, Pos(' ', MyStr)); // удаляем обработанное члово
end;

Удалять обработанное слово из строки нужно потому, что функция Pos() возвращает позицию ПЕРВОГО вхождения подстроки в строку.
Высший разум (1270989) 9 лет назад
Насчёт Pos - Есть в StrUtils PosEx, он может =)
Gennady Гений (60210) Знаю )
Евгения ВезельПрофи (509) 9 лет назад
спасибо большое, буду знать!
Евгения Везель Профи (509) как то странно, но у меня все равно выдает 0...
Остальные ответы
Alex Гуру (2978) 9 лет назад
можно, пожалуйста, структурировано.
и через pastebin
Похожие вопросы