Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по компонентам для Delphi, C++ Builder 2

Автор: wader
Дата сообщения: 11.10.2006 23:09
svs123456789

Два вопроса:
1. А чем через OLE не устраивает?
2. Тебе именно doc нужны или rtf тоже подойдет?

Хранить в БД - попробуй Blob поля использовать
Автор: Vladimir_Pashutin
Дата сообщения: 12.10.2006 05:53
svs123456789
Я уже писал в этот топик, что прошу обратить внимание уважаемых разработчиков, стремящихся засунуть в поля базы данных всё подряд, на такую проблему как обеззараживание Word-овских документов, хранящихся вне файловой системы. По моему горькому опыту это очень серьёзная проблема - стоит какому-нибудь пользователю занести вирус в любой документ и вылечить потом систему будет очень трудно!
Автор: Alto
Дата сообщения: 12.10.2006 06:31
Vladimir_Pashutin
Варианты обхода есть... иметь антивирус на стороне сервера... и складывать новые и измененные документы во временную папку... которую переодически им и проверять. Фиксировать случаи заражения возможно очень оперативно. Блокировать зараженные документы тоже. Лучше так, чем запрещать... к тому же можно использовать форматы документов... в которых нет поддержки макросов или активного контента
Автор: GrHnd
Дата сообщения: 12.10.2006 11:52
Hi All!
Подскажите как можно определить из программы на Delphi являешься ли Администратором на данной машшине?
Автор: Vixoid
Дата сообщения: 12.10.2006 12:07
GrHnd
const
SECURITY_NT_AUTHORITY: TSIDIdentifierAuthority =
(Value: (0, 0, 0, 0, 0, 5));
SECURITY_BUILTIN_DOMAIN_RID = $00000020;
DOMAIN_ALIAS_RID_ADMINS = $00000220;

function IsAdmin: Boolean;
var
hAccessToken: THandle;
ptgGroups: PTokenGroups;
dwInfoBufferSize: DWORD;
psidAdministrators: PSID;
x: Integer;
bSuccess: BOOL;
begin
Result := False;
bSuccess := OpenThreadToken(GetCurrentThread, TOKEN_QUERY, True,
hAccessToken);
if not bSuccess then
begin
if GetLastError = ERROR_NO_TOKEN then
bSuccess := OpenProcessToken(GetCurrentProcess, TOKEN_QUERY,
hAccessToken);
end;
if bSuccess then
begin
GetMem(ptgGroups, 1024);
bSuccess := GetTokenInformation(hAccessToken, TokenGroups,
ptgGroups, 1024, dwInfoBufferSize);
CloseHandle(hAccessToken);
if bSuccess then
begin
AllocateAndInitializeSid(SECURITY_NT_AUTHORITY, 2,
SECURITY_BUILTIN_DOMAIN_RID, DOMAIN_ALIAS_RID_ADMINS,
0, 0, 0, 0, 0, 0, psidAdministrators);
{$R-}
for x := 0 to ptgGroups.GroupCount - 1 do
if EqualSid(psidAdministrators, ptgGroups.Groups[x].Sid) then
begin
Result := True;
Break;
end;
{$R+}
FreeSid(psidAdministrators);
end;
FreeMem(ptgGroups);
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if isAdmin then
ShowMessage('Logged in as Administrator');
end;
Автор: Alto
Дата сообщения: 12.10.2006 13:07
Vixoid
Немножко побаловался с кодом... есть небольшое замечание... у микрософта есть такое определение Retrieving Data of Unknown Length для функци... т.е. когда заранее неизвестно как много данных вернет запрос... требуется предварительно запросить размер и только потом выделять необходимую память... вот так:

dwInfoBufferSize := 0;
GetTokenInformation( hAccessToken, TokenGroups, nil, dwInfoBufferSize, dwInfoBufferSize );
GetMem( ptgGroups, dwInfoBufferSize );
Result := GetTokenInformation(hAccessToken, TokenGroups, ptgGroups, dwInfoBufferSize, dwInfoBufferSize);
Автор: Aladdinych
Дата сообщения: 12.10.2006 13:37
Как вызвать процедуру или открыть форму, если ее имя задано в строковой переменной?
Автор: ILSOFT
Дата сообщения: 12.10.2006 14:53
Подскажите, есть ли эксперт какой для delphi (и как называется) чтобы можно выбрать варианты загрузки среды, т.е. например мне не нужны все компоненты сразу, а нужна какие то конкретные для этого проекта - выбираем одну конфигурацию, для другого проекта другую. и т.д
Автор: Vladimir_Pashutin
Дата сообщения: 12.10.2006 15:18
Alto
Нафига попу баян?
Если всё равно складывать в директорий, так при чём здесь поля БД.
Автор: ekemov
Дата сообщения: 12.10.2006 15:39
ILSOFT
В D2006 если в какомто проекте убираешь(просто убираешь галочки) Component->Install packages, сохраняешь проект, и теперь при каждой загрузке данного проекта будут только нужные тебе компоненты.
Автор: RedPromo
Дата сообщения: 12.10.2006 16:12
Aladdinych
Форму открыть очень просто
Регистрируеш класс формы
то есть.
TFormClass = class of TForm;
потом
делаеш так
var mNewForm: TFormClass;
begin
mNewForm:= TFormClass(FindClass(ClassName)); //className -твоя строковая переменная имя формы
// "TMyForm"
mNewForm.Create(Self);
end;
Да и не забыть перед етим зарегистрировать класс формы
RegisterClass(TMyForm);
Вобще я всегда делаю базовую фому для все[ не Main форм
Автор: andead
Дата сообщения: 12.10.2006 17:13
посоветуйте панельку с градиентом, только чтобы при перерисовке не мерцала, пробовал TAdvPanel из TMS 4.0, но она предательски мерцает при изменении размеров

и ещё нужен Image с возможностью загружать Png файлики с прозрачностью и альфаканалами
Автор: Arvur
Дата сообщения: 12.10.2006 17:26
ILSOFT
Devrace MultiProfile пробегал в топике по коммерческим компонентам.
Есть еще пара бесплатных, но поддерживаются плохо и работают только с D2005/2006
Автор: svs123456789
Дата сообщения: 12.10.2006 17:55
хранение док-ов в БД (клиент на D7) -обсудим?
итак ЧТО надо ;( хранить ?
1)rtf (из комлекта D7) искажает док-ты Word сохраненные в rtf
(нужен сторонний компонент)
2)сохранение док-ов Word в rtf позволяет решить проблему вирусов!
3)НО иногда надо хранить и excel и тп
4)док-ы уже есть и проще всего добавлять их в существующем виде в формате doc
5) может есть универсальное решение?

КАК показывать редактировать ?
1)хранить в той же записе поле описание док-а и по запросу юзера
-экспортировать из BLOB в поток на hdd и открывать в ассоциированном приложении
а по окончании редактирования замещать новой версией файла - ранее хранящееся содержимое BLOB
2)организовать предварительный просмотр и редактирование с помощью соответсвующих компонент
на эту роль просятся 2 компоненты
Автор: xokc
Дата сообщения: 12.10.2006 18:21
andead

Цитата:
и ещё нужен Image с возможностью загружать Png файлики с прозрачностью и альфаканалами

http://pngdelphi.sourceforge.net/
Автор: Sexton
Дата сообщения: 13.10.2006 00:54
wader

Цитата:
1. А чем через OLE не устраивает?

Для использования OLE в данном случае, как я понимаю, должен быть офис на машине клиента установлен. А автор, наверное, хочет "независимости".
Впрочем, вряд ли существуют компоненты, которые могут заменить Word.
Согласен, что не нужно пытаться
Цитата:
засунуть в поля базы данных всё подряд
. Не только из-за вирусов, а просто потому, что SQL-сервера несколько для других целей придуманы. Зачем делать подобие WinFS?
Автор: wader
Дата сообщения: 13.10.2006 01:04
Sexton

Цитата:
Впрочем, вряд ли существуют компоненты, которые могут заменить Word.
Про что и речь . Компоненты есть конечно, но до ворда им еще далеко


Цитата:
Не только из-за вирусов, а просто потому, что SQL-сервера несколько для других целей придуманы. Зачем делать подобие WinFS?
А где хранить пользовательские заметки, например в rtf формате, картинки?
Я для этого использую блобы и все работает отлично.
Объясни где грабли, как нужно это все хранить?
Автор: Arvur
Дата сообщения: 13.10.2006 01:32

Цитата:
А где хранить пользовательские заметки, например в rtf формате, картинки?

Имхо : для intranet решений (LAN) логичнее хранить путь к файлу, а сами файлы держать в расшареной папке на сервере. Тут и проблема вирусов решается и база блобами не пухнет.
Если же речь идет о честном internet-приложении... Хотелось бы для начала услышать обоснование крупных блобов в этом случае.
Автор: Sexton
Дата сообщения: 13.10.2006 01:45
wader, SQL сервер дает преимущества при вводе, хранении, выводе и анализе совокупности связанных массивов однородных данных (во я завернул). Иными словами, в SQL-базу имеет смысл помещать данные, которые могут быть обработаны (проанализированы) средствами SQL-сервера. Если дополнительно к этому необходимо хранить многострочные текстовые пояснения или поясняющие изображения - вполне подойдет blob. Но для пояснения в несколько строк вряд ли понадобится rtf (или word).
Но создавать SQL-базу специально с целью замены файловой системы не имеет большого смысла, мне кажется. Есть же, наверное, специальные средства управления документацией.
Запихать в базу можно, конечно, все, что угодно. Только в чем будут преимущества перед файловой системой?
Автор: wader
Дата сообщения: 13.10.2006 02:03
Arvur

Цитата:
для intranet решений (LAN) логичнее хранить путь к файлу, а сами файлы держать в расшареной папке на сервере. Тут и проблема вирусов решается и база блобами не пухнет.
Если же речь идет о честном internet-приложении... Хотелось бы для начала услышать обоснование крупных блобов в этом случае.
А я и не говорил о крупных блобах.
Пользовательские заметки -- это максимум десяток килобайт. И хранить кучу файлов в расшаренной папк(-е|-ах) как-то нет желания. Плюс ко всему, настроить разрешения для доступа к информации проще штатными средствами SQL сервера.

Sexton

Цитата:
SQL сервер дает преимущества при вводе, хранении, выводе и анализе совокупности связанных массивов однородных данных (во я завернул).

А чем блобы не массивы однородных данных?


Цитата:
Если дополнительно к этому необходимо хранить многострочные текстовые пояснения или поясняющие изображения - вполне подойдет blob. Но для пояснения в несколько строк вряд ли понадобится rtf (или word).
Понадобится, понадобится Пользователи привередливые стали, хотят красивое оформление . Приходится текст хранить в каком-нибудь формате поддерживающим форматирование.


Цитата:
Но создавать SQL-базу специально с целью замены файловой системы не имеет большого смысла, мне кажется.

Абсолютно согласен, каждому инструменту -- свое место.

Цитата:
Есть же, наверное, специальные средства управления документацией.
Да, есть системы документооборота, но в этом случае -- это как из пушки по воробьям. В моем случае, этого даже близко нет.

Цитата:
Запихать в базу можно, конечно, все, что угодно. Только в чем будут преимущества перед файловой системой?
Ну преимущества свои есть, как и недостатки. Поэтому для каждого проекта необходимо оценивать насколько подходит то или иное решение.
Автор: Sexton
Дата сообщения: 13.10.2006 02:15

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

Проще это сделать средствами реального админа . Несколько лет назад, работая на компьютере в сети крупного предприятия, я смог ощутить удобство совместного использования сетевых ресурсов при грамотной работе админа.

Цитата:
Пользователи привередливые стали, хотят красивое оформление . Приходится текст хранить в каком-нибудь формате поддерживающим форматирование.

Тогда HTML - и форматирование есть и обрабатывать проще.
Автор: wader
Дата сообщения: 13.10.2006 02:30
Sexton

Цитата:
Проще это сделать средствами реального админа .
Согласен, хороший админ никогда не помешает.


Цитата:
Тогда HTML - и форматирование есть и обрабатывать проще.
Да, только SQL сервер сам ничего не будет обрабатывать. Т.е. обработка данных в HTML все равно твоя. Формат данных не имеет в этом случае принципиального значения для SQL сервера.

А все-таки какие недостатки у хранения данных в блобах? (кроме вирусов)

Автор: Arvur
Дата сообщения: 13.10.2006 03:06
wader

Цитата:
А я и не говорил о крупных блобах.

Тогда не понятно, нафига word-то? Для коротких заметок и wpTools за глаза хватит

Цитата:
Формат данных не имеет в этом случае принципиального значения

Если тебе понадобится поиск - парсить rtf/html проще, чем OLE. Да и офис на клиенте не нужен. Короче, я против OLE

Цитата:
А все-таки какие недостатки у хранения данных в блобах?

Думаю, будет зависить от сервера БД.
Firebird, например, грузит блоб одним куском вне зависимости от размера. Если файлы крупные - клиент будет заметно подвисать. Удаление блоба не уменьшает размера базы - большое количество операций приведет к "распуханию". Не уверен, что это не скажется на скорости доступа к остальным данным.

З.Ы. Эксперименты с блобами на FB ставил несколько лет назад. Возможно, мои выводы устарели
Автор: Sexton
Дата сообщения: 13.10.2006 03:12

Цитата:
Да, только SQL сервер сам ничего не будет обрабатывать. Т.е. обработка данных в HTML все равно твоя. Формат данных не имеет в этом случае принципиального значения для SQL сервера.

Ну почему. Если сервер поддерживает обработку текстовых блобов, можно парсить HTML средствами сервера. Если не поддерживает - можно загнать в строку (но это уже изврат) и тоже парсить средствами сервера. Или использовать расширения сервера (в Interbase и клонах - UDF). Да и на клиенте HTML гораздо проще обрабатывать (читай - больше компонентов для обработки).

Цитата:
А все-таки какие недостатки у хранения данных в блобах?

Нерациональное использование вычислительных ресурсов SQL-сервера, как следствие - замедление выполнения основных задач сервера, недовольство юзеров, пинание админа, поминание в суе нехорошими словами разработчиков, урезание зарплаты, увольнение... Бррр, нет, лучше blob'ы осторожнее использовать.
Автор: wader
Дата сообщения: 13.10.2006 03:59
Arvur
Цитата:
Да и офис на клиенте не нужен. Короче, я против OLE
Хех, так а я про что? Я тоже за простые форматы

Sexton
Цитата:
Нерациональное использование вычислительных ресурсов SQL-сервера
в каком месте они нерационально тратятся?


Цитата:
Да и на клиенте HTML гораздо проще обрабатывать (читай - больше компонентов для обработки)
Чем RTF? согласен. Но RTF практически полностью с Word документом совместим, и для некоторых задач его использоать удобнее.
Вообщем нужно рассматривать формат для каждой задачи отдельно.
Автор: Sexton
Дата сообщения: 13.10.2006 04:27

Цитата:
в каком месте они нерационально тратятся?

Arvur же на это уже ответил.
Автор: SERGE_BLIZNUK
Дата сообщения: 13.10.2006 05:32
wader

Цитата:


Цитата: Нерациональное использование вычислительных ресурсов SQL-сервера

в каком месте они нерационально тратятся?
Автор: Vixoid
Дата сообщения: 13.10.2006 06:09
Aladdinych
А где находится эта процедура, в самой программе или в DLL?


Добавлено:
SERGE_BLIZNUK
А сервер БД какой?
Автор: Vladimir_Pashutin
Дата сообщения: 13.10.2006 06:33
М-да, неслабая шумиха развернулась по поводу хранения Word-а в blob-ах.
Imho, проверенное опытом подсказывает, что всегда надо рассматривать соотношение выгод и затрат. Каковы выгоды от сохранения Word-а в поле БД?.
Типа это такое большое данное, с которым можно оперировать запросами SQL? Тут уже заметили что это совсем не так. М-м-м, единственное что приходит на ум это упрощение backup-а и переноса данных с места на место. Но и это легко решается парой функций определяемых пользователем в СУБД. Если же вопрос стоит в разграничении доступа к файлам, то IMHO легче всё-таки написать в базе функцию, читающую файл и отдающую его пользователю, чем плодить blob-ы. Так нафига попу баян?
Автор: wader
Дата сообщения: 13.10.2006 06:46
SERGE_BLIZNUK
Полностью согласен, у нас тоже в блобах rtf (файлы ма-а-ахонькие )

Sexton
Общий итог -- можно, но осторожно

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071

Предыдущая тема: Вызов файла по относит пути и определение буквы СД-рома


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.