![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Во общем я сделал программку, которая из dat-файла, должна загружать данные в таблицу- StringGrid,
Но когда я нажимаю открыть\записать файл, она мне пишет ошибку : "is not a valid integer " или "I\O error 6" соответственно. Не могу найти в чём причина. Всё вроде сделал правильно,указал в окне расширений, какие она должна открывать\сохранять, поставил opendialog\savedialog на форму, и безрезультатно. Вот задание: Ввести в таблицу StringGrid данные комбинированного типа: порядковые № студентов по списку, их фамилии, экзаменационные оценки по трем предметам. Задать число строк таблицы StringGrid. По команде «Сохранить в файле» записать данные из таблицы StringGrid в файл, имя которого указать в поле редактирования. По команде «Сброс таблицы» очистить таблицу от записей. По команде «Загрузить из файла» прочитать в таблицу данные из файла комбинированного типа и подсчитать средний балл каждого студента, который занести в таблицу, указав формат. Это я сделал. Прилагаю вложения самой программы и вид моего приложения( может тоже чем то поможет) |
|
#2
|
||||
|
||||
|
Смешной код, а теперь "прошагай" его (F8) и посмотри на результат, хотя бы, загрузки.
|
|
#3
|
|||
|
|||
|
Код:
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" не обращайите внимания, это я исправлю потом... |