Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Закрытая тема
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.04.2008, 16:56
MegaPiha MegaPiha вне форума
Активный
 
Регистрация: 24.03.2008
Сообщения: 227
Версия Delphi: Delphi 7
Репутация: 30
По умолчанию

Переменные b и db глобальные. Соответственно после выполнения программы сохраняют свои значения, а при повторном нажатии на буттон не присваиваются заново.
Короче надо их присваивание перенести из FormCreate в начало процедуры Button1Click.
  #2  
Старый 17.04.2008, 17:03
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

О.. точно! Спасибо)
  #3  
Старый 17.04.2008, 20:22
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

Это снова я - не подскажите как можно сделать так, что бы при нажатии на баттон 2 выплывало окно что небл нажат баттон 1 - тоесть у меня на баттон 1 напрмер заполняется матрица а на 2 меняются столбцы - если нажать на 2 перед наджатием на 1 выдает злой эрор - а я хочу его на свой заменить - как это можно сделать?
  #4  
Старый 17.04.2008, 20:31
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,023
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Если думать совсем не хочется, то так:
Код:
procedure TMyForm.Button2Click(Sender : TObject);
begin
  Try
     // Здесь твоя логика
  Except
    On E : Exception Do
       MessageDlg('Произошла страшная ошибка!!!',mtError,[mbOK],0);
  End;
end;
Еще можно в секции Except .. End воспользоваться переменной E, которая есть экземпляр класса EException. В частности, в E.Message можно увидеть тот текст, который выдает твой код в оригинале.

Если думать все-таки хочется, то анализируй сначала исходные данные и выводи причину, почему они не могут быть обработаны перед тем, как запускать вычисления.
  #5  
Старый 17.04.2008, 22:12
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

Я конечно уверен что буклеровская переменна рулит - но меня четвертуют если увидят в моей работе ее - ведь мы даже не проходили ничего, кроче массивов, у всех будет шок от других моих программ, которые Вы все мне любездно помогли сделать - боюсь буклеровская переменна убьет моего препода... MegaPiha, не могли бы Вы попробовать всунуть тот код на эррор в мою прогу - может получится - то просо я карявый наверное и как всегда не туда пихал - если коненчо не трудо
  #6  
Старый 17.04.2008, 23:03
MegaPiha MegaPiha вне форума
Активный
 
Регистрация: 24.03.2008
Сообщения: 227
Версия Delphi: Delphi 7
Репутация: 30
По умолчанию

Цитата:
Сообщение от AndrYxo
Я конечно уверен что буклеровская переменна рулит - но меня четвертуют если увидят в моей работе ее - ведь мы даже не проходили ничего, кроче массивов, у всех будет шок от других моих программ, которые Вы все мне любездно помогли сделать - боюсь буклеровская переменна убьет моего препода... MegaPiha, не могли бы Вы попробовать всунуть тот код на эррор в мою прогу - может получится - то просо я карявый наверное и как всегда не туда пихал - если коненчо не трудо

Не убьет. булевские переменные на самом деле азы программирования, как и integer. Ну если убъет можете использовать integer. Сперва присваивать 0, потом 1. Вот отладчик try except как раз используют профи.
  #7  
Старый 17.04.2008, 23:07
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

Эх, ладно - короче объедутся пусть они этим сообщением - и без него прога работает - ат я не через переменную, не через try except не сделаю Спасибо)
  #8  
Старый 17.04.2008, 23:09
MegaPiha MegaPiha вне форума
Активный
 
Регистрация: 24.03.2008
Сообщения: 227
Версия Delphi: Delphi 7
Репутация: 30
По умолчанию

Цитата:
Сообщение от AndrYxo
Эх, ладно - короче объедутся пусть они этим сообщением - и без него прога работает - ат я не через переменную, не через try except не сделаю Спасибо)
В чем сложность то? 5 секунд работы. Делать так делать!
  #9  
Старый 17.04.2008, 23:15
MegaPiha MegaPiha вне форума
Активный
 
Регистрация: 24.03.2008
Сообщения: 227
Версия Delphi: Delphi 7
Репутация: 30
По умолчанию

описываем в самом начале программы
Код:
Var btnPres:=boolean;

Код:
procedure TForm5.Button6Click(Sender: TObject);
var i,j:integer;
begin
n:=12;
m:=9;
setlength(A,n,m);
stringgrid1.RowCount:=n;
stringgrid1.ColCount:=m;
for i:=0 to n-1 do
for j:=0 to m-1 do
  begin
  A[i,j]:=sin(j)/cos(j)+exp(cos(i));;
  stringgrid1.Cells[j,i]:=FormatFloat('0.00',A[i,j]);
  end;
btnPres:=true;
end;


Код:
procedure TForm5.Button7Click(Sender: TObject);
var i,j,t:integer;
tmp:real;
begin
if btnPres = true then
begin
   m:=stringgrid1.ColCount;
   k:=0;
   l:=8;
   for i:=0 to n-1 do
    begin
      tmp:=A[i,k];
      A[i,k]:=A[i,l];
     A[i,l]:=tmp;
   end;
   for t:=0 to n-1 do
   for j:=0 to m-1 do
   stringgrid1.Cells[j,t]:=FormatFloat('0.00',A[t,j]);
end;
end;
В процедуре создания формы пишем btnPres = false
  #10  
Старый 17.04.2008, 23:15
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

Спасибо, щас попробую!
  #11  
Старый 18.04.2008, 20:44
Farmazon Farmazon вне форума
Прохожий
 
Регистрация: 04.04.2008
Сообщения: 14
Репутация: 10
По умолчанию

обмани препода, сделай аналог булевской перменной...создай не булеву перемнную а интэжер, и назначай либо 1 либо 0 в разных ситуациях, сообтветственно и проверяй так же, типа If tram_papam=1 then ...
думаю тебя препод похвалит за сообразительность и...будет час пудрить мозги тебе гениальному что есть спец тип переменных boolean
  #12  
Старый 18.04.2008, 22:08
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

Просто у меня олучается так - заполняются 3 сразу - но столбцы меняет только в той матрице, которая последней заполнилась... а как сделать что бы в 3-х меняла - это для меня загадка...
  #13  
Старый 18.04.2008, 22:16
Аватар для Zylex
Zylex Zylex вне форума
Прохожий
 
Регистрация: 06.04.2008
Адрес: Сыктывкар
Сообщения: 33
Репутация: 10
По умолчанию

Насчет сокращения кода:

Код:
var 
       cp: TComponent;   
          i: integer;   
begin   
     for i:=1 to 3 do   
     begin   
          cp := FindComponent('StringGrid'+IntToStr(i));   
          if cp <> nil then
          begin  
          
              (cp as TStringGrid).RowCount:=n;
              (cp as TStringGrid).ColCount:=m; 
              for i:=0 to n-1 do
              for j:=0 to m-1 do
              begin
                   A[i,j]:=sin(j)/cos(j)+exp(cos(i));;
                   (cp as TStringGrid).Cells[j,i]:=FormatFloat('0.00',A[i,j]);
              end;
              end;
          end;
     end;   
end; 
Это код сократит, но что думаю ты разберешся и подкорректируешь как тебе надо
__________________
Программирование - стиль жизни
  #14  
Старый 18.04.2008, 22:18
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

Zylex спасибо... разберусь... ато им мои коды длинные не нравятся... а с прогой я поступил проще - на 1 кнопку все задал - главное работает
  #15  
Старый 18.04.2008, 22:39
MegaPiha MegaPiha вне форума
Активный
 
Регистрация: 24.03.2008
Сообщения: 227
Версия Delphi: Delphi 7
Репутация: 30
По умолчанию

Много мелких недочетов.
1. В 1 м коде три лишних begin end. Ну это так к слову о сокращении размеров программы.
2. В кодах A, B, C не задан n/
3. В кодах B и C надо указывать вывод не в StringGrid1 а в соответственно StringGrid5, StringGrid6
4. К вопросу об сокращении кода - ИМХО ничего сокращать не надо.
Закрытая тема


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:53.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter