|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Комментарии к листингу программы
Помогите с написанием комментарии к листингу программы. Надо почти к каждой процедуре или функции написать комментарий. Необязательно к каждой строчке.
Код:
procedure TMainForm.ToolButton8Click(Sender: TObject); var F: TextFile; i: Integer; begin try with SaveDlg, PersonsList.Items do begin if Not Execute then Exit; SaveToFile(FileName); AssignFile(F, Copy(FileName,1,Length(FileName)-4)+'.lso'); Rewrite(F); for i := 0 to Count - 1 do if Objects[i] <> Nil then begin Writeln(F, (Objects[i] as THuman).FirstName); Writeln(F, (Objects[i] as THuman).LastName); Writeln(F, (Objects[i] as THuman).Age); Writeln(F, (Objects[i] as THuman).Document); Writeln(F, (Objects[i] as THuman).Address); Writeln(F, (Objects[i] as THuman).Phone); end; CloseFile(F); end; except on E: EFOpenError do ShowMessage('Ошибка открытия файла'); end; end; |
#2
|
|||
|
|||
Код:
//Начало подрограммы "Нажатие на тулбаттон8" procedure TMainForm.ToolButton8Click(Sender: TObject); //объявление переменных var F: TextFile;// переменная типа текстовый файл i: Integer;//перемененная типа целое begin try // попытаемся сделать with SaveDlg, PersonsList.Items do // использовать диалог сохранения и список begin if Not Execute then Exit; // если в диалоге нажали "Отмену" - выйдем // если не нажимали "отмену" в диалоге SaveToFile(FileName);//сохраняем в файл с именем, которое выбрали в диалоге AssignFile(F, Copy(FileName,1,Length(FileName)-4)+'.lso'); // связываем переменную типа файл с файлом, имя которого состоит из имени сохраненного без 4 последних символов с расширение lso Rewrite(F);// открываем файл на запись for i := 0 to Count - 1 do // по всему списку if Objects[i] <> Nil then // если объект существует begin //пишем поля объекта в файл построчно Writeln(F, (Objects[i] as THuman).FirstName); Writeln(F, (Objects[i] as THuman).LastName); Writeln(F, (Objects[i] as THuman).Age); Writeln(F, (Objects[i] as THuman).Document); Writeln(F, (Objects[i] as THuman).Address); Writeln(F, (Objects[i] as THuman).Phone); end;//конец пишем поля объекта в файл построчно CloseFile(F);//закрываем файл end; except // если что-то не так пошло on E: EFOpenError do ShowMessage('Ошибка открытия файла'); // конкретно не получилось файл открыть - показываем сообщение end;//конец "попытаемся сделать" end;//конец подпрограммы |
#3
|
||||
|
||||
спасибо xchrom. Ещё один вопрос как описать вот эту процедуру
Код:
begin if ItemIndex = -1 then Exit; if not Assigned(Objects[ItemIndex]) then Objects[ItemIndex] := THuman.Create(Items[ItemIndex]); with Objects[ItemIndex] as THuman do |
#4
|
|||
|
|||
Что-то не видно в приведенном коде никакой процедуры - ее кусок разве. Нельзя ли окошко отворить пошире, чтобы увидеть хотя бы к какому компоненту относится свойство ItemIndex.
Не забывайте делать резервные копии |
#5
|
||||
|
||||
Конечно можно
Код:
procedure TMainForm.ToolButton2Click(Sender: TObject); begin with PersonsList, PersonsList.Items do //использовать список и элементы списка begin if ItemIndex = -1 then Exit; if not Assigned(Objects[ItemIndex]) then Objects[ItemIndex] := THuman.Create(Items[ItemIndex]); with Objects[ItemIndex] as THuman do begin FNameEdit.Text := FirstName; LNameEdit.Text := LastName; AgeEdit.Value := Age; DocEdit.Text := Document; AddrEdit.Text := Address; PhoneEdit.Text := Phone; //делаем все Edit активными для редактирования FNameEdit.Enabled := true; LNameEdit.Enabled := true; AgeEdit.Enabled := true; DocEdit.Enabled := true; AddrEdit.Enabled := true; PhoneEdit.Enabled := true; end; end; end; и сразу возникает другой вопрос что значит вот это, что за constructor Код:
constructor THuman.Create(AName: String); begin inherited Create; FirstName := AName; end; |
#6
|
|||
|
|||
По последнему вопросу.
THuman - это, скорее всего, самодельный класс (где-то объявленный и, судя по работе с ним в процедуре TMainForm.ToolButton2Click, какая-то форма - от TForm) и при конструировании его экземпляра в его поле FirstName передается строка (видимо, с фамилией). Да, но, скорее всего если это форма, то метод Create перекрыт, иначе в этом методе должен присутствовать обязательный параметр AOwner : TComponent. Т.е. ясности что за класс THuman нет. А в TMainForm.ToolButton2Click проверяется не пустой ли список (скорее всего TListBox'а) конструкцией "if ItemIndex = -1" и, если не пустой, то создается форма (класс THuman). При создании в метод Create передается отмеченная в PersonsList строка. Далее поля формы заполняются значениями и открываются для редактирования. Что дальше происходит из процедуры не ясно. Не забывайте делать резервные копии Последний раз редактировалось san-46, 21.06.2008 в 10:29. |
#7
|
||||
|
||||
да, ты прав
Код:
THuman = class FirstName: String; LastName: String; Age: Integer; Document: String; Address: String; Phone: String; constructor Create(AName: String); end; ToolButton2Click в программе эта кнопка означает "изменить". И если я правильно понял то, сначала проверяется выделена ли строка в PersonsList (это Memo1). И если она выделена, то создаётся форма. Потом в метод create передаётся отмеченная строка. И как ты сказал поля заполняются и открываются для редактирования. А ты в принципе всю процедуру и описал. Так теперь у меня последняя проблема это написание блок-схемы. Самое противное когда не имеешь представления как её делать. |
#8
|
|||
|
|||
Хм. Если класс THuman такой как ты его показал, то бессмысленность присвоения полям формы (FNameEdit.Text := FirstName; и т.д) очевидна. Экземпляр класса THuman только что создан и, естественно, значения его полей равны '', т.е. пустые. Можно было бы просто сделать так: FNameEdit.Text := ''; - будет одно и то же.
Как я тебя понимаю по поводу блок-схемы - сроду не составлял никаких блок-схем. А при ООП программирование они вообще не катят - это же не линейное программирование, где можно кубиками и ромбиками описАть ход выполнения программы. Можно сказать, блок-схемы - это атавизм, который до сих пор консервативные преподаватели упорно пытаются навязывать студентам, но при этом обучают их объектно-ориентированному программированию, что, одно с другим не совместимо. Да, еще. В TMemo нет свойства Items и, естественно, нет ItemIndex. Это, скорее всего TListBox (или TComboBox). Не забывайте делать резервные копии Последний раз редактировалось san-46, 21.06.2008 в 11:07. |
#9
|
||||
|
||||
У меня как раз надо описать ход выполнения программы кубиками и ромбиками . У меня даже есть пример построения блок-схемы предыдущей работы... но там было в принципе всё просто нажимаешь кнопку и всё загружается в поле Memo1. Нажал вторую кнопку получил среднее количество свободных мест. Но тут... 9 кнопок. "Добавить", "Изменить", "Показать", "Сохранить", "Удалить", "Очистить", "Загрузить", "Сохранить" (уже сам файл идёт сохранение), "Закрыть". Зачем эти блок-схемы. Написал листинг да и хватит. А тут ещё квадратики ромбики, хрен поймёшь какие-то фигурки...
|
#10
|
||||
|
||||
У меня ещё вопрос. Ты не знаешь как создать файл справку, желательно в формате chm ? Я не знаю в каких можно ещё форматах создать справку для программы.
|
#11
|
|||
|
|||
В этой программе, наверное, все так же как и в предыдущей. Просто здесь большее количество, но, все равно однотипных, похожих друг на друга действий. Можно, видимо, построить блок-схему так же как и в примере, только будет она пообъемнее.
Не забывайте делать резервные копии |
#12
|
|||
|
|||
Цитата:
Я пользуюсь "Help & Manual", но она платная (там можно создавать справки в любом формате). Что касается формата chm, то самое простое (хотя тоже не просто) сделать сколько надо страниц html, потом найти компилятор типа "html2chm" - их бесплатных достаточно много в инете. Не забывайте делать резервные копии |
#13
|
||||
|
||||
В ходе создания программы, у меня возникла мысль сделать что-то типо когда запускаешь ярлык программы она просит ввести пароль, если пароль правильный то открывается главная форма. Если пароль не правилен то форма не открывается и пользователь пишет ещё раз пароль. Но возникла проблема, при правильном вводе пароля главная форма появляется, но форма на которой надо вводить пароль не исчезает и не закрывается. Что надо добавить в этот код
Код:
procedure TForm2.Button1Click(Sender: TObject); begin if (Edit1.Text='qaz') then MainForm.Show else MessageDlg('Вы ввели неправельный пароль', mtError, [MBOK],0); end; |
#14
|
|||
|
|||
Код:
procedure TForm2.Button1Click(Sender: TObject); begin if (Edit1.Text='qaz') then begin Release; MainForm.Show; end else MessageDlg('Вы ввели неправельный пароль', mtError, [MBOK],0); end; Не забывайте делать резервные копии Последний раз редактировалось san-46, 21.06.2008 в 14:18. |
#15
|
||||
|
||||
Я это ввёл, в принципе всё работает. Но, есть одно но. Когда нажимаю кнопку форма с паролем не закрывается, она можно сказать просто минимизируется, её не видна на панели управления, но зато её видно в процессах. Нет возможности которая могла бы закрывать форму ? И открывать главную форму
|