Помощь - Поиск - Пользователи - Календарь
Полная версия: RxMemoryData
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Delphi
kosyak
Доброе всем время суток!

Не могу разобратся, как динамически добавить поля в RxMemoryData. Делаю следующим образом:

Код

  mWorkHours.Close;
  for i: =1 to n do
    begin
      mWorkHours.FieldDefs.Add('d'+intToStr(i), ftString, 0, True);
    end;
  mWorkHours.Open;


Вылетает ошибка: access violation.
Что я делаю не так?

Заранее спасиба!
volvo
А чего бы не сделать так:
Var
field: TField;
...
mWorkHours.Close;
for i: =1 to n do
begin
field := TStringField.Create(nil);
field.FieldName := 'd' + IntToStr(i);
field.Size := 10; // Длина строки - ненулевая должна быть, правда?
field.DataSet:=mWorkHours;
end;
mWorkHours.Open;

(проверить, работает ли, не смогу, у меня RxLib не установлена, приведенное решение видел на одном из форумов, говорили, что работает).
kosyak
Что то все равно не хочет.... Привожу полный код:


Var i: integer;
field: TField;
begin
i:=1;
mWorkHours.Close;
DBGridEh1.DataSource := nil;
while date1 < date2 do
begin
field := TStringField.Create(nil);
field.FieldName := 'd' + IntToStr(i);
field.Size := 256;
field.DataSet:=mWorkHours;
date1 := IncDay(date1,1);
inc(i);
end;
mWorkHours.Open;
DBGridEh1.DataSource := dsWorkHours;
DBGridEh1.Columns.AddAllColumns(true);



Вылетает access violation
volvo
Установил RxLib под D2009 (версия, адаптированная psa1974) - твой код прекрасно отрабатывает, никаких вылетов. Единственное что я сделал - изменил DBGridEh1 на RxDBGrid1... Какой у тебя RXLib и какая версия Дельфи?
kosyak
Rx не помню какая... Delphi 7
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.