![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
сравнение 2-х строк, если они равны то вывод формы-сообщения
gvozdkoff © (2010-04-01 09:32:00)здравствуйте мастера своего дела !
решил напистаь программку , суть следующая.
Программа напоминалка по дате.
на форме есть DateTimePicker1 - в нем задаем нужную нам дату.
в свойстве DateTimePicker1Change пишу
edit2.Text:=formatdatetime('dd.mm.yyyy', datetimepicker1.Date);
Далее, значение edit2.text записывается в файл, в нулевую строку файла f.Strings[0]
......
f.Strings[0]:=edit2.text;
f.SaveToFile('date.txt');
f.Free;
на форме есть элемент edit1 который отображает системную дату.
И значение edit1.text записывается во первую строку файла
f.Strings[1]
А сейчас нужно сравнить эти 2 строки.
if s0=s1 then form2.ShowModal;
Все это написано в procedure TForm1.FormCreate.
компилируется нармально, а при запуске выдает ошибку
access violation at address 00452D99, но после этого всеравно запускается, на сравнение строк не работает , тоесть form2 не открывается,
Буду рад если поможете советом, спасибо
gvozdkoff (2010-04-01 10:07:00) [1]to И. Павел
действительно, код перенес в OnShow, и все чудесным образом заработало, товарищи !!!, огромное вам спасибо. ВЫ СИЛА !!!
gvozdkoff (2010-04-01 10:05:00) [2]to {RASkov},
спасибо , я понял )), вторая форма не успевает создаваться, поэтому так и выходит, пробовал убрать form2 из автосоздаваемых, перевел ее в availabel forms, dpr оже пробовал подправить, нот видимо руки у меня не оттуда, спасибо, я понял в чем было дело
И. Павел (2010-04-01 09:50:00) [3]Можно код и OnCreate перенести в OnShow
И. Павел (2010-04-01 09:50:00) [4]Можно код изOnCreate перенести в OnShow
{RASkov} (2010-04-01 09:48:00) [5]> [5] gvozdkoff (01.04.10 09:44)
конечно.... так как "по умолчанию" среда создаст все формы которые автосоздаваемые... только в порядке очереди.... сначала главная, но в ее методе ONCreate еще ни одна форма не создана.... смотри файл *.dpr
{RASkov} (2010-04-01 09:47:00) [6]> [3] gvozdkoff (01.04.10 09:41)
убери Form2 из автосоздаваемых форм и сам ее когда нужно создавай....
{RASkov} (2010-04-01 09:44:00) [7]и конечно же если все это стандартно написано средой, т.е. создание форм, то форма Form2 в методе Create главной формы еще не создана....
но это уже говорит о том, что строки сравниваются как раз.... и сравнение дает true...
gvozdkoff (2010-04-01 09:44:00) [8]to {RASkov}
дело в том, что если добавить на форму кнопку с обработчиком onclick
if s0=s2 then form2.ShowModal; то все работает
gvozdkoff (2010-04-01 09:41:00) [9]Павел спасибо, что откликнулись, действительно программка небольшая.
var
Form1: TForm1;
implementation
uses Unit2;
{$R *.dfm}
var DateTime : TdateTime;
procedure TForm1.FormCreate(Sender: TObject);
var name: string;
f:TStrings;
s0:string;
s1:string;
s2:string;
begin
f:=TStringList.Create();
f.LoadFromFile('date.txt');
s0:=f.Strings[0] ;
s1:=f.Strings[1] ;
s2:=f.Strings[2] ;
label1.FocusControl:=button1;
DateTime:=date;
Edit1.Text:=DateToStr(Date);
edit2.Text:=f.Strings[0];
edit3.Text:=f.Strings[1];
f.Strings[2]:=edit1.text;
f.SaveToFile('date.txt');
f.Free;
if s0=s2 then form2.ShowModal;
//if s1=s2 then form2.show;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
close;
end;
procedure TForm1.DateTimePicker1Change(Sender: TObject);
begin
edit2.Text:=formatdatetime('dd.mm.yyyy', datetimepicker1.Date);
button2.Visible:=true;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
name: string;
f:TStrings;
begin
f:=TStringList.Create();
f.LoadFromFile('date.txt');
f.Strings[0]:=edit2.text;
f.SaveToFile('date.txt');
f.Free;
end;
procedure TForm1.DateTimePicker2Change(Sender: TObject);
begin
edit3.Text:=formatdatetime('dd.mm.yyyy', datetimepicker2.Date);
button3.Visible:=true;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
name: string;
f:TStrings;
begin
f:=TStringList.Create();
f.LoadFromFile('date.txt');
f.Strings[1]:=edit3.text;
f.SaveToFile('date.txt');
f.Free;
end;
end.
{RASkov} (2010-04-01 09:39:00) [10]> [0] gvozdkoff (01.04.10 09:32)
> Буду рад если поможете советом, спасибо
Иправляй ошибку в своем коде... Для помощи тебе мало информации, хоть и достаточно много букв написано...
может f не создан...
> Всеэто написано в procedure TForm1.FormCreate.
а тут говориш что
> в свойстве DateTimePicker1Change пишу
> edit2.Text:=formatdatetime('dd.mm.yyyy', datetimepicker1.Date);
И. Павел (2010-04-01 09:38:00) [11]Может быть:
- Form2 не создается при запуске программы
- F.Free, а потом опять работа с F
Что такое s0 и s1 - как они определяются? Судя по описанию - программка маленькая и, наверное, можно выложить сюда функции целиком.