Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

Почему не работает программа?   Найти похожие ветки 

 
Учащийся   (2010-04-21 14:01) [0]

Здравствуйте при компиляции довольно простой программы у меня вылазит ошибка, что отсутствует ";". В чём проблема, понять не могу...Несколько раз код на ошибку проверял, вот:

program Project2;

{$APPTYPE CONSOLE}

uses
 SysUtils;

var Ar:array[1..2048] of byte;//массив с элементами
   Ea:array[1..512] of integer;//массив с указателями
   ArLen:integer;// эффективная длина массива

procedure ChangeString(i:integer;NewString:string);
procedure PutString(n:integer;s:string);
function CountDifferent(i:integer;l:integer):integer;
procedure OutElements(n:integer;_N:integer);
procedure InElements(n:integer;_N:integer);

procedure ChangeString(i:integer;NewString:string);
var cd:integer;
begin
  cd:=CountDifferent(i, length(NewString));
  if cd<0 then
  begin
    OutElements(ea[i],length(NewString))
  end
  else
  begin
    InElements(ea[i],length(NewString));
  end;
  Ar[ea[i]]:=length(NewString);
  PutString(ea[i]+1,Newstring);
end;

procedure PutSring(n:integer;s:string);
var i:integer;
begin
  for i:=1 to length(s) do
  begin
    Ar[ea[n]+i-1]:=byte(s[i]);
  end;
end;

function CountDifferent(i:integer;l:integer):integer;
begin
  Result:=l-Ea[i];
end;

procedure OutElements(n:integer;_N:integer);
var i:integer;
begin
  ArLen:=ArLen-_N;
  for i:=(n+1) to ArLen do
  begin
    Ar[i]:=Ar[i+_N];
  end;
end;

procedure InElements(n:integer;_N:integer);
var i1:integer;
begin
  ArLen:=ArLen+_N;
  for i1:=ArLen downto n+1 do
  begin
     Ar[i1]:=Ar[i1-n];
  end;
end;

begin
 { TODO -oUser -cConsole Main : Insert code here }
end.


 
Учащийся   (2010-04-21 14:03) [1]

или я заголовки функций неправильно оформляю?


 
DVM ©   (2010-04-21 14:06) [2]

procedure ChangeString(i:integer;NewString:string);
procedure PutString(n:integer;s:string);
function CountDifferent(i:integer;l:integer):integer;
procedure OutElements(n:integer;_N:integer);
procedure InElements(n:integer;_N:integer);

убери


 
Плохиш ©   (2010-04-21 14:13) [3]

Читать про директиву forward.


 
Учащийся   (2010-04-21 14:30) [4]


> procedure ChangeString(i:integer;NewString:string);
> procedure PutString(n:integer;s:string);
> function CountDifferent(i:integer;l:integer):integer;
> procedure OutElements(n:integer;_N:integer);
> procedure InElements(n:integer;_N:integer);
>
> убери
>

убрал!

> Плохиш ©   (21.04.10 14:13) [3]
>
> Читать про директиву forward.
>

Слушаюсь!


 
Ega23 ©   (2010-04-21 14:41) [5]


> Читать про директиву forward.


А также что такое interface и implementation


 
Ins ©   (2010-04-21 15:31) [6]


> А также что такое interface и implementation


Это не unit, а program ;-)


 
Ega23 ©   (2010-04-21 15:37) [7]


> Это не unit, а program ;-)


опс... Не обратил внимания...


 
12 ©   (2010-04-21 15:56) [8]

//procedure ChangeString(i:integer;NewString:string);

function CountDifferent(i:integer;l:integer):integer; forward;
procedure OutElements(n:integer;_N:integer); forward;
procedure InElements(n:integer;_N:integer); forward;
procedure PutString(n:integer;s:string); forward;

procedure ChangeString(i:integer;NewString:string);
var cd:integer;
begin
 cd:=CountDifferent(i, length(NewString));
 if cd<0 then
 begin
   OutElements(ea[i],length(NewString))
 end
 else
 begin
   InElements(ea[i],length(NewString));
 end;
 Ar[ea[i]]:=length(NewString);
 PutString(ea[i]+1,Newstring);
end;

procedure PutS_t_ring(n:integer;s:string);


 
oldman ©   (2010-04-21 16:57) [9]


> Здравствуйте при компиляции довольно простой программы у
> меня вылазит ошибка, что отсутствует ";". В чём проблема, понять не могу...
> begin
>   cd:=CountDifferent(i, length(NewString));
>   if cd<0 then
>   begin
>     OutElements(ea[i],length(NewString))
>   end
>   else


Мдя...


 
turbouser ©   (2010-04-21 17:39) [10]


> oldman ©   (21.04.10 16:57) [9]


> Мдя...

Здесь нет ошибки. Перед end-ом допустимо опускать ;


 
oldman ©   (2010-04-21 17:43) [11]


> turbouser ©   (21.04.10 17:39) [10]
> Здесь нет ошибки. Перед end-ом допустимо опускать ;


А после?


 
oldman ©   (2010-04-21 17:45) [12]

Здравствуйте при компиляции довольно простой программы у меня вылазит ошибка, что отсутствует ";".

И не пишет где??????????????


 
Ins ©   (2010-04-21 17:51) [13]


> А после?


И после, если там else


 
oldman ©   (2010-04-21 17:55) [14]


> Ins ©   (21.04.10 17:51) [13]


пусть автор ответит на [12]
компилятор не идиот


 
Юрий Зотов ©   (2010-04-21 17:59) [15]


> oldman ©   (21.04.10 17:45) [12]

При этой ошибке компилятор запросто может очень сильно соврать.


 
12 ©   (2010-04-21 18:05) [16]


> пусть автор ответит на [12]

не компилятор, но ругается на то место, где end.
видимо считает что функция сверху еще не кончена


 
PZ   (2010-04-21 19:18) [17]

Вот в таком виде ошибки нет:

program Project2;

{$APPTYPE CONSOLE}

uses
SysUtils;

var Ar:array[1..2048] of byte;//iannea n yeaiaioaie
  Ea:array[1..512] of integer;//iannea n oeacaoaeyie
  ArLen:integer;// yooaeoeaiay aeeia ianneaa

//procedure ChangeString(i:integer;NewString:string); Forward;
//procedure PutString(n:integer;s:string);   // Forward;
function CountDifferent(i:integer;l:integer):integer; Forward;
procedure OutElements(n:integer;_N:integer); Forward;
procedure InElements(n:integer;_N:integer); Forward;

//procedure PutSring(n:integer;s:string);
procedure PutString(n:integer;s:string);
var i:integer;
begin
 for i:=1 to length(s) do
 begin
   Ar[ea[n]+i-1]:=byte(s[i]);
 end;
end;

procedure ChangeString(i:integer;NewString:string);
var cd:integer;
begin
 cd:=CountDifferent(i, length(NewString));
 if cd<0 then
 begin
   OutElements(ea[i],length(NewString))
 end
 else
 begin
   InElements(ea[i],length(NewString));
 end;
 Ar[ea[i]]:=length(NewString);
 PutString(ea[i]+1,Newstring);
end;

{
//procedure PutSring(n:integer;s:string);
procedure PutString(n:integer;s:string);
var i:integer;
begin
 for i:=1 to length(s) do
 begin
   Ar[ea[n]+i-1]:=byte(s[i]);
 end;
end;
}

function CountDifferent(i:integer;l:integer):integer;
begin
 Result:=l-Ea[i];
end;

procedure OutElements(n:integer;_N:integer);
var i:integer;
begin
 ArLen:=ArLen-_N;
 for i:=(n+1) to ArLen do
 begin
   Ar[i]:=Ar[i+_N];
 end;
end;

procedure InElements(n:integer;_N:integer);
var i1:integer;
begin
 ArLen:=ArLen+_N;
 for i1:=ArLen downto n+1 do
 begin
    Ar[i1]:=Ar[i1-n];
 end;
end;

begin
{ TODO -oUser -cConsole Main : Insert code here }
end.


 
Ins ©   (2010-04-21 20:20) [18]


> oldman ©   (21.04.10 17:55) [14]


> компилятор не идиот


Конечно не идиот. Компьютер вообще никогда не ошибается


 
Демо ©   (2010-04-21 20:22) [19]


> Ins ©   (21.04.10 20:20) [18]
> > oldman ©   (21.04.10 17:55) [14]> компилятор не идиотКонечно
> не идиот. Компьютер вообще никогда не ошибается


Думаешь?-)))
Бывает и ошибается;)


 
Leonid Troyanovsky ©   (2010-04-21 21:39) [20]


> Демо ©   (21.04.10 20:22) [19]

> Бывает и ошибается;)

Ну, допустим, ошибся. Но, нет у него осознания оного.
Вот, где естественный интеллект может отличится среди иных.

Короче: машина - она железная, а бумага из дерева.

--
Regards, LVT.


 
Демо ©   (2010-04-21 22:56) [21]


> Leonid Troyanovsky ©   (21.04.10 21:39) [20]
> > Демо ©   (21.04.10 20:22) [19] > Бывает и ошибается;)Ну,
>  допустим, ошибся. Но, нет у него осознания оного.


А ещё есть интеллектуалы, эрудиты, и идиоты-)

Статейка тут попалась забавная:
Шапиро Максим. "Как распознать идиота во время дискуссии"
http://flibusta.net/b/187190/read

PS.
Только ради бога не надо не надо воспринимать как намёки на что-то. Просто поделиться захотелось.


 
Германн ©   (2010-04-22 00:32) [22]


> Просто поделиться захотелось.

Спасибо.


 
Ins ©   (2010-04-22 11:27) [23]


> Шапиро Максим. "Как распознать идиота во время дискуссии"


Да, идиота в компиляторе по приведенным признакам распознать не удалось


 
Плохиш ©   (2010-04-22 12:40) [24]


> oldman ©   (21.04.10 17:43) [11]
>
>
> > turbouser ©   (21.04.10 17:39) [10]
> > Здесь нет ошибки. Перед end-ом допустимо опускать ;
>
>
> А после?

А после, в данном случае, вообще её ставить недопускает стандарт языка.


 
Anatoly Podgoretsky ©   (2010-04-23 07:44) [25]

> Плохиш  (22.04.2010 12:40:24)  [24]

После тоже можно, а иногда и нужно, смотрим случай с else


 
Плохиш ©   (2010-04-23 10:30) [26]


> Anatoly Podgoretsky ©   (23.04.10 07:44) [25]
>
> > Плохиш  (22.04.2010 12:40:24)  [24]
>
> После тоже можно, а иногда и нужно, смотрим случай с else
>

твоё моя не понимайт...


 
Anatoly Podgoretsky ©   (2010-04-23 12:26) [27]

> Плохиш  (23.04.2010 10:30:26)  [26]

end end
end; end

а вот

end; else

нельзя.


 
Дмитрий Белькевич   (2010-04-23 12:34) [28]


> Бывает и ошибается;)


Пока что не видел... Если железо исправное.


> Шапиро Максим. "Как распознать идиота во время дискуссии"


Интересно. Правда, большинство сказанного можно отнести не к идиотизму собеседника, но к известным приёмам демагогии.


 
oldman ©   (2010-04-23 12:57) [29]


> Anatoly Podgoretsky ©   (23.04.10 12:26) [27]


А
if условие then
begin
 оператор(причем только один);
end;

нормально? :)


 
turbouser ©   (2010-04-23 13:02) [30]


> oldman ©   (23.04.10 12:57) [29]

Только если

var a:TProcedure;

begin
 a
end;


 
Плохиш ©   (2010-04-23 14:09) [31]


> Anatoly Podgoretsky ©   (23.04.10 12:26) [27]

А в [24] о чём речь?


 
Anatoly Podgoretsky ©   (2010-04-23 19:06) [32]

> oldman  (23.04.2010 12:57:29)  [29]

Нормально, при этом точка с запятой не обязательно.
Лично я не стесняюсь использовать begin end для одиночного оператора, мне так легче читать код.


 
Anatoly Podgoretsky ©   (2010-04-23 19:06) [33]

> Плохиш  (23.04.2010 14:09:31)  [31]

Про точку с запятой там.


 
Плохиш ©   (2010-04-23 19:26) [34]


> Anatoly Podgoretsky ©   (23.04.10 19:06) [33]
>
> > Плохиш  (23.04.2010 14:09:31)  [31]
>
> Про точку с запятой там.
>

А ещё про то, что после end перед else её ставить нельзя.


 
Anatoly Podgoretsky ©   (2010-04-23 19:28) [35]

> Плохиш  (23.04.2010 19:26:34)  [34]

Мне казалось, что ты знаешь где можно, а где нельзя. А не объяснение почему нельзя где не можно.


 
Плохиш ©   (2010-04-24 01:06) [36]


> Anatoly Podgoretsky ©   (23.04.10 19:28) [35]

Вообще-то я там отвечал на типо-выпендривание [11]


 
мимопроходил   (2010-04-26 10:01) [37]

> if условие then
> begin   
>    оператор(причем только один);
> end;

Всегда обозначаю одиночные операторы begin-end или парой {}, только begin/{ ставлю на той же строке, что и условие, чтобы не путаться и по отступам было видно, что закрывается тем или иным end/}


 
timekiller ©   (2010-04-26 17:54) [38]

Сорри за оффтоп...

> Статейка тут попалась забавная:
> Шапиро Максим. "Как распознать идиота во время дискуссии"
> http://flibusta.net/b/187190/read


ААаафигенная статья! Спасибо!!! :)))



Страницы: 1 вся ветка

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.048 c
2-1272796812
Костя
2010-05-02 14:40
2010.08.27
доступ к oracle без графических компонентов


15-1263598432
Rouse_
2010-01-16 02:33
2010.08.27
Эволюция


2-1273134658
noob_one
2010-05-06 12:30
2010.08.27
Какой функцией можно перевести "код" в #1050#1086#1076.


2-1269889255
HRustBB
2010-03-29 23:00
2010.08.27
Нужен компонент для отображения схеммы данных


4-1239166396
Человек
2009-04-08 08:53
2010.08.27
Не правильно работает WM_NCHITTEST на Vista x64