![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Access Violation
programmer90 © (2009-02-03 14:33:00)Здрасти.
Ищу слово в СтрингГриде
Выполяняю такой код:
function FindWord(str:string):integer;
var
stringGrid1:TStringGrid; i,j:integer; TreeView1:TTReeView;
begin
for j:=1 to SG1RC-1 do
if str=StringGrid1.Cells[1,j] then {в этой строке компилятор ругается, вроде оба стринги}
begin
result:=j;
break;
end;
end;
вызываю функцию так :
FindWord('my');
Компилятор задолбал уже с АCcess Violation...
programmer90 (2009-02-03 17:08:00) [1]
> Вам, молодой человек или в детский сад, или сюда:
лучше по ссылке..."хачу стать самоваром"
Спс.
Amoeba (2009-02-03 16:45:00) [2]
> programmer90 (03.02.09 16:37) [25]
>
>
> > Может тебе всё-таки начать с чтения книг, например, "Делфи
> > за 21 секунду для полных идиотов".
>
> Спасибо за добрые слова.
> "Делфи за 21 секунду для полных идиотов".
> Вы её наверно всю прочли)
Вам, молодой человек или в детский сад, или сюда:
http://www.delphikingdom.com/lyceum/
А пока не похоже, что учите основы. А если и учите, то учеба не впрок идет.
Anatoly Podgoretsky (2009-02-03 16:43:00) [3]> MsGuns (03.02.2009 16:16:18) [18]
Что бы хоть чуть-чуть подумал, а то очень много времени прогресс нулевой.
clickmaker (2009-02-03 16:43:00) [4]> [23] programmer90 (03.02.09 16:32)
по каким же это книжкам, что там нет таких элементарных вещей как "сделать его членом класса"?
я уж не говорю про раздел Method declarations and implementations Дельфового хелпа, который уж точно должен быть под рукой
programmer90 (2009-02-03 16:37:00) [5]
> Может тебе всё-таки начать с чтения книг, например, "Делфи
> за 21 секунду для полных идиотов".
Спасибо за добрые слова.
"Делфи за 21 секунду для полных идиотов".
Вы её наверно всю прочли)
Плохиш (2009-02-03 16:33:00) [6]
> programmer90 (03.02.09 16:24) [19]
> Если не объявлять перемнну в локальной функции, компилятор
> сообщяет об ошибке "необъявленной переменной".
Может тебе всё-таки начать с чтения книг, например, "Делфи за 21 секунду для полных идиотов".
programmer90 (2009-02-03 16:32:00) [7]
> потому что FindWord не является членом класса, в котором
> объявлена ссылка на стринггрид1блин, это же основы...
Ну да я и учу основы, так как сделать его членом класса?
programmer90 (2009-02-03 16:31:00) [8]
> StringGrid1.Cols[].IndexOf
Коротко, ясно, и главное в точку.
Спс.
clickmaker (2009-02-03 16:29:00) [9]> Если не объявлять перемнну в локальной функции, компилятор
> сообщяет об ошибке "необъявленной переменной".
потому что FindWord не является членом класса, в котором объявлена ссылка на стринггрид1
блин, это же основы...
programmer90 (2009-02-03 16:27:00) [10]
> Так устроит?for I := 0 to Sg1Rc-1 do if Pos('Amoeba', StringGrid1.
> Rows[I].Text) > 0 then Break;
Вполне :)
programmer90 (2009-02-03 16:24:00) [11]
> Anatoly Podgoretsky © (03.02.09 15:11) [12]
о пункте 2.
Если не объявлять перемнну в локальной функции, компилятор сообщяет об ошибке "необъявленной переменной".
> Sg1Rc это вторая ошибка.
и пока я не буду знать как это сделать для меня лучше будет лучше использовать переменную SG1RC ...
MsGuns (2009-02-03 16:16:00) [12]>Anatoly Podgoretsky © (03.02.09 15:34) [14]
>Да чего тут писать
>for i:=0 to StringGird1.RowCount do
Ошибка допущена умышленно ?
:)
Amoeba (2009-02-03 15:39:00) [13]Так устроит?
for I := 0 to Sg1Rc-1 do
if Pos('Amoeba', StringGrid1.Rows[I].Text) > 0 then
Break;
Anatoly Podgoretsky (2009-02-03 15:35:00) [14]> programmer90 (03.02.2009 15:22:13) [13]
Кстати и этот код тоже бессмысленный
MBo (2009-02-03 15:35:00) [15]StringGrid1.Cols[].IndexOf
Anatoly Podgoretsky (2009-02-03 15:34:00) [16]> programmer90 (03.02.2009 15:22:13) [13]
Да чего тут писать
for i:=0 to StringGird1.RowCount do
Sg1Rc это вторая ошибка.
Если ты сумел намудрить в двух таких простых строках, то о как коде, а тем ьрее суперкоде вообще говорить, рано тебе еще.
programmer90 (2009-02-03 15:22:00) [17]А можно узнать разницу между суперкодом и говнокодом?
Вот задача
Дан объект StingGrid1 типа TStringGrid , в нем 1-ый столбец заполнен данными типа String ,кол-во строк =SG1RC .
дано слово, ну для определенности положим str:='Amoeba'
Найти(строку) где это слово в СтрингГриде.
for i:=0 to Sg1Rc-1 do
if str=StringGird1.Cells[0,i] then break;
Не супер, кто напишет лучше?
Anatoly Podgoretsky (2009-02-03 15:11:00) [18]> programmer90 (03.02.2009 15:01:10) [10]
1) есть
2) не объявлять
Григорьев Антон (2009-02-03 15:11:00) [19]
> Как объявить StringGrid чтобы он в моих локальных функция
> был тот же самый?
Его не надо объявлять, надо правильно обращаться к тому, который уже есть. Например, если ваша форма называется Form1, то писать внутри своей функции Form1.StringGrid1. Но самое правильное - это сделать такую функцию методом класса, тогда все поля класса будут ей доступны.
Если функция должна работать с разными классами окон, и привязать её к одному из них нельзя, надо сделать у функции параметр типа StringGrid1 и указывать его при вызове, а внутри функции обращаться к параметру.
programmer90 (2009-02-03 15:01:00) [20]Два вопроса:
1)Есть ли функции сравнения стрингов... которая отвечает да или нет
> "Ах да, это правда: это точно Загоскина; а есть другой «Юрий
> Милославский», так тот уж мой" (С) Чичиков
2)Как объявить StringGrid чтобы он в моих локальных функция был тот же самый?