Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.06.2008, 14:26
Аватар для MezKo
MezKo MezKo вне форума
Прохожий
 
Регистрация: 20.06.2008
Сообщения: 19
Репутация: 10
Восклицание Комментарии к листингу программы

Помогите с написанием комментарии к листингу программы. Надо почти к каждой процедуре или функции написать комментарий. Необязательно к каждой строчке.
Код:
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  
Старый 20.06.2008, 15:57
xchrom xchrom вне форума
Начинающий
 
Регистрация: 08.04.2008
Сообщения: 177
Репутация: 15
По умолчанию

Код:
//Начало подрограммы "Нажатие на тулбаттон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  
Старый 20.06.2008, 17:53
Аватар для MezKo
MezKo MezKo вне форума
Прохожий
 
Регистрация: 20.06.2008
Сообщения: 19
Репутация: 10
По умолчанию

спасибо 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  
Старый 21.06.2008, 08:34
san-46 san-46 вне форума
Активный
 
Регистрация: 25.04.2008
Сообщения: 383
Репутация: 33
По умолчанию

Что-то не видно в приведенном коде никакой процедуры - ее кусок разве. Нельзя ли окошко отворить пошире, чтобы увидеть хотя бы к какому компоненту относится свойство ItemIndex.
__________________
Не забывайте делать резервные копии
Ответить с цитированием
  #5  
Старый 21.06.2008, 09:37
Аватар для MezKo
MezKo MezKo вне форума
Прохожий
 
Регистрация: 20.06.2008
Сообщения: 19
Репутация: 10
По умолчанию

Конечно можно
Код:
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;
и кстати name формы не THuman как я сначала подумал. name формы MainForm1.Может THuman это какая-то переменная ?
Ответить с цитированием
  #6  
Старый 21.06.2008, 10:17
san-46 san-46 вне форума
Активный
 
Регистрация: 25.04.2008
Сообщения: 383
Репутация: 33
По умолчанию

По последнему вопросу.
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  
Старый 21.06.2008, 10:32
Аватар для MezKo
MezKo MezKo вне форума
Прохожий
 
Регистрация: 20.06.2008
Сообщения: 19
Репутация: 10
По умолчанию

да, ты прав
Код:
THuman = class
    FirstName: String;
    LastName:  String;
    Age:       Integer;
    Document:  String;
    Address:    String;
    Phone:     String;
    constructor Create(AName: String);
  end;
его объявляли, кто-то
ToolButton2Click в программе эта кнопка означает "изменить". И если я правильно понял то, сначала проверяется выделена ли строка в PersonsList (это Memo1). И если она выделена, то создаётся форма. Потом в метод create передаётся отмеченная строка. И как ты сказал поля заполняются и открываются для редактирования. А ты в принципе всю процедуру и описал.
Так теперь у меня последняя проблема это написание блок-схемы. Самое противное когда не имеешь представления как её делать.
Ответить с цитированием
  #8  
Старый 21.06.2008, 10:58
san-46 san-46 вне форума
Активный
 
Регистрация: 25.04.2008
Сообщения: 383
Репутация: 33
По умолчанию

Хм. Если класс THuman такой как ты его показал, то бессмысленность присвоения полям формы (FNameEdit.Text := FirstName; и т.д) очевидна. Экземпляр класса THuman только что создан и, естественно, значения его полей равны '', т.е. пустые. Можно было бы просто сделать так: FNameEdit.Text := ''; - будет одно и то же.

Как я тебя понимаю по поводу блок-схемы - сроду не составлял никаких блок-схем. А при ООП программирование они вообще не катят - это же не линейное программирование, где можно кубиками и ромбиками описАть ход выполнения программы. Можно сказать, блок-схемы - это атавизм, который до сих пор консервативные преподаватели упорно пытаются навязывать студентам, но при этом обучают их объектно-ориентированному программированию, что, одно с другим не совместимо.

Да, еще. В TMemo нет свойства Items и, естественно, нет ItemIndex. Это, скорее всего TListBox (или TComboBox).
__________________
Не забывайте делать резервные копии

Последний раз редактировалось san-46, 21.06.2008 в 11:07.
Ответить с цитированием
  #9  
Старый 21.06.2008, 11:04
Аватар для MezKo
MezKo MezKo вне форума
Прохожий
 
Регистрация: 20.06.2008
Сообщения: 19
Репутация: 10
По умолчанию

У меня как раз надо описать ход выполнения программы кубиками и ромбиками . У меня даже есть пример построения блок-схемы предыдущей работы... но там было в принципе всё просто нажимаешь кнопку и всё загружается в поле Memo1. Нажал вторую кнопку получил среднее количество свободных мест. Но тут... 9 кнопок. "Добавить", "Изменить", "Показать", "Сохранить", "Удалить", "Очистить", "Загрузить", "Сохранить" (уже сам файл идёт сохранение), "Закрыть". Зачем эти блок-схемы. Написал листинг да и хватит. А тут ещё квадратики ромбики, хрен поймёшь какие-то фигурки...
Ответить с цитированием
  #10  
Старый 21.06.2008, 11:10
Аватар для MezKo
MezKo MezKo вне форума
Прохожий
 
Регистрация: 20.06.2008
Сообщения: 19
Репутация: 10
По умолчанию

У меня ещё вопрос. Ты не знаешь как создать файл справку, желательно в формате chm ? Я не знаю в каких можно ещё форматах создать справку для программы.
Ответить с цитированием
  #11  
Старый 21.06.2008, 11:13
san-46 san-46 вне форума
Активный
 
Регистрация: 25.04.2008
Сообщения: 383
Репутация: 33
По умолчанию

В этой программе, наверное, все так же как и в предыдущей. Просто здесь большее количество, но, все равно однотипных, похожих друг на друга действий. Можно, видимо, построить блок-схему так же как и в примере, только будет она пообъемнее.
__________________
Не забывайте делать резервные копии
Ответить с цитированием
  #12  
Старый 21.06.2008, 11:18
san-46 san-46 вне форума
Активный
 
Регистрация: 25.04.2008
Сообщения: 383
Репутация: 33
По умолчанию

Цитата:
Сообщение от MezKo
У меня ещё вопрос. Ты не знаешь как создать файл справку, желательно в формате chm ? Я не знаю в каких можно ещё форматах создать справку для программы.
Вообще то, не такое это простое дело. Есть компиляторы для справок.
Я пользуюсь "Help & Manual", но она платная (там можно создавать справки в любом формате).
Что касается формата chm, то самое простое (хотя тоже не просто) сделать сколько надо страниц html, потом найти компилятор типа "html2chm" - их бесплатных достаточно много в инете.
__________________
Не забывайте делать резервные копии
Ответить с цитированием
  #13  
Старый 21.06.2008, 13:21
Аватар для MezKo
MezKo MezKo вне форума
Прохожий
 
Регистрация: 20.06.2008
Сообщения: 19
Репутация: 10
По умолчанию

В ходе создания программы, у меня возникла мысль сделать что-то типо когда запускаешь ярлык программы она просит ввести пароль, если пароль правильный то открывается главная форма. Если пароль не правилен то форма не открывается и пользователь пишет ещё раз пароль. Но возникла проблема, при правильном вводе пароля главная форма появляется, но форма на которой надо вводить пароль не исчезает и не закрывается. Что надо добавить в этот код
Код:
procedure TForm2.Button1Click(Sender: TObject);
begin
  if (Edit1.Text='qaz') then MainForm.Show
  else
  MessageDlg('Вы ввели неправельный пароль', mtError, [MBOK],0);
end;
или может надо добавить обработчик для формы какой-то ? И с каким кодом. И может ли это повлиять на мою блок-схему ? Надо ли будет добавлять это в блок схему ?
Ответить с цитированием
  #14  
Старый 21.06.2008, 14:10
san-46 san-46 вне форума
Активный
 
Регистрация: 25.04.2008
Сообщения: 383
Репутация: 33
По умолчанию

Код:
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  
Старый 21.06.2008, 14:22
Аватар для MezKo
MezKo MezKo вне форума
Прохожий
 
Регистрация: 20.06.2008
Сообщения: 19
Репутация: 10
По умолчанию

Я это ввёл, в принципе всё работает. Но, есть одно но. Когда нажимаю кнопку форма с паролем не закрывается, она можно сказать просто минимизируется, её не видна на панели управления, но зато её видно в процессах. Нет возможности которая могла бы закрывать форму ? И открывать главную форму
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:08.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter