![]() |
|
|
Регистрация | << Правила форума >> | 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
|
|||
|
|||
![]() Спасибо.
Цитата:
ну тогда я написал в таком стиле. Вроде как работает) |