str := '1-3,4-6,7-9,10-12,13-15,16-18,19-21,22-24' // 代表数值区间,1到3,4到6,7到9的意思,以此类推....假设现在有一个数值num,怎么判断这个数值属于str的哪一个区间里面的呢?比如 num := 8 ,按说,num 应该在"7-9"这个区间内,我要的结果就是根据num的值,取得相应的区间,得到 bstr := '7-9',这样的,怎么写代码?
解决方案 »
- 为什么出错了啊?看家看看 [Fatal Error] Unit1.pas(7): File not found: 'TeeLisB.dcu'
- unidac 如何对数据的插入和更新
- 改sql语句求大家帮助,谢谢
- 用query1连DBLookupCombo时,DBLookupCombo我只设置了listsource,为DataSource2,DataSource2与query1相连
- 如何共享文件??
- Delphi6 + ACM 1.4,如何设置用GSM格式录音?
- Delphi中控制声音的函数
- 我的一个程序,在有的机器上可以运行,但在有的机器上出现:BOF或EOF中有一个是“真”,或者当前的记录已被删除,所需的操作操作要求一个当前的记录。请问各位有没有遇到过这种情况?如何解决。谢谢。
- Dcomconnection的computername属性可以用ip地址吗?多多指教
- 喝白开水有利身体健康之五
- delphi怎样算是精通
- delphi 怎么判断字符串里有几个英文单词?
或者用tstringlist 然后循环判断。
然后循环判断
或者二分法
sl: TStringList;
s: string;
i, num: Integer;
begin
sl := TStringList.Create; try
sl.Delimiter := ',';
num := 8;
sl.DelimitedText := '1-3,4-6,7-9,10-12,13-15,16-18,19-21,22-24';
for i := 0 to sl.Count - 1 do
begin
s := sl[i];
if (num > StrToInt(s[1]) - 1) and (num < StrToInt(s[3]) + 1) then
ShowMessage(sl[i]);
end;
finally
sl.Free;
end; // try
str, bstr: string;
num, I: Integer;
begin
str := '1-3,4-6,7-9,10-12,13-15,16-18,19-21,22-24';
num := 8; with TStringList.Create do
try
CommaText := StringReplace(str, '-', ',', [rfReplaceAll]);
for I := 0 to Count - 1 do
if StrToInt(Strings[I]) > num then
begin
bstr := Strings[I-1]+'-'+Strings[I];
ShowMessage(bstr);
Break
end;
finally
Free
end;
end;
case Num mod 3 of
0: bStr:=IntToStr(Num-2) + '-' +IntToStr(Num);
1: bStr:=IntToStr(Num) + '-' +IntToStr(Num+2);
2: bStr:=IntToStr(Num-1) + '-' +IntToStr(Num+1);
给你写个函数吧,这应该是你想要的结果。
直接传入数值就可以判断范围了。
function ShowMSG(num:integer):string;
var
str:string;
begin
str := '';
case num of
1..3:
begin
str := '1-3';
end;
4..6:
begin
str := '4-6';
end;
7..9:
begin
str := '7-9';
end;
10..12:
begin
str := '10..12';
end;
else
begin
str := 'not found';
end;
end;
result := str;
end;
begin
showmessage(ShowMSG(3));
end;
const al: array [1..8] of integer =(1,4,7,10,13,16,19,22);
const ah: array [1..8] of integer =(3,6,9,12,15,18,21,24);function areaof(n:integer):integer;
begin
areaof :=a[n];
end;
function arealow(n:integer):integer;
begin
arealow :=al[n];
end;
function areahigh(n:integer):integer;
begin
areahigh :=ah[n];
end;