![]() |
|
|
Регистрация | << Правила форума >> | 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; Google в помощь |
#4
|
|||
|
|||
![]() Огромное спасибо,вы спасли мою курсовую!
А насчет времени подготовки-задание выдали только в марте,а мне,как обычно у всех студентов,казалось,что времени еще-вагон и маленькая тележка. |
#5
|
|||
|
|||
![]() Нет,пока не спасли.Теперь не работает процедура высчитывания среднего балла.В чем может быть проблема?
|
#6
|
||||
|
||||
![]() потому, что сохраняется текст из мемо, а средний балл просчитывается из массива записей типа zap, сохранять нужно именно его (массив), а не данные в мемо, пример сохранения и чтения в/из файла дан выше
Понять, что хочет заказчик - бесценно, ведь он платит MasterCard ![]() |