Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Внизсравнение 2-х строк, если они равны то вывод формы-сообщения Найти похожие ветки
← →
gvozdkoff (2010-04-01 09:32) [0]здравствуйте мастера своего дела !
решил напистаь программку , суть следующая.
Программа напоминалка по дате.
на форме есть 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 не открывается,
Буду рад если поможете советом, спасибо
← →
И. Павел © (2010-04-01 09:38) [1]Может быть:
- Form2 не создается при запуске программы
- F.Free, а потом опять работа с F
Что такое s0 и s1 - как они определяются? Судя по описанию - программка маленькая и, наверное, можно выложить сюда функции целиком.
← →
{RASkov} © (2010-04-01 09:39) [2]> [0] gvozdkoff (01.04.10 09:32)
> Буду рад если поможете советом, спасибо
Иправляй ошибку в своем коде... Для помощи тебе мало информации, хоть и достаточно много букв написано...
может f не создан...
> Все это написано в procedure TForm1.FormCreate.
а тут говориш что
> в свойстве DateTimePicker1Change пишу
> edit2.Text:=formatdatetime("dd.mm.yyyy", datetimepicker1.Date);
← →
gvozdkoff (2010-04-01 09:41) [3]Павел спасибо, что откликнулись, действительно программка небольшая.
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:44) [4]и конечно же если все это стандартно написано средой, т.е. создание форм, то форма Form2 в методе Create главной формы еще не создана....
но это уже говорит о том, что строки сравниваются как раз.... и сравнение дает true...
← →
gvozdkoff (2010-04-01 09:44) [5]to {RASkov}
дело в том, что если добавить на форму кнопку с обработчиком onclick
if s0=s2 then form2.ShowModal; то все работает
← →
{RASkov} © (2010-04-01 09:47) [6]> [3] gvozdkoff (01.04.10 09:41)
убери Form2 из автосоздаваемых форм и сам ее когда нужно создавай....
← →
{RASkov} © (2010-04-01 09:48) [7]> [5] gvozdkoff (01.04.10 09:44)
конечно.... так как "по умолчанию" среда создаст все формы которые автосоздаваемые... только в порядке очереди.... сначала главная, но в ее методе ONCreate еще ни одна форма не создана.... смотри файл *.dpr
← →
И. Павел © (2010-04-01 09:50) [8]Можно код и OnCreate перенести в OnShow
← →
И. Павел © (2010-04-01 09:50) [9]Можно код из OnCreate перенести в OnShow
← →
gvozdkoff (2010-04-01 10:05) [10]to {RASkov},
спасибо , я понял )), вторая форма не успевает создаваться, поэтому так и выходит, пробовал убрать form2 из автосоздаваемых, перевел ее в availabel forms, dpr оже пробовал подправить, нот видимо руки у меня не оттуда, спасибо, я понял в чем было дело
← →
gvozdkoff (2010-04-01 10:07) [11]to И. Павел
действительно, код перенес в OnShow, и все чудесным образом заработало, товарищи !!!, огромное вам спасибо. ВЫ СИЛА !!!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.063 c