Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.05.2012, 14:09
Architect Architect вне форума
Прохожий
 
Регистрация: 22.05.2012
Сообщения: 3
Репутация: 10
По умолчанию Помогите с записью в файл и считыванием данных из файла

Здравствуйте.
В общем в программировании я полный ноль,а курсовую сдавать все-таки надо-нашел программу,почти идеально мне подходящую,программу,записывающую в 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  
Старый 22.05.2012, 14:32
wendstor wendstor вне форума
Прохожий
 
Регистрация: 13.10.2010
Сообщения: 30
Репутация: 11
По умолчанию

простой способ это сохранять массив в файл при помощи 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  
Старый 22.05.2012, 14:32
Аватар для Ildar-tsr
Ildar-tsr Ildar-tsr вне форума
Местный
 
Регистрация: 09.08.2011
Адрес: г.Сургут, ХМАО
Сообщения: 453
Репутация: 7402
По умолчанию

Цитата:
Сообщение от Architect
как сделать так,чтобы при нажатии на кнопку(которую я создам),вся информация,введенная в memo,сохранялась в текстовый файл,и как сделать так,чтобы потом,при нажатии на другую кнопку,информация оттуда считывалась и показывалась в том же memo?
Эта тема уже раз наверно триста миллионов пятьсот двадцать три тысячи триста сорок восемь раз обсуждалась на форуме, но чтоб ты ни себе, ни людям (особенно людям), мозги не выносил вот:
Код:
Procedure TForm1.Button1Click(Sender: TObject); //Сохранение
Begin
Memo1.Lines.SaveToFile('Путь.txt');
End;
Procedure TForm1.Button2Click(Sender: TObject); //Загрузка
Begin
Memo1.Lines.LoadFromFile('Путь.txt');
End;
P.S. А еще есть вещь, которую я не могу понять, и наверно уже никогда не пойму. Как так выходило, что мои курсовые/дипломная были готовы и "вылизаны" уже в марте-апреле? Вроде и ботаном никогда не был...
__________________
Google в помощь
Ответить с цитированием
  #4  
Старый 22.05.2012, 14:49
Architect Architect вне форума
Прохожий
 
Регистрация: 22.05.2012
Сообщения: 3
Репутация: 10
По умолчанию

Огромное спасибо,вы спасли мою курсовую!
А насчет времени подготовки-задание выдали только в марте,а мне,как обычно у всех студентов,казалось,что времени еще-вагон и маленькая тележка.
Ответить с цитированием
  #5  
Старый 22.05.2012, 14:52
Architect Architect вне форума
Прохожий
 
Регистрация: 22.05.2012
Сообщения: 3
Репутация: 10
По умолчанию

Нет,пока не спасли.Теперь не работает процедура высчитывания среднего балла.В чем может быть проблема?
Ответить с цитированием
  #6  
Старый 22.05.2012, 23:19
Аватар для cotseec
cotseec cotseec вне форума
Активный
 
Регистрация: 16.07.2008
Сообщения: 353
Версия Delphi: D7,TDE06,RAD09
Репутация: 1443
По умолчанию

потому, что сохраняется текст из мемо, а средний балл просчитывается из массива записей типа zap, сохранять нужно именно его (массив), а не данные в мемо, пример сохранения и чтения в/из файла дан выше
__________________
Понять, что хочет заказчик - бесценно, ведь он платит MasterCard
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:24.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025