Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на C / C++

Выпуск № 042
от 22.07.2002, 13:10

Администратор:
Имя: Коробов Н.А.
URL: Информационный ресурс
ICQ: 365124
Украина, Днепропетровск
О рассылке:
Задано вопросов: 129
Отправлено ответов: 247
Активность: 191.4 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе]


 Список экспертов, ответы которых опубликованы в данном выпуске

Zloy
Статус: Опытный
Общий рейтинг: 106.17
URL: The полный отстой
[Подробней >>]
Fastman
Статус: Начальный
Общий рейтинг: 113.33
[Подробней >>]
kvINT
Статус: Опытный
Общий рейтинг: 112.67
[Подробней >>]
 
Sinner
Статус: Начальный
Общий рейтинг: 120.68
[Подробней >>]
vitya
Статус: Профессиональный
Общий рейтинг: 115.03
[Подробней >>]
Pablo
Статус: Начальный
Общий рейтинг: 110.29
[Подробней >>]
 
Dzik
Статус: Опытный
Общий рейтинг: 110.52
URL: Разработка игрушек
[Подробней >>]
letchik
Статус: Начальный
Общий рейтинг: 120
[Подробней >>]
Sensey
Статус: Профессиональный
Общий рейтинг: 136.72
Телефон: +38 (0572) 41-76-04 дом.
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 122. Как разместить дополнительную пару кнопок на SaveDialog?Уважаемый эксперт Gibbel ответил на этот воп... (ответов: 1)
Вопрос № 123. Здравствуйте ! Вот я подзабыл немножко про классы переменных. Проблема в чем, есть переменная hHeap,... (ответов: 9)

Вопросов: 2, ответов: 10


 Вопрос № 122

Как разместить дополнительную пару кнопок на SaveDialog?Уважаемый эксперт Gibbel ответил на этот вопрос:
"Почитай получше описание функции GetSaveFileName в MSDN - там про это очень хорошо написано... И даже примерчик есть".
То ли я тупой, то ли MSDN не тот, но я не нашёл примерчика, да и вообще что-либо по этой теме!
Поможите чем сумеете! Буду признателен за примеры!



Вопрос отправлен: 18.07.2002, 20:55
Отправитель: ЗасЛанец

[Следующий вопрос >>] [Список вопросов]

Отвечает Zloy

Добрый день, ЗасЛанец!
Я этим никогда не занимался, но начал бы отсюда:
Почитай про структуру OPENFILENAME, которая передаётся GetSaveFileName. А особое внимание обрати на lpfnHook (вроде то что надо).
Примера я тоже не нашёл :(, но искал всего-то минуты 3, так что может он там и есть.


Ответ отправлен: 18.07.2002, 22:26
Отправитель: Zloy


 Вопрос № 123

Здравствуйте !
Вот я подзабыл немножко про классы переменных. Проблема в чем, есть переменная hHeap, которая должна быть видна из трех срр файлов. Так вот, что нужно написать в файлах, чтобы она была ОДНА на всех, т.е. из каждого файла может быть к ней доступ, и ее значение не терялось при переходе из файла в файл при вызове функций. Передавать через параметры функций недопустимо. По-моему это спецификатор extern, но я недопонял, как его использовать. Спасибо.
ЗЫ: И еще. У кого есть мысли об автоматическом распознавании кодировок символов -- прошу кинуть мне на мыло.



Вопрос отправлен: 19.07.2002, 13:03
Отправитель: Golden Vst

[Следующий вопрос >>] [Список вопросов]

Отвечает Fastman

Доброе время суток, Golden Vst!
В принципе вы правы насчет extern.
Переменные обьявленные вне определения какой либо функции называются глобальными и имеют по умолчанию класс памяти static. Глобальные переменные доступны и из других файлов.
Только не забывайте обявлять эту переменную в каждом файле
в котором она используется.
И еще : при таком обьявлении спецификатор класса памяти extern указывает компилятору что переменная либо будет оределена позже в том же самом файле,либо ее определение находиться в другом файле. Компилятор сообщит компоновщику что в файле имеется неразрешенная ссылка на переменную. И если компоновщик не найдет определение переменной то он выдаст сообщение об ошибке.

Ответ отправлен: 20.07.2002, 21:22
Отправитель: Fastman


Отвечает Zloy

Здравствуйте, Golden Vst!
Выходов 2:
1. Объявляешь переменную без всяких extern в одном заголовочном файле и подключаешь его ко всем файлам проекта
2. В одном файле объявляешь её просто переменной, а в других объявляё extern и тогда её можно везде пользовать.


Ответ отправлен: 19.07.2002, 16:59
Отправитель: Zloy


Отвечает kvINT

Добрый день, Golden Vst!
Объяви ее в заголовочном файле и включи (include) этот файл в своих трех.

Ответ отправлен: 21.07.2002, 22:06
Отправитель: kvINT


Отвечает Sinner

Приветствую Вас, Golden Vst!
Да, именно extern.
Как делаю я:
В том файле, функции которого первыми используют переменную,
задаю:
<тип> <имя>=<значение>;
В остальных:
extern <тип> <имя>;

Ответ отправлен: 22.07.2002, 02:54
Отправитель: Sinner


Отвечает vitya

Здравствуйте, Golden Vst!
если она в заголовочном файле, то ты ее объяви как статическую и тогда она будет видна во всех 3 цпп файлах и все будет ок. Если оже она объявлена в цпп файле, то в двух других ее надо объявить как extern и тогда она тоже будет видна (shared).

Ответ отправлен: 19.07.2002, 13:23
Отправитель: vitya


Отвечает Pablo

Добрый день, Golden Vst!
Например попробуй так:
file1.cpp
int Variable;
int Func1() {return Variable;}
file2.cpp
extern int Variable;
void Func2(int k) {Variable = k;}
file3.cpp
extern int Variable;
void Func3(int k) {Variable = k;}
Компоновщик должен понять по имени переменной ну и по объявдению extern, что ты используешь одну и туже переменную!

Ответ отправлен: 19.07.2002, 16:28
Отправитель: Pablo


Отвечает Dzik

Приветствую Вас, Golden Vst!
Во всех файлах, где ты используешь переменную пиши
extern тип_переменной имя_переменной.
И все.
Ну и инклудить файл, где у тебя реально эта переменнаяч описана.


Ответ отправлен: 19.07.2002, 20:27
Отправитель: Dzik


Отвечает letchik

Здравствуйте, Golden Vst!
В h файл пишеш
extern int hHeap;
Во все cpp, где нужна hHeap вставляен include
А в один из этих cpp вставляеш описание и инициализацию
int hHeap=0;

Ответ отправлен: 22.07.2002, 09:09
Отправитель: letchik


Отвечает Sensey

Доброе время суток, Golden Vst!
;В 1.с
int MyVar;
;2.c
extrn int MyVar;
И все...
Но! Никогда не объявляй переменные в хедере, тамобъявляются только типы, константы, inline... Но я думаю это ты знаешь...



Приложение:

Ответ отправлен: 22.07.2002, 11:37
Отправитель: Sensey



Форма отправки вопроса

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (42)
C / C++ (32)
Perl (9)
Delphi (16)
Pascal (29)
Basic / VBA (12)
Java / JavaScript (8)
PHP (6)
MySQL / MSSQL (10)
Пользователю
Windows 95/98/Me (42)
Windows NT/2000/XP (34)
"Железо" (34)
Поиск информации (17)
Администратору
Windows NT/2000/XP (18)
Linux / Unix (16)
Юристу
Гражданское право (7)
Семейное право (3)
Трудовое право (7)
КоАП (2)

Отправить вопрос всем экспертам выбранной рассылки.




be number one Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное