Access Violation, некорректное выполнение запросов или вызовов API, ошибки утилит командной строки, в общем все, что вам мешает работать
Модераторы: kdv, dimitr
-
Juice
- Сообщения: 23
- Зарегистрирован: 16 фев 2005, 11:54
Сообщение
Juice » 05 май 2005, 13:33
Запускаю программу из под IDE Delphi 5 - Все нормально. Когда же запускаю ее из проводника возникает ошибка
ERROR: Dynamic SQL Error
SQL error code = - 502
Declared cursor already exists.
Поиск в по "королевству Delphi" дал такой результат (привожу ответ на похожий вопрос) :
Имя курсора в IBX строится так CursorName:=RandomString(12);
На всех клиентах вызывай Randomize; Должно заработать.
Непонятно что такое CursorName ? Это св-во какого-то компонента или что? Функцию RandomString я тоже не встречал ...
Взято отсюда:
http://www.delphikingdom.ru/asp/answer. ... nswer=7759
Порылся в баг-листе и нашел:
Что это за COBOL такой и причем тут нуль-терминальные строки ? Просто проблемы с английским испытываю

Надеюсь что кто-то уже сталкивался с такой проблемой и знает как ее решить.
PS. установлен IBXDP504Upd.EXE - вроде как последний
-
Merlin
- Динозавр IB/FB
- Сообщения: 1502
- Зарегистрирован: 27 окт 2004, 11:44
Сообщение
Merlin » 05 май 2005, 13:50
Похоже на глючок в IBX. Говорили, что в последних вроде уже он для этого GUID пользует. Так что, видать GUID таки кончились

Загляни у себя в ibsql.pas, constructor TIBSQL.Create, из чего он там FCursor лепит.
-
Juice
- Сообщения: 23
- Зарегистрирован: 16 фев 2005, 11:54
Сообщение
Juice » 05 май 2005, 14:43
Теперь уже понятнее стало чуточку. Написана там вот такая строчка :
FCursor := Name + RandomString( 8 );
Вот решил переписать как было посоветовано :
Randomize;
FCursor := RandomString(12);
Откомпилировал модуль, теперь глюк появляется и в IDE Delphi

Чудеса
Ради любопытства решил посмотреть что он там генерирует :
Randomize;
FCursor := RandomString(12);
ShowMessage(FCursor);
... И после того как я раз 30 нажал ОК программа запустилась и не выдала ошибку ! Получается что тут дело в генераторе случайных чисел ? Пробовал так:
FCursor := chr(Random(100)+50) + chr(Random(100)+50) + chr(Random(100)+50) +
chr(Random(100)+50) + chr(Random(100)+50) + chr(Random(100)+50) +
chr(Random(100)+50) + chr(Random(100)+50) + chr(Random(100)+50) +
chr(Random(100)+50) + chr(Random(100)+50) + chr(Random(100)+50);
Не помогло. Может у кого какие идеи есть ?
-
Merlin
- Динозавр IB/FB
- Сообщения: 1502
- Зарегистрирован: 27 окт 2004, 11:44
Сообщение
Merlin » 05 май 2005, 14:57
Тебе же уже сказали - не трожь ничего в кишках, а просто на старте пргораммы вызывай Randomize для инициализации генeратора Random псевдослучайным Seed, а не одним и тем же числом при всех запусках.
-
Juice
- Сообщения: 23
- Зарегистрирован: 16 фев 2005, 11:54
Сообщение
Juice » 05 май 2005, 15:25
Не помогает вызов Randomize на старте программы, да и чего он вообще должен помогать на старте если даже в коде компонента он не помогает ?
-
MuirsheenDurkin
- Сообщения: 44
- Зарегистрирован: 21 янв 2005, 10:18
Сообщение
MuirsheenDurkin » 05 май 2005, 15:52
juice писал(а):Не помогает вызов Randomize на старте программы, да и чего он вообще должен помогать на старте если даже в коде компонента он не помогает ?
Неправильный ответ. Randomize устанавливает Seed (не знаю, как по-русски, я по-русски не очень) алгоритма генерации случайных чисел. Ты все время его переустанавливаешь и не даешь генератору "раскрутиться" как следует.
Randomize правильно вызывать ОДИН раз при старте процесса (в смысле, перед первым обращением к Random).
А правильный ответ в том, что надо GUID надо генерить функцией CoCreateGuid (объявлено в модуле ActiveX).
-
Juice
- Сообщения: 23
- Зарегистрирован: 16 фев 2005, 11:54
Сообщение
Juice » 05 май 2005, 16:10
MuirsheenDurkin, Merlin, огромное вам спасибо! Целый день провозился с этим! С GUID все отлично заработало! ]
-
Merlin
- Динозавр IB/FB
- Сообщения: 1502
- Зарегистрирован: 27 окт 2004, 11:44
Сообщение
Merlin » 05 май 2005, 16:52
MuirsheenDurkin писал(а):
Randomize устанавливает Seed (не знаю, как по-русски, я по-русски не очень)
Семя. В смысле семечко, из которого растёт последовательность, а не то, что гусары подумали

-
MuirsheenDurkin
- Сообщения: 44
- Зарегистрирован: 21 янв 2005, 10:18
Сообщение
MuirsheenDurkin » 06 май 2005, 09:21
Merlin писал(а):
Семя. В смысле семечко, из которого растёт последовательность
Спасибо, буду знать. А я все думал, причем тут семечко?...