Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.04.2019, 13:55   #1
Enotik_1998
Пользователь
 
Регистрация: 09.03.2018
Сообщений: 77
По умолчанию Работа со строками в delphi7

Здравствуйте. Нужна помощь с задачей: Создать новый текст, содержащий все слова исходного текста, которые оканчиваются
на ту же букву, что и слово максимальной длины.
У меня delphi что-то ругается на эти строчки:
if s[i] in D then - [Error] Unit1.pas(74): Array type required
if s[i - 1] = max_word[length(max_word)] then - [Error] Unit1.pas(84): Array type required
ListBox1.Items.Add(copy(s, prev + 1, i - prev - 1), ' '); - [Error] Unit1.pas(85): Too many actual parameters
Вот исходный код:
Код:
const
D = [' ', ',', '.'];
procedure TForm1.BitBtn4Click(Sender: TObject);
begin
prev:=0;
for step:=false to true do
for i:=1 to length(s) do
begin
if s[i] in D then
begin
if i - prev > 1 then
begin
if not step then
begin
if i - prev -1 > length(max_word) then
max_word:=copy(s, prev + 1, i - prev - 1);
end
else
if s[i - 1] = max_word[length(max_word)] then
ListBox1.Items.Add(copy(s, prev + 1, i - prev - 1), ' ');
end;
prev:=i;
end;
end;
end;

Последний раз редактировалось Enotik_1998; 10.04.2019 в 14:06.
Enotik_1998 вне форума Ответить с цитированием
Старый 10.04.2019, 14:02   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Где объявления переменных?

Цитата:
Сообщение от Enotik_1998 Посмотреть сообщение
ListBox1.Items.Add(copy(s, prev + 1, i - prev - 1), ' '); - [Error] Unit1.pas(85): Too many actual parameters
http://docs.embarcadero.com/products...rings_Add.html
Код:
function Add(const S: string): Integer; virtual;
Посчитайте сколько параметров принимает и сколько передаете вы.
p51x вне форума Ответить с цитированием
Старый 10.04.2019, 14:08   #3
Enotik_1998
Пользователь
 
Регистрация: 09.03.2018
Сообщений: 77
По умолчанию

Переменные объявляются как глобальные
Enotik_1998 вне форума Ответить с цитированием
Старый 10.04.2019, 14:11   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Мда... а мы то не догались... У вас две ошибки ругаются на несоотвествие типов, а объявления вы не пишите. Сами будете разбираться?
p51x вне форума Ответить с цитированием
Старый 10.04.2019, 14:16   #5
Enotik_1998
Пользователь
 
Регистрация: 09.03.2018
Сообщений: 77
По умолчанию

Всё я исправил, ошибки больше не выдаёт. Но и в ListBox ничего не выводит.
Enotik_1998 вне форума Ответить с цитированием
Старый 10.04.2019, 14:44   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Цитата:
Но и в ListBox ничего не выводит.
Код:
begin
  prev:=0;
  for step:=false to true
//  step:=false;
    for i:=1 to length(s) do begin
      if s[i] in D then begin
        if i - prev > 1 then begin
            if i - prev -1 > length(max_word) then
              max_word:=copy(s, prev + 1, i - prev - 1);
        end;
        prev:=i;
      end;
    end;
?? какое значение ЗДЕСЬ (после этих операций) будет иметь prev ?

//  step:=true;
    for i:=1 to length(s) do begin
      if s[i] in D then begin
        if i - prev > 1 then begin
            if s[i - 1] = max_word[length(max_word)] then
              ListBox1.Items.Add(copy(s, prev + 1, i - prev - 1), ' ');
        end;
        prev:=i;
      end;
    end;
программа — запись алгоритма на языке понятном транслятору
evg_m на форуме Ответить с цитированием
Старый 11.04.2019, 10:23   #7
Enotik_1998
Пользователь
 
Регистрация: 09.03.2018
Сообщений: 77
По умолчанию

Я устал от этого copy, там постоянно выбивает ошибку. Как сделать эту программу без процедур и функций, ну, без copy и других?

Последний раз редактировалось Enotik_1998; 11.04.2019 в 10:26.
Enotik_1998 вне форума Ответить с цитированием
Старый 11.04.2019, 10:39   #8
Enotik_1998
Пользователь
 
Регистрация: 09.03.2018
Сообщений: 77
По умолчанию

Блин, вот делаю всё как у вас, всё равно выбивает ошибку:
Код:
procedure TForm1.BitBtn4Click(Sender: TObject);
begin
prev:=0;
for i:=1 to length(s) do begin
if s[i] in D then begin
if i - prev > 1 then begin
if s[i - 1] = max_word[length(max_word)] then
ListBox1.Items.Add(copy(s, prev + 1, i - prev - 1), ' ');
end;
prev:=i;
end;
end;
end;
ListBox1.Items.Add(copy(s, prev + 1, i - prev - 1), ' '); - [Error] Unit1.pas(76): Too many actual parameters
Enotik_1998 вне форума Ответить с цитированием
Старый 11.04.2019, 11:04   #9
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Я вам выше и ссылку, и прототип приводил. ЕЩЕ РАЗ: у Add ОДИН параметр, ОДИН. У вас
Код:
copy(s, prev + 1, i - prev - 1), ' '
ДВА.
Понимаете разницу между ОДИН и ДВА?
p51x вне форума Ответить с цитированием
Старый 11.04.2019, 11:18   #10
Enotik_1998
Пользователь
 
Регистрация: 09.03.2018
Сообщений: 77
По умолчанию

Я понимаю разницу. Но, если сделать так: ListBox1.Items.Add(copy(s, prev + 1, i - prev - 1)), в ListBox ничего не выводится.

Последний раз редактировалось Enotik_1998; 11.04.2019 в 11:27.
Enotik_1998 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа со строками в delphi7 Enotik_1998 Компоненты Delphi 0 10.04.2019 13:31
Работа со строками в delphi7 Enotik_1998 Компоненты Delphi 2 08.04.2019 11:39
Работа с файлами в Delphi7 Enotik_1998 Компоненты Delphi 2 28.03.2019 12:53
Беда со строками в delphi7 pimple2006 Общие вопросы Delphi 16 02.12.2012 21:58
Работа с матрицами (норма матрицы, работа со строками) Neitrosha Помощь студентам 1 26.11.2010 20:19