Поиск:

Ответ в темуСоздание новой темы Создание опроса
> GUID как с ними работать 
:(
    Опции темы
User
Дата 25.1.2005, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 213
Регистрация: 5.11.2004

Репутация: нет
Всего: нет



Наверное многим чатланам было бы интересно узнать что такое Guid и как с ним работать в Delphi. Я этим вопросом заинтересовался недавно, но литературы по нему так и не нашел. Предлогаю собрать сдесь небольшой анонс решений данной проблемы. Пишите!
Это действительно интересно многим!
PM MAIL WWW   Вверх
<Spawn>
Дата 26.1.2005, 06:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 2
Всего: 64



Вообще то этот вопрос стоило задать в ActiveX\COM\CORBA.

GUID - Global Unique IDentifier - Глобальный Уникальный Иеднтификаторsmile Это 128-разраядное значение, используемое для идентификации COM-обьектов. Генерируется на основе IP-адреса и еще каких то данных. Вероятность повторной генерации одинаковых значений ничтожна мала, точнее говоря, есле генерить GUID-ы со скоростью 1 000 000 в секунду то за время существования вселенной вероятность их повторения равна 5% smile

В Дельфи с ним работать простоsmile Если ты описываешь какой либо интерфейс, то после него указываешь GUID таким образом:

Код

 IDropTarget = interface(IUnknown)
   ['{00000122-0000-0000-C000-000000000046}']


Если нужно самому сгенерить его, то в IDE Дельфи это делается путем нажатия Ctrl+SHift+G, либо программно нужно вызвать функцию CoCreateGUID(Либо поискать на форуме - тут вроде была темка его ручной генерации smile).


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Петрович
Дата 29.1.2005, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1000
Регистрация: 2.12.2003
Где: Москва

Репутация: 6
Всего: 55



Цитата
Вообще то этот вопрос стоило задать в ActiveX\COM\CORBA.

Совсем не обязательно.
Дело в том, что GUID очень удобно для уникальной идентификации записей в БД.
Например, в MS SQL-server'е есть даже специальный тип - uniqueidentifier.

Цитата(User @ 25.1.2005, 14:25)
... собрать сдесь небольшой анонс решений данной проблемы.

А проблемы никакой и нет smile.
Как и сказал <Spawn>, просто используй функцию CreateGUID. Если нужно сгененрировать GUID на MS SQL-сервере, то испоьзуй функцию NEWID().

Вот пример как я "генерю" значение идентификатора для новых записей:
Код

function GetNewRecordID :Variant;
var  GUID :tGUID;
begin
 CheckOSError(CreateGUID(GUID)=0,'Ошибка генерации GUID!');
 Result := GUIDToString(GUID);
end;



--------------------
Все знать невозможно, но хочется
PM ICQ   Вверх
Vit
Дата 30.1.2005, 06:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Последнее время использую их всё чаще и чаще... Очень удобно иметь 100% уникальную строку, практически везде - от баз данных, до уникального имени файла. Везде где надо гарантировать неповторяемость строки использую GUID. Например:
1) при автоматической рассылке email вставляю GUID в заголовок письма как его идентификатор, если клиент звонит с проблемой - по этому GUID я точно идентифицирую что за транзакция была где и когда.
2) Есть система в которой информация передаётся файлами от компа к другому - для уникальности имени использую GUID в качестве имени файла
3) Как ключи в таблице -чтоб не мучится с уникальностью, особенно если есть репликация данных
4) MD5 в результате тоже выдаёт 16 байт, как и GUID - широкое поле деятельности для шифрования...
5) Ну для COM уже говорили
6) Для клиентов при установке приложения из очень многих файлов надо обеспечить совместимость версий и т.п. Кто работал тот знает какую кашу может сотворить продвинутый пользователь тщательно перемешав файлы от разных версий продукта у себя, а потом лезут ошибки которые распутать подчас бывает очень сложно. Поэтому в базу данных кладём табличку или SP с GUID и по нему программа проверяет версию базы данных, в каждую DLL кладём по GUID'у который врзвращается в ответ на какую-нибудь функцтю, к исполняемым файлам можно подшить в ресурсы и т.п. Если аккуратно сделать и эти идентификаторы тщательно запрятать, то клиенту очень сложно будет вручную перемешать файлы, базы данных и т.п. - система безошибочно найдёт все неверные версии а не будет вылетать по малопонятным ошибкам.


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0417 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.