![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перенос значений переменных из одного Unit на доугой [D7, XP]
lexii © (2010-01-15 13:08:00)Привет!!! Получаю значение на одной TForm и нужно это значение перенести на другую TForm, но ни чего не получается. Подскажите как поправить мой код.
Вот мой код
Вызываю форму
procedure TForm1.Button2Click(Sender: TObject);
begin
form5.Show;
end;
вызванная форма
procedure TForm5.FormShow(Sender: TObject);
begin
s:=unit1.Pras;
for i:=1 to 16 do
begin
if s<StrToFloat(StringGrid1.Cells[1,i]) then begin
r:=StrToFloat(StringGrid1.Cells[1,i]);
label1.Caption:=FloatToStr(r);
break;
end;
end;
PostMessage(Handle, WM_CLOSE, 0, 0);
end;
lexii (2010-01-15 14:24:00) [1]Все спасибо. Я сам виноват,признаю. Просто забыл число поделить на 1000
Медвежонок Пятачок (2010-01-15 14:17:00) [2]оно и выполняется как положено.
но раз внутрь блока не заходит, значит s не меньше, а больше или равно
Медвежонок Пятачок (2010-01-15 14:16:00) [3]А почему может не срабатывает if? Условие s<StrToFloat(StringGrid1.Cells[1,i]) 100% выполняется при i=7.
кто сказал, что оно выпоняется?
lexii (2010-01-15 14:15:00) [4]
> r останется равным нулю, например если не сработает иф.
А почему может не срабатывает if? Условиеs<StrToFloat(StringGrid1.Cells[1,i])100% выполняется при i=7.
> а если строку s:=unit1.Pras; заменить на s:=1.2; то все
> работает
если s:= любое число (например s:=2.4) то все нормально работает
Игорь Шевченко (2010-01-15 14:14:00) [5]Опять спамишь ? Думаешь, разные ники помогут ?
Медвежонок Пятачок (2010-01-15 14:14:00) [6]
procedure TForm5.FormShow(Sender: TObject);
var s,r:real;i:integer;
begin
s:=unit1.Pras;
ShowMessage(FloatToStr(s));
for i:=1 to 10 do
begin
ShowMessage(Format('в ячейке %d лежит: %s ',[i,StringGrid1.Cells[1,i]]));
if s<StrToFloat(StringGrid1.Cells[1,i]) then
begin
ShowMessage('я попал внутрь ифа');
r:=StrToFloat(StringGrid1.Cells[1,i]);
label1.Caption:=FloatToStr(r);
break;
end;
end;
label2.Caption:='123';
end;
end.
Медвежонок Пятачок (2010-01-15 14:10:00) [7]r останется равным нулю, например если не сработает иф.
ты говоришь, что
а если строку s:=unit1.Pras; заменить на s:=1.2; то все работает
и тут же говоришь, что
там находится нужное число. а вот в цикле
чудеса-то только в решете бывают. В программах их нет.
lexii (2010-01-15 14:09:00) [8]
> триссировка с наблюдением значений в ячейках что дает?
>
а как посмотреть занчения в ячейках при пошаговой?
Медвежонок Пятачок (2010-01-15 14:05:00) [9]а f5 перед циклом и пошаговая триссировка с наблюдением значений в ячейках что дает?
lexii (2010-01-15 13:55:00) [10]
> а если добавить строку :
> ShowMessage(FloatToStr('Вот что там сейчас реально находится:
> ' + unit1.Pras));
там находится нужное число. а вот в цикле
for i:=1 to 10 do
begin
if s<StrToFloat(StringGrid1.Cells[1,i]) then begin
r:=StrToFloat(StringGrid1.Cells[1,i]);
label1.Caption:=FloatToStr(r);
break;
end;
end;
r=0 всегда получается
Медвежонок Пятачок (2010-01-15 13:49:00) [11]а если строку s:=unit1.Pras; заменить на s:=1.2; то все работает
а если добавить строку :
ShowMessage(FloatToStr('Вот что там сейчас реально находится: ' + unit1.Pras));
то все станет более понятным
Медвежонок Пятачок (2010-01-15 13:46:00) [12]а может стоит уже прочитать что-нибудь про параметры процедур и функций и про вред глобальных переменных?
lexii (2010-01-15 13:39:00) [13]глобальная.
вот код для unit1
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls,Math, Menus;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
KPD,Pvih,Pras,Pdv:real;
i:integer;
implementation
uses Unit2, Unit4, Unit5, Unit6, Unit7;
{$R *.dfm}
procedure TForm1.Button2Click(Sender: TObject);
begin
form5.Show;
end;
end.
stas (2010-01-15 13:26:00) [14]А в Unit1 Pras это глобальная переменная или поле формы если поле формы , то нужно - Form1.Pras
lexii (2010-01-15 13:21:00) [15]Да прописано.
Вот полный код Формы 5
unit Unit5;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls;
type
TForm5 = class(TForm)
StringGrid1: TStringGrid;
Label1: TLabel;
Label2: TLabel;
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form5: TForm5;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm5.FormShow(Sender: TObject);
var
s,r:real;i:integer;
begin
s:=unit1.Pras;
for i:=1 to 10 do
begin
if s<StrToFloat(StringGrid1.Cells[1,i]) then begin
r:=StrToFloat(StringGrid1.Cells[1,i]);
label1.Caption:=FloatToStr(r);
break;
end;
end;
label2.Caption:='123';
//PostMessage(Handle, WM_CLOSE, 0, 0);
end;
end.
а если строкуs:=unit1.Pras;заменить наs:=1.2;то все работает
stas (2010-01-15 13:15:00) [16]и где ошибка?
в модуле с 5-й формой unit1 прописан в uses?