Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1292349556
Baks
2010-12-14 20:59
2011.04.03
WordPress Drupal Joomla или самому ручками


15-1292311804
brother
2010-12-14 10:30
2011.04.03
Посоветуйте ИБП


15-1292275795
Юрий
2010-12-14 00:29
2011.04.03
С днем рождения ! 14 декабря 2010 вторник


15-1292496064
iPhone Owner
2010-12-16 13:41
2011.04.03
отпала кнопка переключения громкости


2-1294224895
nil
2011-01-05 13:54
2011.04.03
загрузка res-файлов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский