Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.51 MB
Время: 0.066 c
15-1231773633
Добежал
2009-01-12 18:20
2009.03.29
Поиск (F3) в Vista


3-1216467013
Евгений Р.
2008-07-19 15:30
2009.03.29
Обновление в DbGrid


2-1233905029
stas
2009-02-06 10:23
2009.03.29
TWebBrowser


2-1233329666
@!!ex
2009-01-30 18:34
2009.03.29
помогите с TRegExp


1-1208087201
@!!ex
2008-04-13 15:46
2009.03.29
Может ли существовать форма без Applicationа?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский