type
tp=^el;
el=record
adres:string[30];
Komnat:byte;
Chel:byte;
Ploshad:word;
ZhilPloshad:word;
next:tp;//следующий
prev:tp;//предыдущий
end;
public
{ Public declarations }
first, last:tp;
end;
var
n:tp;
first, last:tp;
Form1: TForm1;
procedure TForm1.Dobavit(z:boolean); //добавление элемента
var p:tp;
begin
z:=false;
while z=false do// пока z=false мы заносим значения, когда z=true это значит что
//значение занесено и тогда end и вывод в CmbBox-ы '' пустые значение, для
//повторного занесение данных и добавления нового эл-та
begin
if n=nil then //не пуст ли список, если пуст, то
begin
new(n); //создаем новый эл-нт
n^.adres:=ComboBox2.Text; //заносим данные:
n^.Komnat:=strtoint(ComboBox3.Text);
n^.Chel:=strtoint(ComboBox4.Text);
n^.Ploshad:=strtoint(ComboBox5.Text);
n^.ZhilPloshad:=strtoint(ComboBox6.Text);
first:=n;//если список пуст, то новый эл-нт является первым
last:=n; //и последним, поэтому обозначаем это указателями
n^.prev:=nil;//не забываем "занулять" указатели
n^.next:=nil;//аналогично
z:=true;
end
else
begin
while (n^.next<>Nil) and (n^.next^.adres<ComboBox2.Text) do
n:=n^.next;
if (n=first) and (n^.adres>ComboBox2.Text) then
begin
new(p); //создаем новый эл-нт
p^.adres:=Form1.ComboBox2.Text; //заносим данные:
p^.Komnat:=strtoint(Form1.ComboBox3.Text);
p^.Chel:=strtoint(Form1.ComboBox4.Text);
p^.Ploshad:=strtoint(Form1.ComboBox5.Text);
p^.ZhilPloshad:=strtoint(Form1.ComboBox6.Text);
first^.prev:=p; //добавляем эл-нт перед первым и делаем его первым
p^.next:=first;
first:=p;
p^.prev:=nil;//перед первым эл-том Nil
z:=true;
end
else
begin
if (n=first) and (n^.adres<ComboBox2.Text)then
begin
new(p); //создаем новый эл-нт
p^.adres:=Form1.ComboBox2.Text; //заносим данные:
p^.Komnat:=strtoint(Form1.ComboBox3.Text);
p^.Chel:=strtoint(Form1.ComboBox4.Text);
p^.Ploshad:=strtoint(Form1.ComboBox5.Text);
p^.ZhilPloshad:=strtoint(Form1.ComboBox6.Text);
p^.next:=first^.next;
p^.prev:=first;
first^.next:=p;
p^.next^.prev:=n;
z:=true;
end
else
begin
if (n=last) and (n^.adres<ComboBox2.Text) then
begin
new(p); //создаем новый эл-нт
p^.adres:=Form1.ComboBox2.Text; //заносим данные:
p^.Komnat:=strtoint(Form1.ComboBox3.Text);
p^.Chel:=strtoint(Form1.ComboBox4.Text);
p^.Ploshad:=strtoint(Form1.ComboBox5.Text);
p^.ZhilPloshad:=strtoint(Form1.ComboBox6.Text);
last^.next:=p;//добавляем новый эл-нт после следующего
p^.prev:=last;
last:=p;
p^.next:=nil;//"зануляем" указатель, обозначаем что следующий после последнего Nil
z:=true;
end
else
begin
if n^.next<>Nil then //добавляем в середину
begin
new(p); //создаем новый эл-нт
p^.adres:=Form1.ComboBox2.Text; //заносим данные:
p^.Komnat:=strtoint(Form1.ComboBox3.Text);
p^.Chel:=strtoint(Form1.ComboBox4.Text);
p^.Ploshad:=strtoint(Form1.ComboBox5.Text);
p^.ZhilPloshad:=strtoint(Form1.ComboBox6.Text);
p^.prev:=n;
p^.next:=n^.next;
p^.next^.prev:=p;
n^.next:=p;
z:=true;
end;
end;
end;
end;
end;
end;
ComboBox2.Text:='';
ComboBox3.Text:='';
ComboBox4.Text:='';
ComboBox5.Text:='';
ComboBox6.Text:='';
end;
procedure TForm1.BitBtn1Click(Sender: TObject); //вызов процедуры добавления, и сразу просмотр
var b:boolean;
i:integer;
l:tp;
begin
b:=true;
if ComboBox2.Text='' then
begin
b:=false;
MessageDlg('Не правильно введено поле адрес квартиры!', mtError, [mbOk], 0);
end
else
if ComboBox3.Text='' then
begin
b:=false;
MessageDlg('Не правильно введено поле кол-во комнат!', mtError, [mbOk], 0);
end
else
if ComboBox4.Text='' then
begin
b:=false;
MessageDlg('Не правильно введено поле кол-во жильцов!', mtError, [mbOk], 0);
end
else
if ComboBox5.Text='' then
begin
b:=false;
MessageDlg('Не правильно введено поле общая площадь!', mtError, [mbOk], 0);
end
else
if ComboBox6.Text='' then
begin
b:=false;
MessageDlg('Не правильно введено поле жилая площадь!', mtError, [mbOk], 0);
end;
if b=true then
begin
Dobavit(true);
StrGrd.Visible:=true;
StrGrd.RowCount:=1;
i:=1;
l:=n;
l:=first;
if n=Nil then
MessageDlg('Список пуст!', mtError, [mbOk], 0);
while l<>nil do
begin
StrGrd.RowCount:=StrGrd.RowCount+1;
StrGrd.FixedRows:=1;
StrGrd.Cells[0,i]:=inttostr(i);
StrGrd.Cells[1,i]:=l^.adres;
StrGrd.Cells[2,i]:=inttostr(l^.Komnat);
StrGrd.Cells[3,i]:=inttostr(l^.Chel);
StrGrd.Cells[4,i]:=inttostr(l^.Ploshad);
StrGrd.Cells[5,i]:=inttostr(l^.ZhilPloshad);
l:=l^.next;
i:=i+1;
end;
end;
end;
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.