Форум: "Начинающим";
Текущий архив: 2011.04.03;
Скачать: [xml.tar.bz2];
ВнизСохранение ранее введенных значений в TEdit Найти похожие ветки
← →
Pcrepair © (2011-01-07 12:05) [0]Добрый день
Есть следующее:
Контрол типа Edit1, изначально пустой (в свойствах text = пусто) и кнопка Button1 на форме
суть проблемы:
нужно после ввода значения в Edit1 нажать на кнопку и запомнить веденное значение таким образом, что бы после перезапуска программы ранее введенное значение отобразилость в контроле и было доступно для других обработчиков событий (по сути это страница настройки параметров программы )
Вопрос:
При помощи каких методов это делается?
- запись значения из контрола в реестр с последующим чтением из реестра при перезапуске программы
- запись в файл.ини
- запись где то в самой программе?
← →
_Юрий (2011-01-07 12:21) [1]> При помощи каких методов это делается?
> из реестра при перезапуске программы
Можно так
> - запись в файл.ини
Или так
> - запись где то в самой программе?
а это врядли
← →
Pcrepair © (2011-01-07 12:32) [2]а какой способ правильный? или наиболее применяемый
← →
_Юрий (2011-01-07 12:42) [3]
> а какой способ правильный? или наиболее применяемый
Это тема для холивара.
На мой взгляд, лучше в реестр
← →
Anatoly Podgoretsky © (2011-01-07 12:52) [4]
> запись где то в самой программе?
Что такое сама программ?
← →
Pcrepair © (2011-01-07 13:01) [5](4)в данном случае программа это форма с полем ввода и кнопкой, потом еще что нибуть можно прикрутить
(3)что бы записывать что то в реестр пользователь должен иметь права админа, иначе программа не будет иметь доступа к реестру
получается что более правильный метод - записать в файл.ини и потом , при перезапуске программы, считать из него
← →
_Юрий (2011-01-07 13:11) [6]
> что бы записывать что то в реестр пользователь должен иметь
> права админа, иначе программа не будет иметь доступа к реестру
смотря куда. В CurrentUser можно и без админа.
С ини-файлом главный вопрос - где он будет храниться.
И легко ли будет его потом найти.
← →
Anatoly Podgoretsky © (2011-01-07 13:11) [7]> Pcrepair (07.01.2011 13:01:05) [5]
Странные у тебя представление о реестре.
← →
Pcrepair © (2011-01-07 13:16) [8](6) ини-файл можно хранить в том же каталоге, это не принципиально, пока
а какой код будет проще - запись-чтение из реестра, или запись -чтение из файла. пока не то не другое не разбирал, надо для начала что попроще
← →
Anatoly Podgoretsky © (2011-01-07 13:21) [9]> Pcrepair (07.01.2011 13:16:08) [8]
Что значит "в том же каталоге", Технические термины ТОР, ЭТОТ не немут
инфррмации.
← →
Anatoly Podgoretsky © (2011-01-07 13:23) [10]
> (4)в данном случае программа это форма с полем ввода и кнопкой,
> потом еще что нибуть можно прикрутить
В таком случае сохраняй в "сама программ"
← →
RWolf © (2011-01-07 16:12) [11]
> Pcrepair © (07.01.11 13:01) [5]
хинт: на каждый раздел реестра устанавливаются свои права доступа.
← →
Pcrepair © (2011-01-07 19:22) [12]реальный код такой:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IniFiles;
type
TForm1 = class(TForm)
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
F: TIniFile;
names: TStringList;
i: integer;
begin
F := TIniFile.Create(ExtractFilePath(ParamStr(0)) + "rdp.ini");
Edit1.Text := F.ReadString("tools", "edit1", "no text");
names := TStringList.Create;
F.ReadSection("files", names);
for i := 0 to Names.Count - 1 do
names.Destroy;
F.Destroy;
end;
procedure TForm1.FormDestroy(Sender: TObject);
var
F: TIniFile;
i: integer;
begin
F := TIniFile.Create(ExtractFilePath(ParamStr(0)) + "rdp.ini");
F.WriteString("tools", "edit1", Edit1.Text);
F.Free;
end;
end.
но есть еще один вопрос: при перезапуске программы сохраненное значение выводится в "синем фоне", как от этого избавится?
← →
Pcrepair © (2011-01-07 19:52) [13]уже нашел
всем спасибо за подсказки
← →
Юрий Зотов © (2011-01-08 00:16) [14]1. Что делает этот цикл?
for i := 0 to Names.Count - 1 do
names.Destroy;
Это явная ошибка.
2. Вызывать деструкторы напрямую не рекомендуется, используйте Free.
3. Везде не хватает try-finally:создали объект
try
работаем с объектом
finally
объект.Free
end
← →
Германн © (2011-01-08 02:17) [15]
> Pcrepair © (07.01.11 19:22) [12]
>
> реальный код такой:
> Юрий Зотов © (08.01.11 00:16) [14]
>
> 1. Что делает этот цикл?
> for i := 0 to Names.Count - 1 do
> names.Destroy;
> Это явная ошибка.
>
Это не "реальный код". Это бред какой-то.
← →
Pcrepair © (2011-01-08 10:02) [16]вовсе не бред поскольку все работает
все вопросы к "Королевству ДЕльфи", код оттуда
но подумаем, спасибо за подсказку
← →
Юрий Зотов © (2011-01-08 10:48) [17]> Pcrepair © (08.01.11 10:02) [16]
> вовсе не бред поскольку все работает
Дело Ваше, но очень советую раз и навсегда понять, что "все работает" еще ничего не значит.
> все вопросы к "Королевству ДЕльфи", код оттуда
Дело Ваше, но очень советую раз и навсегда понять, что:
а). и здесь, и на Королевстве, и на любых других форумах хватает чайников, считающих себя знатоками и дающих неверные советы и примеры ужасного кода;
б). слепое копирование кода без его понимания - это ОЧЕНЬ плохо;
в). все вопросы ВСЕГДА к АВТОРУ программы.
← →
Pcrepair © (2011-01-08 14:53) [18]нет никакой программы
это просто процесс изучения возможностей Делфи
← →
Юрий Зотов © (2011-01-08 15:31) [19]
> Pcrepair © (08.01.11 14:53) [18]
Тогда слепое копирование кода без попытки его понять тем более неверно.
PS
А возможности Delphi почти безграничны. По крайней мере, на платформе Widows на Delphi можно написать все, кроме драйверов.
← →
sniknik © (2011-01-08 19:57) [20]> кроме драйверов.
драйвер тоже, с извратами правда. а если бы не происки мелкософта, то и их бы не было.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.04.03;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.003 c