Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

дублирование записей [D6, стандартная БД CDS]


Doctor Deejay ©   (2004-05-04 18:31:00) 

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

functionTForm1.GenerateImgID : string;
const
  Chars = '0123456789abcdefghijklmnopqrstuvwxyz';
  Len = 16;
  Path = 'c:\cool';
begin
Memo1.Clear;
Memo1.Lines.LoadFromFile(Path);
Randomize;
result:='';
repeat
 Application.ProcessMessages;
  whilelength(Result)<Len do
    begin
      Application.ProcessMessages;
      Result:=Result + Chars[Random(36) + 1];
    end;
untilpos(result,Memo1.Text)=0;
Memo1.Lines.Add(Result);
Memo1.Lines.SaveToFile(Path);
end;


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


Desdechado   (2004-05-06 10:51:00) [1]

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


Doctor Deejay   (2004-05-05 17:50:00) [2]

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


Johnmen   (2004-05-05 10:55:00) [3]

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


Doctor Deejay   (2004-05-05 10:49:00) [4]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо