• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

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

  • Автор темы Guest
  • Дата начала
G

Guest

Выполняю похожие операции с двумя стрингридами находящимися на форме...пытаюсь вывести эти операции в процедуру(принадлежащую форме) и передать туда 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
    26,2 КБ · Просмотры: 212
E

etc

Мало кода.

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

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

BurcevD

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

etc

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


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

Poseidon

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

Код:
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;
 
E

etc

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

Poseidon

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!