Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/18: Рейтинг темы: голосов - 18, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 23.09.2011
Сообщений: 100
1

Конструкция If In для массивов типа string

07.06.2013, 23:47. Показов 3483. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
у меня всего один вопрос, можно ли писать
Delphi
1
if s in ar1 then inc(i)
если s - string'овая переменная, а ar1 - массив переменных типа string?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.06.2013, 23:47
Ответы с готовыми решениями:

Создание массива массивов типа string
Здравствуйте господа и дамы! Помогите пожалуйста, застрял на этом.... В общем, ситуация такова:...

Присвоение объекту типа string рандомный элемент из массива типа string
Добрый вечер, дорогие форумчане. Я столкнулся с проблемой. Как присвоить объекту типа string...

Как исправить E0144 значение типа "System::String ^" нельзя использовать для инициализации сущности типа
Как исправить E0144 значение типа "System::String ^" нельзя использовать для инициализации сущности...

Open Watcom нет перегрузки для оператора ввода для типа std::string
Решил использовать компилятор Open Watcom C++ и в результате не компилируется проект. Проект...

9
angstrom
08.06.2013, 00:09 2
Нельзя.
0 / 0 / 1
Регистрация: 23.09.2011
Сообщений: 100
08.06.2013, 01:45  [ТС] 3
а вот так писать можно?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
function Rav(s:string; as1:array of string):boolean;
var i:integer;
 begin
  for i:=0 to (length(as1)-1) do
   begin
    if as1[i]=s then
     begin
      result:=true;
      exit;
     end
    else result:=false;
   end;
 end;
Просто мне нужно если проверить, совпадает ли хотя бы один элемент в данном массиве с данной строкой
0
angstrom
08.06.2013, 02:28 4
Разве проверить нельзя?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function Rav(s : String; as1 : array of String) : Boolean;
var
  I : Integer;
begin
  Result := False;
  for I := 0 to High(as1) do // или for I := 0 to Length(as1) - 1 do
  begin
    if as1[I] = s then
    begin
      Result := True;
      Exit;
    end;
  end;
end;
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
08.06.2013, 02:44 5
Рейна, для того чтобы проверить, присутствует ли строка в массиве строк, придумали StrUtils.MatchText (без учета регистра) и MatchStr (с учетом регистра), не надо переписывать эти функции вручную...
1
0 / 0 / 1
Регистрация: 23.09.2011
Сообщений: 100
08.06.2013, 03:10  [ТС] 6
UI, ух ты! спасибо, я просто не знала про эти функции.

Добавлено через 3 минуты
людииии, у меня возникла необычная проблема - делфи не дает создать обработчик нажатия кнопки, не может найти метода реализации пишет, вот так "cannot find implementation of method button55click". Это как бы тонкий намек на то что 55я кнопка это уже перебор?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
08.06.2013, 03:26 7
Нормально это, 55-я кнопка, бывало и больше. Гораздо больше... Просто у тебя где-то "переплелись" 2 метода, один залез внутрь другого, так бывает, скажем:

Delphi
1
2
3
4
5
6
7
8
9
pprocedure TForm1.Button16Click(Sender: TObject);
begin
 
end;
 
rocedure TForm1.Button17Click(Sender: TObject);
begin
 
end;
Понимаешь, о чем я? p{тут втесался другой метод}rocedure. Проверь исходник на наличие подобного, и поправь вручную, после этого методы будут находиться.

Вот тут я уже отвечал на подобный вопрос: Ошибка(евентс)
1
0 / 0 / 1
Регистрация: 23.09.2011
Сообщений: 100
08.06.2013, 14:12  [ТС] 8
UI, да спасибо большое, так и было, я уже исправила, но у меня новая ошибка вот тут в указанной строке
Delphi
1
2
3
4
5
6
7
8
9
10
11
if np=7 then
  begin
   setlength(a1,n7); setlength(a2,n7); setlength(a1,n7);
   for i:=0 to n7-1 do
    begin
     a1[i]:=form3.StringGrid9.Cells[0,i];
     a2[i]:=form3.StringGrid9.Cells[1,i];
     a3[i]:=form3.StringGrid9.Cells[3,i];
    end;
   laba2.ConfOpOfPr(a1,a2,a3);  //вот тут ошибка
  end;
как доходит до этого места вылетает ошибка Project Project1.exe raised class EAccessViolation with message 'Access violation at address 00403F2C in module 'Project1.exe'. Write of address 00000000'. Process stopped. Use Step or Run to contine.
процедура ConfOpOfPr выглядит так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
Procedure TLab2.ConfOpOfPr (Post, Sur, Dat: array of string);
var i,n: word;
 begin
  n:=Length(Post);
  SetLength(OperationsOfProject.Confirm, n);
  for i:=0 to n-1 do
   begin
    OperationsOfProject.Confirm[i].Post:=Post[i];
    OperationsOfProject.Confirm[i].Surname:=Sur[i];
    OperationsOfProject.Confirm[i].Signature:=' ';
    OperationsOfProject.Confirm[i].Date:=Dat[i];
   end;
 end;
все как надо вроде, типы и там и там array of string, запускаться запускается, а вот когда доходит до этого места вдруг сваливается с ошибкой. Я смотрела, но я не вижу где тут ошибка.

Добавлено через 30 минут
ошибку нашла...........блиииииииииииинн............ вот в этой строчке
Delphi
1
setlength(a1,n7); setlength(a2,n7); setlength(a1,n7);
должно было быть
Delphi
1
setlength(a1,n7); setlength(a2,n7); setlength(a3,n7);
0
Заблокирован
08.06.2013, 15:36 9
Для таких вещей лучше использовать TStringList, у него же есть метод IndexOf для проверки есть ли строка в списке.
0
0 / 0 / 1
Регистрация: 23.09.2011
Сообщений: 100
09.06.2013, 16:24  [ТС] 10
а можно еще вопрос, у меня вот тут
Delphi
1
procedure CreatMatr (Matr: [COLOR="Red"]array of array of string[/COLOR]);
вылетает ошибка [Error] Lab2.pas(795): Identifier expected but 'ARRAY' found. Можно ли так писать и если нет, то чем это заменить? просто создать тип array of array of string и передавать переменную этого типа? просто мне хорошо бы без типов обойтись

Добавлено через 10 минут
предыдущий вопрос снят
0
09.06.2013, 16:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.06.2013, 16:24
Помогаю со студенческими работами здесь

Не работает поиск данных для типа string
Добрый день! Требуется создать поиск строк по значениям столбцов таблицы. Поиск для типа данных int...

Использование strlen для объектов типа string
Подскажите пожалуйста, как strlen использовать на string.

Добавить свойство для переменной типа string
Приветствую! Раньше не сталкивался с такими задачи, всвязи с чем вопрос: есть переменная string...

Аналог strncpy и strncmp для типа string
Подскажите, как проводить операции сравнения и копировании с двумя строками типа string, при чём...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru