Навигация
Главная
Поиск
Форум
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
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Создание отчето... 63299
Модуль Forms 63202
ТЕХНОЛОГИИ ДОСТ... 59870
Пример работы с... 58762
Имитационное мо... 55326
Реклама
Сейчас на сайте
Гостей: 11
На сайте нет зарегистрированных пользователей

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

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

Реклама



Подписывайся на 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 Комментариев · 1762 Прочтений · Для печати

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


Комментарии
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...
Шаблон для новост...

Случайные загрузки
Программа предназ...
PDJXPPack
Панель "Случайное...
Мониторинг сервер...
Медиа комбайн
Рисование PopupMenu
AUTOWEB
Самоучитель PHP 5...
DragMe [Исходник ...
THttpScan v4.1
Архив Апгрейтов с...
Assistant
Handles
Применение жадног...
Rotolabel
Иллюстрированный ...
Fig [Исходник на ...
Упорядоченный дин...
Анимированное поя...
Род Стивенс. Delp...

Топ загрузок
Приложение Клие... 100426
Delphi 7 Enterp... 85345
Converter AMR<-... 20062
GPSS World Stud... 12258
Borland C++Buil... 11463
Borland Delphi ... 8428
Turbo Pascal fo... 7014
Visual Studio 2... 4985
Калькулятор [Ис... 4686
FreeSMS v1.3.1 3530
Случайные статьи
Типовые операции н...
Следует ли защищат...
Особенности режима...
Ушу СПб
Как программно пом...
Переопределенные м...
Установка WordPress
Площадка с тенью ...
Зачем нужна MySQL
Нарисовать заданну...
Язык С и С++: массивы
Определение сложно...
Жесты-подсказки в ...
Создание простейше...
Функция TextHeight...
Silver Fox - это д...
Листинг 12.2. Прог...
Частоты, использую...
Семантические сети...
История опытов Эрн...
Размеры классов с ...
Пул соединений
Сколько по времени...
Банкетные стулья К...
Система оптимизаци...
Статистика



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


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