Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/16: Рейтинг темы: голосов - 16, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 08.09.2011
Сообщений: 22
1

Запись результата с Memo в файл.

14.09.2011, 13:35. Показов 2949. Ответов 8
Метки нет (Все метки)

Есть программа. При начале ее работы нужно через InputBox ввести имя игрока. после завершения ее работы данные должны быть записаны в файл в таком формате:
Имя Попыток Время Баллы.
Сохранение я сделал но не так как надо. У меня считывает все что в Memo и записывает в файл. Посмотрите и поясните как должно быть.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;
 
type
  TForm1 = class(TForm)
    btGo: TButton;
    BtOtvet: TButton;
    btSnova: TButton;
    Edit1: TEdit;
    Memo1: TMemo;
    Label1: TLabel;
    Button1: TButton;
    Timer1: TTimer;
 
    procedure FormCreate(Sender: TObject);
    procedure btGoClick(Sender: TObject);
    procedure BtOtvetClick(Sender: TObject);
    procedure btSnovaClick(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 var
   ball,tr,val,kolvo:Integer;
 kon,beg,deff,tmr:TDateTime;
 
{$R *.dfm}
 
 
 
procedure TForm1.btGoClick(Sender: TObject);
begin
  InputBox('Игрок','Введите имя игрока:', '');
tr:=Random(99)+1;
ball:=100;
BtOtvet.Visible:=True;
btSnova.Visible:=True;
btGo.Visible:=False;
kolvo:=0;
Memo1.Lines.Add('Угадывайте:)');
beg:=time;
tmr:=0;
timer1.Enabled:=True;
end;
 
procedure TForm1.BtOtvetClick(Sender: TObject);
begin
val:=strtoint(Edit1.Text);
inc(kolvo);
if(val=Tr) then begin
  kon:=Time;
  deff:=kon-beg;
  Memo1.lines.add('Поздравляю! Вы угадали');
  Memo1.lines.add('Это число'+inttostr(tr)+'!');
  Memo1.lines.add('Ваш бал: '+inttostr(ball));
  Memo1.lines.add('Кол-во попыток: '+inttostr(kolvo));
  Memo1.lines.add('Ушло времени: '+timetostr(deff));
end;
 if(Val>Tr) then begin
   ball:= ball-5;
   Memo1.Lines.Add('Это число меньше..');
 end;
 if (Val<Tr) then begin
   ball:=ball-5;
   Memo1.Lines.Add('Это число больше..');
 end;
 end;
procedure TForm1.btSnovaClick(Sender: TObject);
begin
Memo1.Clear;
Memo1.Lines.Add('Нажмите "Поехали" для начала игры.');
BtOtvet.Visible:=False;
btSnova.Visible:=False;
btGo.Visible:=True;
Timer1.Enabled:=False;
end;
 procedure TForm1.FormCreate(Sender:TObject);
 begin
   Randomize;
   Timer1.Enabled:=False;
 end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
tmr:=time-beg;
Label1.Caption:=TimeToStr(tmr);
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
Close;
end;
 
 
procedure TForm1.Button2Click(Sender: TObject);
begin
Memo1.Lines.SaveToFile(ExtractFilePath(ParamStr(0)) + 'rezalt.txt');
end;
 
end.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.09.2011, 13:35
Ответы с готовыми решениями:

Запись результата тестирования в файл
const TestName='Test_'; // имя файла теста max=1000; // максимальное количесво вопросов var...

Memo, запись в файл определенных строк
В мемо выводятся результаты типа: 1223ds23564 --&gt;верно lo8888885 --&gt;не верно...

Ввод вещественных чисел через Memo. Запись в файл
В данной процедуре создается файл. Пользователь вводит последовательность вещественных чисел в...

в memo выводятся нули вместо результата
Добрый день!в delphi новичок,не подскажите,почему в Memo вместо результата выводятся одни...

8
Модератор
64059 / 47474 / 32728
Регистрация: 18.05.2008
Сообщений: 115,185
14.09.2011, 13:56 2
Заведи массив записей с 4 полями, заноси туда результаты, а потом перепиши массив построчно в файл.
0
0 / 0 / 0
Регистрация: 08.09.2011
Сообщений: 22
14.09.2011, 14:12  [ТС] 3
Если можно напишите где можно почитать об этом. Буду признателен
0
47 / 47 / 5
Регистрация: 02.03.2010
Сообщений: 119
14.09.2011, 14:21 4
я бы так сделал))

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
var
    name, fil: string;    
    f: TextFile;
begin
    fil:= 'c:\text.txt';
    AssignFile(f, 'c:\text.txt');
    if not FileExists(fil) then
    Rewrite(f)
    else
    Append(f);
    name:= InputBox('Игрок','Введите имя игрока:', '');
    WriteLn(f,' ',name,' ',kolvo,' ',deff,' ',ball);
    CloseFile(f);
0
Модератор
64059 / 47474 / 32728
Регистрация: 18.05.2008
Сообщений: 115,185
14.09.2011, 14:32 5
Объявляете тип
Delphi
1
2
3
4
5
6
type igrok=record
               name:string[20;
               ppt:intege;
               time:string[20];
               bal:integer;
               end;
массив
Delphi
1
var a:array of igrok;
При выводе данных в Мемо одновременно заполняете массив
Delphi
1
2
3
4
5
6
7
n:=0;//начальный размер
n:=n+1;
Setlength(a,n);
a[n-1].name:=где у Вас имя
a[n-1].ppt:=kolvo;               
a[n-1].time:=timetostr(deff);
a[n-1].bal:=ball;
затем пишете ф файл
Delphi
1
2
for i:=0 to n-1 do
writeln(f,a[i].name,' ',a[i].ppt,' ',a[i].time.' ',a[i].bal);
Добавлено через 1 минуту
А можно и как у sharky123, смотря как организовать программу.

Добавлено через 5 минут
Массив удобен тогда, когда нужно вывести результаты в файл в отсортированном виде, например по убыванию количества баллов.
0
0 / 0 / 0
Регистрация: 08.09.2011
Сообщений: 22
14.09.2011, 15:15  [ТС] 6
Спасибо -) Сейчас буду думать как это применить к программе. Пока что ошибки -)
Запутано для меня немного. У меня каждая кнопка делает отдельное действие, а здесь не так) Ну буду разбираться

Добавлено через 8 минут
С массивом не разобрался пока. По примеру Шарки делаю так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;
 
type
  TForm1 = class(TForm)
    btGo: TButton;
    BtOtvet: TButton;
    btSnova: TButton;
    Edit1: TEdit;
    Memo1: TMemo;
    Label1: TLabel;
    Button1: TButton;
    Timer1: TTimer;
 
    procedure FormCreate(Sender: TObject);
    procedure btGoClick(Sender: TObject);
    procedure BtOtvetClick(Sender: TObject);
    procedure btSnovaClick(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Button1Click(Sender: TObject);
       private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 var
   ball,tr,val,kolvo:Integer;
 kon,beg,deff,tmr:TDateTime;
 
{$R *.dfm}
 
 
 
procedure TForm1.btGoClick(Sender: TObject);
 
  var
    name, fil: string;    
    f: TextFile;
begin
    fil:= 'c:\1.txt';
    AssignFile(f, 'c:\1.txt');
    if not FileExists(fil) then
    Rewrite(f)
    else
    Append(f);
    name:= InputBox('Игрок','Введите имя игрока:', '');
    WriteLn(f,' ',name,' ',kolvo,' ',deff,' ',ball);
    CloseFile(f);
tr:=Random(99)+1;
ball:=100;
BtOtvet.Visible:=True;
btSnova.Visible:=True;
btGo.Visible:=False;
kolvo:=0;
Memo1.Lines.Add('Угадывайте:)');
beg:=time;
tmr:=0;
timer1.Enabled:=True;
end;
 
procedure TForm1.BtOtvetClick(Sender: TObject);
begin
val:=strtoint(Edit1.Text);
inc(kolvo);
if(val=Tr) then begin
  kon:=Time;
  deff:=kon-beg;
  Memo1.lines.add('Поздравляю! Вы угадали');
  Memo1.lines.add('Это число'+inttostr(tr)+'!');
  Memo1.lines.add('Ваш бал: '+inttostr(ball));
  Memo1.lines.add('Кол-во попыток: '+inttostr(kolvo));
  Memo1.lines.add('Ушло времени: '+timetostr(deff));
end;
 if(Val>Tr) then begin
   ball:= ball-5;
   Memo1.Lines.Add('Это число меньше..');
 end;
 if (Val<Tr) then begin
   ball:=ball-5;
   Memo1.Lines.Add('Это число больше..');
 end;
 end;
procedure TForm1.btSnovaClick(Sender: TObject);
begin
Memo1.Clear;
Memo1.Lines.Add('Нажмите "Поехали" для начала игры.');
BtOtvet.Visible:=False;
btSnova.Visible:=False;
btGo.Visible:=True;
Timer1.Enabled:=False;
end;
 procedure TForm1.FormCreate(Sender:TObject);
 begin
   Randomize;
   Timer1.Enabled:=False;
 end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
tmr:=time-beg;
Label1.Caption:=TimeToStr(tmr);
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
Close;
end;
 
 
 
end.
Я правильно понял как организовать ? Записывает в файл но в внутри пишет вот такое

йцук 0 0.00000000000000E+0000 0
0
Модератор
64059 / 47474 / 32728
Регистрация: 18.05.2008
Сообщений: 115,185
14.09.2011, 15:33 7
Откуда у тебя вещественные числа? Вроде нет ни одной переменной этого типа...
0
0 / 0 / 0
Регистрация: 08.09.2011
Сообщений: 22
14.09.2011, 15:40  [ТС] 8
Я их ввожу в Edit что бы угадать число.
Если интересно вот сам проект.
0
Вложения
Тип файла: rar Projects.rar (170.6 Кб, 30 просмотров)
47 / 47 / 5
Регистрация: 02.03.2010
Сообщений: 119
14.09.2011, 15:43 9
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;
 
type
  TForm1 = class(TForm)
    btGo: TButton;
    BtOtvet: TButton;
    btSnova: TButton;
    Edit1: TEdit;
    Memo1: TMemo;
    Label1: TLabel;
    Button1: TButton;
    Timer1: TTimer;
 
    procedure FormCreate(Sender: TObject);
    procedure btGoClick(Sender: TObject);
    procedure BtOtvetClick(Sender: TObject);
    procedure btSnovaClick(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Button1Click(Sender: TObject);
       private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
   name: string; // Для  имени игрока
   fil: string; //путь лога
   f: TextFile; //файл лога
 
implementation
 var
   ball,tr,val,kolvo:Integer;
 kon,beg,deff,tmr:TDateTime;
 
{$R *.dfm}
 
 
 
procedure TForm1.btGoClick(Sender: TObject);
begin
    fil:= ExtractFilePath(ParamStr(0)) + 'rezult.txt'; //путь до лога
    AssignFile(f, fil);
    if not FileExists(fil) then //Если файла нет, то
    Rewrite(f) //создать его
    else
    Append(f); //иначе открыть на запись
name:= InputBox('Игрок','Введите имя игрока:', '');
tr:=Random(99)+1;
ball:=100;
BtOtvet.Visible:=True;
btSnova.Visible:=True;
btGo.Visible:=False;
kolvo:=0;
Memo1.Lines.Add('Угадывайте:)');
beg:=time;
tmr:=0;
timer1.Enabled:=True;
end;
 
procedure TForm1.BtOtvetClick(Sender: TObject);
begin
val:=strtoint(Edit1.Text);
inc(kolvo);
if(val=Tr) then begin
  kon:=Time;
  deff:=kon-beg;
  Memo1.lines.add('Поздравляю! Вы угадали');
  Memo1.lines.add('Это число'+inttostr(tr)+'!');
  Memo1.lines.add('Ваш бал: '+inttostr(ball));
  Memo1.lines.add('Кол-во попыток: '+inttostr(kolvo));
  Memo1.lines.add('Ушло времени: '+timetostr(deff));
  WriteLn(f,' ',name,' ',kolvo,' ',TimeToStr(deff),' ',ball); //Здесь записываем в файл
  CloseFile(f); //Закрываем файл
end;
 if(Val>Tr) then begin
   ball:= ball-5;
   Memo1.Lines.Add('Это число меньше..');
 end;
 if (Val<Tr) then begin
   ball:=ball-5;
   Memo1.Lines.Add('Это число больше..');
 end;
 end;
procedure TForm1.btSnovaClick(Sender: TObject);
begin
Memo1.Clear;
Memo1.Lines.Add('Нажмите "Поехали" для начала игры.');
BtOtvet.Visible:=False;
btSnova.Visible:=False;
btGo.Visible:=True;
Timer1.Enabled:=False;
end;
 procedure TForm1.FormCreate(Sender:TObject);
 begin
   Randomize;
   Timer1.Enabled:=False;
 end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
tmr:=time-beg;
Label1.Caption:=TimeToStr(tmr);
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
Close;
end;
 
 
 
end.
Попробуй вот так.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.09.2011, 15:43

Табулирование функции, вывод результата в Memo
Протабулировать функцию, результат вывести в поле Memo.

Автоматическое обновление результата вычислений в Memo
есть программа, которая считает сумму двух чисел(Edit1,Edit2) и выводит ее в Edit3. как сделать...

Умножение числа на edit и вывод результата в memo
Добрый день! Помогите с кодом, как сделать чтоб по нажатию кнопки считвалась информация с edit...

Вывод результата работы нескольких потоков в Memo - выводится данные только последнего
Всем привет. По нажатию кнопки я создаю определенное количество потоков. mythread :=...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.