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

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


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


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

Выпуск № 289
от 14.02.2004, 02:50

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


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

THE_PRO
Статус: Профессиональный
Общий рейтинг: 140.34
URL: THE_PRO
Телефон: (994 +12) 989647
[Подробней >>]
Pawel
Статус: Опытный
Общий рейтинг: 164
[Подробней >>]
Boriss
Статус: Профессиональный
Общий рейтинг: 153.26
URL: Программирование на Паскале
[Подробней >>]
 
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 145.11
URL: Программирование
[Подробней >>]
samum2000
Статус: Опытный
Общий рейтинг: 122.58
[Подробней >>]
sir henry
Статус: Профессиональный
Общий рейтинг: 160.07
[Подробней >>]
 
Andy
Статус: Опытный
Общий рейтинг: 101.55
[Подробней >>]


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

Вопрос № 1317. Приветствую. Подскажите как узнать состояние клавиши Shift в OnClick event. В onKeyDown все вроде ра... (ответов: 4)
Вопрос № 1318. Здравствуйте! Проблема такая: на Delphi5.0 пытаюсь скрыто (sw_hide) запустить DOS приложение (с помо... (ответов: 2)
Вопрос № 1319. поправка к непомню какому вопросу Мне необходимо ПРИСВОИТЬ ехе некую иконку... (ответов: 3)
Вопрос № 1320. Доброе время суток! Назрело несколько вопросиков по Delphi: 1)Что я выигрываю//проигрываю создавая к... (ответов: 5)
Вопрос № 1322. Добрый день, срочно нужна помощь (Дельфи и Интербэйс): 1) в IB-компоненты (Дельфи7) отсутствуют Find... (ответов: 2)
Вопрос № 1323. Здравствуйте, уважаемые эксперты! У меня такой вопрос: как для текстовых файлов (*.txt) можно автома... (ответов: 3)
Вопрос № 1324. Здравствуйте эксперты ! Помогите решить следующую задачу: имеется некоторый тип type MyType = record... (ответов: 6)

Вопросов: 7, ответов: 25


 Вопрос № 1317

Приветствую.
Подскажите как узнать состояние клавиши Shift в OnClick event. В onKeyDown все вроде работает, да она не всегда срабатывает почемуто. Есть ли возможность узнать состояние специальных клавиш из любого места программы...
Благодарю..


Приложение:


Вопрос отправлен: 09.02.2004, 05:39
Отправитель: Yar

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

Отвечает THE_PRO

Здравствуйте, Yar!
InShiftState

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


Отвечает Pawel

Добрый день, Yar!
1:структура InShiftState
2: Вроде есть команда KeybordState


Ответ отправлен: 10.02.2004, 15:46
Отправитель: Pawel


Отвечает Boriss

Приветствую Вас, Yar!
BYTE keys[256];
GetKeyboardState(keys);
А вот кодов клавиш я не знаю, так как Дельфист :((, в основном, но знаю, что можно взять их на
сайте Borland X Portal: http://borland.xportal.ru


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


Отвечает Bob Johnson

Добрый день, Yar!
Есть - функция GetAsyncKeyState.

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 09.02.2004, 10:19
Отправитель: Bob Johnson


 Вопрос № 1318

Здравствуйте!
Проблема такая: на Delphi5.0 пытаюсь скрыто (sw_hide)
запустить DOS приложение (с помощью winexec, ShellExecuteEx).
Так вот в Win98 всё нормально. В W2000 - беда. Не запускается скрыто. Запускается как sw_show. При этом при запуске изображение на экране пропадает(типа как при переходе в текстовый режим, хотя в ярлыке к DOS программе у меня стоит "в окне").
Спасибо.



Вопрос отправлен: 09.02.2004, 10:23
Отправитель: Вадим

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

Отвечает Boriss

Добрый день, Вадим!
Об этом можно подробно почитать в прикольной книге Михаила Фленова "Программирование в Delphi глазами хакера", вышла в этом году, и можно найти, либо на его сайте www.vr-online.ru

Ответ отправлен: 09.02.2004, 10:45
Отправитель: Boriss


Отвечает Pawel

Доброе время суток, Вадим!
Попробуй выполнить в нормальном режиме? а потом скрыть с помощью unction ShowWindow(Wnd, sw_hide);


Ответ отправлен: 10.02.2004, 15:49
Отправитель: Pawel


 Вопрос № 1319

поправка к непомню какому вопросу
Мне необходимо ПРИСВОИТЬ ехе некую иконку



Вопрос отправлен: 09.02.2004, 13:52
Отправитель: realkomrad

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

Отвечает THE_PRO

Приветствую Вас, realkomrad!
Application.Icon!

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


Отвечает Pawel

Добрый день, realkomrad!
Я писал вроде-бы в прошлый раз.
Можно ещё с помощью Application.Icon.LoadFormFile;
Tckb ys;yj присвоить иконку чужому(нет исходников) приложению, то это совсем другая история. Могу скинуть исходник(D6), но не уверен в его работоспособности.

Ответ отправлен: 10.02.2004, 15:53
Отправитель: Pawel


Отвечает Boriss

Добрый день, realkomrad!
Таки это ж совсем элементарно, Ватсон!
Application.Icon.LoadFormFile
Application.Icon.LoadFromClipboardFormat
Application.Icon.LoadFromStream

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


 Вопрос № 1320

Доброе время суток!
Назрело несколько вопросиков по Delphi:
1)Что я выигрываю//проигрываю создавая компоненты (кнопочки, менюшечки etc.) по ходу работы программы, а не во время ее разработки.
2)Главная форма вызывает некую другую форму. Как получить от второй формы результаты ее работы(путь к файлу, ссылку на объект etc.
3)Очень хотелось бы хорошенько разобраться с конструкторами и деструкторами (где надо писать inherited, где не надо; когда надо их перегружать, когда не надо; чего они делают сами и чего//в каких случаях делать должен я).
Может книжку какую посоветуете?! Подробную, толстенную...
4)Что выгоднее//полезнее//правильнее использовать - проверки типа If fileExist; If i<>0; etc. или блоки try ... Except?
Заранее спасибо! :D



Вопрос отправлен: 10.02.2004, 12:21
Отправитель: Vitally

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

Отвечает Boriss

Приветствую Вас, Vitally!
1) Наглядность теряешь
2) ShowModal возвращает результат, а другую информацию - нет проблем, только пропиши в USES. Если спутал и хотел сказать - приложение, то можно через карман Clipboard, можно послать сообщение SendMessage
3) В Delphi все такие "мелочи" уже прописаны за Вас. А так, если Ваш класс (объект) - наследник другого, то первым делом в конструкторе нужно вызвать Inherited, а потом делать все остальное. В деструкторе Inherited должно быть последним. Книг много. Вот сегодня Inch(tm) дал ссылки (в приложении) - Обращай внимание на ObjectPascal (в Delphi 7 - Delphi)
4) все хорошо, но try ... excetpt освой. Однако, зачем лишний раз обрабатывать исключительную ситуацию ;))

Приложение:

Ответ отправлен: 10.02.2004, 13:21
Отправитель: Boriss


Отвечает Pawel

Здравствуйте, Vitally!
1: получаеш дополнительные проблемы.
2:Подключит вызываемую форму через uses и обращатся formX.Label1.Caption
4: try ... Except

Ответ отправлен: 10.02.2004, 15:56
Отправитель: Pawel


Отвечает Bob Johnson

Приветствую Вас, Vitally!
1. Выигрываешь то, что ты можешь динамических их создавать, т.е. по мере необходимости. Это значит, что меньше расходуется память и т.п. Проигрываешь в том, что их труднее создавать (нужно указывать руками положении).
2. Во второй форме создаешь переменную, а из главной ее считываешь/записываешь. Также можно сделать, если форма создается динамически.
3. Inherited - это вызов конструктора/деструктора класса-родителя (в констр. и дестр.). Их надо вызывать обязательно. В конструкторе - в начале, в деструкторе - в конце.
4. И то, и другое :)

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 10.02.2004, 14:09
Отправитель: Bob Johnson


Отвечает THE_PRO

Здравствуйте, Vitally!
1)Teryayesh vremya!
2)Sozday v klasse qlavniy formi peremennuyu i na OnClose
druqoy prisvoy yey znacheniye
3)Ishi v maqazinax(Yesli ona tolstaya eto yeshe nicheqo ne znachit)
4)Kajdiy priyem imeet svoyo mesto!

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


Отвечает samum2000

Добрый день, Vitally!
1. Если делаете все правильно - то выигрываете на освобождении ресурсов GUI и USER, проигрываете в усложнении кода. Ознакомтесь с документацией по Delphi RTTI.
2. Например, есть форма Form1 и подчиненная форма Form2. Указываете модуль в котором хранится Form2 в Uses первой формы. Теперь можно из любого места писать Form2.AnyField, где AnyField - любое поле второй формы.
3. Конструкторы стоит перекрывать, если в вашем компоненте добавляются какие-либо динамические поля, или если вы хотите установить начальные значения каким-либо полям. Да и просто когда нужно что-то сделать во время создания компонента. Inherited должно идти самой первой строчкой. Деструкторы перекрываются, если вы размещали в динамической памяти объекты при создании компоненты. Inherited должно всегда идти посленим. В остальных случаях Inherited надо вызывать по мере необходимости: например, если вы перекрыли метод Paint и не хотите, чтобы компонета отрисовывалась как предок, то не вызывайте Inherited вообще, если хотите дорисовывать что-то - вызывайте перед прорисовыванием своих элементов и т.д.
4. Имхо, это вообще три большие разницы :). Использовать IF .. Then надо! Использовать Try .. Except надо, если вы хотите уберечь пользователя от сообщений об ошибках. То есть этот блок нужен для обработки исключительных ситуаций, и if..then вам в этом деле не помошник.

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


 Вопрос № 1322

Добрый день, срочно нужна помощь (Дельфи и Интербэйс):
1) в IB-компоненты (Дельфи7) отсутствуют FindFirst, FindNext и т.д. Как можно реализовать это ? С помощью стандартных BDE-компонентов я это решил, но не уверен что это будет вполне корректно регулировать траффик в сети.
2) есть gdb-шки и в 1-ой список Товаров, в другой движение по ним(имеется ввиду накладные на приход и расход). Как
воплотить метод анализа товаров по опред.критерию, при этом не нагружая сеть и , соответсвенно не загружая клиента.
Потому как в BDE-компоненте база грузиться на локальный комп клиента, что существенно загружает сеть, а как реализовать это с помощью IB-компонентов, я пока не представляю. Жду ваши комментарии.



Вопрос отправлен: 10.02.2004, 14:54
Отправитель: jiny (zhas-trz@tarazinfo.kz)

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

Отвечает THE_PRO

Доброе время суток, jiny!
1)Sdelay zapros na SQL (IBQuery)
2)Panel komponentov "Desicion Cube"
3)Konnektimsya k baze po TCP/IP : Server:FilePath

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


Отвечает sir henry

Добрый день, jiny!
1. А Вы не ошиблись? :))
IBQuery.FindFirst;
IBQuery.FindNext;
Все это есть и никуда не девалось :).
2. Если у Вас установлен IB сервер, то реализуйте это все дело с помощью хранимых процедур. В БД они создаются командой:
CREATE PROCEDURE
------
Я бы Вам посоветовал приобрести книжку по созданию и использованию БД в Дельфи, например Фаронов "Дельфи. Руководство разработчика баз данных". Поверьте, это будет куда полезнее, чем посылать вопросы типа "Я не знаю как работать с IB пришлите свои комментарии" :)).

Ответ отправлен: 11.02.2004, 08:52
Отправитель: sir henry


 Вопрос № 1323

Здравствуйте, уважаемые эксперты!
У меня такой вопрос: как для текстовых файлов (*.txt) можно автоматически определить вид кодировки:
- win1251
- dos 866
Есть ли какое-нибудь более изящное решение, чем составить словарик на несколько десятков слов и искать эти слова в файлах.
Возложить такое на пользователя нежелательно.
Нужно чтобы программа отсылала файлы в кодировке dos 866, а если пользователи сделали свой файл в win1251, то автоматически перекодировать.
Среда разработки - Borland C++ Builder 5



Вопрос отправлен: 10.02.2004, 16:14
Отправитель: Alexandr

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

Отвечает Pawel

Добрый день, Alexandr!
Смотри пример на DELPHI.
Uhjvjprj но еффективно.

Приложение:

Ответ отправлен: 10.02.2004, 18:08
Отправитель: Pawel


Отвечает sir henry

Приветствую Вас, Alexandr!
Вот довольно интересная статейка для автоопределения кодировки. Там же есть ссылки на ассемблерный и сишный модуль:
http://ivr.webzone.ru/articles/defcod_2/

Ответ отправлен: 11.02.2004, 09:20
Отправитель: sir henry


Отвечает samum2000

Здравствуйте, Alexandr!
В своё время передо мной втала такая же задача - как определить кодировку текста. Я
воспользовался тем обстоятельством, что первые 127символов совпадают во всех кодировках,
а различается лишь расположение русских. Я сканировал весь текст буква за буквой, и если
код очередного символа был от 128 до 175 - увеличивал переменную DOS, а если от 192 до
255 - то WIN. Каких символов в итоге получалось больше, такая это и кодировка. К
сожалению, метод не стопроцентный, особенно если используется много псевдографики
(кстати, можно учитывать тот факт, что в win псевдографикой практически не пользуются).
Куском кода поделиться не получится - куда-то делся исходник, но если возникнут проблемы,
то пиши, чем смогу - помогу.
Попутного ветра!

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


 Вопрос № 1324

Здравствуйте эксперты !
Помогите решить следующую задачу:
имеется некоторый тип
type MyType = record
...
end;
имеется файл, в котором лежат n
элементов этого типа. n может меняться
другим куском программы. Я считываю n.
Вопрос: как мне создать массив этого типа
длиной n и считать туда эти элементы в run-time.
Хорошо бы кусочек кода.
Заранее спасибо.



Вопрос отправлен: 10.02.2004, 20:01
Отправитель: Радик (rdk78@nightmail.ru)

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

Отвечает THE_PRO

Добрый день, Радик!
Ispolzuy dinamicheskiye massivi:
var arr:array of ;
...
SetLength(arr,n);
...
//Delayem chto to s "n"
...
SetLength(arr,n);
...
Tolko zapomni chto yesli novoye znacheniyemenshe staroqo to
massiv otsekayetsya a yesli net noviye elementi
pribavlyayutsya v konets massiva.

Ответ отправлен: 11.02.2004, 16:36
Отправитель: THE_PRO


Отвечает Boriss

Приветствую Вас, Радик!
А какие проблемы? Динамические массивы! Пример: элементарнейший в старом стиле. Мне кажется, там все понятно :))
В "новом" все можно и читать и писать быстрее

Приложение:

Ответ отправлен: 11.02.2004, 15:07
Отправитель: Boriss


Отвечает Pawel

Доброе время суток, Радик!
На каком языке кусочик кода то?
Используй динамический массив array of MyType.
Правдо насчёт сохранения динамического массива в фаил я не уверен.
Можно в принципе писать в фаил блоками типа MyType

Ответ отправлен: 10.02.2004, 21:15
Отправитель: Pawel


Отвечает Andy

Добрый день, Радик!
const
n:integer=50;
...
var
a: array[1..n] of MyType
...
begin
...
BlockRead(var F: File; a; 50*SizeOf(MyType));
...
end.

Ответ отправлен: 11.02.2004, 06:26
Отправитель: Andy


Отвечает sir henry

Приветствую Вас, Радик!
var
arMyType: array of MyType; {безразмерный массив}
Begin
{После определения количества записей n, можно определить длинну массива}
SetLength(arMyType, n);
{И все дела :)}
End.

Ответ отправлен: 11.02.2004, 08:56
Отправитель: sir henry


Отвечает samum2000

Приветствую Вас, Радик!
Это будет самый обыкновенный динамический массив.
var
myarray=array of mytype;
f: file;
begin
...
setlength(myarray,n);
...
blockread(f,myarray,n);
...
end;
Можно еще объявить f как file of mytype и считывать по одной все записи из файла.

Ответ отправлен: 13.02.2004, 11:59
Отправитель: samum2000



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

Внимание!
Мы рекомендуем открывать рассылку в программе 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 (3)
Builder / Delphi (19)
Pascal (19)
Basic / VBA (9)
Java / JavaScript (4)
PHP (12)
Криптография (5)
WinAPI (10)
Радиоэлектроника (6)
Пользователю
Windows 95/98/Me (39)
Windows NT/2000/XP (56)
"Железо" (33)
Поиск информации (15)
Администратору
Windows NT/2000/XP (29)
Linux / Unix (10)
Юристу
Гражданское право (15)
Семейное право (10)
Трудовое право (12)
КоАП (10)

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




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


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

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

В избранное