Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.03.29;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.018 c
15-1233208661
charoey_mag
2009-01-29 08:57
2009.03.29
GSM сигнализация по температуре


15-1232753631
trsteep
2009-01-24 02:33
2009.03.29
Модель базы данных.


15-1233314347
Mozart
2009-01-30 14:19
2009.03.29
portable?


1-1208419242
312kbps
2008-04-17 12:00
2009.03.29
Событие смена активного окна в винде


15-1232594173
Slider007
2009-01-22 06:16
2009.03.29
С днем рождения ! 22 января 2009 четверг