Я сгруппировал четыре переключателя на радиогруппе. Есть файл создания, создание папки, удаление и копирование переключателей, но у меня проблема с кнопкой копирования.Радио кнопки в Delphi
Это в основном работает нормально, но окно сообщения (говорящее, где файл был скопирован на жесткий диск) не закрывается. Как я могу закрыть его? Или есть способ обновить переключатели?
Это домашняя проблема.
Вот мой код:
procedure TForm1.btnsubmitClick(Sender: TObject);
var
i,j,k,t,index,pred,delp,temp,temp2:integer;
begin
if rbtncreatefolder.checked = true then
begin
if (length(edit3.Text)>0) and (edit3.Text<>'..') then begin
if (VS>=3) then begin
if sush(true,nk1,edit3.Text) then begin
i:=tabld[nk1].nach;
while fat[i]<>1024 do i:=fat[i];
fat[i]:=freep(i);
tabld[fat[i]].name:=edit3.Text;
tabld[fat[i]].format:='';
tabld[fat[i]].tip:=true;
fat[fat[i]]:=1024;
k:=freep(fat[i]);
tabld[fat[i]].nach:=k;
tabld[k].name:='.';
tabld[k].tip:=true;
tabld[k].nach:=fat[i];
t:=freep(k);
fat[k]:=t;
tabld[t].name:='..';
tabld[t].tip:=true;
tabld[t].nach:=nk1;
fat[t]:=1024;
tabld[fat[i]].razmer:=0;
tabld[i].razmer:=tabld[i].razmer+1;
reload;
end
end
else
showmessage('Not enough free memory!');
end
else
showmessage('Incorrect data or absent!');
end
else if rbtncreatefile.Checked = true then
begin
if (length(edit3.Text)>0) and (length(edit4.Text)>0)then begin
if strtoint(edit4.Text)<32*VS then begin
if sush(false,nk1,edit3.Text) then begin
i:=tabld[nk1].nach;
while fat[i]<>1024 do i:=fat[i];
fat[i]:=freep(i);
tabld[fat[i]].name:=edit3.Text;
tabld[fat[i]].format:=copy(edit3.Text,length(edit3.Text)-4,3);
tabld[fat[i]].tip:=false;
tabld[fat[i]].razmer:=strtoint(edit4.Text);
if radiobutton1.Checked then
tabld[fat[i]].format:='txt'
else
tabld[fat[i]].format:='bin';
tabld[fat[i]].nach:=freep(fat[i]);
k:=tabld[fat[i]].nach;
fat[fat[i]]:=1024;
for j:=1 to (tabld[fat[i]].razmer-9) div 32 do begin
fat[k]:=freep(k);
k:=fat[k];
end;
fat[k]:=1024;
reload;
end
end
else
showmessage('Not enough free memory!');
end
else
showmessage('You did not enter name and \ or File Size!');
end
else if rbtndelete.checked = true then
begin
if listbox1.ItemIndex>=0 then begin
if listbox1.Items.Strings[listbox1.ItemIndex]<>'dir>..' then begin
pred:=tabld[nk1].nach;
index:=tabld[nk1].nach;
for i:=0 to listbox1.ItemIndex do begin
index:=fat[index];
if i>0 then
pred:=fat[pred];
end;
delP:=index;
fat[pred]:=fat[index];
if tabld[index].tip then begin
showmessage('directory "'+tabld[index].name+'" and all its subdirectories have been deleted!');
rekur(tabld[delp].nach);
fat[delp]:=0;
fat[tabld[delp].nach]:=0;
end
else begin
showmessage('file "'+tabld[index].name+'.'+tabld[index].format+'" was removed!');
i:=tabld[index].nach;
while fat[i]<>1024 do begin
j:=i;
i:=fat[i];
fat[j]:=0;
end;
fat[i]:=0;
fat[index]:=0;
end;
reload;
end
else
showmessage('You can not delete this directory!');
end
else
showmessage('You did not select the folder to delete!');
end
else if rbtncopy.checked = true then
begin
if listbox1.ItemIndex>=0 then begin
if listbox1.Items.Strings[listbox1.ItemIndex]<>'dir>..' then begin
index:=tabld[nk1].nach;
for i:=0 to listbox1.ItemIndex do
index:=fat[index];
if tabld[index].tip then begin
showmessage('directory "'+tabld[index].name+'" and all its subdirectories are copied to the directory "'+edit2.text+'" !');
temp:=nk1;
nk1:=nk2;
edit3.Text:=tabld[index].name;
btnsubmit.Click;
temp2:=tabld[nk2].nach;
while (fat[temp2]<>1024) and (tabld[temp2].name<>tabld[nk1].name) do temp2:=fat[temp2];
rekurC(fat[tabld[index].nach],temp2);
nk1:=temp;
end
else begin
showmessage('file "'+tabld[index].name+'.'+tabld[index].format+'" was copied to directory "'+edit2.Text+'"!');
temp:=nk1;
nk1:=nk2;
edit3.Text:=tabld[index].name;
edit4.Text:=inttostr(tabld[index].razmer);
btnsubmit.Click;
nk1:=temp;
end
end
else
showmessage('This directory may not be copied!');
end
else
showmessage('You have not picked anything up to copy!');
reload;
end
else
showmessage('select an operator please');
end;
Что такое 'sush',' tabld' и как заполняется 'tabld',' freep', 'fat' и как заполняется' fat', 'reload'; Два подсказки, безусловно, улучшают форматирование, мне не интересно, что вы потеряны в этом коде, не используйте 'pred' в качестве имени переменной, есть также [' Pred'] (http: //docwiki.embarcadero .com/VCL/ru/System.Pred). – TLama
Является ли это файловой системой FAT32, смоделированной в памяти для домашнего задания? –
Вам не нужно писать строки типа «if rbtncreatefolder.checked = true»; достаточно было бы написать «if rbtncreatefolder.checked». Не то, чтобы я использовал эту конструкцию: используйте значение radiogroup.itemindex в выражении «case». –