Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.30;
Скачать: CL | DM;

Вниз

дублирование записей   Найти похожие ветки 

 
Doctor Deejay ©   (2004-05-04 18:31) [0]

Вопрос в следующем. Есть БД. Заполняю одно из ее полей по рандому с пом. функции:

function TForm1.GenerateImgID : string;
const
  Chars = "0123456789abcdefghijklmnopqrstuvwxyz";
  Len = 16;
  Path = "c:\cool";
begin
Memo1.Clear;
Memo1.Lines.LoadFromFile(Path);
Randomize;
result:="";
repeat
 Application.ProcessMessages;
  while length(Result)<Len do
    begin
      Application.ProcessMessages;
      Result:=Result + Chars[Random(36) + 1];
    end;
until pos(result,Memo1.Text)=0;
Memo1.Lines.Add(Result);
Memo1.Lines.SaveToFile(Path);
end;


После вызова этой функции в цикле заполнения происходит дублирование одного и того же значения на несколько записей. Не знает ли кто-то причину. Может алгоритм не тот самой ф.?
Использую стандартные TClientDataSet TDataSource TDBGrid


 
Doctor Deejay ©   (2004-05-05 10:49) [1]

НЕУЖЕЛИ НИКТО НЕ ПОДСКАЖЕТ?


 
Johnmen ©   (2004-05-05 10:55) [2]

1. Randomize вынеси в место, однократно выполняемое при начале работы прогр. В секцию инициализации, напр.
2. Application.ProcessMessages абсолитно лишнее
3. Лучше уж использовать виндовый гуид. См. TGUID и кака с ним работать...


 
Doctor Deejay ©   (2004-05-05 17:50) [3]

Дело в том, что если поставить паузу, то проблема исчезает....


 
Desdechado ©   (2004-05-06 10:51) [4]

Дело в том, что Randomize инициализируется с системного таймера, и стартовое значение может быть одинаковым в пределах малого промежутка времени.
Так что Johnmen (1) - обязательно.



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

Текущий архив: 2004.05.30;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.031 c
4-1082126253
Islander
2004-04-16 18:37
2004.05.30
Какое сообщение поступает форме, когда она получает фокус?


11-1073810257
avakss
2004-01-11 11:37
2004.05.30
Как программно создать ярлык?


6-1081437214
som
2004-04-08 19:13
2004.05.30
проблема с навигацией по FTP серверу


3-1084107044
Cardinal
2004-05-09 16:50
2004.05.30
Присвоение значения полю. Проблема.


3-1084275020
Gennadiy
2004-05-11 15:30
2004.05.30
Проблема с условием в хранимой процедуре