Показать сообщение отдельно
  #3  
Старый 21.11.2009, 21:51
SSkif SSkif вне форума
Прохожий
 
Регистрация: 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;
Ответить с цитированием