Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 263
от 12.10.2005, 18:57

Администратор:Калашников О.А.
В рассылке:Подписчиков: 253, Экспертов: 46
В номере:Вопросов: 2, Ответов: 5


Вопрос № 27331: Добрый день! 1. Подскажите, как можно текстовый файл, загруженный в Memo порезать на куски и те данные занести в базу данных, например dbf ? 2. Как в текстовом файле сделать поиск не по первому в строке символу а по произвольному из строки?...
Вопрос № 27371: Всем привет! Как сцепить две формы между собой так, чтобы при перетаскивании одной из них, другая держалась "рядом" (как в Winamp) ?...

Вопрос № 27.331
Добрый день!
1. Подскажите, как можно текстовый файл, загруженный в Memo порезать на куски и те данные занести в базу данных, например dbf ?
2. Как в текстовом файле сделать поиск не по первому в строке символу а по произвольному из строки?
Отправлен: 06.10.2005, 22:31
Вопрос задал: Nikan (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: mvp
Здравствуйте, Nikan!
1. У Memo есть св-во Lines, которое построчно содержит ваш загруженный файл. Вот и выдирайте нужные вам строки Memo.Lines[i] (индекс начинается с 0), а количество строк можно узнать так Memo.Lines.Count.
Что касается БД, то я в этом не силён, да и существует отдельная рассылка Delphi и БД.
2. А что подразумевается под поиском по символу? И что с ним далее делать?
Я понял так: найти какую-то строку в файле, содержащую определённую фразу и куда-то, например вывести (вы же не говорите, что вы хотите делать с файлом), поэтому см. приложение. Если что-то не так - уточняйте в комментарии к оценке (можете поставить и 1 - не обижусь), на мини-форуме попытаюсь исправить ситуацию.
P. S. Просто, если вы сразу начнёте уточнять на мини-форуме, то я не узнаю об этом, т. к. не оставлял там сообщений.

Приложение:

---------
Моя совесть чиста - не бывшая в употреблении

Ответ отправил: mvp (статус: 7-ой класс)
Отправлен: 06.10.2005, 23:46

Отвечает: Warrior
Здравствуйте, Nikan!
Перед тем как резать ваш файл нужно определиться с типом полей в базе.
Если тип поля есть как Memo, тогда в это поле залезет весь ваш файл, а вот если он будет как Character то тогда только 254 символа.

Если таблица типа Paradox тогда:
тип поля как А - это только до 254 символа
тип поля как М - это весь файл (240 символов будут храниться в файле имя_таблицы.db а все остальное в файле имя_таблицы.mb);
Table1.Active:=true; //делаем таблицу активной
Table1.Edit; // режим для редактирования
Table1.Append; // вставляем в конец новую запись
Table1.FieldByName('Rrr').AsString:=Memo1.Lines.Text;
// записывает то, что есть в Мемо в поле
Table1.Post; // подтверждаем вставку
Table1.Active:=false; //закрываем таблицу

Поиск можна зделать несколькими вариантами:
1) открываешь файл и загружаешь его в TStringList, а потом ходишь по строкам и ищешь соответствие. (смотри ответы на предыдущий вопрос) - это тебе поможет
2) открываешь файл с помощью:

procedure TTell1.FormCreate(Sender: TObject);
var aa:string;
ff:TextFile;
begin
stroki:=0;
AssignFile(ff, 'baza_tell.txt');
Reset(ff);
while not Eof(ff) do
begin
readln(ff,aa);
stroki:=stroki+1; // определение количества записей в файле
{тут осуществляешь поиск по твоей строке - на соответствие}
end;
CloseFile(ff);
end;

Видно, что это дедовский метод...

Ответ отправил: Warrior (статус: 1-ый класс)
Отправлен: 07.10.2005, 00:57

Отвечает: sir henry
Здравствуйте, Nikan!
1. А по какому критерию резать? Это очень важно, поверьте... :))
2. Комплектом подойдет и для пункта 1. :)
Есть несколько функций поиска подстроки в строке:
BeginPos:=Pos(SubStr, Str);{Ищет первое вхождение подстроки SubStr в строку Str и возвращает позицию первого символа}
SubStr:=Copy(Str, BeginPos, Count);{Выделяет подстроку SubStr из строки Str, начиная с позиции Begin и количеством символов Count}
SubStr:=MidStr(Str, BeginPos, Count); {Аналог Copy, только находится в модуле StrUtils}
В модуле StrUtils довольно много функций по работе со строками - выделение левой, правой части, а так-же произвольной.
В Memo текст хранится построчно. Каждую строку можно выделить по ее индексу:
For i:=0 To Memo1.Count-1 do
Table1['FieldName']:=Memo1.Lines[i];
Кроме того, можно програмно копировать выделеный мышкой текст:
Table1.InsertRecord([Memo1.SelText]); {SelText - это текст в Мемо, выделеный мышкой}
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 07.10.2005, 06:41


Вопрос № 27.371
Всем привет!
Как сцепить две формы между собой так, чтобы при перетаскивании одной из них, другая держалась "рядом" (как в Winamp) ?
Отправлен: 07.10.2005, 15:46
Вопрос задал: Ерёмин Андрей (статус: Практикант)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Татьяна
Здравствуйте, Ерёмин Андрей!
Для этого необходимо перехватывать сообщения WM_MOVE и WM_Moving обоих окон, для начала определить наличие "прилипания" (определить их пересечение).
Если прилипание есть то при движении одной формы двигать вторую.
---------
Нет ничего невозможного!!!
Ответ отправила: Татьяна (статус: 4-ый класс)
Отправлен: 07.10.2005, 17:35
Оценка за ответ: 4

Отвечает: Romodos
Здравствуйте, Ерёмин Андрей!
Можно так:
Кладёте на первую форму таймер, делаете его интервал =1
и в обработчике событмя OnTimer пишете (см. приложение)

Приложение:

---------
FAQ me off!

Ответ отправил: Romodos (статус: 9-ый класс)
Отправлен: 08.10.2005, 08:07
Оценка за ответ: 4
Комментарий оценки:
Решение крайнее. При резком движении формы наблюдается "оконный проём". Существуют более оригинальные способы.


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Rambler's Top100 Яндекс


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphiplus
Архив рассылки
Отписаться
Вспомнить пароль

В избранное