Заполнение экземпляров класса

snake750

Доброго времени суток. Помогите пожалуйста разобраться. Имеется вот что: Описываем класс Студ в котором содержатся имена студентов и оценки по дисциплинам :Программирование, Математика, Черчение, Русский и Суммарный бал по дисциплинам.
type  
TStud = Record 
   Name:string[20]; 
   Progr:real;  
   Mathem:real; 
   Cherchen:real;  
   Russian:real; 
   SummPoDisc:real;  
end;
Создаю экземпляры класса
var  a:array[1..5] of TStud;
Написал процедуру которая заполняет данные экземпляров класса TStud из StringGrid1.
Procedure ReadInfoFromUser(x:TStud;                   i,j:integer);
begin
        x.Name:=(form1.stringgrid1.Cells              [i,j]);
        x.Progr:=strtofloat(form1.stringgrid1.Cells   [i+1,i+1]);
        x.Mathem:=strtofloat(form1.stringgrid1.Cells  [i+2,j]);
        x.Cherchen:=strtofloat(form1.stringgrid1.Cells[i+3,j]);
        x.Russian:=strtofloat(form1.stringgrid1.Cells [i+4,j]);
        x.SummPoDisc:=0;
        x.SummPoDisc:= ( x.Progr+ x.Mathem + x.Cherchen+ x.Russian);
        form1.Stringgrid1.Cells                       [5,j]:=floattostr( x.SummPoDisc);
end;
Вызываю процедуру:
For i:=1 to 5 do    
begin
  ReadInfoFromUser(a[i],0,i);
end;
И вот тут почему то не заполняются значения экземпляров класса, но значение SummPoDisc считается и заполняется в StringGrid. Прилагается исходник для удобства видения.
7 ответов

snake750

У меня все заполняется... Попробуй путь к файлу написать так
extractfilepath(Application.ExeName)+ 'Output1.txt'
Вот скрин...


snake750

дело то вот в чем.Из файла информация считывается, стринггрид заполняется, сумма по дисциплинам считается.А вот параметры .name, .Progr и т.д не заполняются. и обратиться к ним нельзя, так как они пусты.Попробуйте вывести информацию об студентах(имя,сумма по дисциплинам)


snake750

Напиши так
Procedure ReadInfoFromUser(var x:TStud; i,j:integer);


snake750

TStud это не класс это структура.


snake750

record - это структура по C, а по дельфийски скорее запись, но точно не класс...Хотя что то общее с классом есть...


snake750

Вроде помогло, NIch, СпасибоNIch, я просто не знаю какие отличия есть у классов от записей.просто запомнилось что обращение через точку это класс и все


snake750

Запись это фактически тот же класс, но запись может содержать только переменные, в классах же такие понятия как методы и свойства...т.е. процедуры и переменные...экземпляр класса это объект...если класс это type то объект это var...