Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.09.02;
Скачать: [xml.tar.bz2];

Вниз

Уникальный код   Найти похожие ветки 

 
fisherman ©   (2007-08-09 14:17) [0]

Всем привет!
Подскажите, есть у Делфи функция формирующая уникальный код


 
Сергей М. ©   (2007-08-09 14:21) [1]

CreateGUID устроит ?


 
Rouse_ ©   (2007-08-09 14:21) [2]

CreateGUID()


 
Jeer ©   (2007-08-09 14:25) [3]


> формирующая уникальный код


твоего нового уникального приложения ?


 
fisherman ©   (2007-08-09 14:26) [4]

спасибо, сейчас попробую


 
tesseract ©   (2007-08-09 14:34) [5]

for i:=1 to 99 do
begin
 unicode:=unicode+strtoint(random(99));
end;


 
fisherman ©   (2007-08-09 14:47) [6]


> CreateGUID()

не совсем то, мне надо заносить в DBF-ку онформацию и каждой записи присваивать уникальный код.
База данных используется другой программой написанной на FoxPro, и там используется функция sys(3) возвращающая уникальный 8-ми знаковый числовой код.
Вот что-то наподобие этого надо


 
Сергей М. ©   (2007-08-09 14:56) [7]


> мне надо заносить в DBF-ку онформацию и каждой записи присваивать
> уникальный код


Чем же не устроил уникальный GUID ?

И слышал ли ты хоть что-либо о генераторах автоинкрементных целочисленных значений ?

И какого лешего ты постишь вопрос здесь, а не в форуме по базам данных ?


 
l_v   (2007-08-09 15:01) [8]

Shift+Ctrl+G... :)
правда стринг, и правда он тебе совсем неподходит... :)


 
tesseract ©   (2007-08-09 15:38) [9]


> не совсем то, мне надо заносить в DBF-ку онформацию и каждой
> записи присваивать уникальный код.


Автоинкрементые поля уходят в Ж ?


 
Leonid Troyanovsky ©   (2007-08-09 15:45) [10]


> fisherman ©   (09.08.07 14:47) [6]

> FoxPro, и там используется функция sys(3) возвращающая уникальный
> 8-ми знаковый числовой код.
> Вот что-то наподобие этого надо

Value := Format("%8.8d", [Random(100000000)]);

--
Regards, LVT.


 
{RASkov} ©   (2007-08-09 16:22) [11]

Как-то не больно давно я тоже такой "ерундой" страдал :) Вот:
http://delphimaster.net/view/2-1179178018/
Можно и под "числовой" переделать....


 
l_v   (2007-08-09 16:25) [12]


> {RASkov} ©   (09.08.07 16:22) [11]


Произошла ошибка:
Не найдена ветка № 1179178018, возможно она была удалена или перенесена в другой форум.

Назад

(c) Мастера DELPHI


 
{RASkov} ©   (2007-08-09 16:26) [13]

Последний пост из той ветки:

[9] {RASkov} ©   (15.05.07 18:21)
В общем остановился на этом (может кому и пригодится):
function GetDID(const F12Ch: Boolean=True): String;
const Ch: array [0..25] of Char = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    MAXCHAR = 3-1;
var ArrPosCh: array [0..MAXCHAR] of Byte;
  SetPosCh: set of Byte;
  N, K, J, Min, TmpI: Byte;
begin
for N:= 0 to MAXCHAR do ArrPosCh[N]:=0;
N:=0; SetPosCh:=[];
Result:=IntToStr(Round((Now-RoundTo(Now, 2))*10000000));
Randomize; J:=Length(Result)-(2-ORD(F12Ch));
while N<=MAXCHAR do begin
 K:=2+Random(J);
 if not ((K in SetPosCh) or (Pred(K) in SetPosCh) or (Succ(K) in SetPosCh)) then begin
  Include(SetPosCh, K);
  ArrPosCh[N]:=K;
  INC(N);
 end;
end;
if F12Ch then begin
 for N:=0 to MAXCHAR do begin
  Min:=N;
  for J:=N+1 to MAXCHAR do
   if ArrPosCh[J] < ArrPosCh[Min] then Min:=J;
   TmpI:=ArrPosCh[N];
   ArrPosCh[N]:=ArrPosCh[Min];
   ArrPosCh[Min]:=TmpI;
 end;
 for N:= 0 to MAXCHAR do Insert(Ch[Random(26)], Result, ArrPosCh[N]+N);
end else for N:= 0 to MAXCHAR do Result[ArrPosCh[N]]:=Ch[Random(26)];
end;
Я подозреваю, что совпадений "не будет никогда". ) С условием, что генериться будет минимум один раз на одном компе. Естественно, если в базе уже будет такой идентификатор, то процедура повториться. Я вот думаю, тот ли участок взял из числа (дата+время) или лишнего от начала отсек....
Кстати, может и не надо символы вставлять, тогда и получится число(как я и хотел)?

> [7] Gydvin ©   (15.05.07 07:22)

Не понял вопроса... в чем смысл функции? - ты спрашиваешь... А неужели не понятно, да и расписывал про все это зря что ли....

> [8] Kolan ©   (15.05.07 07:46)
GUID и обреж

Тоже вариант....
Ладно... всем спасибо за участие ;)


 
DVM ©   (2007-08-09 16:28) [14]

GUID статистически уникален, но абсолютная уникальность не гарантирована.


 
antonn ©   (2007-08-09 16:32) [15]


> И какого лешего ты постишь вопрос здесь, а не в форуме по
> базам данных ?

затоптал%)



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.09.02;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.048 c
15-1186502485
Ivolg
2007-08-07 20:01
2007.09.02
Превести c C в Delphi


2-1186492191
poroshm
2007-08-07 17:09
2007.09.02
не могу использовать RandomFrom почему?


2-1186039851
Xmen
2007-08-02 11:30
2007.09.02
проблема с OraSQL.ParamByName


8-1164717121
Ангела
2006-11-28 15:32
2007.09.02
Как преобразовать файл bmp?


1-1182330747
Makhanev Alexander
2007-06-20 13:12
2007.09.02
прочитать результат консольного приложения...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский