![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Сложилась такая ситуация что надо решить одну задачку, а знаний нет. Прошу вас помочь, хотя бы в правильном направлении подтолкнуть. Скажу сразу, языков программирования не знаю, но могу, почитать и вникнуть, только скажите что именно нужно для решения моей задачи.
Итак, есть два текстовых файла. Первый текстовый файл это вопросы из теста. В первой строке номер вопроса, во второй сам вопрос. В следующих четырех, это варианты ответа. И с седьмой строки далее, повторяется. Во втором файле, мы имеем ключи к правильным ответам. Из этих двух файлов, нужно получить третий текстовый файл в GIFFT формате, далее который будет, импортирован в Moodle. Все три файла для примера я выложил. Спасибо за внимание. Последний раз редактировалось serge((, 20.11.2010 в 11:31. |
|
#2
|
|||
|
|||
|
Актуально)) Хелп
|
|
#3
|
||||
|
||||
|
Ну вот, специально сел за Дельфи чтоб помочь человеку... так как мне самому уже несколько дней не отвечают
![]() Сильно не пинайте, написано за 5 минут Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
ListBox1: TListBox;
ListBox2: TListBox;
ListBox3: TListBox;
ListBox4: TListBox;
Label1: TLabel;
procedure FormShow(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormShow(Sender: TObject);
begin
ListBox1.Items.LoadFromFile('test.txt');
ListBox2.Items.LoadFromFile('otvet.txt');
ListBox3.Items.LoadFromFile('rezultat.txt');
end;
procedure TForm1.Button1Click(Sender: TObject);
var t,r,v,d:integer; a:string;
begin
r:=1;d:=1;
for t:=0 to ListBox1.Items.Count-1 do begin
ListBox4.Items.Add('// Начало вопроса: ВопрМножВыбор');
ListBox4.Items.Add(ListBox1.Items.Strings[r]+' {');
a:=Copy(ListBox2.Items.Strings[d],3,1);
label1.Caption:=Label1.Caption+a;
v:=strToInt(a);
if v=1 then begin
ListBox4.Items.Add('='+ListBox1.Items.Strings[r+1]);
ListBox4.Items.Add('~'+ListBox1.Items.Strings[r+2]);
ListBox4.Items.Add('~'+ListBox1.Items.Strings[r+3]);
ListBox4.Items.Add('~'+ListBox1.Items.Strings[r+4]); end;
if v=2 then begin
ListBox4.Items.Add('~'+ListBox1.Items.Strings[r+1]);
ListBox4.Items.Add('='+ListBox1.Items.Strings[r+2]);
ListBox4.Items.Add('~'+ListBox1.Items.Strings[r+3]);
ListBox4.Items.Add('~'+ListBox1.Items.Strings[r+4]); end;
if v=3 then begin
ListBox4.Items.Add('~'+ListBox1.Items.Strings[r+1]);
ListBox4.Items.Add('~'+ListBox1.Items.Strings[r+2]);
ListBox4.Items.Add('='+ListBox1.Items.Strings[r+3]);
ListBox4.Items.Add('~'+ListBox1.Items.Strings[r+4]); end;
if v=4 then begin
ListBox4.Items.Add('~'+ListBox1.Items.Strings[r+1]);
ListBox4.Items.Add('~'+ListBox1.Items.Strings[r+2]);
ListBox4.Items.Add('~'+ListBox1.Items.Strings[r+3]);
ListBox4.Items.Add('='+ListBox1.Items.Strings[r+4]); end;
ListBox4.Items.Add('}');
ListBox4.Items.Add('');
d:=d+1;
r:=r+6;
end;
end;
end. |
|
#4
|
||||
|
||||
|
Вот готовая прога + исходник. Только условие - формат файлов otvet.txt и test.txt не менять!
Сам писал игру типа "О счастливчик!", примерно таким методом сделал... могу поделится исходниками только там компонентов "левых" уйма использовано... |
|
#5
|
|||
|
|||
|
Большое человеческое спасибо, за то что откликнулись)) Только вопрос, как извлечь результат, так как Ctr+A и Ctrl+C, в окне результата не работает. или что можно, такое добавить, чтобы результат выводился сразу в текстовом формате? Потом еще проблема с большим объемом вопросов. Когда их было 26, то выводился результат 9-ти, а уменя есть списки из 140 вопросов
![]() |
|
#6
|
|||
|
|||
|
Запись добавил строкой ListBox4.Items.SaveToFile('rezultat.txt');. А вот что за ошибки, пока непонятно. Буду искать)
|
|
#7
|
|||
|
|||
|
Блин. Я дуб-дубом)) Читаю, и не могу понять. Что там неправильно.
Например что значит строки, Непонятны три r:=1;d:=1; for t:=0 to ListBox1.Items.Count-1 do begin ListBox4.Items.Add('// Начало вопроса: ВопрМножВыбор'); ListBox4.Items.Add(ListBox1.Items.Strings[r]+' {'); a:=Copy(ListBox2.Items.Strings[d],3,1); v:=strToInt(a); Если есть проблема при загрузке, двадцати вопросов, а их может быть и триста, то как мне написать так, чтобы ответ брался, из числа после точки в строке. Например 123.1 124.2 125.1 |
|
#8
|
||||
|
||||
|
Код:
a:=Copy(ListBox2.Items.Strings[d],3,1); Код:
a:=Copy(ListBox2.Items.Strings[d],4,1); Код:
if d<99 then a:=Copy(ListBox2.Items.Strings[d],3,1); if d>99 then a:=Copy(ListBox2.Items.Strings[d],4,1); Последний раз редактировалось deltas, 24.11.2010 в 01:18. |
|
#9
|
|||
|
|||
|
Спасибо.
Цитата:
ну тогда я написал в таком стиле. Вроде как работает) |