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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.02.2011, 22:02   #1
helena91
Пользователь
 
Регистрация: 15.01.2011
Сообщений: 15
По умолчанию Сравнение двух строк

Мне нужно сравнить две строки. В результате нужно вывести в поле МЕМО символы первой строки не включая символов второй. Например,
первая строка: 1 2 3 mnkl 4 5 6
вторая строка: 1 2 5 8 mn
результат: 3 kl 4 6
как ето сделать?
helena91 вне форума Ответить с цитированием
Старый 22.02.2011, 22:26   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Код:
var
  r: set of char;

s1:='2 3 mnkl 4 5 6';
s2:='1 2 5 8 mn';
r:=[];
for j:=1 to length(s2) do
  r:=r + [s2[j]];
s:='';
for j:=1 to length(s1) do
  if s1[j] in r then else s:=s+s1[j];
showmessage(s);
программа — запись алгоритма на языке понятном транслятору
evg_m на форуме Ответить с цитированием
Старый 22.02.2011, 23:49   #3
helena91
Пользователь
 
Регистрация: 15.01.2011
Сообщений: 15
По умолчанию

а если у меня будет строка 11 12 13 14 15, то тогда будет неправильно работать программа....
helena91 вне форума Ответить с цитированием
Старый 23.02.2011, 00:32   #4
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

нужна определеность, если пробел разделитель то должно быть так
Цитата:
первая строка: 1 2 3 m n k l 4 5 6
вторая строка: 1 2 5 8 m n
результат: 3 k l 4 6
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  str1, str2: TStringList;
  s1, s2: string;
  i, j: integer;
  a: boolean;
  str3: string;
begin
  s1 := '1 2 3 m n k l 4 5 6';
  s2 := '2 5 8 m n';
  str1 := TStringList.Create;
  str2 := TStringList.Create;
  repeat
    str1.Add(copy(s1,1,pos(' ', s1) - 1));
    delete(s1,1,pos(' ', s1));
  until pos(' ', s1) = 0;
  str1.Add(copy(s1,1,length(s1)));
  repeat
    str2.Add(copy(s2,1,pos(' ', s2) - 1));
    delete(s2,1,pos(' ', s2));
  until pos(' ', s2) = 0;
  str2.Add(copy(s2,1,length(s2)));
  for i := 0 to str1.Count -1 do
  begin
    a := False;
    for j := 0 to str2.Count - 1 do
      if str1[i] = str2[j] then a := True;
    if not(a) then str3 := str3 + str1[i] + ' ';
  end;
  ShowMessage(str3);
end;
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 23.02.2011, 01:17   #5
helena91
Пользователь
 
Регистрация: 15.01.2011
Сообщений: 15
По умолчанию

пасибки, выручил)
helena91 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение двух чисел Ardarik Общие вопросы C/C++ 2 16.01.2011 23:49
сравнение двух документов 30gb Microsoft Office Excel 7 13.09.2010 14:14
Сравнение данных из двух книг и добавление строк Soul Leka Microsoft Office Excel 37 19.07.2010 14:36
сравнение двух строк aza_kaz Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 01.01.2010 23:40
Сравнение двух списков lelik759 Microsoft Office Excel 7 13.04.2008 22:19