Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2016, 11:05   #1
lichking
Пользователь
 
Регистрация: 31.10.2016
Сообщений: 54
По умолчанию массив и работа с ним

я написал код для сложения массива и вывод его на экран но все равно выдает ошибку:

Код:
unit Unit3;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
  TForm3 = class(TForm)
    StaticText1: TStaticText;
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form3: TForm3;

implementation

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);
var
s,s2,s3: array [0..1] of string;
e1,e2,e3: array [0..1] of Extended;
i:integer;
begin
s2[0]:=Edit1.Text;
s2[1]:=Edit2.Text;
s3[0]:=Edit3.Text;
s3[1]:=Edit4.Text;
e2[i]:=strtofloat(s2[i]);
e3[i]:=strtofloat(s3[i]);
e1[i]:=e2[i]+e3[i];
for I := 0 to 1 do
form3.StaticText1.Caption:=StaticText1.Caption+floattostr(e1[i]);
end;

end.

Последний раз редактировалось Аватар; 13.11.2016 в 11:32.
lichking вне форума Ответить с цитированием
Старый 13.11.2016, 11:17   #2
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Код:
e2[i]:=strtofloat(s2[i]);
Чему равна переменная i ?
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 13.11.2016, 11:33   #3
lichking
Пользователь
 
Регистрация: 31.10.2016
Сообщений: 54
По умолчанию

Цитата:
Сообщение от newerow1989 Посмотреть сообщение
Код:
e2[i]:=strtofloat(s2[i]);
Чему равна переменная i ?
i- index massiv
подправленная программа:
Код:
unit Unit3;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms,math, Vcl.Dialogs, Vcl.StdCtrls;
type
  TForm3 = class(TForm)
    StaticText1: TStaticText;
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form3: TForm3;
  i:integer;
implementation

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);
var
s,s2,s3: array [0..1] of string;
e1,e2,e3: array [0..1] of Extended;

begin
s2[0]:=Edit1.Text;
s2[1]:=Edit2.Text;
s3[0]:=Edit3.Text;
s3[1]:=Edit4.Text;
e2[i]:=strtofloat(s2[i]);
e3[i]:=strtofloat(s3[i]);
e1[i]:=e2[i]+e3[i];
for I := 0 to 1 do
form3.StaticText1.Caption:=StaticText1.Caption+floattostr(e1[i]);
end;

end.
Код нужно правильно оформлять. См. кнопка #
Модератор

Последний раз редактировалось Аватар; 13.11.2016 в 11:36.
lichking вне форума Ответить с цитированием
Старый 13.11.2016, 16:18   #4
lichking
Пользователь
 
Регистрация: 31.10.2016
Сообщений: 54
По умолчанию

что-то не робит поможете?

Код:
interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
  type
   TComplex = class(TObject)
            private
              { private declarations }
            protected
              { protected declarations }
            public
              { public declarations }

            published
            function slojenie(var A,B :array  of string):string;
              { published declarations }
            end;




type
  TForm3 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    StaticText1: TStaticText;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form3: TForm3;
  IM:TComplex;
   i:integer;
s,s2,s3: array [0..1] of string;


implementation

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);
begin
s2[0]:=Edit1.Text;
s2[1]:=Edit2.Text;
s3[0]:=Edit3.Text;
s3[1]:=Edit4.Text;


for I := 0 to I do
StaticText1.Caption:=StaticText1.Caption+ Im.slojenie( S2, S3);
end;

procedure TForm3.FormCreate(Sender: TObject);
begin

I:=1;
end;

{ TComplex }

function TComplex.slojenie(var A, B: array of string): string;
var
e1,e2,e3: array [0..1] of Extended;
begin
 for I := 0 to I do
begin
e2[i]:=strtofloat(s2[i]);
e3[i]:=strtofloat(s3[i]);
end;
for I := 0 to I do
e1[i]:=e2[i]+e3[i];
end;
Result:= floattostr(e1);
end.

Последний раз редактировалось lichking; 13.11.2016 в 16:23.
lichking вне форума Ответить с цитированием
Старый 16.11.2016, 07:51   #5
Heneken87
Форумчанин
 
Регистрация: 27.04.2012
Сообщений: 219
По умолчанию

Цитата:
Сообщение от lichking Посмотреть сообщение
for I := 0 to I do
StaticText1.Caption:=StaticText1.Ca ption+ Im.slojenie( S2, S3);
end;
Цитата:
Сообщение от lichking Посмотреть сообщение
for I := 0 to I do
begin
e2[i]:=strtofloat(s2[i]);
e3[i]:=strtofloat(s3[i]);
end;
for I := 0 to I do
e1[i]:=e2[i]+e3[i];
end;
Цикл оформлен неверно.
Вы говорите компилятору начни цикл от i=0 до самой себя// нельзя увеличивать кол-во итераций
Верно будет так: for I := 0 to length(e1)-1 do //Что в переводе на русский, начни цикл от i=0 до длины массива e1 с поправкой на 1 (поправка нужна поскольку длина массива e1 у вас 1, а ячейка начинается с 0)
Или совсем по топорному, длину массива заранее знаем равна 1, соответственно цикл for I := 0 to 0 do
Пишу много и развернуто

Последний раз редактировалось Heneken87; 16.11.2016 в 07:57.
Heneken87 вне форума Ответить с цитированием
Старый 16.11.2016, 09:44   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Heneken87 Посмотреть сообщение
Цикл оформлен неверно.
Это в данном случае безусловно! Причём напрямую I нигде не присваивается, поэтому там может быть не только ноль, а вообще всё что угодно.
Такие "рандомные" циклы от нуля, до неизвестно чего.


но, хотел бы заметить. FYI.
Цитата:
Сообщение от Heneken87 Посмотреть сообщение
начни цикл от i=0 до самой себя//
как ни парадоксально это выглядит, но цикл FOR где и переменная цикла используется в условии начала или окончания цикла - это абсолютно корректно и будет правильно работать.

попробуйте, например.
Код:
var n : integer;
begin
   ReadLn(n);
   for n:=1 to n do Write(n,' ');
end.
"секрет" в том, что для цикла FOR сначала вычисляются начальное и конечное выражение, а уже потом идёт присвоение полученного выражения переменной цикла и её инкремент. При этом границы цикла уже зафиксированы не пересчитываются!

p.s. Вас же не смущается запись n:= 2*n+22; тут и слева n и справа n
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
многомерный массив и веселье с ним mrgrudge PHP 6 25.02.2011 11:30
Двумерный массив, и действие над ним... Neksion Помощь студентам 9 01.12.2010 10:11
sDBLookupComboBox и работа с ним nuevegramodelamor Помощь студентам 0 24.05.2010 23:43
ComboBox и работа с ним 54rus Помощь студентам 6 23.07.2009 15:40
массив tedit и процедура с ним(delphi) xbIm Помощь студентам 2 21.02.2008 23:57