Передать Stringgrid в функцию

Тема в разделе "Delphi - Система", создана пользователем -, 14 янв 2009.

  1. Гость

    Выполняю похожие операции с двумя стрингридами находящимися на форме...пытаюсь вывести эти операции в процедуру(принадлежащую форме) и передать туда stringgrid через массив
    StrGid: Array[1..1] of TStringGrid;
    Запихиваю туда stringgrid
    StrGid[1]:=StringGrid1;

    передаю

    потом в процедуре пытаюсь присвоить значение

    StrGid[1].Cells[(R - 1),(K - 1)] := RangeMatrix[K,R];

    выдает ошибку
    Acces Violation
     

    Вложения:

    • ______.jpg
      ______.jpg
      Размер файла:
      33 КБ
      Просмотров:
      32
  2. etc

    etc Гость

    Мало кода.

    Acces Violation говорит об том, что идет обращение к чемуто чего нет. Вот и смотрите в дебагере чего у вас нет. Или уже убили, но не почистили за собой.
    А по тем лоскуткам что вы показали - ничего сказать нелььзя.

    Да и в ошибке содержиться ее место-возбуждения. где код этого места?
     
  3. BurcevD

    BurcevD Гость

    А зачем через массив, просто передай его как параметр, т.е.
    procedure ... (STrGrd:TStringGrid);
    и работай с ним
    Кстати, ошибку он тебе дает из-та того, что это хоть и массив, но массив объектов, которые нужно создавать, соответственно создай внчалае его через Create
    StrGrd[1]:=TStringGrid.Create(self);
     
  4. etc

    etc Гость

    BurcevD На сколько можно понять - стринггриды (их несколько) лежат на форме, и массив потому что автор хочеет обрабатывать их сразу, а не последовательно.


    А вот чего там Acces Violation автор пока скрывает, наверное это супер секретная тайна, если так, то и мне ее знать нехочецца, а то заметут в поровозе, а у меня еще куча работы несделанной. :D
     
  5. Poseidon

    Poseidon Гость

    Ты уверен что у тебя получится "впихнуть" статический массив в процедуру? Что-то сомневаюсь. Скорее всего ты используешь динамический и забываешь его создать. Вот и получаешь AV.

    Код (Text):
    procedure BlaBla(StrGid: array of TStringGrid);
    begin
    StrGid[0].Cells[1,1]:= 'бла-бла';
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    var
    StrGid: array of TStringGrid;
    begin
    SetLength(StrGid,1);
    StrGid[0]:= StringGrid1;
    BlaBla(StrGid);
    end;
     
  6. etc

    etc Гость

    Poseidon Судя по дате вопроса, то автору скорее всего это уже не надо, т.к. он отказался от массивов, гридов, да и от программирования ваще.
    И пошел в начальники, а там эти гриды массивов и массивы гридов до лампочки. :wacko:
     
  7. Poseidon

    Poseidon Гость

    Месяц - это не срок. Бывало и подольше ищешь решение :(
     
Загрузка...

Поделиться этой страницей