Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Delphi _ Дана строка символов, состоящая из произвольного текста на английском языке, слова разделены пробелами. Поменять местами i-е и j-е слова.

Автор: Jarj 24.12.2014 20:00

Дана строка символов, состоящая из произвольного текста на английском языке, слова разделены пробелами. Поменять местами i-е и j-е слова. Задачу нужно сделать с ComboBox
Пытался делать задачу по примеру но ничего не вышло. Заранее спасибо

Автор: Федосеев Павел 24.12.2014 23:11

В модуле 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 ничего не могу посоветовать, т.к. не умею пользоваться визуальными компонентами (пока не было необходимости).

Автор: Гость 25.12.2014 12:33

Спасибо за код. Только таких я находил кучу без комбобокса

Автор: Федосеев Павел 25.12.2014 17:24

А ты умеешь в коде програмы получить из ComboBox строку для преоьразования?

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


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

Что не устраивает?
ComboBox это лишь форма ввода строковых данных, не более того (http://helpdelphi.ru/combobox/).