![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Здравствуйте.
В общем в программировании я полный ноль,а курсовую сдавать все-таки надо-нашел программу,почти идеально мне подходящую,программу,записывающую в memo данные,вводимые с клавиатуры в ячейки массива записей,и все было бы хорошо-но мне нужна как бы база данных,так вот,как сделать так,чтобы при нажатии на кнопку(которую я создам),вся информация,введенная в memo,сохранялась в текстовый файл,и как сделать так,чтобы потом,при нажатии на другую кнопку,информация оттуда считывалась и показывалась в том же memo? Помогите пожалуйста! Заранее спасибо. код: Код Delphi Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
const n=3;
type
ball=record { описание типа записи }
fizik,matem,progr: integer;
end;
zap=record
fio: string[10]; { поле фамилии студента }
fak: string[3]; { поле названия факультета }
oz: ball; { поле оценок }
sb:real; { поле среднего балла }
end;
ar=array[1..n] of zap; { массив записей }
type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Label3: TLabel;
ComboBox1: TComboBox;
Edit2: TEdit;
Label4: TLabel;
Edit3: TEdit;
Label5: TLabel;
Edit4: TEdit;
Memo1: TMemo;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
procedure FormActivate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
i:byte;
mas:ar;
x:zap;
implementation
{$R *.DFM}
procedure TForm1.FormActivate(Sender: TObject);
begin
Edit1.SetFocus;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
{ Для ввода массива записей - используем составные имена }
Edit1.Setfocus;
mas[i].fio:=Edit1.Text;
mas[i].fak:=ComboBox1.Text;
mas[i].oz.fizik:=StrToInt(Edit2.Text);
mas[i].Oz.matem:=StrToInt(Edit3.Text);
mas[i].Oz.progr:=StrToInt(Edit4.Text);
Memo1.Lines.Add(mas[i].fio+' '+mas[i].fak+' '+IntToStr(mas[i].oz.fizik)
+' '+' '+IntToStr(mas[i].oz.matem)+' '+IntToStr(mas[i].oz.progr));
inc(i);
if i>n then begin
Button1.Enabled:=False;
exit;
end
else begin
Edit1.clear;
ComboBox1.text:='';
Edit2.clear;
Edit3.clear;
Edit4.clear;
Edit1.Setfocus;
end;
{ Вывод массива записей в Memo1 }
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Memo1.Clear;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
i,j:integer;
begin
If RadioButton1.Checked=True Then
Begin
{ Вычисление среднего балла, используем оператор присоединения WITH }
Memo1.Lines.Add('Ср. балл каждого');
for i:=1 to n do
with mas[i] do
Begin
sb:=(oz.fizik+oz.matem + oz.progr)/3;
Memo1.Lines.Add(fio+' '+FloatToStr(sb));
end;
end;
If RadioButton2.Checked=True Then
Begin
{ Сортировка массива записей }
for i:=1 to n-1 do
for j:=i downto 1 do
if mas[j].sb>mas[j+1].sb
then begin
x:=mas[j];
mas[j]:=mas[j+1];
mas[j+1]:=x;
end;
{ Вывод отсортированного массива }
Memo1.Lines.Add('сорт. по ср.баллу');
for i:=1 to n do
with mas[i] do
begin
Memo1.Lines.Add(mas[i].fio+' '+IntToStr(mas[i].oz.fizik)+' '+
IntToStr(mas[i].oz.matem)+' '+
IntToStr(mas[i].oz.progr)+' '+FloatToStr(mas[i].sb));
end;
end;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
close
end;
end. |
|
#2
|
|||
|
|||
|
простой способ это сохранять массив в файл при помощи tfilestream
пример с сохронением и загрузкой одного массива. Код:
//// запись
type
Tusers = record;
Name : string[20];
Ball : integer;
end;
/// вставляем в private
private
procedure CreateUser
....
var
users : Tusers;
....
/// процедура создания записи user'a
procedure Form1.CreateUser;
begin
users.name := 'Vasya Pupkin';
users.ball := 2;
end;
// процедура сохранения массива в файл
procedure SaveData;
var
fs: TFileStream;
begin
fs:=TFileSteam.Create('c:\data.dbs',fmCreate);
fs.write(users, SizeOf(users));
fs.free;
end;
/// чтение данных из массива
procedure LoadData;
var
fs: TFileStream;
begin
fs:=TFileSteam.Create('c:\data.dbs',fmOpenRead);
fs.read(users, SizeOf(users));
fs.free;
Form1.Memo1.Lines.Add('Имя:'+users.name+' балл: '+IntToStr(users.Ball));
end;в общем код написан на скорую руку не проверял, но должен работать |
|
#3
|
||||
|
||||
|
Цитата:
Код:
Procedure TForm1.Button1Click(Sender: TObject); //Сохранение
Begin
Memo1.Lines.SaveToFile('Путь.txt');
End;
Procedure TForm1.Button2Click(Sender: TObject); //Загрузка
Begin
Memo1.Lines.LoadFromFile('Путь.txt');
End; |
|
#4
|
|||
|
|||
|
Огромное спасибо,вы спасли мою курсовую!
А насчет времени подготовки-задание выдали только в марте,а мне,как обычно у всех студентов,казалось,что времени еще-вагон и маленькая тележка. |
|
#5
|
|||
|
|||
|
Нет,пока не спасли.Теперь не работает процедура высчитывания среднего балла.В чем может быть проблема?
|
|
#6
|
||||
|
||||
|
потому, что сохраняется текст из мемо, а средний балл просчитывается из массива записей типа zap, сохранять нужно именно его (массив), а не данные в мемо, пример сохранения и чтения в/из файла дан выше
|