(Часть 2) Я начинающий, подскажите пожалуйста как...
Прежде чем задать вопрос здесь, вы обязаны использовать
- Поиск по форуму, используя ключевые слова из вашего вопроса. Как правильно использовать поиск - читайте здесь
- Список наиболее часто задаваемых вопросов (FAQ)
- Поиск по предыдущей теме
Кроме того, прежде чем размещать сообщение, ознакомьтесь с правилами.
При размещении вопросов начинающих помимо указанной темы, будет выдаваться нарушение, а тема удаляться.
при компиляции возникает ошибка: Cell не является членом класса TMainForm. причем в методах класса, которые используют Сell (TMainForm дружественный для этого класса)
курю гугл. безрезультатно.
извините, если подобный вопрос уже задавали, но поиск мне ничего не дал. если эта проблема уже обсуждалась, дайте, пожалуйста ссылку. буду очень благодарна.
А переменная-указатель TLabel *Сell у вас объявлена как переменная класса TMainForm, или просто как локальная переменная внутри конструктора класса? Если второе, то, как мне представляется, она будет видна только в конструкторе, в остальных методах класса TMainForm ее видно не будет и будет ошибка при компиляции...
Если нужно чтобы она была видна в других методах, то я так полагаю, нужно так сделать:
// ...
TLabel *Сell;
// ...
};
TMainForm::TMainForm( /* переменные для инициализации */ )
{
// ...
Cell = new TLabel;
// ...
}
самое интересное, что методы TMainForm воспринимают Сell как свой член, а методы другого класса уже не понимают, что Сell - член TMainForm.
самое интересное, что методы TMainForm воспринимают Сell как свой член, а методы другого класса уже не понимают, что Сell - член TMainForm.
Хм... а приведите тогда пример того, как у вас в коде происходит попытка обращения в методе другого класса к переменной Cell из класса TMainForm.
И еще желательно пример того, как происходит обращение к Cell внутри методов самого класса TMainForm.
{
MainForm->Cells[mm][nn]->Caption = IntToStr(N);
}
обращение внутри метода самого класса TMainForm:
{
if(Key == VK_DELETE)
{
Cells[j]->Caption = ' ';
}
}
конструктор TMainForm:
: TForm(Owner)
{
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
{
Cells[j] = new TLabel(this);
Cells[j]->Name = имя;
Cells[j]->Parent = this;
Cells[j]->OnClick = OnCellClick;
}
}
}
?
Если да, то естественно он членом класса TMainForm не является. И методы класса TMainForm видят его без какого-либо квалифицирования только лишь потому, что он глобальный, а не потому что он является членом класса. И обращаться к нему в другом классе нужно точно так же, как и в классе TMainForm - без квалифицирования именем объекта:
{
Cells[mm][nn]->Caption = IntToStr(N);
}
тогда эта строка
ничего не значит? или я не тот смысл в ней вижу...
тогда эта строка
ничего не значит? или я не тот смысл в ней вижу...
Это значит то, что вы элементу TLabel, на который указывает указатель, находящийся в Cells[j], назначаете "родителем" текущий объект (this) класса TMainForm. Но от того, что вы назначили тому элементу TLabel текущий объект родителем, элемент Cells[j] (как и сам массив Cells) членом класса TMainForm вовсе не становится.
Может я и ошибаюсь, но такое впечатление, что вы просто путаете понятия "являться переменной - членом класса", относящееся к базовым концепциям языка C++, и отношение "родительский - дочерний объект", являющееся всего лишь особенностью реализации компонентов TForm и TLabel, языком программирования не обусловленной. :)
По нажатию кнопки создаётся указатель на класс, и тут же забивается в список, т.е.
и при этом естесственно вызывается констрактор, который затем вызывает метод класса Render. В этом самом методе есть строчка
которая ну никак не хочет выполняться. В смысле компилятор её пропускает без проблем,а вот при выполнении программы вылетает ошибка "Access violation at address xxxxxxxx in 'vcl120.bpl'. Read of address xxxxxxxx"
Самое интересное чторядом есть версия этой программы (которая меня не устраивает по некоторым причинам) делающая тоже самое и причём правильно. Подскажите, в чём дело?
26. Как в компонент TWebBrowser загрузить HTML код из строки?
и все работало. На другой машине с IE8 некоторые страницы загружаются, а некоторые нет с ошибкой в
"Access violation at address ... in module OLEAUT32.dll. Read of address ...".
Подскажите где искать причину, как ее устранить?
1) Вопрос.
Задача.
Код:
if(tDate==Day)
где tDate = текущая дата
а Day = список дат.
Вопрос как организовать такую работу условия, при этом неисползуя цикл.
2) Вопрос
Как разделить текст с помощью разделитя, но не просто строчку разделить а слова после каждого делителя вставлять в переменную?
то есть:
есть текст: Сегодня%чудесный%день
нужно разделить текст так чтобы:
каждое слово было помещено в свою переменную.
1) Вопрос.
Задача.
Код:
if(tDate==Day)
где tDate = текущая дата
а Day = список дат.
Вопрос как организовать такую работу условия, при этом неисползуя цикл.
Не понял, в чем вопрос? :)
2) Вопрос
Как разделить текст с помощью разделитя, но не просто строчку разделить а слова после каждого делителя вставлять в переменную?
то есть:
есть текст: Сегодня%чудесный%день
нужно разделить текст так чтобы:
каждое слово было помещено в свою переменную.
Например strtok
Например strtok
Вопрос в том в следующем.
к примеру есть список в котором дни рождения записанные в формате
dd.mm вопрос как сделать чтобы за одно условие приведенное выше
проходила проверка\поиск совпадающей текущей дате дата.
Strtok?
а как использовать такую функцию нельзя поподробней?
к примеру есть список в котором дни рождения записанные в формате
dd.mm вопрос как сделать чтобы за одно условие приведенное выше
проходила проверка\поиск совпадающей текущей дате дата.
Если это список, то никак. Вы можете избавиться от явного написания цикла, используя find_if. Но он все равно будет выполняться, хоть и будет невидим для вас. А в чем собственно проблема и почему не хотите использовать цикл?
Strtok?
а как использовать такую функцию нельзя поподробней?
// compile with: /W1
// In this program, a loop uses strtok
// to print all the tokens (separated by commas
// or blanks) in the string named "string".
//
#include <string.h>
#include <stdio.h>
char string[] = "A string\tof ,,tokens\nand some more tokens";
char seps[] = " ,\t\n";
char *token;
int main( void )
{
printf( "Tokens:\n" );
// Establish string and get the first token:
token = strtok( string, seps ); // C4996
// Note: strtok is deprecated; consider using strtok_s instead
while( token != NULL )
{
// While there are tokens in "string"
printf( " %s\n", token );
// Get next token:
token = strtok( NULL, seps ); // C4996
}
}
цикл программу здорово загружает, можно конечно через таймер, но это то же нехотелось, по идее проверка должна быть разовой,
поступил запрос-> проверка прошла-> выдала ответ и все
код который вы привели, немогли бы разложить с примером какого нибудь текста...:) Я немного недопонимаю как оно собсно работает..
P.S. а find_if это ведь тож чтото вроде цикла? если я неошибаюсь.
2) Вопрос
Как разделить текст с помощью разделитя, но не просто строчку разделить а слова после каждого делителя вставлять в переменную?
то есть:
есть текст: Сегодня%чудесный%день
нужно разделить текст так чтобы:
каждое слово было помещено в свою переменную.
поступил запрос-> проверка прошла-> выдала ответ и все
P.S. а find_if это ведь тож чтото вроде цикла? если я неошибаюсь.
Да. В своей реализации find_if использует цикл. Но неужели так много данных с списке с датами рождения. Кстати, что это за список: связный список, вектор?
Видите ли, в этом списке будут храниться даты рождения зарегистрированных пользователей. Программа он же сервер каждый день ну, там в определенное время сверяет с текущей датой список дат,
якобы "А нет ли сегодня у нас Именниника!" ну вот собссно и все.
нет он не связный обычным столбиком в текстовом файлике содержатся даты. Вот и все хочу приятно людям сделать:).
А что если, использовать так:
Загружаем список в к примеру в Мемо-> задаем в Мемо поиск текущей даты->выводим результат... хмм да ток еще одна проблема тогда будет, да в принцепе она в любом случае будет, это если день рождение у нескольких человек. То есть две одинаковые даты.
P.S. Хотя может лучше циклом?
К стати и с циклом тож неполучится.
к примеру:
если текущая дата = 20.03 == дата из списка 20.03, то ....
к примеру список:
03.05
32.02
20.03 - цикл будет показивать тока эту дату
02.01
20.03 - а эту он инетерсно проверит?
Может тогда лучше сделать по другому:
чтобы она не даты сверяла, а искала количество мохожих, ведь все равно наерна нужно будет
каждую дату помечать кому она принадлежит
то есть:
03.05#Васильев А.С.
32.02#Степанов Г.Г.
20.03#Бывалый А.А.
Тогда наерна будет можно найти строки для начала содержащие текущую дату.
{
Form2->ADOTable1->TableName = "111";
}
но это неправильно, да и не работает. Грамотного примера найти не могу, подскажите пожалуйста что можно сделать?
"Array[1][0] = "Something"
Array[1][1] = "Onemore"
count( Array[1] ) вернет 2"?
"Array[1][0] = "Something"
Array[1][1] = "Onemore"
count( Array[1] ) вернет 2"?
Использовать vector. Например std::vector< std::vector<AnsiString> >
Метод size(). Например v[0].size();
И вот тут у меня начались вопросы,на которые я не могу найти ответа.КОнечно на некоторые я нашел,но вот например есть не отвеченные гуглом :)
Вот они пошли.
1) Как вывести диалоговое окно "Обзор", для выбора файла и его обработки?
2) Есть ли в этой среде,да и вообще в C++ аналог "регулярных выражений" из php? То есть,поиск текста по маске,например "n([0-9]+)o44"?
3) Работа с потоками.Вот каким боком я к ним не подкатывал,все время у меня получаються одни ошибки.Изначально взял как пример себе:http://rxlib.ru/WinLesson/bles2_1.htm (просмотреть можно из кеша гугла),но как я не старался,вот тут:
вылетает ошибка,мол не знаю я никаких TMyThred, хотя я делал все как сказано там.
Возможно кто то может предоставить исходный код,именно работы с потоками? Например задача: есть 4 урла,нужно получить все содержимоев 4 потока,одновременно, и например заисать в файл.Ну или прост ополучение 2 страниц по средствам потоков.Заранее,огромное спасибо за ответы.Теперь думаю буду частым гостм на этом форуме :)
1) Как вывести диалоговое окно "Обзор", для выбора файла и его обработки?
2) Есть ли в этой среде,да и вообще в C++ аналог "регулярных выражений" из php? То есть,поиск текста по маске,например "n([0-9]+)o44"?
3) Работа с потоками.Вот каким боком я к ним не подкатывал,все время у меня получаються одни ошибки.
1 - есть в ФАК-е
2 - в поиск "Регулярные выражения"
3 - есть в примерахк Билдеру, по крайней мере было в 5 и 6-м (а вы вообще как специалист в С++ фкурсе, что такое хедеры и что их нужно подключать в другие модули?)
2 - в поиск "Регулярные выражения"
3 - есть в примерахк Билдеру, по крайней мере было в 5 и 6-м (а вы вообще как специалист в С++ фкурсе, что такое хедеры и что их нужно подключать в другие модули?)
Спасибо,плохо искал.
По поводу 3)
Ваш сарказм крайне не уместен, ведь я же написал,что имел небольшой опыт(нужное подчеркнуть), в среде разработки С++ VS.Так что ваши лестные замечания,"специалист", вообще не берут за душу.Я бы вас,как специалиста(что вы,никакого сарказма), подсказать мне,дурачку,как и что подключается.Хотя вопрос уже не стоит так остро как ранее, я скачал уйму хороших книжек по борланду с++,там так же есть и книжка Архангельского, которую мне советовали.Просто не хотел читать книжку, так как не думаю что сел за язык на долго,просто обястоятельства,хотя после беглого просмотра возможностей и удобства,думаю изменить свое решение :)
Поэтому я тут у вас теперь буду появляться частенько :)
Доброй ночи.
По поводу 3)
Ваш сарказм крайне не уместен, ведь я же написал,что имел небольшой опыт(нужное подчеркнуть), в среде разработки С++ VS.Так что ваши лестные замечания,"специалист", вообще не берут за душу.Я бы вас,как специалиста(что вы,никакого сарказма), подсказать мне,дурачку,как и что подключается.
так все же, забыл подключить хедер?
...так как не думаю что сел за язык на долго,просто обястоятельства,хотя после беглого просмотра возможностей и удобства,думаю изменить свое решение :)
вот это правильно
Поэтому я тут у вас теперь буду появляться частенько :)
вэлкам:)
Прочитал 1\3 книжки,узнал ну просто "пипец" как много :)
И во тсложился вопрос,может конечн оя не дочитал до этого,или там этого нет,но собственно вот он.
Если в пхп есть удобная ф-ция file(); которая предоставляет нам файл,в виде массива.где каждый элемент = строке в файле,то тут такого я так понял нет?((
Тут только считывание через !feof() возможно? То есть,побайтово?
Спасибо за ответ :)
Еще один,наиглупейший вопрос! ))
Помещаю на форму Memo.Как убрать из него, эту надпись Memo1?:)
Caption не нашел,да и вообще никаких параметров с этим значением,кроме имени =)
А насчёт Memo–свойство Text есть там?Если нету,то поищите вообще свойства,в которых содержится Memo1(кроме имени,конечно:))
А насчёт Memo–свойство Text есть там?Если нету,то поищите вообще свойства,в которых содержится Memo1(кроме имени,конечно:))
Нет,ну конечно,переписать мой вопрос мне же в ответ,это очень кошерно)))
Я же все это писал,вчитайтесь.
fgets() читает по байтово, fgets(out,2033,descr);
Я же все это писал,вчитайтесь.
fgets() читает по байтово, fgets(out,2033,descr);
И так,гугел творит чудеса на глазах.
{
if (!OpenDialog1->Execute()) return;
TStringList *list = new TStringList;
list->LoadFromFile(OpenDialog1->FileName);
Edit1->Text = list->Strings[0];
delete lst;
}
[COLOR="Silver"]Но вот теперь,совсем дебильный вопрос.Где расположен OpenDialog.Как ег овывести на форму? Облазил все компоненты, не нашел.[/COLOR] - нашел опять же,гугел - самая лучшая весч инторнета! Но как работать с ОпенДиалог пока не понял,буду думать,ибо он у меня исчезает после компила =)
Конечно! Я читаю, я же писал на верху.Но просто как человеку,знающему некоторые другие Яп,читать не всегда интересно,интереснее действовать.Вот и читаю,и практикуюсь.Спасибо за ответ,кажеться я понял о чем ты говоришь.Нужно повешать на события клика кнопки,метод Execute(); Большое, человеческое)
Собственно вопрос связан с областью видимости.
В родиельской форме делаю инклуд Unit2.cpp, и по нажатию на кнопку вторая форма начинает показываться\скрываться.Но вот делема,если я во второй форме ввоже значение Edit1, и хочу обработать его на родительской форме,то я естественно натыкаюсь на область видимости.TForm2::Edit->Text пробывал так, компилятор забил на мои отчачные попытки поправить положение.Что и где проинклудить,или в каком разделе нужно что то прописать,что бы я мог видеть не только саму форму(Form2) в Form1, но и эелементы с дочерней формы.Спасибо.
Собственно вопрос связан с областью видимости.
В родиельской форме делаю инклуд Unit2.cpp, и по нажатию на кнопку вторая форма начинает показываться\скрываться.Но вот делема,если я во второй форме ввоже значение Edit1, и хочу обработать его на родительской форме,то я естественно натыкаюсь на область видимости.TForm2::Edit->Text пробывал так, компилятор забил на мои отчачные попытки поправить положение.Что и где проинклудить,или в каком разделе нужно что то прописать,что бы я мог видеть не только саму форму(Form2) в Form1, но и эелементы с дочерней формы.Спасибо.
Form2->Edit1->Text
Все спасибо,починил.Я так уже пытался обратиться к нему,н мне ошибку писал.Потыкал еще - заработало.Спасибо!
Вопрос очень простой :)
TStringList. Считываю им файл.Как бы мне теперь узнать кол-во строчек? Ну или вообще,как узнать колво строчер,для связки:
Что то вроде ф-ции count() в пхп.Может быть сть предопределенный метод?