Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Объясните поче так:


Автор: RA 17.9.2004, 15:08
Почему если переделать эту процедуру в функцию то результат надо разделить на 2 ?


Код

Procedure MakeJah;
var fj,i:integer;
    s:string;
begin
for i:=0 to ri4Edit.CaretPos.Y  do
begin
S:=ri4Edit.Lines.Strings[i];
if ri4Edit.CaretPos.Y = i then
fj:=fj+ri4Edit.CaretPos.X else
fj:=fj+length(  s );
end;
  caption:=IntToStr(fj);
end;



Код

Function GetStringCount(x,y:integer):integer;
var fj,i:integer; s:string;
begin
for i:=0 to Y  do
begin
 s:= ri4Edit.Lines.Strings[i];
 if Y = i then
 fj:=fj+X else
 fj:=fj+length( s );
end;
fj:=(fj Div 2);
Result:=fj;
end;

Автор: Girder 17.9.2004, 15:35
Потому что перед For и втом и другом случаи надо добавить fj:=0
Вот тогда и не надо писать fj:=fj div 2

Автор: RA 17.9.2004, 16:43
Цитата(Girder @ 17.9.2004, 15:35)
Потому что перед For и втом и другом случаи надо добавить fj:=0
Вот тогда и не надо писать fj:=fj div 2


А разве имеет смысл и в том и вдругом случаи? если в процедуре всё пучком и без этого.


Автор: Girder 17.9.2004, 16:51
Цитата
...если в процедуре всё пучком и без этого.
Это просто совпадение... Как говорится: До первого случая

У тебя в fj может быть все что угодно.

Автор: RA 17.9.2004, 17:45
Ага, понял. спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)