Помощь - Поиск - Пользователи - Календарь
Полная версия: Дана строка символов, состоящая из произвольного текста на английском языке, слова разделены пробелами. Поменять местами i-е и j-е слова.
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Delphi
Jarj
Дана строка символов, состоящая из произвольного текста на английском языке, слова разделены пробелами. Поменять местами i-е и j-е слова. Задачу нужно сделать с ComboBox
Пытался делать задачу по примеру но ничего не вышло. Заранее спасибо
Федосеев Павел
В модуле StrUtils есть процедуры поиска i-того слова.
У меня нет Delphi, только FreePascal. Но FPC во многом совместим с Delphi.
На примере консольной программы покажу как заменять слова при помощи библиотеки StrUtils:
{$mode Delphi}

program tak_001;

uses
StrUtils;

procedure ExchangeWords(var s: string; i, j: integer);
var
WordI, WordJ: string;
PosI, PosJ: integer;
begin
WordI := ExtractWordPos(i, s, [' '], PosI);
WordJ := ExtractWordPos(j, s, [' '], PosJ);

if (WordI = '') or (WordJ = '') then
exit;

writeln(i, '-e: "', WordI, '"');
writeln(j, '-e: "', WordJ, '"');

Delete(s, PosI, length(WordI));
Insert(WordJ, s, PosI);

WordJ := ExtractWordPos(j, s, [' '], PosJ);
Delete(s, PosJ, length(WordJ));
Insert(WordI, s, PosJ);
end;

var
s: string;
i, j: integer;
begin
s := 'first second third fourth fifth sixth seventh eightth nineth tenth';
writeln(s);
ExchangeWords(s, 2, 3);
writeln(s);
end.

По поводу ComboBox ничего не могу посоветовать, т.к. не умею пользоваться визуальными компонентами (пока не было необходимости).
Гость
Спасибо за код. Только таких я находил кучу без комбобокса
Федосеев Павел
А ты умеешь в коде програмы получить из ComboBox строку для преоьразования?

Тогда можно так:

procedure Нажата_Кнопка или Какое-то событие (...);
var
s: string;
begin
............
s:=ComboBox.Text; //получение строки
i:=....//получение параметров i и j
j:=....//
ExchangeWords(s, i, j);
............
Вывод строки s в какое-либо поле или обратно в Edit ComboBox'а.
end;

Что не устраивает?
ComboBox это лишь форма ввода строковых данных, не более того (согласно ссылке).
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.