![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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; |