Навигация
Главная
Поиск
Форум
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
Создание отчето... 64213
Модуль Forms 63942
Пример работы с... 61033
ТЕХНОЛОГИИ ДОСТ... 60813
Имитационное мо... 56344
Реклама
Сейчас на сайте
Гостей: 12
На сайте нет зарегистрированных пользователей

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

Выбор наилучших альтернатив с использованием методов оптимизации на Delp...
Программа тестирования и обучающая программа по математике на Turbo Pasc...
Файл записей с выводом обратного заголовка на Turbo Pascal

Реклама



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

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


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

Случайные загрузки
AJAX и PHP. разра...
NotePad Pro [Исхо...
C# в кратком изло...
Handles
Таймер и секундомер
Игра в крестики н...
Page Promoter 7.7...
PHP5. Профессиона...
Degisy Data Acces...
Книга по Delphi (...
Abc_component
C++ Стандартная б...
AntiRus
MicroGPSS Studen ...
OnlineIP
Модифицированная ...
Профессиональное ...
Стелтинг Стивен, ...
Animation (Пример...
Pass [Исходник на...

Топ загрузок
Приложение Клие... 100455
Delphi 7 Enterp... 86155
Converter AMR<-... 20071
GPSS World Stud... 12523
Borland C++Buil... 11612
Borland Delphi ... 8526
Turbo Pascal fo... 7035
Visual Studio 2... 4992
Калькулятор [Ис... 4744
FreeSMS v1.3.1 3539
Случайные статьи
PowerShell - продо...
Процедура PieSlice...
6.2. Уровни разраб...
Игровые автоматы
Проблемы быстродей...
Обнаружение пробле...
Изучение сложных б...
Сохранение работос...
Принцип постоянств...
Neosap - что к чему
Разработка инфогра...
Распродажа Черная ...
Общие подходы к пр...
Выработка решенияП...
Подмена функций ст...
Создать свой сайт ...
Листинг 14.4. Доба...
Каковы параметры с...
Итератор end
Команды построения...
Эта конфигурация н...
Большая глубина цв...
Панель управления ...
Трояны - это свои ...
Защита Web-форм от...
Статистика



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


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