
21.11.2009, 21:51
|
Прохожий
|
|
Регистрация: 05.11.2009
Сообщения: 6
Репутация: 10
|
|
Чёт не получается, выдаёт ошибку. Вот для наглядности тело проги:
Код:
// !!! Исходники программы могут быть использованы с любой целью,
// !!! но при наличии ссылки "ATH, helpes.narod.ru"
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Menus, ExtCtrls, uEncrypt;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
MI_NewTest: TMenuItem;
MISave: TMenuItem;
MICloseAll: TMenuItem;
MIClose: TMenuItem;
Edt_Question: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Edt_V1: TEdit;
Edt_V2: TEdit;
Edt_V3: TEdit;
Edt_V4: TEdit;
RG_CorrectQ: TRadioGroup;
Btn_Last: TButton;
Btn_Next: TButton;
Memo_Temp: TMemo;
Lbl_NameTest: TLabel;
GBox1: TGroupBox;
SaveDialog1: TSaveDialog;
OpenDialog1: TOpenDialog;
MIOpen: TMenuItem;
N2: TMenuItem;
Button1: TButton;
Image1: TImage;
Button2: TButton;
procedure PrCleanItems(Sender: TObject);
procedure PrNewTest(Sender: TObject);
procedure PrSaveMemo(Sender: TObject);
procedure Btn_NextClick(Sender: TObject);
procedure PrLastItems(i:byte;Sender: TObject);
procedure Btn_LastClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure MI_NewTestClick(Sender: TObject);
procedure MISaveClick(Sender: TObject);
procedure MICloseClick(Sender: TObject);
procedure MICloseAllClick(Sender: TObject);
procedure MIOpenClick(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Image1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
// Номер вопроса
Nom_Question: Byte;
// Имя файла
PrFileName: string;
implementation
{$R *.DFM}
uses unit2, Unit3;
//Функция для перевода дробей с запятыми в дроби с точками
Function Spoint(S:string):String;
var
c55_, new:string;
ac4_:integer;
begin
c55_:=S;
ac4_:=pos('|', c55_);
If ac4_<>0 then begin
new:=Copy(S, 1, ac4_-1);
Spoint:=new;
end else
Spoint:=S;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Nom_Question:=1;
end;
// Очистка всех пункам, кроме хар-к теста
procedure TForm1.PrCleanItems(Sender: TObject);
begin
Edt_Question.Text:='';
Edt_V1.Text:='';
Edt_V2.Text:='';
Edt_V3.Text:='';
Edt_V4.Text:='';
RG_CorrectQ.ItemIndex:=0;
end;
// Создание нового теста
procedure TForm1.PrNewTest(Sender: TObject);
begin
// Очистка временного объекта
Memo_Temp.Lines.Clear;
Btn_Last.Enabled:=False;
Btn_Next.Enabled:=True;
Nom_Question:=1;
Label1.Caption:='Вопрос №1 :';
PrCleanItems(Sender);
end;
// Ввод данных вопроса в промежуточный объект
procedure TForm1.PrSaveMemo(Sender: TObject);
begin
if Memo_Temp.Lines.Count=(2+6*(Nom_Question-1))then
begin
// Создание новых строчек в промежуточном объекте
Memo_Temp.Lines.Add(encrypt(Edt_Question.Text,30000));
Memo_Temp.Lines.Add(encrypt(Edt_V1.Text,30000));
Memo_Temp.Lines.Add(encrypt(Edt_V2.Text,30000));
Memo_Temp.Lines.Add(encrypt(Edt_V3.Text,30000));
Memo_Temp.Lines.Add(encrypt(Edt_V4.Text,30000));
Memo_Temp.Lines.Add(encrypt(IntToStr(RG_CorrectQ.ItemIndex+1),30000));
end
else
begin
// Узменение уже существующих данных
Memo_Temp.Lines[2+6*(Nom_Question-1)]:=encrypt((Edt_Question.Text),30000);
Memo_Temp.Lines[3+6*(Nom_Question-1)]:=encrypt((Edt_V1.Text),30000);
Memo_Temp.Lines[4+6*(Nom_Question-1)]:=encrypt((Edt_V2.Text),30000);
Memo_Temp.Lines[5+6*(Nom_Question-1)]:=encrypt((Edt_V3.Text),30000);
Memo_Temp.Lines[6+6*(Nom_Question-1)]:=encrypt((Edt_V4.Text),30000);
Memo_Temp.Lines[7+6*(Nom_Question-1)]:=encrypt(IntToStr(RG_CorrectQ.ItemIndex+1),30000);
end;
end;
procedure TForm1.Btn_NextClick(Sender: TObject);
begin
PrSaveMemo(Sender);
if Memo_Temp.Lines.Count>(8+6*(Nom_Question-1)) then
PrLastItems(0,Sender) else PrCleanItems(Sender);
inc(Nom_Question);
Label1.Caption:='Вопрос №'+IntToStr(Nom_Question)+' :';
// На последнем вопросе блокировать кнопку Btn_Next
if Nom_Question=StrToInt(Spoint(Form2.Edt_Kol.Text)) then
Btn_Next.Enabled:=False;
Btn_Last.Enabled:=True;
///Form2.Edt_Kol.Text
end;
|