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

Мастера DELPHI. Новости мира компонент, FAQ, статьи...


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

Ежедневная рассылка сайта Мастера DELPHI

DELPHIMASTER.ru

Выпуск от 18.11.03 09:04

Новые компоненты   |x|
  • AidAim ZipForge Free v.2.02 (6344kb) (17.11.03 13:18)
    ZipForge это библиотека для быстрой ZIP компрессии. С этим набором инструментов вы можете легко добавлять функции архивирования в ваши проекты. Бесплатно для личного использования. ZipForge включает новую уникальную технологию - систему транзакций. Это передовой метод для быстрого и простого обновления архивных файлов с обеспечением целостности данных как в безотказных базах данных. Библиотека ZipForge Personal бесплатна для личного использования. Копании должны заказывать ZipForge Pro для использования в своих проектах. Основные характеристики:
    чистый VCL; не DLLs; не OCXs;
    добавление, перемещение, извлечение, удаление, обновление, тестирование группы файлов в одной операции;
    создание самораспаковывающихся архивов(SFX);
    выполнение регулярного архивирования используя транзакции, которые позволяют отменять все изменения в любое время при любой ошибке;
    компрессия больших файлов с минимальным потреблением памяти;
    обширная справка; множество примеров;
    восстановление поврежденных архивов.

    Источник: www.torry.net   Автор: AidAim Software http://www.aidaim.com
    -= · VCL · =- [Перевел: Владимир Андреев]

  • HTMLHelp_Connect v.1.0.0.1 (527kb) (17.11.03 12:12)
    HTMLHelp-connect это альтернатива написания контекстно-чувствительной справки без числовых идентификаторов контекста. Он делает возможным написание контекстной справки непосредственно в справочной теме для формы. Вы не обязаны разделять темы для каждого контекста, но вы можете это делать. Вы не обязаны назначать числовые идентификаторы контекста в Delphi-IDE редакторе свойств для элементов, но вы можете это делать. Контекстно-чувствительная справка не отображается в отдельном контекстном меню. Это всего лишь закладка для справки описания компонента, помещенная в справочной теме для формы. Закладки позволяют ссылаться на определенное место в теме справки. Для обычной справки Help-Connect сделает обычный переход на закладку.
    Источник: www.torry.net   Автор: Gerhard Maus http://www.maussoft.de
    -= · VCL · =- [Перевел: Владимир Андреев]

  • Для уменьшения объема писем здесь публикуется не весь список новых компонент, потому заглядывайте и на сайт!
Кое-что из нашей кладовки   |x|
  • Гробница Фараона 2.0 RC pasha_golub pavel.golub@farata.kr.ua   (17.11.03 17:29)
    Игруха. Пофиксенный и отполированный вариант. Добавился хелп, за что большое спасибо Буревестнику. Спасибо всем кто учавствовал в тестировании и прислал свои репорты.
    Из нового: скорость эффектов приблизительна равна на разных машинах, таблица рекордов, исправлен алгоритм подсчета очков, подсказка, автоматическое завершение игры. Исходных текстов не кладу, так как может быть программу зашарю для инностранных пользователей. Для людей советских она останется бесплатной.
    »»» Скачать: исходные тексты (589кб) посмотреть скриншот
  • Сниффер RedKat MelkovskijVA@oschadnybank.com   (12.11.03 13:41)
    Консольный снифер я портировал из c++, слегка доделал для анализа портов по которым машина работает с внешним миром.
    Если будут пожелания по доработке с удовольствием пообщаюсь со всеми желающими.
    »»» Скачать: исходные тексты (8кб)
Лучшее из нашего FAQ   |x|
Суммирование по деревьям
Алексей   (17.05.01 08:19)

Может кто знает, какой-нибудь стандартный алгоритм суммирования по деревьям. Например есть дерево с n уровнями, сколько ветвей и сколько уровней я незнаю. Фактическое значения имеют только самые нижние уровни ветвей. Причем у каждой ветви может быть разное колличество уровней вложенности. Как скажем собрать сумму на кокой-нибудь средний уровень. Ну например если взять реестр Windows и значение каких-либо параметров сложить и получить сумму этих параметров для узла HKEY_CURRENT_USER.




Warcat   (17.05.01 10:38)

Вопрос на сколько я понял все таки про SQL :)
Вот здесь есть интересная статья про множественное представление деревьев.
http://sdm.viptop.ru/articles/sqltrees.html
В такой модели операции выборки, нахождения суммы выполняются не сложно, но очень сложно выполняются операции добавления и удаления.




SergVlad   (17.05.01 10:43)

Нужно использовать рекурсивные механизмы спуска по дереву и иметь метод определения наличия child узлов у текущего узла.
На примере TTreeView( идея)

GetResultForNode(node)) - ваша функция определения значения чего-либо для текущего узла.


function  TDBTreeView.RecurseChilds(node: TTreeNode): double;
begin
 while node <> nil do begin
   if node.HasChildren then
      Result := RecurseChilds(node.GetFirstChild);
   Result := Result + GetResultForNode(node));
   node := node.GetNextSibling;
 end;
end;

function  TDBTreeView.GetResult(curnode: TTreeNode;): double;
begin
 Result := 0;
 if curnode = nil then Exit;
 Result := RecurseChilds(curnode.GetFirstChild);
end;

Эту идею можно распространить и на БД, естественно с написанием своих методов поиска child и навигации по ним.
Более широкие возможности здесь в случае применения SQL-запросов.
Но нужны специальные способы организации структуры, т.к. простейший, с использованием ID и PARENT не слишком функционален.




Warcat   (17.05.01 10:56)

Если реализовывать алгоритм на Delphi, то согласен с SergVlad'ом.  
При использовании матрицы смежности, надо учитывать, что для нее наиболее оптимальными алгоритмами являются рекурсии. А вот если использовать рекурсию в SQL, то следует узнать, какая степень вложенности рекурсии допускается используемым сервером. К примеру, у MS существует ограничение в 32 вложенные рекурсии.Это надо учитывать при разработке алгоритма. Я лично при написании кода на SQL стараюсь не использовать рекурсии. В большинстве случаев без них можно обойтись.
Но в любом случае на операциях выборки матрица смежности будет работать медленнее, чем множественная модель. Зато остальные операции гораздо быстрее. Выбор за Вами.




SergSuper   (17.05.01 12:25)

Если это SQL и есть определённое количество уровней, то всё делается просто:
Допустим есть таблица tree с полями
id - идентификатор записи
parent - идентификатор родителя
var - некое нужное значение

тогда делается так(если 3 уровня):


select sum(var)
from tree t1,tree t2,tree t3
where t2.parent=t1.id and t3.parent=t2.id

В остальном - см. выше




Алексей   (17.05.01 12:50)

В том то и смыл, что сколько уровней неизвестно.
Выбока может собирается на любой из них, вопрос-то в том что бы можно было обеспечить приемлемую скорость работы.
Объем записей порядка миллиона. Что касается статьи по ссылке
http://sdm.viptop.ru/articles/sqltrees.html
то я ее прочитал, но там все кратенько и не совсем понятно как формирутся столбцы left  и right. Если кто знает так  просветите поподробнее.




Wild_V   (17.05.01 18:21)

Вот я прочитал статью... Я чего-то не понимаю...
Есть у нас табличка Документы (Папки документов и сами документы).
Компания у нас крупная, записей в табичке ~ 500000. И тут я добавляю один документик(а это происходит сотни(тысячи) раз в день) и идёт апдейт чуть не на всю базу... Вау...
Или у меня буйная фантазия? А каким образом пересчёт на тригерах? Для удаления - пускай, но для вставки мы должны определить сами, куда мы вставляем вершинку... короче - геморой...
Народ, а вот файловые системы... Ведь их разрабатывают не идиоты...
FAT - более медленная, но меньше объёмом, NTFS - быстрее, но объёмнее.
Лично я готов жертвовать объёмом ради быстродействия.
Проблема в том, что там ничем реляционным и не пахнет, но всё-таки может какие-то идейки можно оттуда украсть?
Если я намолол ерунды  - не принимайте близко к сердцу(конец рабочего дня всё-таки... :)




Warcat   (17.05.01 18:35)

To Wild_V
Множественная модель отлично подходит к РЕДКООБНОВЛЯЕМЫМ данным.
Конечно, для 500000 постоянно изменяемых записей множественная модель не подойдет. А вот если разбить документы и группы документов на разные таблицы, то думаю в самый раз :). Ведь согласитесь, новая группа документов появляется не часто, а удаляется и того реже. (Я понимаю, что для Вашей конкретной задачи это может быть не вариант).
А принципы построения файловых систем к сожалению вряд ли подойдут к решению реляционных задач. Очень уж разные области. Очень разные объемы данных. Разные средства разработки для решения.




Wild_V   (17.05.01 18:52)

Угу , таблица Папкок, таблица Документов...
Согласен, но у меня вот какая бяка...
Все дочерние вершины (и папки и документы) должны зачитываться одним запросом ... Выходит, либо кривой Union(слишком велика разница в структуре таблицы папок и таблицы документов, либо... 2 запроса...
Грустно... :(




nikkie   (17.05.01 20:57)

вообще-то очень просто написать не рекурсивный обход
дерева. я на MS SQL для рекурсивного удаления такую процедуру писал
(Function - таблица со ссылкой на себя):


create procedure cascade_del_function (@func_id int)
as
declare @item_id int
declare @child_id int

declare cur_child cursor for
 select Function_Id from Function
 where Function_Id_Above = @item_id

declare cur_parent cursor for
 select Function_Id_Above from Function
 where Function_Id = @child_id
begin
select @item_id = @func_id

while 1 = 1
begin
 while 1 = 1
 begin
  open cur_child
  fetch cur_child into @child_id
  close cur_child
  if @@fetch_status <> 0
   break
  select @item_id = @child_id
 end

 select @child_id = @item_id
 open cur_parent
 fetch cur_parent into @item_id
 close cur_parent

 delete from Function where Function_Id = @child_id

 if @child_id = @func_id
  break
end
deallocate cur_child
deallocate cur_parent
end
go

извините, если в смысле использования возможностей MS SQL не здорово - я вообще-то им не занимаюсь... но идея, надеюсь понятна: берем первого чайлда до тех пор, пока можно, удаляем, берем папу, у него опять-таки самого первого чайлда пока можно и т.д. останавливаемся, когда удалили переданный элемент.
если вопрос про суммирование - немножко сложнее, поскольку ничего не удаляется и нельзя все время брать первого чайлда. надо добавить в select сортировку по id и условие where > id и брать "следующего" чайлда.



---
Из конференции сайта МАСТЕРА DELPHI (delphi.mastak.ru)

»»» Прислать свои комментарии

Обсуждается в конференциях   |x|
У нас большой выбор статей   |x|
Работа с COM-портами под Windows
Практически любому компьютеру приходится связываться с внешними устройствами. Практически любому программисту приходилось (приходится, придется) ваять программы под эти устройства. Огромное количество внешних устройств общаются с компьютером посредством RS-232. Отсюда и огромное количество вопросов от начинающих разработчиков. Количество вопросов на тему "как мне записать/принять данные с com-порта" на форумах по программированию не убывает, а скорее растет. Именно количество этих вопросов побудило меня к написанию статьи. Хотелось бы подчеркнуть, что статья предназначена именно для новичков в этом вопросе, и соответственно я старался упростить изложение материала.
Новинки книжного рынка   |x|
Windows для профессионалов. Создание эффективных Win32-пpилoжeний с учетом специфики 64-разрядной версии Windows (+ CD-ROM)
Это издание — практически новая книга, посвященная программированию серьезных приложений на Microsoft Visual C++ в операционных системах Windows 2000 (32- и 64-разрядных версиях) и Windows 98 с использованием функций Windows API. Состоит из 27 глав, двух приложений и предметного указателя. Гораздо глубже, чем в предыдущих изданиях рассматриваются такие темы, как взаимодействие с операционной системой библиотеки C/C++, программирование DLL и оптимизация кода, описываются новые механизмы и функции, появившиеся в Windows 2000, и приводится информация, специфическая для 64-разрядной Windows 2000. В этом издании автор, перейдя с языка C на C++, переработал все программы-примеры и представил ряд новых приложений, например ProcessInfo и LISWatch. Также появились совершенно новые материалы: выравнивание данных, привязка потоков к процессорам, кэш-линии процессоров, архитектура NUMA, перехват API-вызовов и др. Книга предназначена профессиональным программистам, владеющим языком C/C++ и имеющим опыт разработки Windows-приложений. Прилагаемый компакт-диск содержит все программы из книги (исходный код и исполняемые файлы для процессоров x86, IA-64 и Alpha).
Автор: Джеффри Рихтер
Наши друзья   |x|
Сертификация специалистов
∙ Как устроиться на высокооплачиваемую работу?
  Как получить прибавку к зарплате?
  Как завоевать уважение коллег?
∙ Пройти сертификацию и продемонстрировать свой профессионализм. Подробнее…
Другие сайты о DELPHI   |x|
Уголок Delphi-программиста
Сайт о программировании в Delphi. Здесь можно найти интересные статьи, полезные ссылки,
задать вопрос в форуме, скачать учебники по программированию, посмотреть раздел "ЧаВо".
Почитать о ...

» Оценка сайта: 3
Опрос населения :)
Образование программиста?
»»» Высшее
»»» Незаконченное высшее
»»» Среднее специальное
»»» Среднее
Для души

Хокку дня
О чем пишешь крылышком
На стекле,
Прилетевшая ласточка?

Афоризмы
Никогда никого не хвалят бескорыстно... (Ларошфуко)

Фраза дня
... И на обломках InterNet"a напишут наши имена...

Дурацкие законы (информация предоставлена сайтом kurilka.com)
В городе Чико в Калифорнии (США) штраф до 500 долларов, грозит всякому, кто взорвет в пределах города ядерное устройство. Интересно, кто это штраф будет взымать?
В Нью Орлеане (США) нельзя призязывать крокодилов к гидрантам.

И на закуску коротенький анекдот
Почему деньги фальшивые?.. это копии ...заверенные нотариусом.

Фотоприколы.
Начните день с хорошего настроения!
http://www.delphimaster.ru/cgi-bin/prikol.pl?id=98796


На этом позвольте откланяться и пожелать вам удачного дня.
Искренне ваш, Алексей (merlin@delphimaster.ru)

Добро пожаловать на сайт -= Мастера DELPHI =- 


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное