Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.02.2008, 18:27   #1
Михаил Юрьевич
Форумчанин
 
Аватар для Михаил Юрьевич
 
Регистрация: 25.12.2007
Сообщений: 655
Восклицание Проверьте код !

Есть вот такой код:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,IniFiles, StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
Ini:TiniFile;
pass:String;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
Ini:= TIniFile.Create(ChangeFileExt(Param Str(0),'Super.INI'));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
pass:=Edit1.Text;
ini.WriteString('Stop','Password',p ass);
ini.Free;

end;


procedure TForm1.Button2Click(Sender: TObject);
begin
Edit2.Text:=ini.ReadString('Stop',' Password','Ошибка');
ini.Free;
end;

end.

Когда нажимаю на первую кнопку,информация из Edit1 записывается в
ini-файл,а когда нажимаю кнопку2 вылетает окно с ошибкой,и если
нажать на первую кнопку два раза тоже вылетает ошибка.
Помогите понять в чем дело?
За частые поиски был забанен во всех известных
поисковых системах!
Михаил Юрьевич вне форума Ответить с цитированием
Старый 07.02.2008, 18:37   #2
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Ты ведь убил объект ini.Free; и пытаешься в него писать или из него читать
_Dmitry вне форума Ответить с цитированием
Старый 07.02.2008, 19:17   #3
Михаил Юрьевич
Форумчанин
 
Аватар для Михаил Юрьевич
 
Регистрация: 25.12.2007
Сообщений: 655
По умолчанию

Подскажите что значит убил, и где это исправить.Второй день как
начал изучать эту тему,пока понять тяжело.
За частые поиски был забанен во всех известных
поисковых системах!
Михаил Юрьевич вне форума Ответить с цитированием
Старый 07.02.2008, 19:32   #4
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Вот это зачем?

procedure TForm1.Button1Click(Sender: TObject);
begin
pass:=Edit1.Text;
ini.WriteString('Stop','Password',p ass);
ini.Free;

end;


procedure TForm1.Button2Click(Sender: TObject);
begin
Edit2.Text:=ini.ReadString('Stop',' Password','Ошиб ка');
ini.Free;
end;
B_N вне форума Ответить с цитированием
Старый 07.02.2008, 19:37   #5
_Dmitry
Участник клуба
 
Аватар для _Dmitry
 
Регистрация: 02.09.2007
Сообщений: 1,193
По умолчанию

Этот код: Ini:=TIniFile.Create(ChangeFileExt( ParamStr(0),'Super.INI')); создает объект ini для работы с ini файлом.
Этот код: ini.Free; объект ini уничтожает.
_Dmitry вне форума Ответить с цитированием
Старый 07.02.2008, 19:51   #6
Михаил Юрьевич
Форумчанин
 
Аватар для Михаил Юрьевич
 
Регистрация: 25.12.2007
Сообщений: 655
По умолчанию

А где лучше поставить ini.Free? Может быть в OnClose?
Это как я правильно понимая освобождает ресурсы.
За частые поиски был забанен во всех известных
поисковых системах!
Михаил Юрьевич вне форума Ответить с цитированием
Старый 07.02.2008, 19:57   #7
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Если объект создается в FormCreate, то логично уничтожать его в FormDestroy
B_N вне форума Ответить с цитированием
Старый 08.02.2008, 09:32   #8
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Да просто цепляй ini и убивай в каждой процедуре, тогда не будет ошибок. А то цепляется он у тебя при создании формы. Как-то неудобно. Пока висит программа, будет и висеть ini файл. Лучше сделай так:
Код:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,IniFiles, StdCtrls;

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
Ini:TiniFile;
pass:String;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
pass:=Edit1.Text;
Ini:= TIniFile.Create(ChangeFileExt(ParamStr(0),'Super.INI'));
ini.WriteString('Stop','Password',pass);
ini.Free;

end;


procedure TForm1.Button2Click(Sender: TObject);
begin
Ini:= TIniFile.Create(ChangeFileExt(ParamStr(0),'Super.INI'));
Edit2.Text:=ini.ReadString('Stop','Password','Ошибка');
ini.Free;
end;

end.
FaTaL вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверьте на правильность плиз Agent[PNZ] Помощь студентам 3 11.06.2014 19:50
Проверьте задачку {StaN} Паскаль, Turbo Pascal, PascalABC.NET 3 04.07.2008 13:20
Помогите переделать и проверьте Mokriy Паскаль, Turbo Pascal, PascalABC.NET 3 22.05.2008 17:26
Проверьте пожалуйста код forumu Помощь студентам 1 27.12.2007 21:49
Проверьте ошибки пожалуйста в задачах. velgelmina Помощь студентам 3 09.06.2007 22:10