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

Delphi Sources



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

Закрытая тема
 
Опции темы Поиск в этой теме Опции просмотра
  #61  
Старый 16.04.2008, 10:11
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
Вопрос

Цитата:
Сообщение от MegaPiha
AssignFile(outfile, 'c:\outfile.txt');
Rewrite(outfile);
можно попробовать в событие формы OnCreate (только если один раз использовать запись в файл) или OnActive (при каждом появлении формы)

А CloseFile(outfile) допустим на кнопке "назад".

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

Цитата:
Сообщение от AndrYxo
А как бы это еще сделать

Щелкнуть на форме. Потом в ObjectInspector на закладке Events выбрать нужное событие. Щелкнуть на нем два раза и туда вписать необходимый код. Кстати можно еще в событие OnShow написать. Будет срабатывать при появлении формы.

Цитата:
Сообщение от AndrYxo
оно выводит данные в файл после пого, ка меняются столбцы - а как можно сделать, что бы выводило и начальную матрицу, до замены столбцов?
Все зависит от того где использовать write. Если заносить данные в строках, где матрица только заполняется то получим то что надо.
  #63  
Старый 16.04.2008, 10:37
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

У меня как не страннор ничего не работает - ставлю на OnShow и на другие - ничего не рботает - прогресс был - 1 работала - а другие 3 нет...8(
  #64  
Старый 16.04.2008, 10:41
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

Стоп.. ложная тревога - это работает!! Спасибо.. теперь пробую раздуплить с исходными
  #65  
Старый 16.04.2008, 11:03
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

У меня уже чувство, что я на финише - последний вопрос думаю - у меня исходную матрицу выодит не по столбикам и строкам, а просто в столбик, не подскажите что я не так делаю, вот код:

Код:
begin
writeln(outfile, 'Матрица B (исходная):');
n:=8;
m:=15;
setlength(B,n,m);
stringgrid1.RowCount:=n;
stringgrid1.ColCount:=m;
for i:=0 to n-1 do
begin
  for j:=0 to m-1 do
  begin
    begin
    B[i,j]:=sin(3.2*j+4.2)+power(exp(1),tan(i));
    stringgrid1.Cells[j,i]:=FormatFloat('0.00',B[i,j]);

    write(outfile, FormatFloat('0.00',B[i,j])+ '   ')

      end;
        writeln(outfile, '');
    end;
end;
end;
  #66  
Старый 16.04.2008, 11:12
ja-maik-a ja-maik-a вне форума
Прохожий
 
Регистрация: 09.02.2008
Сообщения: 47
Репутация: 10
По умолчанию

лишний begin в теле цикла
  #67  
Старый 16.04.2008, 11:18
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

о.. точно спасибо) Помогло - в общем думаю это все! Огромное спасибо всем, кто мне помогал, в особенности MegaPiha - это человек с огромными неврами, что смог меня так долго вытерпить! Огромное спасибо)
  #68  
Старый 17.04.2008, 16:50
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

Снова здравствуйте... большое спасибо за помощь - все правильно... но осталось кое-что додеалть - а я не знаю как - вернее не получается - вот код проги котрая считает значения до определенного момента - и мне ее надо как-то оббнулить - щас она считает до момента как надо и останавливается - но если опять нажать на батон она будет продолжать считать что не надо уже... не подскажите как мне ее обнулить? Вот код:
Код:
unit Unit4;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  StdCtrls, jpeg, ExtCtrls;

type
  TForm4 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    Button2: TButton;
    Button3: TButton;
    Label1: TLabel;
    Image1: TImage;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form4: TForm4;
  b,db,log,z:real;
  k:integer;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm4.FormCreate(Sender: TObject);
begin
b:=-2.5;
db:=0.3;
end;

procedure TForm4.Button1Click(Sender: TObject);
begin
k:=0;
log:=1E30;
while log>0.045 do
  begin
  log:=2/(b*b+b+2);
  Z:=b*b*b+ln(log);
  memo1.Lines.Add('Z = '+floattostr(z));
  k:=k+1;
  b:=b+db;
  end;

memo1.Lines.Add('b = '+floattostr(b));
memo1.Lines.Add('k = '+floattostr(k));

end;
procedure TForm4.Button2Click(Sender: TObject);
begin
Memo1.Clear;
end;

procedure TForm4.Button3Click(Sender: TObject);
begin
Form1.Show;
Form4.Close;
end;

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

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

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

Это снова я - не подскажите как можно сделать так, что бы при нажатии на баттон 2 выплывало окно что небл нажат баттон 1 - тоесть у меня на баттон 1 напрмер заполняется матрица а на 2 меняются столбцы - если нажать на 2 перед наджатием на 1 выдает злой эрор - а я хочу его на свой заменить - как это можно сделать?
  #72  
Старый 17.04.2008, 20:31
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,029
Версия 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 можно увидеть тот текст, который выдает твой код в оригинале.

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

Спасибо) Работает конечно - но у меня как всегда ни как у людей - у меня или вообще это сообщение по появляется или появляется при каждом нажатиии на баттон 2 - все равно - нажал я до этого на 1 или нет... может я просто не туда пихаю? Вот мои коды, подскажипе ,пожалуйста, куда вставить, если не трудно..
это типа баттон 1 - заполняется матрица
Код:
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;
end;

а это типа баттон 2 - на котрый меняются столбцы

Код:
procedure TForm5.Button7Click(Sender: TObject);
var i,j,t:integer;
tmp:real;
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;
Заранее Спасибо)
  #74  
Старый 17.04.2008, 21:43
MegaPiha MegaPiha вне форума
Активный
 
Регистрация: 24.03.2008
Сообщения: 227
Версия Delphi: Delphi 7
Репутация: 30
По умолчанию

Я конечно может и глупость предложу, но честно не знаю как по другому.
Создать глобальную булевскую переменную, например BtnPres.
В процедуре формы OnCreate этой переменной назначить false.
В button6 ее сделать true. Ну и в Button7 проверять. Если BtnPres = true (т.е. нажимали на button6) то выполнять дальнейшие инструкции.
  #75  
Старый 17.04.2008, 22:12
AndrYxo AndrYxo вне форума
Начинающий
 
Регистрация: 04.04.2008
Сообщения: 115
Репутация: 10
По умолчанию

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


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter