| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Уникальное имя раздела реестра. |
| Автор: Егор (к сожалению, не Летов) 24.8.2002, 02:14 |
| Как можно реализовать следующее? В реестре нужно создать раздел HKEY_LOCAL_MACHINE\MyKey\00000 при добавлении следующей записи, нужно создать раздел HKEY_LOCAL_MACHINE\MyKey\00001 и так далее. То есть, если раздел 00000 сушествует - создать 00001, если и 00001 сушествует - создать 00002 и т.д и т.п. Идей у меня пока нет, топчусь на одном месте, как видите. Вот и решил спросить. Пример обязателен, хоть какой-нибудь. |
| Автор: Vit 24.8.2002, 03:21 | ||
|
| Автор: Егор (к сожалению, не Летов) 24.8.2002, 03:57 |
| Спасибо. На этом форуме действительно профи помогают. Агой (пока по чешски, или привет, точно уже не помню). |
| Автор: Song 24.8.2002, 16:53 |
| Для этой цели использую GUI - всегда будет уникальной, хотя и неудобоваримой как Ваш ключ. |
| Автор: Егор (к сожалению, не Летов) 27.8.2002, 22:26 | ||
| Не работает. Ошибочка вот такая: Project Project1.exe raised exception class EConvertError with message "MPEG-4DC' Is nol a valid Inleger value". Process slopped. Use Slep or Run to conllnue. Вот код:
|
| Автор: Vit 27.8.2002, 23:19 |
| Ну так я расчитывал что у тебя будут только папки "00000", "00001" и т.д., а у тебя там появилась "MPEG-4DC". Тебе надо или исключить их появление или обрабатывать эту ситуацию. |
| Автор: Егор (к сожалению, не Летов) 27.8.2002, 23:49 | ||
Я не понимаю. |
| Автор: Vit 28.8.2002, 00:12 |
| Собственно моя ошибка в том, что видимо нельзя давать готовый код - он будет просто вставлен и вопрошающий так и не поймёт что он делает В данном случае надо исключить не числовые значения из массива UnikKey - т.е. там надо оставить значения "00000", "00001" и т.п. и исключить типа "MPEG- 4DC", кроме того, естественно я не предполагал что будет посторонний мусор, поэтому надо придумать как обработать ситуацию если попадётся например ключ "234" - сортируются то строки, не цифры, так что такие значения если найдены то должны быть тоже исключены. |
| Автор: Егор (к сожалению, не Летов) 28.8.2002, 00:20 |
| Объясни что делает следующий фрагмент кода (желательно по-подробнее): Format('%.5d',[StrToInt(UnikKey[UnikKey.count-1])+1]) :baaa :baaa |
| Автор: Vit 28.8.2002, 00:35 |
| Функия Format позволяет вставлять в строку различные значения. Например Format('Егор (%s %s) ',['который', 'не Летов']) вернёт строку: 'Егор (который не Летов)' т.е. вместо %s будут вставлены значения строк из массива в квадратных скобках Format('%d Попугаев',[38]) вернёт строку: '38 Попугаев' т.е. вместо %d будет вставлено число (не строка) из массива теперь в нашем случае: Format('%.5d', .... "%.5d" обозначает что мы вставляем число и что это число будет пятизначным, т.е. если мы вставим Format('%.5d', [1]) то получим строку "00001" "UnikKey.count-1" - номер последней строки в массиве (отсортированном по порядку) UnikKey[UnikKey.count-1] - последняя строка в массиве StrToInt - перевод строки в число (она как раз и генерит ошибку, когда попадается строка, которую нельзя конвертировать в целое число) StrToInt(UnikKey[UnikKey.count-1]) взять последнюю строку в массиве и конвертировать ее в число StrToInt(UnikKey[UnikKey.count-1])+1 - взять следуещее число Format('%.5d',[StrToInt(UnikKey[UnikKey.count-1])+1]) - следующее число конвертировать в 5тизначнное число в виде строки |
| Автор: Егор (к сожалению, не Летов) 31.8.2002, 22:31 |
| Не выходит у меня без ошибки создать ключ. Может, кто поможет? |
| Автор: Vit 4.9.2002, 04:29 |
| Ok, значит задача состоит в том чтобы убрать из массива названий все что не являются цифрами, и сделать это надо здесь: Reg.GetKeyNames(UnikKey); //сюда вставляет код который удаляет все ключи из UnikKey, которые не являются цифрами UnikKey.Sorted:=true; |