Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
ВнизПочему не работает программа? Найти похожие ветки
← →
Учащийся (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;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.065 c