Автор Тема: Делфи  (Прочитано 2332 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Астасья

  • Постоялец
  • ***
  • Сообщений: 173
    • Просмотр профиля
Делфи
« : 22 Апреля 2012, 13:52:19 »
Помогите с решение(с делфи у меня не очень)
1.На экране имеется Tedit,Tmemo,кнопка.В Tedit вводится произвольное текстовое предложение.По нажатию на кнопку в Tmemo должны быть выведены построчно все слова,входящие в предложение-по 1 слову в строке
2 На экране два tedit и кнопка.В первый tedit вводим выражения вида число знак число знак....Например 12+5+7-6,знаки только + или -.По нажатию на кнопку нужно вычислить результат и записать его во второй tedit.
3 На экране имеется Tedit,кнопка.В Tedit вводится произвольное текстовое предложение.При нажатии на кнопку нужно преобразовать строку так чтобы каждое слово начиналось с прописной буквы


В первой задаче как-то так!
procedure TForm1.Button1Click(Sender: TObject);
begin
if Edit1.Text<>'' then
Memo1.Clear;
Memo1.Lines.Add(Edit1.Text);
end;
Не получается построчно!!!
« Последнее редактирование: 22 Апреля 2012, 13:55:41 от Астасья »

Оффлайн wital1984

  • Постоялец
  • ***
  • Сообщений: 189
    • Просмотр профиля
Re: Делфи
« Ответ #1 : 24 Апреля 2012, 20:11:51 »
В первой задаче как-то так!
procedure TForm1.Button1Click(Sender: TObject);
begin
if Edit1.Text<>'' then
Memo1.Clear;
Memo1.Lines.Add(Edit1.Text);
end;
Не получается построчно!!!
Конечно не получится -  вы в Memo1 сразу добавляете весь текст из Edit1: Memo1.Lines.Add(Edit1.Text);
Нужно сначала занести его в какую-нибудь текстовую переменную, а потом организовать в цикле выделение отдельных слов из этой переменной. А уже отдельные слова записывать через Memo1.Lines.Add

Оффлайн Астасья

  • Постоялец
  • ***
  • Сообщений: 173
    • Просмотр профиля
Re: Делфи
« Ответ #2 : 24 Апреля 2012, 21:22:34 »
организовать в цикле выделение отдельных слов из этой переменной- это как?

Оффлайн ki

  • Ветеран
  • *****
  • Сообщений: 668
    • Просмотр профиля
Re: Делфи
« Ответ #3 : 25 Апреля 2012, 09:54:09 »
поиск по пробелам, запятым, точкам...
Например, имеете строку s="это строка, наверно"
Соответственно length(s)=19;
в этой строке 3 слова: "это"=s[1]+s[2]+s[3]; "строка"=s[5]+... и т.д.
Т.е. в посимвольном переборе в цикле нужно осуществить конкатенацию и фильтрацию пунктуации и пробелов...

Что-то вроде этого...может есть путь проще, не знаю)

Оффлайн Астасья

  • Постоялец
  • ***
  • Сообщений: 173
    • Просмотр профиля
Re: Делфи
« Ответ #4 : 25 Апреля 2012, 22:54:45 »
procedure TForm1.Button1Click(Sender: TObject);
var s:string;
i:integer;
begin
if Edit1.Text<>'' then
s:= Edit1.Text;
begin
for I := 0 to List.Count - 1 do
begin
if s:=' ' then
Memo1.Lines.Add(s);
writeln;
i:=i+1;
else i:=i+1;
end;
end;
end;


Как то так????Делфи это конечно не моё!!!!Help

Оффлайн ki

  • Ветеран
  • *****
  • Сообщений: 668
    • Просмотр профиля
Re: Делфи
« Ответ #5 : 26 Апреля 2012, 10:26:35 »
Цитировать
for I := 0 to List.Count - 1 do
А почему так? надо ведь по строке цикл делать: 
 for I := 1 to length(s) do
Цитировать
if s:=' ' then
if (s<>' ')or(s<>'.')or(s<>',') then temp:=temp+s
else
begin
  memo1.lines.add(temp);
  temp:='';
end;

Цитировать
writeln;
i:=i+1;
else i:=i+1;
Это не нужно, инкрементация идет в самом цикле, writeln тоже лишнее...

Оффлайн Астасья

  • Постоялец
  • ***
  • Сообщений: 173
    • Просмотр профиля
Re: Делфи
« Ответ #6 : 26 Апреля 2012, 19:33:51 »
всё равно не работает


procedure TForm1.Button1Click(Sender: TObject);
var s,t:string;
i:integer;
begin
if Edit1.Text<>'' then
s:= Edit1.Text;
for I := 1 to length(s) do
begin
if (s<>' ')or(s<>'.')or(s<>',') then
t:=t+s
else
 begin
  memo1.lines.add(t);
  t:='';
end;
end;
end;
end.

Оффлайн wital1984

  • Постоялец
  • ***
  • Сообщений: 189
    • Просмотр профиля
Re: Делфи
« Ответ #7 : 27 Апреля 2012, 01:38:53 »
всё равно не работает
Да потому что в этом фрагменте: if (s<>' ')or(s<>'.')or(s<>',') then должно быть не s, а s [ i ] (s с индексом i без пробелов).
Хотя ki написал правильно, это можно увидеть, если попробовать процитировать его сообщение
Это известный глюк форума.

Оффлайн ki

  • Ветеран
  • *****
  • Сообщений: 668
    • Просмотр профиля
Re: Делфи
« Ответ #8 : 27 Апреля 2012, 10:01:09 »
угу, конечно s...сорри)

Оффлайн Астасья

  • Постоялец
  • ***
  • Сообщений: 173
    • Просмотр профиля
Re: Делфи
« Ответ #9 : 30 Апреля 2012, 20:34:51 »
procedure TForm1.Button1Click(Sender: TObject);
var s,t:string;
i:integer;
begin
if Edit1.Text<>'' then
s:= Edit1.Text;
for I := 1 to length(s) do
begin
if (s<>' ')or(s<>'.')or(s<>',') then
t:=t+s
else
 begin
  memo1.lines.add(t);
  t:='';
end;
end;
end;
end.


ВСЁ равно не работает=(((

Оффлайн wital1984

  • Постоялец
  • ***
  • Сообщений: 189
    • Просмотр профиля
Re: Делфи
« Ответ #10 : 02 Мая 2012, 11:13:22 »
...
ВСЁ равно не работает=(((
условие написано немного неправильно, по нему else никогда не выполнится. лучше написать что-то вроде:
if (s=' ') then
begin
  Memo1.Lines.Add(t);
  t:='';
end
else t:=t+s;

Оффлайн ki

  • Ветеран
  • *****
  • Сообщений: 668
    • Просмотр профиля
Re: Делфи
« Ответ #11 : 02 Мая 2012, 11:49:35 »
Согласен, вместо "or" нужно "and"...

Оффлайн wital1984

  • Постоялец
  • ***
  • Сообщений: 189
    • Просмотр профиля
Re: Делфи
« Ответ #12 : 02 Мая 2012, 16:15:59 »
Согласен, вместо "or" нужно "and"...
можно и так. только один нюанс останется: в тексте обычно после знака препинания пробел стоит, т.е. 2 разделителя подряд. Из-за этого этот код будет вставлять пустые строки в memo. Но с этим тоже бороться несложно: либо дополнительный вложенный if, либо использовать один разделитель - пробел, а из конца строки вырезать запятые, точки и т.п. Или, если случайно будет больше одного пробела  - вообще дополнительный цикл

Оффлайн ki

  • Ветеран
  • *****
  • Сообщений: 668
    • Просмотр профиля
Re: Делфи
« Ответ #13 : 02 Мая 2012, 16:31:48 »
Ок, еще одну проверку перед вставкой в мемо на непустоту временной переменной...

 

Программа в делфи. Вычислить определенный интеграл методом трапеции

Автор Мозг

Ответов: 0
Просмотров: 6521
Последний ответ 15 Сентября 2010, 21:06:25
от Мозг
Сортировка двумерного массива по возрастанию, делфи

Автор Asira

Ответов: 1
Просмотров: 6266
Последний ответ 30 Апреля 2010, 01:39:45
от InfStudent
Делфи(opendialog,listbox)

Автор Астасья

Ответов: 6
Просмотров: 2651
Последний ответ 11 Мая 2012, 12:23:35
от ki
ДЕЛФИ, ВЕКТОРА

Автор Эля_informatichka

Ответов: 1
Просмотров: 3263
Последний ответ 06 Октября 2010, 21:40:20
от InfStudent
Делфи (edit)

Автор Астасья

Ответов: 0
Просмотров: 1782
Последний ответ 08 Мая 2012, 23:16:01
от Астасья