![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Попалась мне тут одна программка, называется WimMtr. Предназначена для тестирования интернет соединения. Имеется там ComboBox для ввода адреса в интернет для тестирования. Первоначально когда я ее запустил поле для ввода было пустым. Я ввел туда адрес www.yandex.ru, протестил, вышел из программы. Когда запустил ее еще раз, поле опять было пустым, но если нажать на стрелку в ComboBox, то можно было уже подставить адрес www.yandex.ru, т.е. он там уже присутствовал. При вводе других адресов они тоже типа автоматически сохранялись.
В каталоге с программой никаких других файлов нет, т.е. программа состоит из 1 файла. Вопрос: Как это реализовать? (Может образуется какой-то файл не в каталоге с программой?). Сриншоты прилагаю. |
#2
|
||||
|
||||
![]() Цитата:
|
#3
|
|||
|
|||
![]() IMHO:
Или в виде внутреннего ресурса !!! ![]() ![]() |
#4
|
|||
|
|||
![]() Сомнительно, что в виде внутреннего реурса. Слишком сложно для простой фичи. Смотреть в реестре. Ну или, если руки у программеров кривые, - в ini-файле в каталоге винды.
|
#5
|
|||
|
|||
![]() да скорей всего это ини файл, по умолчанию он создается в каталоге с виндой.
|
#6
|
||||
|
||||
![]() Реестр самый удобный, думаю, способ!
|
#7
|
|||
|
|||
![]() Действительно в реестре, почистил его руками, записи исчезли. А как всетаки это реализовать, ну чтобы в реестре сохранялись?
|
#8
|
|||
|
|||
![]() С помощью объекта TRegistry.
Примерно так: Код:
uses Registry; // procs procedure SaveListToReg(AList : TStringList; AKey : String); var R : TRegistry; I, C : Integer; begin R := TRegistry.Create; R.RootKey := HKEY_CURRENT_USER; Try If R.OpenKey(AKey,True) Then Begin C := AList.Count; R.WriteInteger('Count',C); For I := 0 To C-1 Do R.WriteString('Item ' + IntToStr(I),AList[i]); R.CloseKey; End; Finally R.Free; End; end; procedure LoadListFromReg(AList : TStringList; AKey : String); var R : TRegistry; I, C : Integer; begin AList.Clear; R := TRegistry.Create; R.RootKey := HKEY_CURRENT_USER; Try If R.OpenKeyReadOnky(AKey) Then Begin If R.ValueExists('Count') Then Begin C := R.ReadInteger('Count'); For I := 0 To C-1 Do If R.ValueExists('Item ' + IntToStr(I)) Then AList.Add(R.ReadString('Item ' + IntToStr(I)); End; R.CloseKey; End; Finally R.Free; End; end; // usage procedure Form1Create(...); begin LoadListFromReg(ComboBox1.Items,'Software\MySoft\Combo1'); end; procedure From1Close(...); begin SaveListToReg(ComboBox1.Items,'Software\MySoft\Combo1'); end; |