
29.03.2012, 08:39
|
 |
Начинающий
|
|
Регистрация: 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;
Очень нужна помощь...
Последний раз редактировалось Lost_Fish, 29.03.2012 в 08:43.
|