Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Модуль Forms 65411
ТЕХНОЛОГИИ ДОСТ... 62312
Имитационное мо... 57990
Реклама
Сейчас на сайте
Гостей: 8
На сайте нет зарегистрированных пользователей

Пользователей: 13,087
новичок: sergeevo
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Моделирование литейного цеха на GPSS + Пояснительная записка
Моделирование работы класса персональных компьютеров на GPSS + Отчет + Б...
База данных междугородних телефонных разговоров на Delphi

Реклама



Подписывайся на YouTube канал о программировании, что бы не пропустить новые видео!

ПОДПИСЫВАЙСЯ на канал о программировании
Разработать процедуру поиска по информации Memo-поля
14. Разработать процедуру поиска по информации Memo-поля
(Term1 /S term2). 2 выражения должны быть в одном предложении. Их порядок не важен.
(Term1 +S term2). 2 выражения должны быть в одном предложении. Их порядок соблюдаться..

//---------------------------------------------------------------------------

#include
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
// инициализация приложения
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
StartFind = false;// поиск не начат
}
//---------------------------------------------------------------------------

// результаты поиска
void __fastcall TForm1::RichEdit1Change(TObject *Sender)
{
// текст результата поиска
AnsiString str = "в тексте №" + IntToStr(atoi(&((TWinControl*)Sender)->Name.c_str()[8]));
// если поиск начат и результат положительный и он еще не указан, то указываем результат
if( StartFind && !StaticText1->Caption.Pos(str) ) StaticText1->Caption = StaticText1->Caption + str + "\r\n";
}
//---------------------------------------------------------------------------

// ищем выражения в предложении
void __fastcall TForm1::FindTerm(TRichEdit* re, AnsiString Term1, AnsiString Term2, int type, int start, int end)
{
int i, j, k;
if( !type )// если порядок не важен
{
// если оба выражения найдены в предложении
if( re->Text.SubString(start, end-start).Pos(Term1) && re->Text.SubString(start, end-start).Pos(Term2) )
{
i = start; // начало предложения
// сдвиг позиции курсора с учетом начала предложения
if( start > 1) j = start-1;
else j = 0;
// ищем первое выражение в предложении и подчеркиваем
while(i)
{
i = re->Text.SubString(i, end - i).Pos(Term1);
if( i ) // если найдено
{
i += j;
re->SelStart = i-1;
re->SelLength = Term1.Length();
re->SelAttributes->Style = TFontStyles() << fsUnderline;
i += Term1.Length();
j = i - 1;
}
}
i = start;
if( start > 1) j = start-1;
else j = 0;
// ищем второе выражение в предложении и подчеркиваем
while(i)
{
i = re->Text.SubString(i, end-i).Pos(Term2);
if( i )
{
i += j;
re->SelStart = i-1;
re->SelLength = Term2.Length();
re->SelAttributes->Style = TFontStyles() << fsUnderline;
i += Term2.Length();
j = i - 1;
}
}
}
}
else // если порядок важен
{
i = start;
if( start > 1) j = start-1;
else j = 0;
i = re->Text.SubString(i, end-i).Pos(Term1);
if( i ) // если первое выражение найдено
{
i += j + Term1.Length();
if( re->Text.SubString(i, end-i).Pos(Term2) ) // если вторе выражение найдено с учетом условий поиска
{
i = start;
// ищем занова выражения в нужном порядке и подчеркиваем их
while(i)
{
i = re->Text.SubString(i, end-i).Pos(Term1);
k = -1;
if( !i ) break;
if( i && re->Text.SubString(i+j+Term1.Length(), end-i-j-Term1.Length()).Pos(Term2) )
{
i += j;
re->SelStart = i-1;
re->SelLength = Term1.Length();
re->SelAttributes->Style = TFontStyles() << fsUnderline;
i += Term1.Length();
k = i-1;
i = re->Text.SubString(i, end-i).Pos(Term2);
i += k;
re->SelStart = i-1;
re->SelLength = Term2.Length();
re->SelAttributes->Style = TFontStyles() << fsUnderline;
i += Term2.Length();
j = i - 1;
}
if( k == -1 )
{
i += j + Term1.Length();
j = i - 1;
}
}
}
}
}
}
//---------------------------------------------------------------------------

// ищем конец предложения
int __fastcall TForm1::FindEnd(TRichEdit* re, int start)
{
int i, j, k, res;
i = re->Text.SubString(start, re->Text.Length()-start).Pos("."); // если найдена точка
j = re->Text.SubString(start, re->Text.Length()-start).Pos("!"); // если найден воскл. знак
k = re->Text.SubString(start, re->Text.Length()-start).Pos("?"); // если найден вопр. знак
// проверяем позиции найденых знаков и возвращаем результат с наименьшей позицией
if( i && j && k ) // если все три знака найдены
{
res = i; // точка
if( j < res ) res = j; // воскл. знак
if( k < res ) res = k; // вопр. знак
}
else
if( !i && j && k ) // если точка не найдена
{
if( j < k ) res = j; // воскл. знак
else res = k; // вопр. знак
}
else
if( !j && i && k ) // если воскл. знак не найден
{
if( i < k ) res = i; // точка
else res = k; // вопр. знак
}
else
if( !k && i && j ) // если вопр. знак не найден
{
if( j < i ) res = j; // воскл. знак
else res = i; // точка
}
else
if( i && !j && !k ) res = i; // если только точка найдена
else
if( !i && j && !k ) res = j; // если только найден воскл. знак
else
if( !i && !j && k ) res = k; // если только найден вопр. знак
else res = re->Text.Length(); // конец текста
if( res != re->Text.Length() ) res += start; // если не конец текста, то указваем конец предложение с учетом начала
return res; // возвращаем конец предложения
}
//---------------------------------------------------------------------------

// запускаем поиск выражений в предложениях во все полях с текстом, с учетом условий поиска
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
int i, start, end;
TRichEdit* re;
StaticText1->Caption = ""; // очищаем предыдущие результаты поиска
// ищем поля с текстом на форме по имени компонентов
for(i=0; i {
if( Components[i]->Name.Pos("RichEdit") ) // если найдено
{
re = (TRichEdit*)Components[i];
if( !re->Text.Length() ) continue; // если текст отсутствует ищем другое поле
// убираем предыдущие подчеркивания
re->SelectAll();
re->SelAttributes->Style = TFontStyles() >> fsUnderline;
StartFind = true; // указываем, что поиск начат
start = 1;
// ищем выражения во всех предложениях с учетом условий
while( start != re->Text.Length() + 1 )
{
end = FindEnd(re, start);
FindTerm(re, LabeledEdit1->Text, LabeledEdit2->Text, RadioGroup1->ItemIndex, start, end);
start = end + 1;
}
StartFind = false; // поиск завершен
}
}
if( StaticText1->Caption == "" ) StaticText1->Caption = "ничего не найдено"; // отрицательный результат
}
//---------------------------------------------------------------------------





//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include
#include
#include
#include
#include
#include
#include
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TGroupBox *GroupBox1;
TRichEdit *RichEdit1;
TGroupBox *GroupBox2;
TRichEdit *RichEdit2;
TGroupBox *GroupBox3;
TRichEdit *RichEdit3;
TGroupBox *GroupBox4;
TLabeledEdit *LabeledEdit1;
TLabeledEdit *LabeledEdit2;
TRadioGroup *RadioGroup1;
TBitBtn *BitBtn1;
TGroupBox *GroupBox5;
TStaticText *StaticText1;
void __fastcall RichEdit1Change(TObject *Sender);
void __fastcall BitBtn1Click(TObject *Sender);
private: // User declarations
// функция поиска выражений в предложении, re - поле с текстом, Term1 - первое выражение, Term2 - второе выражение, type - условия поиска, start - начало предложения, end - конец предложения
void __fastcall FindTerm(TRichEdit* re, AnsiString Term1, AnsiString Term2, int type, int start, int end);
// функция поиска конца предложения, re - поле с текстом, start - начало предложения
int __fastcall FindEnd(TRichEdit* re, int start);
bool StartFind; // флаг начала поиска
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif



Опубликовал Kest February 22 2014 14:34:06 · 1 Комментариев · 1879 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Kortny667 November 10 2014 02:01:52
Здравствуйте!
Делаю курсовую по базам данных...из той же серии что и эта работа.
но делаю в Visual C# 2010.
И у меня проблема. Запрос в Visual C# для этого же варианта(14) выглядит так:
private void button1_Click(object sender, EventArgs e)
{
dataGridView1.DataSource = FillTable(String.Format("SELECT * FROM [find-info-memo] WHERE ([memo] LIKE '%{0}%'smiley", textBox1.Text));
}
private void button3_Click(object sender, EventArgs e)
{
string[] mas = textBox1.Text.Split(' 'smiley;
if (mas.Count() == 2)

dataGridView1.DataSource = FillTable(String.Format("SELECT * FROM [find-info-memo] WHERE ([memo] LIKE '%{0}%'smiley OR ([memo] LIKE '%{1}%'smiley", mas[0], mas[1]));

А мне нужно сделать поиск не по словам, а:
(#Sn). Найти записи, в которых есть слова, содержащие один символ в заданной позиции
(?Sn). Найти записи, в которых есть слова, содержащие или не содержащие один символ в заданной позиции

Не подскажите как правильно составить такой запрос в SQL?
Заранее Спасибо!)
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Delphi. Разработк...
ProLIB18
Pro-Download Sys...
Averaging [Исходн...
Архив программ
Нестандартные при...
Фундаментальные а...
PHP глазами хакера
Pass [Исходник на...
RSS Feeds
Прграммирование в...
Trojan [Исходник ...
Animation (Пример...
CoolControls v3.0...
Dynamic Titles дл...
Черный круг двига...
Род Стивенс. Delp...
PHP 5 для "чайников"
ActiveX в Delphi
Page Promoter 7.7...

Топ загрузок
Приложение Клие... 100471
Delphi 7 Enterp... 87433
Converter AMR<-... 20080
GPSS World Stud... 13064
Borland C++Buil... 11922
Borland Delphi ... 8631
Turbo Pascal fo... 7041
Visual Studio 2... 5000
Калькулятор [Ис... 4853
FreeSMS v1.3.1 3543
Случайные статьи
Варианты дисплея с...
Содержание сайта -...
Команда DIV
Метод базовой точки
Как реализуется поиск
Возвращённое значе...
Этот элемент управ...
Кодирование инстру...
Информационные и с...
Элементы applet и ...
Планирование
Эмуляция директивы...
Программисту нужно...
Передача оцифрован...
• В параметре HKEY...
подкаталог Ех73
Когда наступает по...
Приведем графическ...
Страница управлени...
1. FTP использует ...
Поиск и редактиров...
Испытание имитацио...
Есть ли команда, п...
2. Приведенные ниж...
Язык С: инструкции
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?