Форум: "Начинающим";
Текущий архив: 2009.03.29;
Скачать: [xml.tar.bz2];
ВнизAccess Violation Найти похожие ветки
← →
programmer90 (2009-02-03 14:33) [0]Здрасти.
Ищу слово в СтрингГриде
Выполяняю такой код: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...
← →
MBo © (2009-02-03 14:37) [1]а объект StringGrid1 создан и заполнен?
← →
Григорьев Антон © (2009-02-03 14:38) [2]А создавать StringGrid1 кто будет? Одного объявления переменной мало, надо ещё и конструктор вызвать.
А вообще, смысл кода непонятен. Зачем что-то искать в гриде, который только что создан и потому пустой по определению?
← →
programmer90 (2009-02-03 14:43) [3]onFormCreate StringGrid1 заполняется...
← →
Ega23 © (2009-02-03 14:47) [4]
> onFormCreate StringGrid1 заполняется...
Не думаю. У тебя явно объявлена переменная
var
stringGrid1:TStringGrid;
И этот stringGrid1 нигде не создаётся.
З.Ы. Код вообще непонятный. Что хотел, зачем??? Всё через какую-то ж. сделано...
← →
Amoeba © (2009-02-03 14:49) [5]
> programmer90 (03.02.09 14:43) [3]
>
> onFormCreate StringGrid1 заполняется...
В приведенном коде StringGrid1, к которому идет обращение, являеется локальной переменной, объявленной в представленной ф-ии. А StringGrid1, заполняемый в onFormCreate - это совсем другой StringGrid1.
← →
programmer90 (2009-02-03 14:51) [6]Согласен, через ж...
Дается слово найти его в СтрингГриде, опеределенном столбце...
Как называется фунцкия сравнения двух стрингов?
← →
Григорьев Антон © (2009-02-03 14:52) [7]
> programmer90 (03.02.09 14:43) [3]
> onFormCreate StringGrid1 заполняется...
Это другой StringGrid1, который является полем вашего класса формы. А в функции FindWord у вас объявлена локальная переменная StringGrid1, которая - совсем другая переменная, не имеющая к полю класса никакого отношения.
"Ах да, это правда: это точно Загоскина; а есть другой «Юрий Милославский», так тот уж мой" (С) Чичиков
← →
Amoeba © (2009-02-03 14:52) [8]Приведенный топикстартером код даже до говнокода не дотягивает. И глюкодромом назвать - все равно, что дать высокую оценку.
← →
Amoeba © (2009-02-03 14:58) [9]
> Григорьев Антон © (03.02.09 14:52) [7]
>
>
> > programmer90 (03.02.09 14:43) [3]
> > onFormCreate StringGrid1 заполняется...
>
> Это другой StringGrid1, который является полем вашего класса
> формы.
Если это так, то рассматриваемая ф-ия должна была бы быть методом класса, а не обычной ф-ией. Хотя судя по его вопросам на форуме, наш автор вопроса еще о-о-очень долго будет выкладывать на обозрение подобные нынешнему "орехи".
← →
programmer90 (2009-02-03 15:01) [10]Два вопроса:
1)Есть ли функции сравнения стрингов... которая отвечает да или нет
> "Ах да, это правда: это точно Загоскина; а есть другой «Юрий
> Милославский», так тот уж мой" (С) Чичиков
2)Как объявить StringGrid чтобы он в моих локальных функция был тот же самый?
← →
Григорьев Антон © (2009-02-03 15:11) [11]
> Как объявить StringGrid чтобы он в моих локальных функция
> был тот же самый?
Его не надо объявлять, надо правильно обращаться к тому, который уже есть. Например, если ваша форма называется Form1, то писать внутри своей функции Form1.StringGrid1. Но самое правильное - это сделать такую функцию методом класса, тогда все поля класса будут ей доступны.
Если функция должна работать с разными классами окон, и привязать её к одному из них нельзя, надо сделать у функции параметр типа StringGrid1 и указывать его при вызове, а внутри функции обращаться к параметру.
← →
Anatoly Podgoretsky © (2009-02-03 15:11) [12]> programmer90 (03.02.2009 15:01:10) [10]
1) есть
2) не объявлять
← →
programmer90 (2009-02-03 15:22) [13]А можно узнать разницу между суперкодом и говнокодом?
Вот задача
Дан объект 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:34) [14]> programmer90 (03.02.2009 15:22:13) [13]
Да чего тут писать
for i:=0 to StringGird1.RowCount do
Sg1Rc это вторая ошибка.
Если ты сумел намудрить в двух таких простых строках, то о как коде, а тем ьрее суперкоде вообще говорить, рано тебе еще.
← →
Anatoly Podgoretsky © (2009-02-03 15:35) [15]> programmer90 (03.02.2009 15:22:13) [13]
Кстати и этот код тоже бессмысленный
← →
MBo © (2009-02-03 15:35) [16]StringGrid1.Cols[].IndexOf
← →
Amoeba © (2009-02-03 15:39) [17]Так устроит?
for I := 0 to Sg1Rc-1 do
if Pos("Amoeba", StringGrid1.Rows[I].Text) > 0 then
Break;
← →
MsGuns © (2009-02-03 16:16) [18]>Anatoly Podgoretsky © (03.02.09 15:34) [14]
>Да чего тут писать
>for i:=0 to StringGird1.RowCount do
Ошибка допущена умышленно ?
:)
← →
programmer90 (2009-02-03 16:24) [19]
> Anatoly Podgoretsky © (03.02.09 15:11) [12]
о пункте 2.
Если не объявлять перемнну в локальной функции, компилятор сообщяет об ошибке "необъявленной переменной".
> Sg1Rc это вторая ошибка.
и пока я не буду знать как это сделать для меня лучше будет лучше использовать переменную SG1RC ...
← →
programmer90 (2009-02-03 16:27) [20]
> Так устроит?for I := 0 to Sg1Rc-1 do if Pos("Amoeba", StringGrid1.
> Rows[I].Text) > 0 then Break;
Вполне :)
← →
clickmaker © (2009-02-03 16:29) [21]> Если не объявлять перемнну в локальной функции, компилятор
> сообщяет об ошибке "необъявленной переменной".
потому что FindWord не является членом класса, в котором объявлена ссылка на стринггрид1
блин, это же основы...
← →
programmer90 (2009-02-03 16:31) [22]
> StringGrid1.Cols[].IndexOf
Коротко, ясно, и главное в точку.
Спс.
← →
programmer90 (2009-02-03 16:32) [23]
> потому что FindWord не является членом класса, в котором
> объявлена ссылка на стринггрид1блин, это же основы...
Ну да я и учу основы, так как сделать его членом класса?
← →
Плохиш © (2009-02-03 16:33) [24]
> programmer90 (03.02.09 16:24) [19]
> Если не объявлять перемнну в локальной функции, компилятор
> сообщяет об ошибке "необъявленной переменной".
Может тебе всё-таки начать с чтения книг, например, "Делфи за 21 секунду для полных идиотов".
← →
programmer90 (2009-02-03 16:37) [25]
> Может тебе всё-таки начать с чтения книг, например, "Делфи
> за 21 секунду для полных идиотов".
Спасибо за добрые слова.
"Делфи за 21 секунду для полных идиотов".
Вы её наверно всю прочли)
← →
clickmaker © (2009-02-03 16:43) [26]> [23] programmer90 (03.02.09 16:32)
по каким же это книжкам, что там нет таких элементарных вещей как "сделать его членом класса"?
я уж не говорю про раздел Method declarations and implementations Дельфового хелпа, который уж точно должен быть под рукой
← →
Anatoly Podgoretsky © (2009-02-03 16:43) [27]> MsGuns (03.02.2009 16:16:18) [18]
Что бы хоть чуть-чуть подумал, а то очень много времени прогресс нулевой.
← →
Amoeba © (2009-02-03 16:45) [28]
> programmer90 (03.02.09 16:37) [25]
>
>
> > Может тебе всё-таки начать с чтения книг, например, "Делфи
> > за 21 секунду для полных идиотов".
>
> Спасибо за добрые слова.
> "Делфи за 21 секунду для полных идиотов".
> Вы её наверно всю прочли)
Вам, молодой человек или в детский сад, или сюда:
http://www.delphikingdom.com/lyceum/
А пока не похоже, что учите основы. А если и учите, то учеба не впрок идет.
← →
programmer90 (2009-02-03 17:08) [29]
> Вам, молодой человек или в детский сад, или сюда:
лучше по ссылке..."хачу стать самоваром"
Спс.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.03.29;
Скачать: [xml.tar.bz2];
Память: 0.52 MB
Время: 0.051 c