Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 10.04.2019, 14:55   #1
Enotik_1998
Форумчанин
 
Регистрация: 09.03.2018
Сообщений: 54
Репутация: 10
По умолчанию Работа со строками в 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 в 15:06.
Enotik_1998 вне форума   Ответить с цитированием
Старый 10.04.2019, 15:02   #2
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 14,662
Репутация: 2631
По умолчанию

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

Цитата:
Сообщение от 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, 15:08   #3
Enotik_1998
Форумчанин
 
Регистрация: 09.03.2018
Сообщений: 54
Репутация: 10
По умолчанию

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

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

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

Цитата:
Но и в 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, 11:23   #7
Enotik_1998
Форумчанин
 
Регистрация: 09.03.2018
Сообщений: 54
Репутация: 10
По умолчанию

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

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

Блин, вот делаю всё как у вас, всё равно выбивает ошибку:
Код:
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, 12:04   #9
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 14,662
Репутация: 2631
По умолчанию

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

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


22:28.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.