Большой Воронежский Форум
Страница 3 из 5
< 123 45 >
» Программирование>У новичка возникли вопросы!!!
Part!zan 19:32 16.04.2008

Сообщение от The_God:
в сях такая проверка прокатит

Внимательно вчитался в код и вынужден собщить, что в сях это даже не откомпилится. [Ответ]
The_God 19:47 16.04.2008

Сообщение от Part!zan:
Внимательно вчитался в код и вынужден собщить, что в сях это даже не откомпилится.

почему ? [Ответ]
lermontov 09:44 17.04.2008
Здравствуйте.у меня возникла вот такая задачка.делаю в билдере С++.

мы нажали на кнопку на одной форме при нажатии она дает переменной У значение 1 ,затем она открывает другую форму , в которой выводит в строке значение которое приобрела переменная У.

Как нужно объявиь переменную чтобы он она и в одной и вдругой форме работала ,и чтобы форма 2 знала какое значение заадано формой 1 переменной У?? [Ответ]
xxx-men 09:47 17.04.2008

Сообщение от lermontov:
Как нужно объявиь переменную чтобы он она и в одной и вдругой форме работала

а) глобально
б) ищи в книжках что такое "указатель" или "ссылка" [Ответ]
Part!zan 20:37 17.04.2008
The_God, потому что си не позволяет так переменные объявлять. Вот если бы ты ее сразу после { написал, то да, так можно. Но и видно ее будет только внутри этих скобок. [Ответ]
lermontov 09:20 18.04.2008

Сообщение от xxx-men:
а) глобально
б) ищи в книжках что такое "указатель" или "ссылка"

Я понимаю что надо глобально ,но я уже эти переменные так глобально сделал ,что глобльнее некуда помоему ,сразу после #include и все равно их вторая форма невидит ,с указателями таже ерунда,а вот со ссылками еще незнаю не пробовал (но и неособенно хочетси лесть в эти ссылки"Ибо простота залог успеха!!").Вопрос остается открытым !! так какже обозвать переменные чтобы они во всех формах проекта могли использоватси ?? [Ответ]
xxx-men 09:24 18.04.2008
ну показывай код тогда...... [Ответ]
lermontov 09:31 18.04.2008
вот например
#include <iostream.h>
#include <string.h>
#include <fstream.h>
#include <vector.h>
#include <vcl.h>

#pragma hdrstop
#include <Unit4.h>
#include <Unit2.h>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
int r,t;

вот например объявил переменные r и t дальше идет программа для различных кнопок на форме 1 , и там есть кнопка которая придает значение переменной r=2 и открывает форму 4,а вот в форме 4 там есть своя программа которая должна увидеть что переменной r присвоено значение 2 и выполнить определенные действия.

void __fastcall TForm1::Button3Click(TObject *Sender)
{
r=2;
Form4->ShowModal();
} [Ответ]
xxx-men 10:00 18.04.2008
попробуй так:
если TForm4 класс, то добавь (после public: ) ему параметр int* pr;
это будет указатель на переменную r.
код вызова измени так:
void __fastcall TForm1::Button3Click(TObject *Sender)
{
r=2;
Form4->pr = &r;//это надо добавить
Form4->ShowModal();
}

Сообщение от lermontov:
а вот в форме 4 там есть своя программа которая...

в этой програмке нужно использовать *pr (обращение по указателю) , он будет равен 2 [Ответ]
Part!zan 18:31 18.04.2008
lermontov, непонятно, где же все-таки описаны глобальные переменные и где они будут использоваться. Это разные файлы? Если да, то нужно использовать extern.
xxx-men, присваивать значения переменным класса таким образом - дурной тон. [Ответ]
M0l0t 22:08 20.04.2008

Сообщение от Part!zan:
непонятно, где же все-таки описаны глобальные переменные и где они будут использоваться. Это разные файлы? Если да, то нужно использовать extern

вот-вот, видимо надо в *.h файле добавить строку extern r, t;

и неужели нельзя передавать значение переменной как аргумент функции? зачем делать глобальную переменную? [Ответ]
xxx-men 11:08 21.04.2008
чуть чуть по флудю

Сообщение от Part!zan:
xxx-men, присваивать значения переменным класса таким образом - дурной тон.

согласен, но....

допустим:
class x
{
................
.....
...............
private:
int a;
public:
int getA(){return a;};
void setA(int n){a=n;};
void plusA(int n){a+=n;};
};
или
class x {
........
....
.........
public: int a; };

по мне "дурной тон" будет нагляднее.....
[Ответ]
Akad 11:54 21.04.2008
xxx-men, Но лучше так не делать. Особенно в больших проектах. Когда эта наглядность выйдет за пределы возможных значений искать проблему придется долго. [Ответ]
Part!zan 18:39 21.04.2008
xxx-men, твой пример совершенно мимо кассы. В этом случае надо было просто использовать перегрузку операторов - получилось бы нагляднее некуда. [Ответ]
Akad 18:57 21.04.2008
Part!zan, Вообще GetA/SetA нагляднее и во всяких цивилизованных языках типа явы только так и рекомендуется писать. [Ответ]
The_God 20:02 21.04.2008

Сообщение от xxx-men:
присваивать значения переменным класса таким образом

если хочеш рисковать то пожалуйста, если развить тему хардкорного программинга то нужно узнать расположение таблицы виртуальных методов и порядок следования закрытых полей класса, то тогда можно будет напрямую, прям по указателю и этому вычисленному смещению значения даже приватным полям класса присваивать... но это как прямой массаж сердца на тратуаре

ps

Сообщение от :
Прямой массаж заключается в периодическом сдавливании сердца рукой, введенной в полость грудной клетки.

[Ответ]
Part!zan 21:19 21.04.2008
Akad, у него еще и плюсА в примере. Тут лучше перегрузку сделать... [Ответ]
Akad 00:19 22.04.2008
Part!zan, в любом случае сведется к SetA(GetA()+n); Перегрузки хороши для математических классов. Скорее даже не классов, а структур. Всякие вектора, комплексные числа и т.д. Но речь шла изначально про "общий случай". Захочешь ты, или что еще хуже, кто-нибудь другой из команды унаследовать его, и что тогда? [Ответ]
xxx-men 15:11 22.04.2008
Part!zan, перегрузка допустим занята под другие цели...

прямой массаж серца гораздо нагляднее [Ответ]
lermontov 20:11 23.04.2008
Здравствуйте.Со строками и с работой с файлами я вроде разобрался.Оказалось все гораздо проще чем я думал.Все приходит с опытом.
есть програмка что то вроде меню переключаемое с помощью трелок в консольном преложении,и к ней надо прикрепить заголовочный файл ncurses.h ,дабы в дальнейшем объеденить это меню с программой которая использует заголовочный файла.все бы хорошо и здорово,но при добавлении данно заголовочного файла программа просто зацыкливается и начинает беспорядочно мегать меню.Я предпологаю что просто в библиотеке нкурсес есть свой оператор getch();.А какое у вас мнение???


#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <windows.h>

using namespace std;

char *menu[]={"Punkt 1","Punkt 2","Punkt 3"};



void menurepaint(int num)
{
system("cls");
for (int i=0; i<=2; i++)
{
if (i==num)
{
HANDLE hConsoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsoleHandle, FOREGROUND_BLUE | BACKGROUND_RED);
cout << menu[i] << endl;
}
else
{
HANDLE hConsoleHandle = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hConsoleHandle, FOREGROUND_RED | BACKGROUND_BLUE);

cout << "\\" << menu[i] << endl;
};
}
cout << endl;
}



int main()
{
int active=0;
menurepaint(active);
unsigned char a;
do
{a=getch();
if (a<=224)
{a=getch();
if ((a==72)&&(active<2)) {active++;}
if ((a==80)&&(active>0)) {active--;}
}

menurepaint(active);}
while (a!=27);
return 0;
} [Ответ]
Part!zan 22:38 23.04.2008

Сообщение от lermontov:
какое у вас мнение???

У нас мнение, что не надо так все усложнять. Столько всего понаворочено - аж жуть. Тут тебе и стдио, и иостримс, и апишные функции...
Меню совершенно необязательно перерисовывать после любого нажатия кнопки, получать хэндл стдаута при каждом перерисовании тоже не самый лучший ход. Ну, про мелочи, типа перепутанных кнопок вверх/вниз - вообще молчу.

Сообщение от lermontov:
в библиотеке нкурсес есть свой оператор getch();.

Это достаточно легко выяснить, заглянув в ncurses.h. Да и режим отладки никто не отменял. [Ответ]
lermontov 20:05 28.07.2008
Много времент прошло с моего последнего сообщения в этой теме , но мне снова понадо билась помощь знающих свое дело програмистов!!!!
вопросик совсем простой , но я недолго поискав ненашел его в книжках , а знание английского языка у меня хромает.Перехожу к сути.
Вопрос: в борланде , мне надо чтобы из переменной например К данные после нажатия на кнопку появились в Edit ! что то типо такого
Label4->Caption = FloatToStrF(i,ffGeneral,7,2);
но что бы вместо Label4 было Edit !
примите во внимание что мне очень стыдно задавать такой вопрос , после того как я уже пол года програмирую, и уже сделал пару простеньких курсовый работ!!!
Р.S. в свое опровдание скажу , что я освоил XTML за 4 дня, но правдо базовые знания, тоже оч интересно оказалось!! посоветуйте чем можно ешо забить мою светлую голову? [Ответ]
Akad 20:33 28.07.2008
lermontov, Наверное тебя интересует поле Text? [Ответ]
lermontov 20:52 28.07.2008
ну да так и есть! [Ответ]
lermontov 20:57 28.07.2008

Сообщение от lermontov:
Много времент прошло с моего последнего сообщения в этой теме , но мне снова понадо билась помощь знающих свое дело програмистов!!!!
вопросик совсем простой , но я недолго поискав ненашел его в книжках , а знание английского языка у меня хромает.Перехожу к сути.
Вопрос: в борланде , мне надо чтобы из переменной например К данные после нажатия на кнопку появились в Edit ! что то типо такого
Label4->Caption = FloatToStrF(i,ffGeneral,7,2);
но что бы вместо Label4 было Edit !
примите во внимание что мне очень стыдно задавать такой вопрос , после того как я уже пол года програмирую, и уже сделал пару простеньких курсовый работ!!!
Р.S. в свое опровдание скажу , что я освоил XTML за 4 дня, но правдо базовые знания, тоже оч интересно оказалось!! посоветуйте чем можно ешо забить мою светлую голову?

извиняюсь за этот глупый вопрос , вот это я ступил, ну вот так всегда ненадо искать тяжелых путей, все лежит на поверхности!!!!! Извините все те у кого я отнял время !
ВОПРОС ЗАКРЫТ! [Ответ]
lermontov 17:29 17.10.2008
Доброго времени суток,уважаемые Програмисты , я тут столкнулся вот с такой проблемкой ,имеется программа сделанная предположительно в билдере , но остался только exe файл , прокта неосталось (утерян) , а вот теперь понадобилось подредактировать эту програмку, можно ли каким нибуть образом вытянуть из этой откомпилированной готовой программы ее код?
Я попробовал просто открыть ее в билдере но кроме кракозябликов и слегка отличимых выражений ничего небыло. кто что может посоветовать по этому поводу?? [Ответ]
Kerish 17:43 17.10.2008

Сообщение от lermontov:
Доброго времени суток,уважаемые Програмисты , я тут столкнулся вот с такой проблемкой ,имеется программа сделанная предположительно в билдере , но остался только exe файл , прокта неосталось (утерян) , а вот теперь понадобилось подредактировать эту програмку, можно ли каким нибуть образом вытянуть из этой откомпилированной готовой программы ее код?
Я попробовал просто открыть ее в билдере но кроме кракозябликов и слегка отличимых выражений ничего небыло. кто что может посоветовать по этому поводу??

Достать из EXE исходный код?
Жжошь [Ответ]
DWanek 18:19 17.10.2008
Единственный вариант - это вскрыть экзэшник дизассемблером. И если ты там хоть что-то понимаешь, то может даже поправленная прога заработает. [Ответ]
lermontov 18:25 17.10.2008
просто я раньше некогда об этом не задумывался, и вот теперь сталкнулся с такой проблемой. я исходил из того что если есть компиляторы то должны быть и декомпиляторы, ну это я так тольео предположил. вообщем получается если сделал готовую программу и потом по нечайности потерял ее исходник (в виде проекта билдера) то потом эту программу некакими путями нельзя будет отредактировать? [Ответ]
Part!zan 18:53 17.10.2008
lermontov, компиляция - процесс необратимый. Можно только дизассемблировать программу, но дело это достаточно сложное и кропотливое. Хотя, в некоторых случаях, вполне можно подправить программу. Например, взлом многих программ происходит именно так. ) А что изменить-то надо? [Ответ]
Страница 3 из 5
< 123 45 >
Вверх