Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2011, 10:19   #1
ДениC
Пользователь
 
Регистрация: 29.03.2011
Сообщений: 41
По умолчанию Имя файла теста надо указать в командной строке запуска программы.

Подскажите пожалуйста как это сделать
ДениC вне форума Ответить с цитированием
Старый 31.03.2011, 10:22   #2
danekne
Форумчанин
 
Регистрация: 12.02.2007
Сообщений: 360
По умолчанию

ParamCount
Paramstr
danekne вне форума Ответить с цитированием
Старый 31.03.2011, 10:23   #3
ДениC
Пользователь
 
Регистрация: 29.03.2011
Сообщений: 41
По умолчанию

а можно поконкретнее, а то я только первый год изучаю делфи)
ДениC вне форума Ответить с цитированием
Старый 31.03.2011, 10:27   #4
danekne
Форумчанин
 
Регистрация: 12.02.2007
Сообщений: 360
По умолчанию

Код:
for i := 0 to ParamCount do
    param[i]=paramstr[i];
Получишь массив из переданных в коммандной строке параметров
В твоем случае - file=paramstr[0]
danekne вне форума Ответить с цитированием
Старый 31.03.2011, 10:35   #5
ДениC
Пользователь
 
Регистрация: 29.03.2011
Сообщений: 41
По умолчанию

А куда это вставить в этот код?
Код:
procedure TForm8.FormActivate(Sender: TObject);
  begin
     ResetForm;
     if ParamCount = 0
     then begin
             Label5.caption:= 'Íå çàäàí ôàéë âîïðîñîâ òåñòà.';
             Button1.caption:='Ok';
             Button1.tag:=2;
             Button1.Enabled:=TRUE
          end
     else begin
          fn := ParamStr(1);
          assignfile(f,fn);
          try
            reset(f);
          except
            on EFOpenError do
               begin
                    ShowMessage('Ôàéë òåñòà '+fn+' íå íàéäåí.');
                    Button1.caption:='Ok';
                    Button1.tag:=2;
                    Button1.Enabled:=TRUE;
                    exit;
               end;
          end;
          Info; // ïðî÷èòàòü è âûâåñòè èíôîðìàöèþ î òåñòå
          GetLevel;    // ïðî÷èòàòü èíôîðìàöèþ îá óðîâíÿõ îöåíîê
     end;
end;
ДениC вне форума Ответить с цитированием
Старый 31.03.2011, 10:45   #6
danekne
Форумчанин
 
Регистрация: 12.02.2007
Сообщений: 360
По умолчанию

fn := ParamStr(1);
меняй на fn := ParamStr[0];
danekne вне форума Ответить с цитированием
Старый 31.03.2011, 10:48   #7
ДениC
Пользователь
 
Регистрация: 29.03.2011
Сообщений: 41
По умолчанию

Все равно пишет не задан файл(
Может вам весь код скинуть???
ДениC вне форума Ответить с цитированием
Старый 31.03.2011, 11:32   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от danekne
fn := ParamStr(1);
меняй на fn := ParamStr[0];
Это НЕПРАВИЛЬНЫЙ совет!

ДениC, у Вас в программе уже стоит присвоить fn первому параметру, заданному в командной строке!
Значит, либо Вы не указываете в командной строке имя файла.
Либо указанное имя не является допустимым (ну, например, нужен полный путь к файлу, или полное имя содержит пробелы, а Вы в командной строке не указываете кавычки и т.д.)

Дайте скриншот ошибки, которую Вам программа выдаёт...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 31.03.2011, 13:58   #9
ДениC
Пользователь
 
Регистрация: 29.03.2011
Сообщений: 41
По умолчанию

Самой ошибки нет
Код:
unit Unit8;

interface

uses
  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, StdCtrls, ExtCtrls,
  jpeg;

type
  TForm8 = class(TForm)
    // вопрос
    Label5: TLabel;

    // альтернативные ответы
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;

    // радиокнопки выбора ответа
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    RadioButton4: TRadioButton;

    Image1: TImage;   // область вывода иллюстрации
    Button1: TButton;
    Panel1: TPanel;
    RadioButton5: TRadioButton;

    procedure FormActivate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure RadioButtonClick(Sender: TObject);

    // Эти объявления вставлены сюда вручную
    procedure Info;
    procedure VoprosToScr;
    procedure ShowPicture; // выводит иллюстрацию
    procedure ResetForm;   // "очистка" формы перед выводом очередного вопроса
    procedure Itog;
    procedure FormCreate(Sender: TObject); // результат тестирования


  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form8: TForm8;     // форма

implementation
{$R *.DFM}
const
   N_LEV=4; // четыре уровня оценки
   N_ANS=4; // четыре варианта ответов

var
  f:TextFile;
  fn:string; // имя файла вопросов

  level:array[1..N_LEV] of integer; // сумма, соответствующая уровню
  mes:array[1..N_LEV] of string;    // сообщение, соответствующее уровню

  score:array[1..N_ANS] of integer; // оценка за выбор ответа
  summa:integer;  // набрано очков
  vopros:integer; // номер текущего вопроса
  otv:integer;    // номер выбранного ответа

// вывод информации о тесте
procedure TForm8.Info;
var
   s,buf:string;
begin
   readln(f,s);
   Form8.Caption := s;
   buf:='';
   repeat
         readln(f,s);
         if s[1] <> '.'
            then buf := buf +s + #13;
   until s[1] ='.';
   Label5.caption:=buf;
end;

// прочитать информацию об оценках за тест
Procedure GetLevel;
var
   i:integer;
   buf:string;
begin
     i:=1;
     repeat
         readln(f,buf);
         if buf[1] <> '.' then begin
            mes[i]:=buf;        // сообщение
            readln(f,level[i]); // оценка
            i:=i+1;
         end;
     until buf[1]='.';
end;

// масштабирование иллюстрации
Procedure TForm8.ShowPicture;
var
  w,h: integer; // максимально возможные размеры картинки
begin
  // вычислить допустимые размеры картинки
  w:=ClientWidth-10;
  h:=ClientHeight
         - Panel1.Height -10
         - Label5.Top
         - Label5.Height - 10;

  // вопросы
  if Label1.Caption <> ''
     then h:=h-Label1.Height-10;
  if Label2.Caption <> ''
     then h:=h-Label2.Height-10;
  if Label3.Caption <> ''
     then h:=h-Label3.Height-10;
  if Label4.Caption <> ''
     then h:=h-Label4.Height-10;

  // если размер картинки меньше w на h,
  // то она не масштабируется
  Image1.Top:=Form8.Label5.Top+Label5.Height+10;
  if Image1.Picture.Bitmap.Height > h
        then Image1.Height:=h
        else Image1.Height:= Image1.Picture.Height;
  if Image1.Picture.Bitmap.Width > w
        then Image1.Width:=w
        else Image1.Width:=Image1.Picture.Width;

  Image1.Visible := True;
end;
ДениC вне форума Ответить с цитированием
Старый 31.03.2011, 14:00   #10
ДениC
Пользователь
 
Регистрация: 29.03.2011
Сообщений: 41
По умолчанию

Код:
// вывести вопрос
Procedure TForm8.VoprosToScr;
  var
   i:integer;
   s,buf:string;
   ifn:string; // файл иллюстрации
  begin
     vopros:=vopros+1;
     caption:='Вопрос ' + IntToStr(vopros);
     // прочитать вопрос
     buf:='';
     repeat
           readln(f,s);
           if (s[1] <> '.') and (s[1] <> '\')
              then buf:=buf+s+' ';
     until (s[1] ='.') or (s[1] ='\');
     Label5.caption:=buf;  // вывести вопрос

     { Иллюстрацию прочитаем, но выведем только после
       того, как прочитаем альтернативные ответы
       и определим максимально возможный размер
       области формы, который можно использовать
       для ее вывода.}
     if s[1] <> '\'
       then Image1.Tag:=0 // к вопросу нет иллюстрации
       else // к вопросу есть иллюстрация
        begin
          Image1.Tag:=1;
          ifn:=copy(s,2,length(s));
          try
            Image1.Picture.LoadFromFile(ifn);
            except
              on E:EFOpenError do
                 Image1.Tag:=0;
          end;
        end;

     // Читаем варианты ответов
     i:=1;
     repeat
        buf:='';
        repeat // читаем текст варианта ответа
          readln(f,s);
          if (s[1]<>'.') and (s[1] <> ',')
                then buf:=buf+s+' ';
        until (s[1]=',')or(s[1]='.');
        // прочитан альтернативный ответ
        score[i]:= StrToInt(s[2]);
        case i of
            1: Label1.caption:=buf;
            2: Label2.caption:=buf;
            3: Label3.caption:=buf;
            4: Label4.caption:=buf;
        end;
        i:=i+1;
     until s[1]='.';
     // здесь прочитана иллюстрация и альтернативные ответы

     // текст вопроса уже выведен
     if Image1.Tag =1  // есть иллюстрация к вопросу
        then ShowPicture;

     // вывод альтернативных ответов
     if Form8.Label1.Caption <> ''
     then begin
        if Form8.Image1.Tag =1
            then Label1.top:=Image1.Top+Image1.Height+10
            else Label1.top:=Label5.Top+Label5.Height+10;
        RadioButton1.top:=Label1.top;
        Label1.visible:=TRUE;
        RadioButton1.visible:=TRUE;
     end;

     if Form8.Label2.Caption <> ''
     then begin
        Label2.top:=Label1.top+ Label1.height+10;
        RadioButton2.top:=Label2.top;
        Label2.visible:=TRUE;
        RadioButton2.visible:=TRUE;
     end;

     if Form8.Label3.Caption <> ''
     then begin
        Label3.top:=Label2.top+ Label2.height+10;
        RadioButton3.top:=Label3.top;
        Label3.visible:=TRUE;
        RadioButton3.visible:=TRUE;
     end;

     if Form8.Label4.Caption <> ''
     then begin
        Label4.top:=Label3.top+ Label3.height+10;
        RadioButton4.top:=Label4.top;
        Label4.visible:=TRUE;
        RadioButton4.visible:=TRUE;
     end;
  end;
ДениC вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа в командной строке genrix Общие вопросы C/C++ 6 24.02.2011 17:19
Кракозябры в командной строке Syltan Общие вопросы по Java, Java SE, Kotlin 5 22.05.2010 14:08
Как указать в командной строке запуска программы имя файла xmaksimca Общие вопросы Delphi 2 27.12.2009 20:43
программа в командной строке Кристина13 Помощь студентам 0 11.06.2009 17:42
Обращение к командной строке yura_$198802 Общие вопросы Delphi 15 09.04.2009 03:37