![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как очистить Edit, StringGrid? [D7]
Евгения © (2005-03-09 19:59:00)Здравствуйте. У меня небольшая проблемка. Мне необходимо,чтобы при нажатии на Button у меня очищались Edit и StringGrid, т.е. удалялась из них информация, введеная ранее.
Дело в том, что при условиях Edit1.Text:=''; Edit2.Clear при нажатии на Button вылезает ошибка: "...EConvertError... is not a valid integer value..."
А как убрать все из StringGrid, я вообще не знаю.
Что же мне делать? Пожалуйста, помогите.
Спасибо.
begin...end (2005-03-09 22:01:00) [1]А ещё есть TryStrToInt и TryStrToFloat.
Евгения (2005-03-09 21:59:00) [2]Огромное спасибо всем, кто принял участие в решении моей проблемы.
С уважением, Евгения.
ламер_ (2005-03-09 21:58:00) [3]Нууу...
> есть StrToIntDef
Не знал, но на то я и ламер_:)). Действительно, так гораздо проще.
Virgo_Style (2005-03-09 21:52:00) [4]> Tjjls= Tools, тоже баиньки пора :-)
Virgo_Style (2005-03-09 21:51:00) [5]
> Для каждого StrToInt
Так-таки и для каждого? Хотя это проще, чем вникать в идеологию, но такая метОда мне кажется сомнительной. Просто потому, что есть StrToIntDef и StrToFloatDef.
> только будь готова к тому
Tjjls - Debugger - Language Exceptions - Stop On Delphi Exceptions - выключено.
ламер_ (2005-03-09 21:43:00) [6]2 [14] Zeqfreed: Дадада. Те же я@ца, только в профиль.
Для каждого StrToInt - блок Try..Except..End.
2 Евгения : только будь готова к тому, что при запуске под Delphi все равно будет выскакивать ошибка - это нормально, F9 и далее.
Zeqfreed (2005-03-09 21:30:00) [7]Virgo_Style © (09.03.05 21:21) [12]
Ну я же сказал, что пора мне баиньки.
Евгения (09.03.05 21:02)
Следует поместить все операции преобразования текста в числа в блок защищенного режима. См. [13]
ламер_ (2005-03-09 21:25:00) [8]Adding 2 [5] Нет, оказуется, можно. Только не Rows.Clear, а Rows.Text:='' :Use Text to get or set all the strings in the TStrings object in a single string delimited by carriage return
Если правильно понял, то в Edit1Change первые строки:
try
z:=StrToInt(Edit1.Text);
except
z:=0;
end;
В этом случае StringGrid'ы очищать не нужно - количество ячеек автоматом установится в 0. Проверил - значения не сохраняются.
Virgo_Style (2005-03-09 21:21:00) [9]
> Я нигде не удлядел упамянания о том, что ошибка
> происходит при изменении текста Edit'а
Очистка Edit - это его изменение, не так ли?
Zeqfreed (2005-03-09 21:12:00) [10]Прошу прощения за такое ужасающее кол-во опечаток. Видимо пора баиньки.
Zeqfreed (2005-03-09 21:10:00) [11]Virgo_Style © (09.03.05 21:08) [9]
Я нигде не удлядел упамянания о том, что ошибка происходит при изменении текста Edit'а. Говорилось только про Button. Сори, если ошибся.
Евгения (09.03.05 21:02) [7]
На какой строке ошибка? Если в Button1Click, то вероятно в Edit1,Edit2 или Edit5 введено не число или число ведено не корректно.
Virgo_Style (2005-03-09 21:08:00) [12]И здесь тоже.
procedure TForm8.Button1Click(Sender: TObject);
var a: matrix_a; b,x,x0: matrix_b;
i,j,k,max_it:integer; s,eps: real; q: Boolean;
begin
n:=StrToInt(Edit1.Text);
max_it:=StrToInt(Edit2.Text);
eps:=StrToFloat(Edit5.Text);
Memo1.Clear;
Virgo_Style (2005-03-09 21:07:00) [13]
procedure TForm8.Edit1Change(Sender: TObject);
var
z : Byte;
begin
z:=StrToInt(Edit1.Text);
sgM.RowCount:=z;
Вот оно. Можно до этого сделать
if Trim(Edit1.Text)='' then exit;
или по-другому, зависит от логики программы.
А еще лучше сделать нормальную обработку исключения try..except.
Евгения (2005-03-09 21:02:00) [14]const nn=50 ;
type matrix_a = array [1..nn,1..nn] of real;
type matrix_b = array [1..nn] of real;
procedure TForm8.Button1Click(Sender: TObject);
var a: matrix_a; b,x,x0: matrix_b;
i,j,k,max_it:integer; s,eps: real; q: Boolean;
begin
n:=StrToInt(Edit1.Text);
max_it:=StrToInt(Edit2.Text);
eps:=StrToFloat(Edit5.Text);
Memo1.Clear;
for i:=1 to n do for j:=1 to n do a[i,j]:=StrToFloat(sgM.Cells[i-1,j-1]);
for i:=1 to n do b[i]:=StrToFloat(sgV.Cells[0,i-1]);
for i:=1 to n do x0[i]:=0;
j:=0; q:=False;
repeat
for i:=1 to n do begin
s:=0; for k:=1 to n do if ik then s:=s+a[k,i]*x0[k];
if a[i,i]=0 then
begin
ShowMessage('Ïîïðîáóéòå åù¸ ðàç (äåëåíèå íà íîëü)');
Exit;
end;
x[i]:=(b[i]-s)/a[i,i]; end;
for i:=1 to n do
begin
if abs(x[i]-x0[i])>eps then q:=False else q:=True; x0[i]:=x[i]; end;
inc(j);
until (j=max_it) or q;
Memo1.Lines.Add('Èòåðàöèé: '+IntToStr(j));
if q=False then Memo1.Lines.Add('Çàäàííàÿ òî÷íîñòü íå äîñòèãíóòà');
for i:=1 to n do Memo1.Lines.Add('x['+IntToStr(i)+']='+FloatToStrF(x0[i],ffgeneral,4,5));
Label6.Visible:=true;
Memo1.Visible:=true;
end;
procedure TForm8.Edit1Change(Sender: TObject);
var
z : Byte;
begin
z:=StrToInt(Edit1.Text);
sgM.RowCount:=z;
sgM.ColCount:=z;
sgV.RowCount:=z;
//sgR.RowCount:=z;
sgM.Visible:=true;
sgV.Visible:=true;
Label1.Visible:=true; Label4.Visible:=true;
Label2.Visible:=true; Label3.Visible:=true;
Label5.Visible:=true;
Edit2.Visible:=true; Edit5.Visible:=true;
Form8.Height:=436; Form8.Width:=542;
Button2.Visible:=true; BitBtn1.Visible:=true;
end;
procedure TForm8.Button2Click(Sender: TObject);- Вот в этой процедурке это должно произойти
begin
Button1.Visible:=false; BitBtn1.Visible:=false;
Edit1.Visible:=false; Edit2.Visible:=false;
Edit3.Visible:=false; Memo1.Visible:=false;
Label1.Visible:=false; Edit5.Visible:=false;
Label2.Visible:=false; Label3.Visible:=false;
Label4.Visible:=false; Label5.Visible:=false;
Label6.Visible:=false; Button2.Visible:=false;
sgM.Visible:=false; sgV.Visible:=false;
Button5.Visible:=false;
Form8.Height:=96; Form8.Width:=297;
end;
procedure TForm8.N3Click(Sender: TObject);
var i,j:word;
s:string;
begin
Edit4.Visible:=true; Label1.Visible:=true;
full_random(c); d:=c;
for i:=0 to sgV.RowCount-1 do
for j:=0 to sgV.ColCount-1 do
begin
str(c[i,j]:6:0,s); sgV.Cells[j,i]:=s
end;
end;
ламер_ (2005-03-09 20:52:00) [15]Блин !!! НЕЛЬЗЯ-ААААА. Написал, и только потом сообразил. Ни в коем случае не воспринимать [5]!!!
ламер_ (2005-03-09 20:51:00) [16]
> Чтобы очистить StringGrid, можно каждой ячейке присвоить
> пустую строку.
Не обязательно, .Rows( или .Cols) - это TStrings, а у них есть стандартный метод Clear.
begin...end (2005-03-09 20:42:00) [17]> Евгения (09.03.05 19:59)
> А как убрать все из StringGrid, я вообще не знаю.
Чтобы очистить StringGrid, можно каждой ячейке присвоить пустую строку.
ламер_ (2005-03-09 20:38:00) [18]И не только OnClick кнопки, но и OnChange обоих Едитов
Zeqfreed (2005-03-09 20:14:00) [19]Евгения (09.03.05 19:59)
Было бы неплохо увидеть еод обработчика события OnClick кнопки.
Virgo_Style (2005-03-09 20:10:00) [20]Из StringGrid - в цикле, а что касается Edit - скорее всего у тебя в OnChange идет конверсия StrTo???(Edit?.Text);