Показать сообщение отдельно
  #1  
Старый 29.03.2012, 08:39
Аватар для Lost_Fish
Lost_Fish Lost_Fish вне форума
Начинающий
 
Регистрация: 21.07.2011
Адрес: Новосибирск
Сообщения: 103
Версия Delphi: Delphi 7,XE2
Репутация: выкл
По умолчанию Помогите Range Check Error

В коде вызывается несколько процедур, на определённом моменте начинает появляться Range Check Error

Код:
//проходит нормально
ArrStr[cParkingPrice]:=GetDecimalEditSubSQL('v.ParkingPrice',edParkingFrom,edParkingTo,chbParking);

//С этой и последующих начинается ошибка
ArrStr[cRooms]:=GetDecimalEditSubSQL('v.CountRoom',edRoomFrom,edRoomTo,lbRooms);

//Код процедур

function GetDecimalEditSubSQL(FieldName:WideString;LeftEdit,RightEdit:TsDecimalSpinEdit;lb:TObject):WideString;
var
  ArrStr:TArrStr;
begin
  if CheckLabel(TLabel(lb)) then
  begin
    SetLength(ArrStr,2);
    if LeftEdit.Text<>'' then ArrStr[0]:='('+FieldName+'>='''+LeftEdit.Text+''')' else ArrStr[0]:='';
    if RightEdit.Text<>'' then ArrStr[1]:='('+FieldName+'<='''+RightEdit.Text+''')' else ArrStr[1]:='';
    Result:=MakeWhereSQL(ArrStr);
  end;
end; //<--Собственно Ошибка возникает на выходе из этой процедуры

function CheckLabel(lb:TLabel):Boolean;
begin
	Result:=lb.Font.Color=clWindowText;
end;

function MakeWhereSQL(Values:TArrStr):WideString;
var
  x:Integer;
  Str:WideString;
  function CheckAnd:WideString;
  begin
    if Str<>'' then	if Str[Length(Str)]=')' then Result:='and' else Result:='';
  end;
begin
  Str:='';
  for x:=0 to High(Values) do
    Str:=Str+CheckAnd+Values[x];
    if Str<>'' then
      if Str[Length(Str)]='d' then SetLength(Str,Length(Str)-3);
    Result:=Str;
end;

Очень нужна помощь...
Ответить с цитированием