Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Помощь студентам


Ответ
 
Опции темы Опции просмотра
Старый 02.10.2014, 03:28   #1 (permalink)
Aksinia
Member
 
Регистрация: 15.12.2013
Сообщений: 31
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 114
Question Делфи. Создать "Тест"

Здравствуйте!
Надеюсь на Вашу помощь.
Задание:
1. Перед пользователем окно, в котором он должен ввести свои ФИО.
2. Во втором окне пользователю предлагается выбрать тест, который он хочет пройти через OpenDialog.
3. Название,которое выбирается в OpenDialog сохраняется в переменную.
4. Открывается этот файл с именем этой переменной. В 3-ей форме создается некоторое количество лейблов и столько же едитов. В каждый лейбл записывается вопрос -1 строка из файла. В соседний едит пользователь должен ввести ответ на него.
5. Результатом проги является то, что все ответы пользователя сохраняются в отдельный файл, а еще этому файлу нужно обеспечить защиту от ручной корректировки результатов.
Надеюсь, что объяснила понятно. То, что у меня получилось (3 юнита) здесь. Буду очень благодарна, если найдете ошибку

PHP код:
unit Unit1;

{
$mode objfpc}{$H+}

interface

uses
  Classes
SysUtilsFileUtilFormsControlsGraphicsDialogsStdCtrls;

type

  
TForm1 }

  
TForm1 = class(TForm)
    
Button1TButton;
    
Button2TButton;
    
Edit1TEdit;
    
Label1TLabel;
    
procedure Button1Click(SenderTObject);
    
procedure Button2Click(SenderTObject);
  private
    { private 
declarations }
  public
    { public 
declarations }
  
end;

var
  
Form1TForm1;

implementation
uses Unit2
;

TForm1 }

procedure TForm1.Button2Click(SenderTObject);
begin
  close
;
end;

procedure TForm1.Button1Click(SenderTObject);
begin
  Form2
.Label2.Caption:=Form1.Edit1.Text;
  
Form2.ShowModal;
end;

{
$R *.lfm}

end
PHP код:
unit Unit2;

{
$mode objfpc}{$H+}

interface

uses
  Classes
SysUtilsFileUtilFormsControlsGraphicsDialogsStdCtrls;

type

  
TForm2 }

  
TForm2 = class(TForm)
    
Button1TButton;
    
Label1TLabel;
    
Label2TLabel;
    
Label3TLabel;
    
OpenDialog1TOpenDialog;
    
procedure Button1Click(SenderTObject);
  private
    { private 
declarations }
  public
    
Nametext:string;
    { public 
declarations }
  
end;

var
  
Form2TForm2;

implementation
 uses Unit3
;

 { 
TForm2 }

 
procedure TForm2.Button1Click(SenderTObject);
 
begin
    OpenDialog1
.Execute;
  if(
OpenDialog1.FileName <> ''then begin
    Nametext
:= FileUtil.UTF8ToSys(OpenDialog1.FileName);
    
Form3.ShowModal;
end;
 
end;

{
$R *.lfm}

end
PHP код:
unit Unit3;

{
$mode objfpc}{$H+}

interface

uses
  Classes
SysUtilsFileUtilFormsControlsGraphicsDialogsStdCtrls;

type

  
TForm3 }

  
TForm3 = class(TForm)
    
Button1TButton;
    
Button2TButton;
    
procedure fclose(SenderTObject);
    
procedure orm(SenderTObject);
    
procedure write(SenderTObject);
  private
    { private 
declarations }
  public
    { public 
declarations }
  
end;

var
  
Form3TForm3;
  
f,f2:TextFile;count:integer;
implementation
 uses Unit2
,Unit1;

 { 
TForm3 }

 
procedure TForm3.orm(SenderTObject);
 var 
edtTEdit;lblTLabel;toop1:integer;S:string;
begin
  AssignFile
(f,Form2.Nametext);
    
Reset(f);
    
toop1:=10;count:=1;
    while 
Not EOF(f) do
    
begin
      Readln
(fS);
         
edt:=TEdit.Create(Form3);
         
edt.Parent:=Form3;
         
edt.Top:=toop1;
         
edt.Left:=100;
         
lbl:=TLabel.Create(Form3);
         
lbl.Parent:=Form3;
         
lbl.Caption := S;
         
lbl.Top:=toop1;
         
inc(count);
      
inc(toop1,20);
      
CloseFile(f);
end;end;

procedure TForm3.fclose(SenderTObject);
begin
  close
;Form1.Close;
Form2.Close;
end;

procedure TForm3.write(SenderTObject);
var 
i:integer;
begin
  AssignFile
(f2,'Answers');
  
Rewrite(f2);
  
Append(f2);
  for 
i:=1 to count do
  
begin
  Writeln
(f2,TEdit(FindComponent('Edit'+IntToStr(i))).Text);
end;
closefile(f2);
end;

{
$R *.lfm}

end
Aksinia вне форума   Ответить с цитированием

Старый 02.10.2014, 03:28
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Ваша тема имеет сходства с теми, которые я отправил сюда

Фотографии и тест HTC One Max
Тест SSD
Тест на юзабельность
Тест АС
Тест HDD на Victoria
Тест Виктория

Старый 02.10.2014, 06:20   #2 (permalink)
AlexZir
support
 
Аватар для AlexZir
 
Регистрация: 19.08.2007
Адрес: Зея
Сообщений: 14,460
Записей в дневнике: 57
Сказал(а) спасибо: 124
Поблагодарили 150 раз(а) в 62 сообщениях
Репутация: 59633
По умолчанию

ООП предполагает задание свойств для используемых объектов, так что приведенных листингов маловато будет для анализа вашего проекта. Плюс вы нигде не упомянули о типе возникающей ошибки.
__________________
Убить всех человеков!
AlexZir вне форума   Ответить с цитированием
Старый 02.10.2014, 10:25   #3 (permalink)
poiu
Member
 
Регистрация: 05.03.2014
Сообщений: 201
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 834
По умолчанию

дада. маловато листингов. надо архив с проектом.
poiu вне форума   Ответить с цитированием
Старый 02.10.2014, 11:43   #4 (permalink)
Aksinia
Member
 
Регистрация: 15.12.2013
Сообщений: 31
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 114
По умолчанию

Немного переделала.
Ошибка возникает при работе программы, во время открытия OpenDialog.
Ошибка RunError 217.
Файл приложен.
Вложения
Тип файла: zip прога.zip (127.7 Кб, 2 просмотров)
Aksinia вне форума   Ответить с цитированием
Старый 02.10.2014, 11:51   #5 (permalink)
Aksinia
Member
 
Регистрация: 15.12.2013
Сообщений: 31
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 114
По умолчанию

Еще немного переделала.
Ошибка возникает при работе программы, во время открытия OpenDialog.
Ошибка RunError 217.
Файл приложен.
Вложения
Тип файла: zip прога+.zip (128.1 Кб, 11 просмотров)
Aksinia вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 02.10.2014, 15:58   #6 (permalink)
poiu
Member
 
Регистрация: 05.03.2014
Сообщений: 201
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 834
По умолчанию

пункт 1 красиво реализуется встроенной функцией InputQuery.
а с файлами люблю работать через TStringList. умеет делать OpenFile и работать по-строчно.
poiu вне форума   Ответить с цитированием
Старый 03.10.2014, 12:17   #7 (permalink)
poiu
Member
 
Регистрация: 05.03.2014
Сообщений: 201
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 834
По умолчанию

набросал тут
надеюсь задание понял верно))
Вложения
Тип файла: rar my.rar (7.2 Кб, 10 просмотров)
poiu вне форума   Ответить с цитированием
Старый 03.10.2014, 14:47   #8 (permalink)
Debianer
Member
 
Регистрация: 07.08.2012
Сообщений: 325
Сказал(а) спасибо: 14
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1671
По умолчанию

При беглом просмотре в глаза бросилось следующее:
procedure TForm2.Button1Click(Sender: TObject);
begin
OpenDialog1.Execute;
if(OpenDialog1.FileName <> '') then begin
Nametext:= FileUtil.UTF8ToSys(OpenDialog1.FileName);
Form3.ShowModal;
end;
end;


Первое. Делать не просто Execute, а if OpenDialog.Execute then begin ... - в этом случае, если пользователь выбрал файл, но нажал кнопку в диалоге "Отмена", то событие Execute возвращает False. А так у вас может возвращать в качестве имени файла мусор.
Второе. UTF8ToSys - зачем? Диалог и так работает в системной кодировке, и возвращает имя файла в ней же.
Debianer вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 06:49.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.