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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.10.2011, 10:13
cyber922 cyber922 вне форума
Новичок
 
Регистрация: 07.10.2011
Сообщения: 77
Версия Delphi: Turbo Delphi 20
Репутация: 10
По умолчанию загрузка dat- содержимого в таблицу StringGrid

Во общем я сделал программку, которая из dat-файла, должна загружать данные в таблицу- StringGrid,
Но когда я нажимаю открыть\записать файл, она мне пишет ошибку : "is not a valid integer " или "I\O error 6" соответственно.
Не могу найти в чём причина.
Всё вроде сделал правильно,указал в окне расширений, какие она должна открывать\сохранять, поставил opendialog\savedialog на форму, и безрезультатно.


Вот задание:


Ввести в таблицу StringGrid данные комбинированного типа: порядковые № студентов по списку, их фамилии, экзаменационные оценки по трем предметам.
Задать число строк таблицы StringGrid.
По команде «Сохранить в файле» записать данные из таблицы StringGrid в файл, имя которого указать в поле редактирования.
По команде «Сброс таблицы» очистить таблицу от записей.
По команде «Загрузить из файла» прочитать в таблицу данные из файла комбинированного типа и подсчитать средний балл каждого студента, который занести в таблицу, указав формат.

Это я сделал.


Прилагаю вложения самой программы и вид моего приложения( может тоже чем то поможет)
Вложения
Тип файла: rar Новая папка (2).rar (215.4 Кбайт, 14 просмотров)
Тип файла: rar Вид формы.rar (17.0 Кбайт, 7 просмотров)
Ответить с цитированием
  #2  
Старый 29.10.2011, 21:29
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Смешной код, а теперь "прошагай" его (F8) и посмотри на результат, хотя бы, загрузки.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #3  
Старый 30.10.2011, 11:51
cyber922 cyber922 вне форума
Новичок
 
Регистрация: 07.10.2011
Сообщения: 77
Версия Delphi: Turbo Delphi 20
Репутация: 10
Восклицание

Код:
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Buttons, StdCtrls, Grids;

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Edit1: TEdit;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    Edit2: TEdit;
    BitBtn1: TBitBtn;
    Label1: TLabel;
    Edit3: TEdit;
    Button2: TButton;
    Label2: TLabel;
    procedure SpeedButton1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

 type 
zap= record
NZ : string[6]; {номер записи}
fam: s15; {фамилия студента}
ball:array [1..3] of integer;{массив оценок по трем предметам}
end;
var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
   with   StringGrid1    do begin
  Cells[0,0] := '№/№';
  Cells[1,0] := 'Фамилия';
  Cells[2,0] := 'Математика';
  Cells[3,0] := 'Физика';
  Cells[4,0] := 'Химия';
  Cells[5,0] := 'Средний балл';
  ColCount:=6;  FixedCols:=0;
   end;
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
Var I,j : Byte;
    F : File of Zap;
    S : zap;
begin
  AssignFile(F, Edit1.Text);
  Rewrite(F);
  StringGrid1.RowCount:=StrToInt(Edit3.text);  
  For I := 1 to StringGrid1.RowCount-1  do  with  StringGrid1 do
  Begin
     S.NZ  := Cells[0,I];
     S.fam := Cells[1,I];
     S.ball[1]:=StrToInt( Cells[2,I]);
     S.ball[2]:=StrToInt( Cells[3,I]);
     S.ball[3]:=StrToInt( Cells[4,I]);
    Write(F,S)
  end;
  CloseFile(F)
end;

procedure TForm1.SpeedButton2Click(Sender: TObject);
Var I : Byte;
    F : File of Zap;
    S : zap;  Sr:real;
begin
  AssignFile(F, Edit2.Text);
  Reset(F); i:=1;  seek(F,0);
  while not eof(F) do 
  Begin
  read(F,S);
  StringGrid1.Cells[0,I]:=S.NZ;
  StringGrid1.Cells[1,I]:=S.fam;
  StringGrid1.Cells[2,I]:=IntToStr(S.ball[1]);
  StringGrid1.Cells[3,I]:=IntToStr(S.ball[2]);
  StringGrid1.Cells[4,I]:=IntToStr(S.ball[3]);
  SR:=(S.ball[1]+S.ball[2]+S.ball[3])/3;
  StringGrid1.Cells[5,I]:=FloatToStrF(SR,ffFixed,4,1); 
  i:=i+1;
  end;
  CloseFile(F)
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Close;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
i:integer;
begin
   for i:=1  to   StringGrid1.RowCount do begin
  StringGrid1.Cells[0,I]:=' ';
  StringGrid1.Cells[1,I]:=' ';
  StringGrid1.Cells[2,I]:=' ';
  StringGrid1.Cells[3,I]:=' ';
  StringGrid1.Cells[4,I]:=' ';
  StringGrid1.Cells[5,I]:=' ';
  end;
end;
end. 


Странно, у меня (f8), тут не ругается не на что. всё пропускает..
Ещё такой момент, как пишется функция которая при нажатии распечатывает на принтере..?

Десять раз код пересмотрел, вроде ниче криминального...



p.s. где написанно в описании записи "st15" не обращайите внимания, это я исправлю потом...
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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