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

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

Вернуться   Форум программистов > Delphi программирование > Lazarus, Free Pascal, CodeTyphon
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2012, 21:02   #1
Dionis46
Новичок
Джуниор
 
Регистрация: 15.02.2012
Сообщений: 2
По умолчанию Lazarus (Работа с динамическими массивами)

Недавно начал изучать,подскажите почему ошибки и в чем собственно проблема.заранее спасибо.
Код:
unit Unit1; 

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, ExtCtrls,
  Grids, StdCtrls, Buttons;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    ComboBox1: TComboBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    StringGrid1: TStringGrid;
    StringGrid2: TStringGrid;
    StringGrid3: TStringGrid;
    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end; 

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin
var
A:array of integer;
B:array of integer;
C:array of integer;
//память под массивы не выделяется
i,k,n:integer;
begin
// выделение памяти под динамические массивы А,В,С
SetLength(A,10);
SetLength(C,10);
SetLength(B,10);
//Ввод массива А
For i:=0 to High(A) do
A[i]:=strtoint(StringGrid1.Cells[i,0]);
Case ComboBox1.Itemindex of
-1:Showmessage('Задача не выбрана');
//разбиение массива А на массив положительных и отрицательных чисел
0:begin
k:=0;
n:=0;
For i:=0 to High(A) do
    if A[i]<>0 then
       if A[i]>0 then begin
                      C[k]:=A[i];
                      k:=k+1;
                      end;
                 else
                      begin
                      B[n]:=A[i];
                      n:=n+1;
                      end
end;
//разбиение массива А на массив четных и нечетных чисел
1:begin
StringGrid2.Clean;  //очистить StringGrid-ы
StringGrid3.Clean;
k:=0;
n:=0;
For i:=0 to High(A) do
      if A[i] mod 2=0 then begin
                      C[k]:=A[i];
                      k:=k+1;
                      end
                 else
                      begin
                      B[n]:=A[i];
                      n:=n+1;
                      end;
end;
end;
//вывод массивов
For i:=0 to k-1 do
StringGrid2.Cells[i,0]:=inttostr(C[i]);
 For i:=0 to n-1 do
StringGrid3.Cells[i,0]:=inttostr(B[i]);
//чтобы освободить память, занимаемую динамическими массивами, надо присвоить их //идентификаторам значение nil
A:=nil;
B:=nil;
C:=nil;
end;
initialization
  	{$I unit1.lrs}
end.

unit1.pas(42,1) Error: Illegal expression
unit1.pas(43,1) Fatal: Syntax error, ";" expected but "identifier A" found
Dionis46 вне форума Ответить с цитированием
Старый 15.02.2012, 21:07   #2
whatever
a.k.a. Skull
Форумчанин
 
Регистрация: 17.11.2009
Сообщений: 963
По умолчанию

Ну так посмотри на 42 строку. Нафига ты begin перед var'ом поставил? Убери его. Дальше не проверял.
Все тривиальное просто
whatever вне форума Ответить с цитированием
Старый 15.02.2012, 21:26   #3
Dionis46
Новичок
Джуниор
 
Регистрация: 15.02.2012
Сообщений: 2
По умолчанию

ой, спасибо огромное
Dionis46 вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с динамическими массивами типа record Олвин Общие вопросы Delphi 8 14.07.2011 01:13
Проблема с динамическими массивами San4o Общие вопросы Delphi 5 13.09.2009 21:15
Проблема с динамическими массивами Arassir Помощь студентам 2 11.11.2008 00:15