![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#16
|
|||
|
|||
|
Код:
object ADOQuery1: TADOQuery
Connection = ADOConnection1
Parameters = <>
Left = 216
Top = 184
end |
|
#17
|
||||
|
||||
|
У меня пока больше идей нет.
|
|
#18
|
|||
|
|||
|
и на этом спасибо
![]() но если что - нибудь появится - не стесняйтесь, пишите... очень надо, а время поджимает... буду рад любым советам |
|
#19
|
||||
|
||||
|
Тут уже только экспериментировать, а для этого надо вашу программу, вашу БД, ваш драйвер для связки с mySQL, вашу версию mySQL.
![]() |
|
#20
|
||||
|
||||
|
Я юзаю для мускуля этот пак.
Прост в использовании, я на нём любую прогу за полчаса нарежу. Думаю смастерить на нём подобие Навиката, но это в планах... ЗЫ: Архив большой (>500Кб), сюда не заливается. Слил на свой сайт. http://russiaonline.sytes.net/MySQL.rar |
|
#21
|
|||
|
|||
|
в общем решение найдено...
проблемы с сообщениями об ошибках - смена кодировки таблицы на UTF-8 (в самый последний момент вспомнил... млин...) тестовый, но работоспособный вариант вот код: Код:
Var
Arr: Array of variant;
i: integer;
begin
i := 0;
DataModuleUnit.ADOQuery1.SQL.Text:='select www from qqq';
DataModuleUnit.ADOQuery1.Open;
SetLength(Arr,DataModuleUnit.ADOQuery1.RecordCount);
DataModuleUnit.ADOQuery1.First;
while not DataModuleUnit.ADOQuery1.eof do
begin
Arr[i] := DataModuleUnit.ADOQuery1.FieldValues['www'];
memo3.lines.add(DataModuleUnit.ADOquery1.fieldbyname('www').asstring);
DataModuleUnit.ADOQuery1.next;
Inc(i);
end;
end;остается только написать разбор элементов массива на символы... Последний раз редактировалось _Hattab_, 18.05.2009 в 01:25. |
|
#22
|
||||
|
||||
|
Разбивать и не потребуется, если вы смените тип элементов массива с variant на string, т.к. string по сути массив символов и к любому символу можно обращаться по его индексу.
Но вот накой бес вам на символы-то разбивать, я никак въехать немогу. |
|
#23
|
|||
|
|||
|
может конечно и на самом деле не надо...
мне нужно найти присутствие символов записи столбца второй таблицы среди полученных эл-тов массива (код города и исходящий номер телефона) т.е. в одной таблице у меня лежат телефонные коды городов и стран, а в другой таблице лежат записи из логов о звонках (кто,куда и сколько по времени и т.д) я пока это так себе представляю в двух словах: получил я массив А, элементы которого - исходящие телефонные номера. Например первым элементом будет запись 84951234567. Обращаемся к нему и раскладываем его по символам во второй массив Б. Затем со второго эл-та (отбрасываем код 8) сравниваем с записями второй таблицы(которая с кодами и стоимостью этого направления). Таким образом мы определим, что данный звонок был по такому-то направлению и минута разговора стоит столько-то. Затем в таблице1 смотрим сколько времени длился разговор - вычисляем стоимость звонка. Вот такая у меня идея. Хочу попробовать сделать. Если подскажете какой-нибудь более рациональный алгоритм, я буду очень признателен. В частности конечно интересует, как посоветуете сравнивать "напрямую" с записями кодов в таблице2. Если такое конечно возможно... Последний раз редактировалось _Hattab_, 18.05.2009 в 03:16. |
|
#24
|
||||
|
||||
|
Так нафига разбивать по символам? Надо просто найти вхождение одного текста в другой, для этого функции Pos или PosEx вполне достаточно.
|
|
#25
|
|||
|
|||
|
можно...
а если использовать бинарный поиск в массиве? как лучше сделать? берем первый элемент массива звонков. PosEx'ом откидываем первый символ и проверяем вхождение кода в оставшийся номер. (кстати, PosEx проверяет точную последовательность символов или любой порядок?). Но тогда это будет последовательный перебор 500 элементов массива кодов... Или можно ли как-нибудь в элементе массива "взять" только первые, допустим, 5 символов. и их бинарным поиском сравнить Прошу прощения за возможно примитивно-глупые вопросы, но мой мозг уже теряет связь с реальностью, поэтому хотелось-бы узнать ваше мнение... ну и возможно что-нибудь по советуете... ![]() |
|
#26
|
||||
|
||||
|
Функция Pos и PosEx очень шустрые функции, незнаю какой они алгоритм для поиска используют, но скорости на обработку 500 элементов хватит с избытком. Я думаю, там и пол секунды небудет.
Или я чего-то непонимаю, или вы какими-то заморочеными путями идете. У вас есть элемент массива, он же - строка. Найти в этой строке все вхождения какой-либо другой подстроки, элементарно. Например есть строка телефонного трафика вида: Код:
S := '01.01.2009 16:00:00 Вх. 9353345668 4567789032 26'; Код:
Const
Tel:Array[1..2] of string = ('4567789032','4567789134');Код:
for i := 1 to 2
do begin
P := 1;
while P>0
do begin
P := PosEx(Tel[i],S,P);
if P > 0 then ShowMessage(Tel[i]);
end;
end; |
|
#27
|
||||
|
||||
|
Если что-то непонятно, выйдите на меня по аське. Так будет попроще.
|
|
#28
|
|||
|
|||
|
Спасибо большое вам за ответы. Очень помогло. Все работает как надо...
С остальным пока вроде бы и у самого получается ![]() |