Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (все версии) - часть 3

Модерирует : ShIvADeSt

ShIvADeSt (07-04-2008 02:27): продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=9383  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

   

shilder

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kotel
дык.... а быстрее операции просто нет по-моему :) так что ускоряй в другом месте )
 
как говорится экспоненциальный алгоритм, переписанный на ассемблере не станет логарифмическим

Всего записей: 20 | Зарегистр. 17-08-2003 | Отправлено: 21:46 13-02-2008
kotel



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
shilder
Я вот думаю как ускорить, но ума не хватает... (не программер я)
Я рассчитываю в цикле некую хеш функцию. Каждое следующее значение есть функция от предыдущего. В принципе там нет ничего сложного - ror, rol, xor, and над 4х байтными числами и все это многократно повторяется.
Один процессор загружен полностью второй отдыхает.
У меня получилось миллион расчетов в 1.5 секунды, хотя знаю что можно довести до 10-12 в секунду...

Всего записей: 595 | Зарегистр. 21-08-2003 | Отправлено: 08:39 14-02-2008
o0



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kotel
навскидку можно считать в n-потоков для n-процесорных машин.
для 2х процесорн:
разбиваете логику на два потока. запускаете их, а внутри потоков юзаете SetThreadAffinityMask, чтоб код выполнялся на такомто процесоре.

 
ээ.. неверно.. ваш цыкл нельзя разбить на разн процессоры поэтому довольствуйтесь тем что есть  
 
ну и в идеале поищите nvidia мануалы для использования их графических процессоров, коих много и производительность много выше.

Всего записей: 13 | Зарегистр. 11-12-2006 | Отправлено: 12:05 14-02-2008 | Исправлено: o0, 12:08 14-02-2008
kotel



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
ну и в идеале поищите nvidia мануалы для использования их графических процессоров, коих много и производительность много выше.

т.е. заставить видеокарту считать мою задачу????

Всего записей: 595 | Зарегистр. 21-08-2003 | Отправлено: 15:22 14-02-2008
greenpc

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kotel
IMHO o0
сказал чушь. Лучше постарайся оптимизировать свой алгоритм
Я пробовал RC5 и RC6 скорость работы около 8 мб/сек - это шифрование
расчет MD5  2 - 2,5 млн опер/сек

Цитата:
 
Цитата:ну и в идеале поищите nvidia мануалы для использования их графических процессоров, коих много и производительность много выше.  
 
т.е. заставить видеокарту считать мою задачу????
 
А мужики то не знают (с) Золотая Бочка

Всего записей: 401 | Зарегистр. 18-04-2003 | Отправлено: 15:35 14-02-2008 | Исправлено: greenpc, 15:47 14-02-2008
RostY



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть cxGrid и в нем Level с DBTableView.  
по DblClick'у на гриде надо сделать некоторые операции, для которых нужно знать FieldName поля на котором кликнули.  
У DBTableview есть события OnDblClick и OnCellDblClick. Я так подозреваю что это то что мне надо, но как получить FieldName колонки на которой кликнули не знаю.

Всего записей: 387 | Зарегистр. 11-01-2006 | Отправлено: 14:08 15-02-2008
Erazer



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Получаю через drag&drop каталоги и файлы, если первое делаем одно если второе -другое, как выяснить с минимальными затратами что передо мной ?  
Решил через FileExists/DirectoryExists, мож есть пути короче ?

Всего записей: 1731 | Зарегистр. 02-08-2003 | Отправлено: 03:23 16-02-2008
nuker2015



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RostY

Цитата:
по DblClick'у на гриде надо сделать некоторые операции, для которых нужно знать FieldName поля на котором кликнули.  
У DBTableview есть события OnDblClick и OnCellDblClick. Я так подозреваю что это то что мне надо, но как получить FieldName колонки на которой кликнули не знаю.

Чтото типа этого: в onDoubleClick(может и здесь есть Column)
Grid.Column.FieldName
 
 
Добавлено:
Rudia

Цитата:
1,2,3,4 и программа и библиотека компилится под одной версией делфей
5 Знаю, что извращение, но писал не я. Написано было для "универсальности", да и в некоторых случаях передается выборка из БД в пару тысяч записей - тут без sharemem никак.  

Теперь вместо шаремем используют FastMM

Всего записей: 132 | Зарегистр. 26-10-2005 | Отправлено: 18:28 17-02-2008
Minissota



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет, всем!
Народ, Вы не подскажите как сделать поиск по базе данных? А то, что то у меня не хочет оно искать! Выдает, ошибку, типа запрос не верный. Вот как я делал:
 
...............

Код:
procedure TForm7.SpeedButton3Click(Sender: TObject);
var
    fam: string[30];
begin
 fam:=InputBox('Выборка информации из БД',
                  'Укажите фамилию и щелкните на OK.', '');
    if fam <> ''  
    then
       begin
         with Form7.IBQuery1 do begin
           Close;        
           SQL.Clear;    
            SQL.Add('SELECT * from PRIEM_OTDEL'); \\ (PRIEM_OTDEL это имя таблицы)  
            SQL.Add('WHERE');
           SQL.Add('(fio_bol = "'+ fam + '")');
           SQL.Add('ORDER BY fio_bol');
           Open;          
         end;
         if IBQuery1.RecordCount <> 0 then
              DataSource1.DataSet:=IBQuery1  
            else begin
              ShowMessage('В БД нет записей, удовлетворяющих критерию запроса.');
             form7.DataSource1.DataSet:=DataModule2.IBDataSet6;
            end;
       end;
   end;

............................
 
Заранее благодарен всем кто отзовется!!!

Всего записей: 13 | Зарегистр. 14-12-2007 | Отправлено: 22:57 17-02-2008
xy



ХУдератор
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Расскажите плиз доступно-поплуярно чем отличается
Halt от Application.Terminate
или как вообще карректно прихлопнуть приложение (само убивает себя) в некоторых критических ситуациях :-?

----------
Счастливые мысли приводят к счастливой клеточной биохимии

Всего записей: 10530 | Зарегистр. 28-05-2003 | Отправлено: 23:23 17-02-2008
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Application.Terminate это: уважаемая VCL не будете ли вы так любезны корректно отправить приложение на покой?
А Halt это просто дубиной по голове и все. Помоему даже finalization секции не выполняются, сразу выгрузка из памяти.

Всего записей: 2322 | Зарегистр. 24-05-2007 | Отправлено: 00:17 18-02-2008
xy



ХУдератор
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Frodo_Torbins
т.е. если какой-то ахтунг, то с Terminate можно еще зацепиться за эксепшны и приложение может повиснуть, а Halt гарантированно убивает прогу.. тогда вопрос
если прога в этот момент открывала текстовые файлы, работала с БД - насколько разрушительным может быть применение Halt :-?


----------
Счастливые мысли приводят к счастливой клеточной биохимии

Всего записей: 10530 | Зарегистр. 28-05-2003 | Отправлено: 00:24 18-02-2008
OdesitVadim



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
открытые файлы будут закрыты, но нет гарантии, что забуферизированные данные будут сброшены. По поводу БД - тут двояко. если БД серверная и активно используются транзакции - ничего страшного не будет, транзакция откатиться и всё. Другое дело, если это локальная - тут всё равносильно тем же файлам. Хотя Access например всё разрулит.
 
Halt просто останавливает в данной точке выполнение программы и всё. ни шагу больше, дальше уже сама операционка заметает следы - вычищая память, закрывая файлы, уничтожая ресурсы. Рекомендуется применять для крайних случаев.

----------
Press any key to continue or any other key to exit
Пишите так, чтобы не было стыдно за нобелевскую премию.

Всего записей: 1568 | Зарегистр. 19-09-2003 | Отправлено: 01:25 18-02-2008
xy



ХУдератор
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OdesitVadim
О! отлично - то что надо, мне как раз важно было что било прогу сразу, а то бывают некоторые ситуации, когда надо выдать мою ошибку (в красивом окошечке), а потом
я точно знаю что исправить уже нечего нельзя - убить программу побыстрому %)
 
и в случае с Терминэйтом у меня иногда зависали эксепшны на выходе, иногда зацикливало эти ошибки.. в общем не совсем то что я хотел, видимо, Халт мне поможет
 
спасибо

----------
Счастливые мысли приводят к счастливой клеточной биохимии

Всего записей: 10530 | Зарегистр. 28-05-2003 | Отправлено: 01:34 18-02-2008
nuker2015



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Minissota

Цитата:
SQL.Add('SELECT * from PRIEM_OTDEL'); \\ (PRIEM_OTDEL это имя таблицы)  
SQL.Add('WHERE');
SQL.Add('(fio_bol = "'+ fam + '")');
SQL.Add('ORDER BY fio_bol');  
А ты уверен что такое поле есть?
Ну поставь вконце запроса ";", может поможет, а имя таблицы попробуй в [...] поместить.
ASC и DESC в сортировке необязателен, но может добавить?
На какую строчку ругается?
 
 
Добавлено:
xy
Интересно вы ребята с ошибками боретесь Что за ситуация такая, где ошибку исправить нельзя?

Всего записей: 132 | Зарегистр. 26-10-2005 | Отправлено: 05:41 18-02-2008
kotel



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Что за ситуация такая, где ошибку исправить нельзя?

Ну вот у меня нечто похожее было:
Идет обмен через COM порт с каким-то девайсом.
(Вследствие малограмотности для работы с ком портом использую очень удобный компонент TComport из ComPort Library)
Если использовать переходник USB-COM, то его могут неожиданно выдернуть из компа. Вот тут то все и начинается...  
 
PS Если кто работал с FT232R в режиме D2XX - можно ли для него создать событие типа "OnRXBuf" - чтобы не опрашивать постоянно "появились ли данные?"

Всего записей: 595 | Зарегистр. 21-08-2003 | Отправлено: 08:54 18-02-2008
xy



ХУдератор
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
nuker2015
у меня есть два типа ситуаций - во-первых, когда приложение теряет коннект с БД и восстановить не удаётся - чтобы убить приложение тихо и надежно, ибо там очень много всего оно делае на выходе и по упомянутой выше - малограмотности :) - ситуация аварийного дисконнекта в процедурах выхода (всякие OnClose/OnDestroy) предусмотрена далеко не везде ;)
 
и во-вторых - в разных местах приложения проводятся разные проверки легальности его использования - если проверка провалилась - надо тихо убить приложение (хотя тут и валидное закрытие в общем-то проканывает почти всегда, но "почти" не всегда устраивает ;), убийство haltом с потерей буферов и т.п. получается даже более суровым для такой ситуации и удобным
здесь правда тупо вызывать Халт не рекомендуется ибо по таким вызовам можно вычислить места проверки, но маскировка - это уже другой вопрос :)

----------
Счастливые мысли приводят к счастливой клеточной биохимии

Всего записей: 10530 | Зарегистр. 28-05-2003 | Отправлено: 09:19 18-02-2008 | Исправлено: xy, 09:25 18-02-2008
SergeBS



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
nuker2015

Цитата:
 Ну поставь вконце запроса ";", может поможет, а имя таблицы попробуй в [...] поместить.  

Не поможет. Ругалось бы на отсутствие поля/таблицы.
 
Minissota
У тебя условие вывода - ПОЛНОЕ совпадение. Т.е. введешь ИВАН - и получишь только ИВАН. Рой в сторону 'fio_bol LIKE "ИВАН%" '. Тогда будет выводить и ИВАН, и ИВАНОВ и ИВАНИДЗЕ и ИВАНИЩЕНКО, т.е. все, начинающееся на ИВАН. И посмотри еще на регистр  букв - это тоже может влиять и лечится соотв. функциями SQL.

Всего записей: 272 | Зарегистр. 19-04-2005 | Отправлено: 09:25 18-02-2008
RostY



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
nuker2015
нет у грида проперти Column. Вопрос остается открытым

Всего записей: 387 | Зарегистр. 11-01-2006 | Отправлено: 09:44 18-02-2008
Mandor Sawall

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RostY
Попробуй:

Код:
TcxGridDBColumn(ACellViewInfo.Item).DataBinding.FieldName

Всего записей: 119 | Зарегистр. 20-03-2003 | Отправлено: 10:08 18-02-2008
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (все версии) - часть 3
ShIvADeSt (07-04-2008 02:27): продолжение в http://forum.ru-board.com/topic.cgi?forum=33&topic=9383


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru