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

RusFAQ.ru: Программирование на Delphi


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

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

Выпуск № 371
от 15.08.2004, 14:10

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 1745
Отправлено ответов: 3996
Активность: 228.9 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


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

CrackLab
Статус: Опытный
Общий рейтинг: 123.72
[Подробней >>]
sir henry
Статус: Профессиональный
Общий рейтинг: 164.06
[Подробней >>]
THE_PRO
Статус: Профессиональный
Общий рейтинг: 134.35
URL: THE_PRO
[Подробней >>]
 
samum2000
Статус: Профессиональный
Общий рейтинг: 130.91
URL: Samum's home page
[Подробней >>]
E-terra experts
Статус: Доверительный
Общий рейтинг: 108.63
[Подробней >>]
Boriss
Статус: Профессиональный
Общий рейтинг: 157.38
URL: Программирование на Паскале
[Подробней >>]


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

Вопрос № 1733. Привет! Подскажитев чем разница между этими двумя выражениями: LPBYTE *x, LPBYTE x. Меня интересует ... (ответов: 3)
Вопрос № 1734. нужно вывисти диалог с кнопками да и нет (отмена) (не yes & cancel) причем надо задать текст в диало... (ответов: 4)
Вопрос № 1735. Здравствуйте... Делаю программку, для записи разговоров через модем, типа ModemSpy, разобрался уже с... (ответов: 1)
Вопрос № 1736. Привет! Спасибо за помощь. У меня возник еще один вопрос: Что означает LPBYTE *x - перенная-указате... (ответов: 4)
Вопрос № 1737. Всем спасибо! To CrackLab - насчет размещения в памяти было бы неплохо. Благодарю за сотрудничество!... (ответов: 2)
Вопрос № 1738. Уважаемые эксперты, как в Delphi выводить данные из таблиц Paradox (и из других) выводить строки, от... (ответов: 4)
Вопрос № 1739. Пожалуйста киньте ссылочки на электронные книжки для начинающих по Buider'у . С++ знаю.... (ответов: 3)
Вопрос № 1740. К вопросу 1731. Для меня важно, чтобы при нажатии на указанные клавиши клавиатуры, соответственные к... (ответов: 3)

Вопросов: 8, ответов: 24


 Вопрос № 1733

Привет! Подскажитев чем разница между этими двумя выражениями:
LPBYTE *x,
LPBYTE x.
Меня интересует именно эта звездочка. Спасибо.



Вопрос отправлен: 10.08.2004, 14:49
Отправитель: Alex

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

Отвечает CrackLab

Доброе время суток, Alex!
Во втором случае переменная x создается в стеке. Т.е. в стеке будет отведено место под переменную типа LBBYTE и значение этой переменной будет храниться в этом месте в стеке.
В первом случае вы объявляете указатель на переменную типа LPBYTE. Указатель представляет собой 4х байтовый адрес, который указывает на место в памяти где будет храниться переменная типа LPBYTE. Т.е. в стеке будет храниться не значение переменной, а адрес этой переменной в памяти. Когда вы пишете LPBYTE *x в стеке просто освободится место для хранения адреса, но сам адрес запишется когда вы будете использовать оператор new либо присвоение указателя.
Пример:
int x = 5;
int *y = new int;
*y = 5;
В первом случае в стеке освободится 4 байта под хранение значения переменной x и туда запишется число 5.
Во втором случае в стеке освободится 4 байта под хранение адреса, указывающего на переменную y.
После выполнения оператора new в памят и (уже не в стеке) дополнительно освободится еще 4 байта для хранения значения переменной y. Адрес этих выделенных в памяти 4х байт запишется в стек, туда где перед этим было освобождено мето для хранения указателя.
Затем при выполнении инструкции *y = 5; из стека возьмется адрес переменной y и по этому адресу запишется значение 5.
Вот что будет происходить в памяти:
При "int x = 5;" в стеке например по адресу 120004h запишется число 5.
При выполнении инструкции "int *y = new int;" выделится 4 байта в памяти например по адресу 8D0000h и адрес 8D0000h запишется в стек по адресу например 120000h.
При выполнении инструкции "*y = 5;" из стека по адресу 120000h возьмется адрес переменной (8D0000h) и по этому адресу (8D0000h) запишется число 5.
Читайте про указатели, обязательно смотрите в отладчике что происходит. А для этого нужно самое минимальное понятие ассемблера.

Ответ отправлен: 10.08.2004, 15:44
Отправитель: CrackLab


Отвечает sir henry

Доброе время суток, Alex!
LPBYTE *x - перенная-указатель на тип LPByte,
LPBYTE x - переменная типа LPByte.


Ответ отправлен: 11.08.2004, 07:40
Отправитель: sir henry


Отвечает THE_PRO

Добрый день, Alex!
LPBYTE *x - тут "х" это указатель на область в памяти куда можно записывать данные типа LPBYTE

Ответ отправлен: 11.08.2004, 10:02
Отправитель: THE_PRO


 Вопрос № 1734

нужно вывисти диалог с кнопками да и нет (отмена) (не yes & cancel) причем надо задать текст в диалоге его заголовке и вывисти на нём синий восклю знак (information) среда delphi6



Вопрос отправлен: 10.08.2004, 17:15
Отправитель: menand (menand@narod.ru)

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

Отвечает samum2000


Приветствую Вас, menand!
MessageBox(form1.Handle,'Text','Caption',MB_ICONINFORMATION+MB_YESNO);
Подробнее о иконках, клавишах и возвращаемом резельтате можно узнать в файле справки.
--------------------------
-=Experts helper: testmode=-

Ответ отправлен: 13.08.2004, 13:51
Отправитель: samum2000


Отвечает CrackLab

Доброе время суток, menand!
Используйте API функцию MessageBox.
Посмотреть документацию сейчас не могу, но по памяти так:
MessageBox(0, 'This is Text', 'This is Caption', MB_OKCANCEL or MB_ICONINFORMATION);
Функция возвратит IDOK или IDCANCEL в зависимости от нажатой кнопки.

Ответ отправлен: 11.08.2004, 01:52
Отправитель: CrackLab


Отвечает sir henry

Здравствуйте, menand!
Специально для этого есть функция (если у Вас не английская версия ОС):
function MessageBox(hWnd: HWND; lpText, lpCaption: PChar; uType: UINT): Integer; stdcall;
hWnd - хэндл хозяина;
lpText - текст сообщения;
lpCaption - текст заголовка;
uType - набор параметров, где указывается какие кнопки и какая иконка. Для Вас:
MB_YESNO - "Да, Нет";
MB_YESNOCANCEL - "Да, Нет, Отмена"
MB_ICONINFORMATION - иконка "Информация".
Все параметры плюсуются.

Ответ отправлен: 11.08.2004, 07:50
Отправитель: sir henry


Отвечает THE_PRO

Добрый день, menand!
function MessageDlg(...):Integer

Ответ отправлен: 11.08.2004, 10:01
Отправитель: THE_PRO


 Вопрос № 1735

Здравствуйте...
Делаю программку, для записи разговоров через модем, типа ModemSpy, разобрался уже со всем,с командами модема, и тд,
тока вот не знаю как записывать с модема...
может есть какие то компоненты???
Все исходники/компоненты которые я находил, записывали тока с звук. карты, а мне нужно с модема, может кто то видел такое???


Приложение:


Вопрос отправлен: 10.08.2004, 22:33
Отправитель: Михаил

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

Отвечает E-terra experts

Здравствуйте, Михаил!
Система Voice Modem видит и как модем и как звуковое устройство, это можно посмотреть в диспетчере устройств/звуковые карты. Соответственно с модема звук можно читать как со звуковой карты.


Ответ отправлен: 11.08.2004, 12:36
Отправитель: E-terra experts


 Вопрос № 1736

Привет! Спасибо за помощь. У меня возник еще один вопрос:
Что означает LPBYTE *x - перенная-указатель на тип LPByte? Раз тип LPByte является указателем на тип Byte ( type LPByte = ^Byte) то получается что переменная х является указателем на тип, который сам является указателем - указатель на указатель? И еще: LPBYTE x - переменная типа LPByte (тоже взято из ответа одного из экспертов)- разве в этом случае х не является указателем на Byte? Прокомментируйте пожалуйста , а то я пока слабо разбираюсь в вопросах касательно указателей, хотелось бы поглубже разобраться. Спасибо.




Вопрос отправлен: 11.08.2004, 13:29
Отправитель: Alex

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

Отвечает THE_PRO

Добрый день, Alex!
Вы рассуждаете правильно
LPByte *x //если компилируется тогда x будет указывать
//на 32 битное число которое является указателем
//на 8 битное число.
//То есть: LPByte* -> LPByte -> Byte
//если конечно компилится

Ответ отправлен: 11.08.2004, 14:11
Отправитель: THE_PRO


Отвечает Boriss

Добрый день, Alex!
Такие вещи нужны, если захотите изменять значение не только переменной, но и указателя. А это бывает не часто

Ответ отправлен: 12.08.2004, 09:43
Отправитель: Boriss


Отвечает CrackLab

Приветствую Вас, Alex!
В общем-то комментировать нечего. Вы все правильно говорите. Главное чтобы вы еще понимали то что говорите и как это все выглядит в памяти.

Ответ отправлен: 11.08.2004, 15:10
Отправитель: CrackLab


Отвечает sir henry

Приветствую Вас, Alex!
1. Я, честно говоря, тоже не совсем понимаю, зачем нужен "указатель на указатель" :). Для этого надо смотреть Вашу программу.
2. LPBYTE x - это действительно указатель. И что тут комментировать? :)

Ответ отправлен: 12.08.2004, 05:31
Отправитель: sir henry


 Вопрос № 1737

Всем спасибо! To CrackLab - насчет размещения в памяти было бы неплохо. Благодарю за сотрудничество!



Вопрос отправлен: 11.08.2004, 17:40
Отправитель: Alex

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

Отвечает THE_PRO

Добрый день, Alex!
OK

Ответ отправлен: 12.08.2004, 09:48
Отправитель: THE_PRO


Отвечает CrackLab

Здравствуйте, Alex!
Ну если есть какие-то вопросы - можешь обращаться на ICQ 906789.

Ответ отправлен: 11.08.2004, 19:07
Отправитель: CrackLab


 Вопрос № 1738

Уважаемые эксперты, как в Delphi выводить данные из таблиц Paradox (и из других) выводить строки, отсортированные по возрастанию даты(не обрабатывая формата Дата-время)?



Вопрос отправлен: 11.08.2004, 17:49
Отправитель: Olegandr

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

Отвечает THE_PRO

Здравствуйте, Olegandr!
Компонентом TDBGrid

Ответ отправлен: 12.08.2004, 09:48
Отправитель: THE_PRO


Отвечает samum2000


Здравствуйте, Olegandr!
SQL запрос будет выглядеть примерно так:
SELECT * FROM mytable ORDER BY birthdate;
Если по убыванию, то так:
SELECT * FROM mytable ORDER BY birthdate DESC;
--------------------------
-=Experts helper: testmode=-

Ответ отправлен: 13.08.2004, 13:51
Отправитель: samum2000


Отвечает Boriss

Приветствую Вас, Olegandr!
Примеры этого описаны во всех учебниках и статьях. Видимо, что-то Вы имеете в виду особенное? Связанное с Вашей БД?

Ответ отправлен: 12.08.2004, 09:40
Отправитель: Boriss


Отвечает sir henry

Доброе время суток, Olegandr!
Специально для вывода данных из таблиц (например Парадоксовских) в Дельфи есть множество компонентов, например DBGrid. За сортировку по тем или иным полям отвечают индексы таблицы. Это независимо друг от друга.
Видимо Вы имели в виду что-то другое. Уточните пожалуйста вопрос.

Ответ отправлен: 12.08.2004, 05:36
Отправитель: sir henry


 Вопрос № 1739

Пожалуйста киньте ссылочки на электронные книжки для начинающих по Buider'у . С++ знаю.



Вопрос отправлен: 11.08.2004, 18:47
Отправитель: Paul

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

Отвечает CrackLab

Добрый день, Paul!
У меня ссылок нет, но на винчестере какие-то валяются. Могу выложить в инет. Если нужно - rusfaq собачка avtograd.ru

Ответ отправлен: 11.08.2004, 19:06
Отправитель: CrackLab


Отвечает Boriss

Здравствуйте, Paul!
http://www.bcbdev.ru/ - начни с этого

Ответ отправлен: 12.08.2004, 09:35
Отправитель: Boriss


Отвечает sir henry

Добрый день, Paul!
Вообще лучше спросить в поисковике. :)
Одна из ссылок на книжку вот:
http://anatolix.naumen.ru/bcbbooks.htm

Ответ отправлен: 12.08.2004, 05:41
Отправитель: sir henry


 Вопрос № 1740

К вопросу 1731.
Для меня важно, чтобы при нажатии на указанные клавиши клавиатуры, соответственные кнопки УТОПАЛИ(нажимались), а не реакция на KeyPress или KeyDown.



Вопрос отправлен: 12.08.2004, 10:38
Отправитель: Zaknafeyn

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

Отвечает sir henry

Приветствую Вас, Zaknafeyn!
Пример в приложении. Я сам не проверял как работает, поэтому ничего добавить не могу :).

Приложение:

Ответ отправлен: 12.08.2004, 12:30
Отправитель: sir henry


Отвечает samum2000


Здравствуйте, Zaknafeyn!
Для нажатия кнопки:
Button1.Perform( BM_SETSTATE, 1, 0 );
Для отжатия кнопки:
Button1.Perform( BM_SETSTATE, 0, 0 );
Чтобы обнаружить нажатие кнопки:
ButtonPressed := Button1.Perform( BM_GETSTATE, 0, 0 ) = 1;
--------------------------
-=Experts helper: testmode=-

Ответ отправлен: 13.08.2004, 13:52
Отправитель: samum2000


Отвечает THE_PRO

Здравствуйте, Zaknafeyn!
Рисуй сам!

Ответ отправлен: 12.08.2004, 13:50
Отправитель: THE_PRO



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

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

Программисту
Assembler (25)
C / C++ (14)
Perl (7)
Builder / Delphi (15)
Pascal (22)
Basic / VBA (6)
Java / JavaScript (8)
PHP (15)
Криптография (7)
WinAPI (13)
Радиоэлектроника (11)
Пользователю
Windows 95/98/Me (47)
Windows NT/2000/XP (58)
"Железо" (42)
Поиск информации (16)
Администратору
Windows NT/2000/XP (34)
Linux / Unix (19)
Юристу
Гражданское право (10)
Семейное право (7)
Трудовое право (9)
КоАП (6)

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




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
Rambler's TopShop Rambler's Top100
© 2001-2004 Россия, Москва. Авторское право: Калашников О.А.

http://subscribe.ru/
http://subscribe.ru/feedback/
Адрес подписки
Отписаться

В избранное