Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

сравнение 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 - как они определяются? Судя по описанию - программка маленькая и, наверное, можно выложить сюда функции целиком.


Наверх

Титульная страница Поиск, карта сайта Написать письмо