Привет всем. У меня такая проблема: нужно сгенерировать и записать в файл диапазон телефонных номеров. Число после префикса выходит за рамки LongInt. Я попробовал представить число в виде массива цифр, только не очень работает..
var
Form6: TForm6;
ch,ch2:array[1..10] of byte;
f:textfile;
implementation
{$R *.dfm}
Function prov:boolean;
var k:byte;
begin
result:=true;
for k:=1 to 10 do
begin
if ch[k]<>ch2[k] then begin
result:=false;
break;
end;
end;
end;
function mas:string;
var j:byte;
begin
result:='';
for j:=1 to 10 do result:=result+inttostr(ch[j]);
end;
procedure TForm6.sButton1Click(Sender: TObject);
var d1,k2:byte;
begin
assignfile(f,sedit4.text+'.txt');
rewrite(f);
for d1:=1 to 10 do
begin
ch[d1]:=strtoint(form6.sEdit2.text[d1]);
ch2[d1]:=strtoint(form6.sEdit3.text[d1]);
end;
repeat
for k2:=10 downto 1 do
begin
writeln(f,form6.sedit1.text+mas);
if ch[k2]<>9 then inc(ch[k2]) else begin
ch[k2]:=0;
inc(ch[k2-1]);
break
end;
end;
until prov;
А зачем вообще числа? Почему номер нельзя представлять строкой? Мне кажется, это естественнее. Телефонные номера никто же не складывает и не возводит в квадрат)). А ели нужно сравнение - пожалуйста, оно есть.
И я опять в замешательстве. Следующий код:
var diap1,diap2:cardinal;
begin
diap1:=strtoint(copy(form1.sedit5.text,3,length(form1.sedit5.text)-2));
diap2:=strtoint(copy(form1.sedit6.text,3,length(form1.sedit6.text)-2));
end;
9 миллиардов - очень много для Cardinal, он держит до 232, а это чуть больше 4 млрд... Используй Int64:
var diap1, diap2: int64;
begin
diap1:=strtoint64(copy(form1.sedit5.text,3,length(form1.sedit5.text)-2));
diap2:=strtoint64(copy(form1.sedit6.text,3,length(form1.sedit6.text)-2));
end;
Помогло:) А если бы я внимательней прочитал пост №3, то помогло бы ещё раньше))