Навигация
Главная
Поиск
Форум
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
21 ошибка прогр... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
ТЕХНОЛОГИИ ДОСТ... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Имитационное мо... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Реклама
Сейчас на сайте
Гостей: 12
На сайте нет зарегистрированных пользователей

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

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

Разработать процедуру поиска по информации 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 10:34:06 · 1 Комментариев · 3129 Прочтений · Для печати

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


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

Случайные загрузки
FreeSMS v1.3.1
mmmJlabel
Midi
100 компонентов о...
Функции Visual Basic
Удаление своего EXE
ShadelLabel
C++ Builder в за...
Обучение Borland ...
Х. М. Дейтел, П. ...
Книга по Delphi (...
Цветной Grid
Visual Basic Script
DateEdit
TsHintManager
Drag&Drop
Visual Basic for ...
Borland Delphi 8 ...
Шаблон для новост...
Библия хакера 2. ...

Топ загрузок
Приложение Клие... 100793
Delphi 7 Enterp... 98016
Converter AMR<-... 20298
GPSS World Stud... 17059
Borland C++Buil... 14239
Borland Delphi ... 10373
Turbo Pascal fo... 7390
Калькулятор [Ис... 6080
Visual Studio 2... 5228
Microsoft SQL S... 3674
Случайные статьи
Соображения симметрии
Большинство соврем...
286/287 Instructio...
К головоломке "зеб...
Модуль Image
Использование прог...
Протокол XMODEM
Глава 5. Работа с ...
Убрать копирайт в ...
Списки
Выбор типа XHTML-д...
7.4. Закон Литтла
Что есть у большин...
ОПЕРАТОРЫ ОПИСАНИЯ...
Займ под залог
Биты, байты и слова
HTPC
Шифрование сообщен...
Операции ввода/выв...
Метод-шаблон
Динамическое резер...
Свободная память в...
Классы ORM.
Печать полиграфии ...
Установка плагина ...
Статистика



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


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