Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Вниз

Двадцатка самых популярных вопросов.   Найти похожие ветки 

 
panov ©   (2004-03-24 18:38) [0]

Просьба Написать, какие на Ваш взгляд, самые популярные вопросы на сайте. Те, которые появляются изо дня в день.

Хочу составить список с полноценными ответами, поместить в FAQ или прямой ссылкой, и после появления таких вопросов просто посылать туда и закрывать ветку.


 
panov ©   (2004-03-24 18:38) [0]

Просьба Написать, какие на Ваш взгляд, самые популярные вопросы на сайте. Те, которые появляются изо дня в день.

Хочу составить список с полноценными ответами, поместить в FAQ или прямой ссылкой, и после появления таких вопросов просто посылать туда и закрывать ветку.


 
Игорь Шевченко ©   (2004-03-24 18:49) [1]

Код дай! :)


 
Игорь Шевченко ©   (2004-03-24 18:49) [1]

Код дай! :)


 
alless ©   (2004-03-24 18:49) [2]

Rabota s Word-om: otkritie, print, tabliti.


 
alless ©   (2004-03-24 18:49) [2]

Rabota s Word-om: otkritie, print, tabliti.


 
Да никто   (2004-03-24 18:50) [3]

Прошу "звинить", но мне показалось, что подобный вопрос я поднял минут 5 назад (18:33). Если не возражаете (как модератор), поддержим тот пост. А в принципе я не против и за этот.
Просто необходимо определиться со словом "популярный". Это достаточно критично.
С уважением


 
Да никто   (2004-03-24 18:50) [3]

Прошу "звинить", но мне показалось, что подобный вопрос я поднял минут 5 назад (18:33). Если не возражаете (как модератор), поддержим тот пост. А в принципе я не против и за этот.
Просто необходимо определиться со словом "популярный". Это достаточно критично.
С уважением


 
Adder ©   (2004-03-24 18:52) [4]

ПАМАГИТЕ!!! -))


 
Adder ©   (2004-03-24 18:52) [4]

ПАМАГИТЕ!!! -))


 
Игорь Шевченко ©   (2004-03-24 18:52) [5]

Не знаю насчет популярности, но я уже раза четыре выкладывал код "как запустить процесс от имени другого пользователя" и столько же "как избавиться от Scrollbars в MDIForm"


 
Игорь Шевченко ©   (2004-03-24 18:52) [5]

Не знаю насчет популярности, но я уже раза четыре выкладывал код "как запустить процесс от имени другого пользователя" и столько же "как избавиться от Scrollbars в MDIForm"


 
Vlad ©   (2004-03-24 18:53) [6]

По базам данных:
1) Как в выпадающий список DBComboBox вывести все значения поля из таблицы?
Ответ: для этого служит DBLookupComboBox, а за автоматическое формирование выпадающего списка отвечают его свойства ListSource, ListField

2) Как вставить чекбокс в поле DBGrid ? (Или другие вопросы по раскраске стандартного грида)
В ответ обычно привожу эту ссылку:
http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=168

По работе с Excel очень много вопросов, в частности экспорт из различных типов СУБД в Excel

если еще чего вспомню - напишу :-)


 
Vlad ©   (2004-03-24 18:53) [6]

По базам данных:
1) Как в выпадающий список DBComboBox вывести все значения поля из таблицы?
Ответ: для этого служит DBLookupComboBox, а за автоматическое формирование выпадающего списка отвечают его свойства ListSource, ListField

2) Как вставить чекбокс в поле DBGrid ? (Или другие вопросы по раскраске стандартного грида)
В ответ обычно привожу эту ссылку:
http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=168

По работе с Excel очень много вопросов, в частности экспорт из различных типов СУБД в Excel

если еще чего вспомню - напишу :-)


 
Игорь Шевченко ©   (2004-03-24 18:54) [7]

Как получить список процессов

(я не беру вопросы про то, как избавиться от Ctrl+Alt+Del)


 
Игорь Шевченко ©   (2004-03-24 18:54) [7]

Как получить список процессов

(я не беру вопросы про то, как избавиться от Ctrl+Alt+Del)


 
Vlad ©   (2004-03-24 19:03) [8]

Да, совсем забыл, очень много вопросов по СУБД InterBase, ответы на которые лежат в FAQ на www.ibase.ru, постоянно приходится отсылать на эти ресурсы:
http://www.ibase.ru/devinfo/ibfaq.htm
http://www.ibase.ru/v6/ib6faq.htm
и особенно часто на этот:
http://www.ibase.ru/devinfo/ibrusfaq.htm

Может стоит разместить эти ссылки на сайте ?


 
Vlad ©   (2004-03-24 19:03) [8]

Да, совсем забыл, очень много вопросов по СУБД InterBase, ответы на которые лежат в FAQ на www.ibase.ru, постоянно приходится отсылать на эти ресурсы:
http://www.ibase.ru/devinfo/ibfaq.htm
http://www.ibase.ru/v6/ib6faq.htm
и особенно часто на этот:
http://www.ibase.ru/devinfo/ibrusfaq.htm

Может стоит разместить эти ссылки на сайте ?


 
Adder ©   (2004-03-24 19:04) [9]

Ну...код про создание таймера на WinApi - тоже не один раз выложен...
Кодировка Win<->DOS, преобразования типов (String-PChar и т.п.),
простейшая программа на WINAPI, как уменьшить размер (гы), определение IP по имени хоста и наоборот, работа с WORD (Excel), скритпы ... тут не двадцатка получится...


 
Adder ©   (2004-03-24 19:04) [9]

Ну...код про создание таймера на WinApi - тоже не один раз выложен...
Кодировка Win<->DOS, преобразования типов (String-PChar и т.п.),
простейшая программа на WINAPI, как уменьшить размер (гы), определение IP по имени хоста и наоборот, работа с WORD (Excel), скритпы ... тут не двадцатка получится...


 
Юрий Зотов ©   (2004-03-24 19:05) [10]

динамическое создание компонента (включая назначение обработчика)
как сделать массив компонентов
почему остается невидим (не назначен Parent)
как загнать в трей
как спрятать (свернуть) по крестику (Alt-F4)
обход дерева каталогов
стринг в PChar и обратно
передать String из EXE в DLL и обратно
AV - под PChar не выделена память
символ #0 в середине текста
Synchronize аж во весь Execute
обработка в доп. потоке с обновлением ProgressBar"а в основном
как послать сообщение
как передать строку (длинные данные) из одной программы в другую
глобальные хуки (стандартная ошибка - неглобальные переменные)
как прочитать заголовок или Edit из чужого окна
как сэмулировать нажатие клавиши или кнопки мыши
пример CreateProcess (плюс WaitForSingleObject)
найти компонент по имени
назначить общий обработчик (и разрулить через Sender)


 
Юрий Зотов ©   (2004-03-24 19:05) [10]

динамическое создание компонента (включая назначение обработчика)
как сделать массив компонентов
почему остается невидим (не назначен Parent)
как загнать в трей
как спрятать (свернуть) по крестику (Alt-F4)
обход дерева каталогов
стринг в PChar и обратно
передать String из EXE в DLL и обратно
AV - под PChar не выделена память
символ #0 в середине текста
Synchronize аж во весь Execute
обработка в доп. потоке с обновлением ProgressBar"а в основном
как послать сообщение
как передать строку (длинные данные) из одной программы в другую
глобальные хуки (стандартная ошибка - неглобальные переменные)
как прочитать заголовок или Edit из чужого окна
как сэмулировать нажатие клавиши или кнопки мыши
пример CreateProcess (плюс WaitForSingleObject)
найти компонент по имени
назначить общий обработчик (и разрулить через Sender)


 
panov ©   (2004-03-24 19:08) [11]

>Да никто]

Сорри, что создал эту ветку, похожую на твою. Но вопрос там несколько другой-)


 
panov ©   (2004-03-24 19:08) [11]

>Да никто]

Сорри, что создал эту ветку, похожую на твою. Но вопрос там несколько другой-)


 
panov ©   (2004-03-24 19:14) [12]

Наверное, можно начать делать резюме:
1. Rabota s Word-om: otkritie, print, tabliti.
2. как запустить процесс от имени другого пользователя
3. как избавиться от Scrollbars в MDIForm
4. Как в выпадающий список DBComboBox вывести все значения поля из таблицы?
5.  Как вставить чекбокс в поле DBGrid ? (Или другие вопросы по раскраске стандартного грида)
6. Как получить список процессов
7. как избавиться от Ctrl+Alt+Del
8. про создание таймера на WinApi
9. Кодировка Win<->DOS
10. преобразования типов (String-PChar и т.п.),
11.  как уменьшить размер программы
12. динамическое создание компонента (включая назначение обработчика)
13. как сделать массив компонентов
14. почему остается невидим (не назначен Parent)
15. как загнать в трей
16. как спрятать (свернуть) по крестику (Alt-F4)
17. обход дерева каталогов
18. передать String из EXE в DLL и обратно
19. символ #0 в середине текста ????????
20. Synchronize аж во весь Execute
21. обработка в доп. потоке с обновлением ProgressBar"а в основном
22. как послать сообщение ?????????????
23. как передать строку (длинные данные) из одной программы в другую
24. глобальные хуки (стандартная ошибка - неглобальные переменные)
25. как прочитать заголовок или Edit из чужого окна
26. как сэмулировать нажатие клавиши или кнопки мыши
27. пример CreateProcess (плюс WaitForSingleObject)
28. найти компонент по имени
29. назначить общий обработчик (и разрулить через Sender)


 
panov ©   (2004-03-24 19:14) [12]

Наверное, можно начать делать резюме:
1. Rabota s Word-om: otkritie, print, tabliti.
2. как запустить процесс от имени другого пользователя
3. как избавиться от Scrollbars в MDIForm
4. Как в выпадающий список DBComboBox вывести все значения поля из таблицы?
5.  Как вставить чекбокс в поле DBGrid ? (Или другие вопросы по раскраске стандартного грида)
6. Как получить список процессов
7. как избавиться от Ctrl+Alt+Del
8. про создание таймера на WinApi
9. Кодировка Win<->DOS
10. преобразования типов (String-PChar и т.п.),
11.  как уменьшить размер программы
12. динамическое создание компонента (включая назначение обработчика)
13. как сделать массив компонентов
14. почему остается невидим (не назначен Parent)
15. как загнать в трей
16. как спрятать (свернуть) по крестику (Alt-F4)
17. обход дерева каталогов
18. передать String из EXE в DLL и обратно
19. символ #0 в середине текста ????????
20. Synchronize аж во весь Execute
21. обработка в доп. потоке с обновлением ProgressBar"а в основном
22. как послать сообщение ?????????????
23. как передать строку (длинные данные) из одной программы в другую
24. глобальные хуки (стандартная ошибка - неглобальные переменные)
25. как прочитать заголовок или Edit из чужого окна
26. как сэмулировать нажатие клавиши или кнопки мыши
27. пример CreateProcess (плюс WaitForSingleObject)
28. найти компонент по имени
29. назначить общий обработчик (и разрулить через Sender)


 
mrcat ©   (2004-03-24 19:17) [13]

время работы Windows
как закрыть чужое приложение из моего


 
mrcat ©   (2004-03-24 19:17) [13]

время работы Windows
как закрыть чужое приложение из моего


 
panov ©   (2004-03-24 19:17) [14]

30.  определение IP по имени хоста и наоборот


 
panov ©   (2004-03-24 19:17) [14]

30.  определение IP по имени хоста и наоборот


 
panov ©   (2004-03-24 19:18) [15]

Похоже не двадцатка, а сотня будет...


 
panov ©   (2004-03-24 19:18) [15]

Похоже не двадцатка, а сотня будет...


 
Romkin ©   (2004-03-24 19:20) [16]

Panov: ААА! Раздел Object Pascal в FAQ - не трогай, им уже занимаются.


 
Romkin ©   (2004-03-24 19:20) [16]

Panov: ААА! Раздел Object Pascal в FAQ - не трогай, им уже занимаются.


 
Юрий Зотов ©   (2004-03-24 19:21) [17]

> panov ©   (24.03.04 19:14) [12]

Имелось в виду:
19 - почему текст (файл) не грузится полностью (потому что #0)
22 - просто пример Post/SendMessage


 
Юрий Зотов ©   (2004-03-24 19:21) [17]

> panov ©   (24.03.04 19:14) [12]

Имелось в виду:
19 - почему текст (файл) не грузится полностью (потому что #0)
22 - просто пример Post/SendMessage


 
Vuk ©   (2004-03-24 19:21) [18]

proxies.pas


 
Vuk ©   (2004-03-24 19:21) [18]

proxies.pas


 
alless ©   (2004-03-24 19:24) [19]

mojno dobaviti TWebBrowser.


 
alless ©   (2004-03-24 19:24) [19]

mojno dobaviti TWebBrowser.


 
Vemer ©   (2004-03-24 19:29) [20]

По базам данных довольно часто:
- Как перенести/установить/настроить алиасы BDE на другой комп.
- Как нормализовать вид ScrollBar (90% ответ - Fetchall :)).
- Вопрос про точное хранение денежных сумм и т.п..


 
Vemer ©   (2004-03-24 19:29) [20]

По базам данных довольно часто:
- Как перенести/установить/настроить алиасы BDE на другой комп.
- Как нормализовать вид ScrollBar (90% ответ - Fetchall :)).
- Вопрос про точное хранение денежных сумм и т.п..


 
Petr V. Abramov ©   (2004-03-24 19:32) [21]

Какую СУБД выбрать? :)
Это, ессно, на хорошую статью потянет.
Но она должна быть. Чтоб не было заявлений типа "нет блокировок, потому, версионник" (хотя версионность всего лишь развязывает чтение с записью) или "вот я работаю с СУБД ZZZ, у меня база больше 10 твоих винчестеров, она самая крутая, а ты козел" :). И чтоб споры "ХХХ круче YYY" начинались не раньше пятого стакана :)


 
Petr V. Abramov ©   (2004-03-24 19:32) [21]

Какую СУБД выбрать? :)
Это, ессно, на хорошую статью потянет.
Но она должна быть. Чтоб не было заявлений типа "нет блокировок, потому, версионник" (хотя версионность всего лишь развязывает чтение с записью) или "вот я работаю с СУБД ZZZ, у меня база больше 10 твоих винчестеров, она самая крутая, а ты козел" :). И чтоб споры "ХХХ круче YYY" начинались не раньше пятого стакана :)


 
Rouse_ ©   (2004-03-24 19:40) [22]

Забыли:
Куда делись TClient/TServerSocket из Семерки :)


 
Rouse_ ©   (2004-03-24 19:40) [22]

Забыли:
Куда делись TClient/TServerSocket из Семерки :)


 
BOA_KAA ©   (2004-03-24 19:42) [23]

Как уменьшить мерцание на TImage?
Как сграбить экран?
Как распечатать рисунок?
Как отобразить рисунок очень больших размеров?
Как создать AVI из последовательности BMP?

Ну, и, ессно, Как преобзазовать JPEG<->BMP (в любой последовательности)

В медийном разделе это только верхушка айсберга :)


 
BOA_KAA ©   (2004-03-24 19:42) [23]

Как уменьшить мерцание на TImage?
Как сграбить экран?
Как распечатать рисунок?
Как отобразить рисунок очень больших размеров?
Как создать AVI из последовательности BMP?

Ну, и, ессно, Как преобзазовать JPEG<->BMP (в любой последовательности)

В медийном разделе это только верхушка айсберга :)


 
Rouse_ ©   (2004-03-24 19:43) [24]

А также:
как узнать локальный МАС (IP)
... а у удаленного компа
как отправить файл по сети
как разговаривать по сети
как отправить письмо
... письмо с вложением

(можно продолжать бесконечно)


 
Rouse_ ©   (2004-03-24 19:43) [24]

А также:
как узнать локальный МАС (IP)
... а у удаленного компа
как отправить файл по сети
как разговаривать по сети
как отправить письмо
... письмо с вложением

(можно продолжать бесконечно)


 
Rouse_ ©   (2004-03-24 19:45) [25]

О, еще вспомнил:
как установить - разорвать соединение
как запретить доступ к моему компу, но шары чтоб остались
как получить доступ к удаленному компу (там где под паролем) :))


 
Rouse_ ©   (2004-03-24 19:45) [25]

О, еще вспомнил:
как установить - разорвать соединение
как запретить доступ к моему компу, но шары чтоб остались
как получить доступ к удаленному компу (там где под паролем) :))


 
Rouse_ ©   (2004-03-24 19:48) [26]

Еще
как написать сниффер
а потом сразу и файрвол :)
различные перечисления (имени пользователей, ресурсов, доменов, рабочих групп, что там еще...)
ну и конечноже сокет на апях :))


 
Rouse_ ©   (2004-03-24 19:48) [26]

Еще
как написать сниффер
а потом сразу и файрвол :)
различные перечисления (имени пользователей, ресурсов, доменов, рабочих групп, что там еще...)
ну и конечноже сокет на апях :))


 
N169   (2004-03-24 19:50) [27]

Как выплюнуть байт в порт (LPT,COM,USB,TCP/IP) и поймать его обратно со второй ножки


 
N169   (2004-03-24 19:50) [27]

Как выплюнуть байт в порт (LPT,COM,USB,TCP/IP) и поймать его обратно со второй ножки


 
panov ©   (2004-03-24 19:50) [28]

>Rouse_ ©   (24.03.04 19:48) [26]
Разошелся-то-)

Придется твои вопросы либо отфильтровывть частично, либо взвалить их на тебя. Гы...-)


 
panov ©   (2004-03-24 19:50) [28]

>Rouse_ ©   (24.03.04 19:48) [26]
Разошелся-то-)

Придется твои вопросы либо отфильтровывть частично, либо взвалить их на тебя. Гы...-)


 
SergP ©   (2004-03-24 19:51) [29]

ИМХО самые популярные вопросы: (по крайней мере топиков по ним создано было много, что мне особо запомнилось)
1. Как запуздырить иконку в трей? :-))
2. Как сделать чтобы в D7 появились TClientSocket и TServerSocket?


 
SergP ©   (2004-03-24 19:51) [29]

ИМХО самые популярные вопросы: (по крайней мере топиков по ним создано было много, что мне особо запомнилось)
1. Как запуздырить иконку в трей? :-))
2. Как сделать чтобы в D7 появились TClientSocket и TServerSocket?


 
Vit@ly ©   (2004-03-24 19:54) [30]

2 panov ©   (24.03.04 19:50) [28]
Поддерживаю


 
Vit@ly ©   (2004-03-24 19:54) [30]

2 panov ©   (24.03.04 19:50) [28]
Поддерживаю


 
Piter ©   (2004-03-24 20:06) [31]

и после появления таких вопросов просто посылать туда и закрывать ветку

Панов, а ты сам так решил или все таки услышал мой глас в пустыни, что пора обновлять FAQ, отсылать туда народ и закрывать ветви?


 
Piter ©   (2004-03-24 20:06) [31]

и после появления таких вопросов просто посылать туда и закрывать ветку

Панов, а ты сам так решил или все таки услышал мой глас в пустыни, что пора обновлять FAQ, отсылать туда народ и закрывать ветви?


 
panov ©   (2004-03-24 20:09) [32]

>Piter ©   (24.03.04 20:06) [31]
Да идея давно витает... Не раз уже обсуждалась...
А тут вдруг сижу, работать неохота... Дай думаю займусь-)


 
panov ©   (2004-03-24 20:09) [32]

>Piter ©   (24.03.04 20:06) [31]
Да идея давно витает... Не раз уже обсуждалась...
А тут вдруг сижу, работать неохота... Дай думаю займусь-)


 
BOA_KAA ©   (2004-03-24 20:16) [33]


> panov ©   (24.03.04 20:09) [32]
А тут вдруг сижу, работать неохота...

Енто на новом месте? :)

Еще вспомнил:
Как преобразовать ... в MP3?
Как создать (полу)прозрачную форму?


 
BOA_KAA ©   (2004-03-24 20:16) [33]


> panov ©   (24.03.04 20:09) [32]
А тут вдруг сижу, работать неохота...

Енто на новом месте? :)

Еще вспомнил:
Как преобразовать ... в MP3?
Как создать (полу)прозрачную форму?


 
panov ©   (2004-03-24 20:16) [34]

>alless ©   (24.03.04 19:24) [19]
Нужно конкретный вопрос-)


 
panov ©   (2004-03-24 20:16) [34]

>alless ©   (24.03.04 19:24) [19]
Нужно конкретный вопрос-)


 
Гаврила   (2004-03-24 20:17) [35]

русские кнопки на MessageBox


 
Гаврила   (2004-03-24 20:17) [35]

русские кнопки на MessageBox


 
Гаврила   (2004-03-24 20:18) [36]

то есть на MessageDLG, пардон


 
Гаврила   (2004-03-24 20:18) [36]

то есть на MessageDLG, пардон


 
panov ©   (2004-03-24 20:22) [37]

Итак,
1. Rabota s Word-om: otkritie, print, tabliti.
2. как запустить процесс от имени другого пользователя
3. как избавиться от Scrollbars в MDIForm
4. Как в выпадающий список DBComboBox вывести все значения поля из таблицы?
5.  Как вставить чекбокс в поле DBGrid ? (Или другие вопросы по раскраске стандартного грида)
6. Как получить список процессов
7. как избавиться от Ctrl+Alt+Del
8. про создание таймера на WinApi
9. Кодировка Win<->DOS
10. преобразования типов (String-PChar и т.п.),
11.  как уменьшить размер программы
12. динамическое создание компонента (включая назначение обработчика)
13. как сделать массив компонентов
14. почему остается невидим (не назначен Parent)
15. как загнать в трей
16. как спрятать (свернуть) по крестику (Alt-F4)
17. обход дерева каталогов
18. передать String из EXE в DLL и обратно
19. Почему текст не загружается целиком в TMemo(символ #0 в середине текста)
20. Synchronize аж во весь Execute
21. обработка в доп. потоке с обновлением ProgressBar"а в основном
22. как послать сообщение окну
23. как передать строку (длинные данные) из одной программы в другую
24. глобальные хуки (стандартная ошибка - неглобальные переменные)
25. как прочитать заголовок или Edit из чужого окна
26. как сэмулировать нажатие клавиши или кнопки мыши
27. пример CreateProcess (плюс WaitForSingleObject)
28. найти компонент по имени
29. назначить общий обработчик (и разрулить через Sender)
30.  определение IP по имени хоста и наоборот
31. время работы Windows
32. как закрыть чужое приложение из моего
33. Где взять proxies.pas
34. Как перенести/установить/настроить алиасы BDE на другой комп.
35. Как нормализовать вид ScrollBar (90% ответ - Fetchall :)).
36. Вопрос про точное хранение денежных сумм и т.п..?????????
37. Куда делись TClient/TServerSocket из Семерки :)
38. Как уменьшить мерцание на TImage?
39. Как сграбить экран?
40. Как распечатать рисунок?
41. Как отобразить рисунок очень больших размеров?
42. Как создать AVI из последовательности BMP?
43. Как преобзазовать JPEG<->BMP (в любой последовательности)
44. Как узнать локальный МАС (IP) у локального и у удаленного компа
45. как отправить файл по сети
46. как разговаривать по сети
47. как отправить письмо письмо с вложением
48. как установить - разорвать соединение??????
49. Как запретить доступ к моему компу, но шары чтоб остались
50. как получить доступ к удаленному компу (там где под паролем) :))
51. Как написать сниффер, а потом сразу и файрвол :
52. различные перечисления (имени пользователей, ресурсов, доменов, рабочих групп, что там еще...)
53. ну и конечноже сокет на апях :))
54. Как выплюнуть байт в порт (LPT,COM,USB,TCP/IP) и поймать его обратно со второй ножки
55. Как преобразовать ... в MP3?
56. Как создать (полу)прозрачную форму?
57. русские кнопки на MessageDlg

Это предварительный список. Потом все будет отсортировано.


 
panov ©   (2004-03-24 20:22) [37]

Итак,
1. Rabota s Word-om: otkritie, print, tabliti.
2. как запустить процесс от имени другого пользователя
3. как избавиться от Scrollbars в MDIForm
4. Как в выпадающий список DBComboBox вывести все значения поля из таблицы?
5.  Как вставить чекбокс в поле DBGrid ? (Или другие вопросы по раскраске стандартного грида)
6. Как получить список процессов
7. как избавиться от Ctrl+Alt+Del
8. про создание таймера на WinApi
9. Кодировка Win<->DOS
10. преобразования типов (String-PChar и т.п.),
11.  как уменьшить размер программы
12. динамическое создание компонента (включая назначение обработчика)
13. как сделать массив компонентов
14. почему остается невидим (не назначен Parent)
15. как загнать в трей
16. как спрятать (свернуть) по крестику (Alt-F4)
17. обход дерева каталогов
18. передать String из EXE в DLL и обратно
19. Почему текст не загружается целиком в TMemo(символ #0 в середине текста)
20. Synchronize аж во весь Execute
21. обработка в доп. потоке с обновлением ProgressBar"а в основном
22. как послать сообщение окну
23. как передать строку (длинные данные) из одной программы в другую
24. глобальные хуки (стандартная ошибка - неглобальные переменные)
25. как прочитать заголовок или Edit из чужого окна
26. как сэмулировать нажатие клавиши или кнопки мыши
27. пример CreateProcess (плюс WaitForSingleObject)
28. найти компонент по имени
29. назначить общий обработчик (и разрулить через Sender)
30.  определение IP по имени хоста и наоборот
31. время работы Windows
32. как закрыть чужое приложение из моего
33. Где взять proxies.pas
34. Как перенести/установить/настроить алиасы BDE на другой комп.
35. Как нормализовать вид ScrollBar (90% ответ - Fetchall :)).
36. Вопрос про точное хранение денежных сумм и т.п..?????????
37. Куда делись TClient/TServerSocket из Семерки :)
38. Как уменьшить мерцание на TImage?
39. Как сграбить экран?
40. Как распечатать рисунок?
41. Как отобразить рисунок очень больших размеров?
42. Как создать AVI из последовательности BMP?
43. Как преобзазовать JPEG<->BMP (в любой последовательности)
44. Как узнать локальный МАС (IP) у локального и у удаленного компа
45. как отправить файл по сети
46. как разговаривать по сети
47. как отправить письмо письмо с вложением
48. как установить - разорвать соединение??????
49. Как запретить доступ к моему компу, но шары чтоб остались
50. как получить доступ к удаленному компу (там где под паролем) :))
51. Как написать сниффер, а потом сразу и файрвол :
52. различные перечисления (имени пользователей, ресурсов, доменов, рабочих групп, что там еще...)
53. ну и конечноже сокет на апях :))
54. Как выплюнуть байт в порт (LPT,COM,USB,TCP/IP) и поймать его обратно со второй ножки
55. Как преобразовать ... в MP3?
56. Как создать (полу)прозрачную форму?
57. русские кнопки на MessageDlg

Это предварительный список. Потом все будет отсортировано.


 
Rouse_ ©   (2004-03-24 20:27) [38]

Кстати, а как там по поводу переезда UBPFD - там также великолепная подборка...


 
Rouse_ ©   (2004-03-24 20:27) [38]

Кстати, а как там по поводу переезда UBPFD - там также великолепная подборка...


 
panov ©   (2004-03-24 20:31) [39]

>Rouse_ ©   (24.03.04 20:27) [38]

Кстати, а как там по поводу переезда UBPFD - там также великолепная подборка...

Думаю, Максим сам ответит.

У тебя аська мертвая, что-ли?


 
panov ©   (2004-03-24 20:31) [39]

>Rouse_ ©   (24.03.04 20:27) [38]

Кстати, а как там по поводу переезда UBPFD - там также великолепная подборка...

Думаю, Максим сам ответит.

У тебя аська мертвая, что-ли?


 
Игорь Шевченко ©   (2004-03-24 20:36) [40]


> как отправить письмо
> ... письмо с вложением


Может, не надо ? А то я по утрам ящик чищу...от этих писем...с вложениями...


 
Игорь Шевченко ©   (2004-03-24 20:36) [40]


> как отправить письмо
> ... письмо с вложением


Может, не надо ? А то я по утрам ящик чищу...от этих писем...с вложениями...


 
Vlad ©   (2004-03-24 20:48) [41]

Ладно, [8] проигнорировали, тогда приведу конкретные вопросы, которые встречаются весьма часто:

- Почему в InterBase функция UPPER не работает с русскими буквами ?
Ответ: для русских букв нужно использовать collate - UPPER(FIELD COLLATE PXW_CYRL)
- При выполнении запроса к таблице IB возникает ошибка "Can not transliterate..."
Ответ (90%): в параметрах IBDataBase установить lc_ctype=win1251

Довольно часто встречаются вопросы, на которые общий ответ - "никак"
(не знаю, нужно ли их включать, но они действительно частые)
- Как в в DataSet осуществить сортировку по вычисляемому полю
- Как отобразить прогресс выполнения SQL запроса


 
Vlad ©   (2004-03-24 20:48) [41]

Ладно, [8] проигнорировали, тогда приведу конкретные вопросы, которые встречаются весьма часто:

- Почему в InterBase функция UPPER не работает с русскими буквами ?
Ответ: для русских букв нужно использовать collate - UPPER(FIELD COLLATE PXW_CYRL)
- При выполнении запроса к таблице IB возникает ошибка "Can not transliterate..."
Ответ (90%): в параметрах IBDataBase установить lc_ctype=win1251

Довольно часто встречаются вопросы, на которые общий ответ - "никак"
(не знаю, нужно ли их включать, но они действительно частые)
- Как в в DataSet осуществить сортировку по вычисляемому полю
- Как отобразить прогресс выполнения SQL запроса


 
panov ©   (2004-03-24 20:50) [42]

>Vlad ©   (24.03.04 20:48) [41]

Не проигнорировали-)

Действительно нужны конкретные вопросы.
Спасибо, обязательно включу в вопросник-ответник-)


 
panov ©   (2004-03-24 20:50) [42]

>Vlad ©   (24.03.04 20:48) [41]

Не проигнорировали-)

Действительно нужны конкретные вопросы.
Спасибо, обязательно включу в вопросник-ответник-)


 
Игорь Шевченко ©   (2004-03-24 21:02) [43]


> Довольно часто встречаются вопросы, на которые общий ответ
> - "никак"
> (не знаю, нужно ли их включать, но они действительно частые)


Как скрыть программу от Ctrl+Alt+Del в WinNT,Win2k, WinXP :)


 
Игорь Шевченко ©   (2004-03-24 21:02) [43]


> Довольно часто встречаются вопросы, на которые общий ответ
> - "никак"
> (не знаю, нужно ли их включать, но они действительно частые)


Как скрыть программу от Ctrl+Alt+Del в WinNT,Win2k, WinXP :)


 
Vlad ©   (2004-03-24 21:05) [44]


> panov ©   (24.03.04 20:50) [42]

у нас вобще слабоватый FAQ по IB, а вопросов по нему чуть ли не больше половины из всех вопросов по БД. Хотелось бы решить эту проблему, либо формированием собственного FAQ"а, либо ссылкой на уже готовый, огромный FAQ на ibase.ru. (что предпочтительнее?)
На самом деле частых вопросов по базам еще довольно много, просто под вечер уже все не вспомню :-) Если вспомню что-то принципиально важное, скажу, или стукну по ICQ.


 
Vlad ©   (2004-03-24 21:05) [44]


> panov ©   (24.03.04 20:50) [42]

у нас вобще слабоватый FAQ по IB, а вопросов по нему чуть ли не больше половины из всех вопросов по БД. Хотелось бы решить эту проблему, либо формированием собственного FAQ"а, либо ссылкой на уже готовый, огромный FAQ на ibase.ru. (что предпочтительнее?)
На самом деле частых вопросов по базам еще довольно много, просто под вечер уже все не вспомню :-) Если вспомню что-то принципиально важное, скажу, или стукну по ICQ.


 
panov ©   (2004-03-24 21:10) [45]

>Игорь Шевченко ©   (24.03.04 21:02) [43]

7. как избавиться от Ctrl+Alt+Del

Что имеется ввиду?


 
panov ©   (2004-03-24 21:10) [45]

>Игорь Шевченко ©   (24.03.04 21:02) [43]

7. как избавиться от Ctrl+Alt+Del

Что имеется ввиду?


 
panov ©   (2004-03-24 21:12) [46]

>Vlad ©   (24.03.04 21:05) [44
Конечно, хотелось бы, чтобы в местном FAQ было как можно больше ответов, но негоже FAQ переписывать с одного сайта на другой-)
Другое дело, что можно в FAQ будет дать ссылки на готовые ответы.

А если ответ приведен на нашем сайте, то нужно помещать ответ в наш FAQ, конечно-)


 
panov ©   (2004-03-24 21:12) [46]

>Vlad ©   (24.03.04 21:05) [44
Конечно, хотелось бы, чтобы в местном FAQ было как можно больше ответов, но негоже FAQ переписывать с одного сайта на другой-)
Другое дело, что можно в FAQ будет дать ссылки на готовые ответы.

А если ответ приведен на нашем сайте, то нужно помещать ответ в наш FAQ, конечно-)


 
panov ©   (2004-03-24 21:17) [47]

>Vemer
Как нормализовать вид ScrollBar (90% ответ - Fetchall :)).

Имеется ввиду ScrollBar у TDBGrid?


 
panov ©   (2004-03-24 21:17) [47]

>Vemer
Как нормализовать вид ScrollBar (90% ответ - Fetchall :)).

Имеется ввиду ScrollBar у TDBGrid?


 
panov ©   (2004-03-24 21:18) [48]

>Vemer
36. Вопрос про точное хранение денежных сумм и т.п..?????????

Вот это тоже. Можно поточнее вопрос?


 
panov ©   (2004-03-24 21:18) [48]

>Vemer
36. Вопрос про точное хранение денежных сумм и т.п..?????????

Вот это тоже. Можно поточнее вопрос?


 
panov ©   (2004-03-24 21:23) [49]

>Petr V. Abramov ©   (24.03.04 19:32) [21]

Какую СУБД выбрать? :)
Это, ессно, на хорошую статью потянет.
Но она должна быть. Чтоб не было заявлений типа "нет блокировок, потому, версионник" (хотя версионность всего лишь развязывает чтение с записью) или "вот я работаю с СУБД ZZZ, у меня база больше 10 твоих винчестеров, она самая крутая, а ты козел" :). И чтоб споры "ХХХ круче YYY" начинались не раньше пятого стакана :)


На этот вопрос просто так не ответить, конечно же-)


 
panov ©   (2004-03-24 21:23) [49]

>Petr V. Abramov ©   (24.03.04 19:32) [21]

Какую СУБД выбрать? :)
Это, ессно, на хорошую статью потянет.
Но она должна быть. Чтоб не было заявлений типа "нет блокировок, потому, версионник" (хотя версионность всего лишь развязывает чтение с записью) или "вот я работаю с СУБД ZZZ, у меня база больше 10 твоих винчестеров, она самая крутая, а ты козел" :). И чтоб споры "ХХХ круче YYY" начинались не раньше пятого стакана :)


На этот вопрос просто так не ответить, конечно же-)


 
Vlad ©   (2004-03-24 21:26) [50]


> panov ©   (24.03.04 21:12) [46]


> негоже FAQ переписывать с одного сайта на другой-)

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

> >Petr V. Abramov ©   (24.03.04 19:32) [21]
>
> Какую СУБД выбрать? :)

По-моему для этого тут существует раздел "Статьи", кстати вот тут в Базах один из учасников написал оч. полезную(imho) статью для начинающих по этому поводу.
http://delphimaster.net/view/3-1079783255/


 
Vlad ©   (2004-03-24 21:26) [50]


> panov ©   (24.03.04 21:12) [46]


> негоже FAQ переписывать с одного сайта на другой-)

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

> >Petr V. Abramov ©   (24.03.04 19:32) [21]
>
> Какую СУБД выбрать? :)

По-моему для этого тут существует раздел "Статьи", кстати вот тут в Базах один из учасников написал оч. полезную(imho) статью для начинающих по этому поводу.
http://delphimaster.net/view/3-1079783255/


 
Игорь Шевченко ©   (2004-03-24 21:26) [51]

panov ©   (24.03.04 21:10)


> 7. как избавиться от Ctrl+Alt+Del
>
> Что имеется ввиду?


1) Как перехватить Ctrl+Alt+Del
2) Как скрыть программу от списка по этой комбинации
3) Как не дать снять мою программу по этим кнопкам (из Task Manager)


 
Игорь Шевченко ©   (2004-03-24 21:26) [51]

panov ©   (24.03.04 21:10)


> 7. как избавиться от Ctrl+Alt+Del
>
> Что имеется ввиду?


1) Как перехватить Ctrl+Alt+Del
2) Как скрыть программу от списка по этой комбинации
3) Как не дать снять мою программу по этим кнопкам (из Task Manager)


 
Piter ©   (2004-03-24 21:50) [52]

для русских букв нужно использовать collate - UPPER(FIELD COLLATE PXW_CYRL)

лучше бы написали как это сделать в Firebird embedded :(


 
Piter ©   (2004-03-24 21:50) [52]

для русских букв нужно использовать collate - UPPER(FIELD COLLATE PXW_CYRL)

лучше бы написали как это сделать в Firebird embedded :(


 
Miwa ©   (2004-03-24 21:52) [53]

Ну, перво-наперво: Rouse_, ты где?!?

А тут вдруг сижу, работать неохота... Дай думаю займусь-)
(C)panov

> как отправить письмо
> ... письмо с вложением
Может, не надо ? А то я по утрам ящик чищу...от этих писем...с вложениями...
(С)Игорь Шевченко

И еще хочется напомнить предложение (не помню, к сожалению, от кого), которое поступило, когда обговаривали возможность закрытия сайта: создать тематические ФАКи, где в начале сделать краткую вступительную часть хотя бы с какой-то теорией, самым минимумом. С основными направлениями для самостоятельного копания. Для тех же БД: какие есть технологии доступа; как можно создать программу, работающую с БД без БДЕ и почему моя программа будет требовать сервер БД (это мой личный перл :о) ).

Это, так сказать, пожелания тех, кто будет старательно читать Ваши ФАКи.


 
Miwa ©   (2004-03-24 21:52) [53]

Ну, перво-наперво: Rouse_, ты где?!?

А тут вдруг сижу, работать неохота... Дай думаю займусь-)
(C)panov

> как отправить письмо
> ... письмо с вложением
Может, не надо ? А то я по утрам ящик чищу...от этих писем...с вложениями...
(С)Игорь Шевченко

И еще хочется напомнить предложение (не помню, к сожалению, от кого), которое поступило, когда обговаривали возможность закрытия сайта: создать тематические ФАКи, где в начале сделать краткую вступительную часть хотя бы с какой-то теорией, самым минимумом. С основными направлениями для самостоятельного копания. Для тех же БД: какие есть технологии доступа; как можно создать программу, работающую с БД без БДЕ и почему моя программа будет требовать сервер БД (это мой личный перл :о) ).

Это, так сказать, пожелания тех, кто будет старательно читать Ваши ФАКи.


 
panov ©   (2004-03-24 21:57) [54]

>Miwa ©   (24.03.04 21:52) [53]
Спасибо за идею.

Можно будет вначале каждого раздела выкладывать список ссылок на статьи...


 
panov ©   (2004-03-24 21:57) [54]

>Miwa ©   (24.03.04 21:52) [53]
Спасибо за идею.

Можно будет вначале каждого раздела выкладывать список ссылок на статьи...


 
Rouse_ ©   (2004-03-24 21:58) [55]

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


 
Rouse_ ©   (2004-03-24 21:58) [55]

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


 
panov ©   (2004-03-24 22:01) [56]

После переработки список вопрос получился вот таким:

Как поместить иконку приложения в System Tray
Как спрятать (свернуть) приложение при нажатии на кнопку «закрыть» в области заголовка формы или при нажатии Alt-F4
Как получить список файлов в каталоге и его подкаталогах
Как перекодировать строку из кодировки OEM в ANSI и обратно.
Как выполнить длительную(по времени) процедуру в дополнительном потоке и одновременно обновлять TProgressBar в основном потоке.
Как запустить другую программу и дождаться ее окончания.
Как запустить процесс от имени другого пользователя
Почему во время выполнения дополнительного потока не обновляются объекты на основной форме (Synchronize аж во весь Execute)
Как создать таймер средствами Win32Api
Как получить список процессов
Как преобразовать тип String к Pchar и обратно
Как уменьшить размер программы
Динамическое создание объектов, включая создание массива объектов и назначения единой процедуры обработки
Почему при динамическом создании объект остается невидимым.
Как найти компонент по имени.
Как послать сообщение окну.
Как эмулировать нажатие клавиши или кнопки мыши.
Как прочитать заголовок или Edit из чужого окна
Как передать строку (длинные данные) из одной программы в другую
Как закрыть чужое приложение из моего
Как узнать время работы Windows после последней загрузки системы
Как перехватить Ctrl+Alt+Del
Как скрыть программу от Ctrl+Alt+Del
Как не дать снять мою программу из Task Manager
Как передать String из EXE в DLL и обратно
Почему текст не загружается целиком в TMemo(символ #0 в середине текста)
Глобальные хуки (стандартная ошибка - неглобальные переменные)
Как избавиться от Scrollbars в MDIForm

Как перенести/установить/настроить алиасы BDE на другой компьютер
Как нормализовать вид ScrollBar (90% ответ - Fetchall :)).
Вопрос про точное хранение денежных сумм и т.п..
Как в выпадающий список DBComboBox вывести все значения поля из таблицы?
Как вставить TCheckBox в поле DBGrid ?
Как раскрасить отдельные строки в TDBGgrid

Определение IP по DNS-имени хоста и наоборот
Где взять proxies.pas
Куда делись TClientSocket/TServerSocket из Delphi7 и где их взять
Как узнать локальный МАС (IP) локального и удаленного компьютера
Как отправить файл по сети на другой компьютер
Как разговаривать по сети
Как отправить письмо с вложением
Как установить - разорвать соединение DialUp
Как запретить доступ к моему компу, но чтоб остались общие ресурсы
Как получить доступ к общим ресурсам удаленного компьютера, зная пароль
Как самому написать Sniffer
Как самому написать Proxy
Как самому написать FireWall
Как получить в локальной сети список:
- имен пользователей
- ресурсов
- доменов
- рабочих групп,
Как работать с низкоуровневыми сокетами WinSock

Как уменьшить мерцание на TImage?
Как сграбить экран?
Как распечатать рисунок?
Как отобразить рисунок очень больших размеров?
Как создать AVI из последовательности BMP?
Как преобразовать JPEG<->BMP
Как преобразовать ... в MP3?
Как создать (полу)прозрачную форму?

Как записать байт в порт (LPT,COM,USB,TCP/IP) и поймать его обратно со второй ножки.
Как русифицировать кнопки на стандартном окне MessageDlg

Как в Word:
- открыть документ
- напечатать документ
- работать с таблицами


 
panov ©   (2004-03-24 22:01) [56]

После переработки список вопрос получился вот таким:

Как поместить иконку приложения в System Tray
Как спрятать (свернуть) приложение при нажатии на кнопку «закрыть» в области заголовка формы или при нажатии Alt-F4
Как получить список файлов в каталоге и его подкаталогах
Как перекодировать строку из кодировки OEM в ANSI и обратно.
Как выполнить длительную(по времени) процедуру в дополнительном потоке и одновременно обновлять TProgressBar в основном потоке.
Как запустить другую программу и дождаться ее окончания.
Как запустить процесс от имени другого пользователя
Почему во время выполнения дополнительного потока не обновляются объекты на основной форме (Synchronize аж во весь Execute)
Как создать таймер средствами Win32Api
Как получить список процессов
Как преобразовать тип String к Pchar и обратно
Как уменьшить размер программы
Динамическое создание объектов, включая создание массива объектов и назначения единой процедуры обработки
Почему при динамическом создании объект остается невидимым.
Как найти компонент по имени.
Как послать сообщение окну.
Как эмулировать нажатие клавиши или кнопки мыши.
Как прочитать заголовок или Edit из чужого окна
Как передать строку (длинные данные) из одной программы в другую
Как закрыть чужое приложение из моего
Как узнать время работы Windows после последней загрузки системы
Как перехватить Ctrl+Alt+Del
Как скрыть программу от Ctrl+Alt+Del
Как не дать снять мою программу из Task Manager
Как передать String из EXE в DLL и обратно
Почему текст не загружается целиком в TMemo(символ #0 в середине текста)
Глобальные хуки (стандартная ошибка - неглобальные переменные)
Как избавиться от Scrollbars в MDIForm

Как перенести/установить/настроить алиасы BDE на другой компьютер
Как нормализовать вид ScrollBar (90% ответ - Fetchall :)).
Вопрос про точное хранение денежных сумм и т.п..
Как в выпадающий список DBComboBox вывести все значения поля из таблицы?
Как вставить TCheckBox в поле DBGrid ?
Как раскрасить отдельные строки в TDBGgrid

Определение IP по DNS-имени хоста и наоборот
Где взять proxies.pas
Куда делись TClientSocket/TServerSocket из Delphi7 и где их взять
Как узнать локальный МАС (IP) локального и удаленного компьютера
Как отправить файл по сети на другой компьютер
Как разговаривать по сети
Как отправить письмо с вложением
Как установить - разорвать соединение DialUp
Как запретить доступ к моему компу, но чтоб остались общие ресурсы
Как получить доступ к общим ресурсам удаленного компьютера, зная пароль
Как самому написать Sniffer
Как самому написать Proxy
Как самому написать FireWall
Как получить в локальной сети список:
- имен пользователей
- ресурсов
- доменов
- рабочих групп,
Как работать с низкоуровневыми сокетами WinSock

Как уменьшить мерцание на TImage?
Как сграбить экран?
Как распечатать рисунок?
Как отобразить рисунок очень больших размеров?
Как создать AVI из последовательности BMP?
Как преобразовать JPEG<->BMP
Как преобразовать ... в MP3?
Как создать (полу)прозрачную форму?

Как записать байт в порт (LPT,COM,USB,TCP/IP) и поймать его обратно со второй ножки.
Как русифицировать кнопки на стандартном окне MessageDlg

Как в Word:
- открыть документ
- напечатать документ
- работать с таблицами


 
panov ©   (2004-03-24 22:05) [57]

Всего пока 60 вопросов.


 
panov ©   (2004-03-24 22:05) [57]

Всего пока 60 вопросов.


 
Rouse_ ©   (2004-03-24 22:13) [58]

> [40] Игорь Шевченко ©   (24.03.04 20:36)
>
> > как отправить письмо
> > ... письмо с вложением

Всеже эта задача часто встречается в повседневной работе :)
К примеру, рассылка обновлений зарегистрированным пользователям...
Хотя не спорю данный прием можно использовать и так как ты сказал, да и для всяких остальных непотребных дел...
Но всеравно, думаю в фак стоит его включить...


 
Rouse_ ©   (2004-03-24 22:13) [58]

> [40] Игорь Шевченко ©   (24.03.04 20:36)
>
> > как отправить письмо
> > ... письмо с вложением

Всеже эта задача часто встречается в повседневной работе :)
К примеру, рассылка обновлений зарегистрированным пользователям...
Хотя не спорю данный прием можно использовать и так как ты сказал, да и для всяких остальных непотребных дел...
Но всеравно, думаю в фак стоит его включить...


 
Rouse_ ©   (2004-03-24 22:17) [59]

> Как в Word:
> - открыть документ
> - напечатать документ
> - работать с таблицами

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


 
Rouse_ ©   (2004-03-24 22:17) [59]

> Как в Word:
> - открыть документ
> - напечатать документ
> - работать с таблицами

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


 
Игорь Шевченко ©   (2004-03-24 22:19) [60]


> Хотя не спорю данный прием можно использовать и так как
> ты сказал, да и для всяких остальных непотребных дел...
>


Вот поэтому я и против.
> Но всеравно, думаю в фак стоит его включить...
> » удаление...


Равно как и против включения в FAQ вопросов по скрытию приложений. Нефиг пакостников плодить.


 
Игорь Шевченко ©   (2004-03-24 22:19) [60]


> Хотя не спорю данный прием можно использовать и так как
> ты сказал, да и для всяких остальных непотребных дел...
>


Вот поэтому я и против.
> Но всеравно, думаю в фак стоит его включить...
> » удаление...


Равно как и против включения в FAQ вопросов по скрытию приложений. Нефиг пакостников плодить.


 
Rouse_ ©   (2004-03-24 22:23) [61]

> [60] Игорь Шевченко ©   (24.03.04 22:19)
Ну... ну не буду спорить, с одной стороны вроде как и нужно, с другой действительно данные приемы обычно применяются не для полезных дел... в любом случае решать будет Саша Панов...
Короче я воздержусь от спора...


 
Rouse_ ©   (2004-03-24 22:23) [61]

> [60] Игорь Шевченко ©   (24.03.04 22:19)
Ну... ну не буду спорить, с одной стороны вроде как и нужно, с другой действительно данные приемы обычно применяются не для полезных дел... в любом случае решать будет Саша Панов...
Короче я воздержусь от спора...


 
имя   (2004-03-24 22:29) [62]

Удалено модератором
Примечание: Kamerad, тебе весело?


 
имя   (2004-03-24 22:29) [62]

Удалено модератором
Примечание: Kamerad, тебе весело?


 
Anatoly Podgoretsky ©   (2004-03-24 22:30) [63]

Вопрос, Помогите, Не работает, Help - это конечно не подходит для чаво, но зато оно объединяется одним общим, как оформлять вопросы.


 
Anatoly Podgoretsky ©   (2004-03-24 22:30) [63]

Вопрос, Помогите, Не работает, Help - это конечно не подходит для чаво, но зато оно объединяется одним общим, как оформлять вопросы.


 
Verg ©   (2004-03-24 22:30) [64]


> Как работать с низкоуровневыми сокетами WinSock


Это вопрос не для ФАКи.
Как вы представляете себе ответ на такой вопрос?


 
Verg ©   (2004-03-24 22:30) [64]


> Как работать с низкоуровневыми сокетами WinSock


Это вопрос не для ФАКи.
Как вы представляете себе ответ на такой вопрос?


 
Имя   (2004-03-24 22:30) [65]

Удалено модератором
Примечание: Дубль...


 
Имя   (2004-03-24 22:30) [65]

Удалено модератором
Примечание: Дубль...


 
Имя   (2004-03-24 22:31) [66]

Удалено модератором
Примечание: Дубль...


 
Имя   (2004-03-24 22:31) [66]

Удалено модератором
Примечание: Дубль...


 
Имя   (2004-03-24 22:31) [67]

Удалено модератором
Примечание: Дубль


 
Имя   (2004-03-24 22:31) [67]

Удалено модератором
Примечание: Дубль


 
Имя   (2004-03-24 22:32) [68]

Удалено модератором
Примечание: Дубль


 
Имя   (2004-03-24 22:32) [68]

Удалено модератором
Примечание: Дубль


 
Verg ©   (2004-03-24 22:34) [69]

Сделайте сетевой репозитарий CVS для списка вопросов, а то уже... :)


 
Verg ©   (2004-03-24 22:34) [69]

Сделайте сетевой репозитарий CVS для списка вопросов, а то уже... :)


 
Игорь Шевченко ©   (2004-03-24 22:35) [70]

Anatoly Podgoretsky ©   (24.03.04 22:30)

И ссылку http://ln.com.ua/~openxs/articles/smart-questions-ru.html крупными буквами :)


 
Игорь Шевченко ©   (2004-03-24 22:35) [70]

Anatoly Podgoretsky ©   (24.03.04 22:30)

И ссылку http://ln.com.ua/~openxs/articles/smart-questions-ru.html крупными буквами :)


 
Rouse_ ©   (2004-03-24 22:36) [71]

> [64] Verg ©   (24.03.04 22:30)
Андрей, имеется ввиду привести пример клиентского хотябы сокета (ну простейшую хотябы отправку строки)


 
Rouse_ ©   (2004-03-24 22:36) [71]

> [64] Verg ©   (24.03.04 22:30)
Андрей, имеется ввиду привести пример клиентского хотябы сокета (ну простейшую хотябы отправку строки)


 
blackman ©   (2004-03-24 22:39) [72]

Неплохо бы и поиск сделать от Yandex"а
В Королевстве есть. Все же лучше всех прочих.
Возможно, что после этого и часть вопросов отпадет сама.


 
blackman ©   (2004-03-24 22:39) [72]

Неплохо бы и поиск сделать от Yandex"а
В Королевстве есть. Все же лучше всех прочих.
Возможно, что после этого и часть вопросов отпадет сама.


 
panov ©   (2004-03-24 22:40) [73]

>blackman ©   (24.03.04 22:39) [72]

Неплохо бы и поиск сделать от Yandex"а
В Королевстве есть. Все же лучше всех прочих.
Возможно, что после этого и часть вопросов отпадет сама.


Так надо еще и уметь искать-)


 
panov ©   (2004-03-24 22:40) [73]

>blackman ©   (24.03.04 22:39) [72]

Неплохо бы и поиск сделать от Yandex"а
В Королевстве есть. Все же лучше всех прочих.
Возможно, что после этого и часть вопросов отпадет сама.


Так надо еще и уметь искать-)


 
Thor ©   (2004-03-24 22:42) [74]

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


 
Thor ©   (2004-03-24 22:42) [74]

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


 
panov ©   (2004-03-24 22:42) [75]

>Thor ©   (24.03.04 22:42) [74]

точно.
Надо попробовать тоже включить в TOP-100-)


 
panov ©   (2004-03-24 22:42) [75]

>Thor ©   (24.03.04 22:42) [74]

точно.
Надо попробовать тоже включить в TOP-100-)


 
Ig ©   (2004-03-24 22:43) [76]

И потом все будут говорить: Delphimaster - это большой FAQ архив(таких сайтов и так много), простите а где же будет форум :(
Пардон если, что не так, прошу на.. не посылать :)


 
Ig ©   (2004-03-24 22:43) [76]

И потом все будут говорить: Delphimaster - это большой FAQ архив(таких сайтов и так много), простите а где же будет форум :(
Пардон если, что не так, прошу на.. не посылать :)


 
Thor ©   (2004-03-24 22:47) [77]


> panov ©   (24.03.04 22:42) [75]

будь я на вашем месте, создал бы в каждом форуме свой фак.
и чтобы там были не ответы на все вопросы, а, положим, коротенько и в общих деталях, но со ссылками по темам.
и поместил бы ссылку БОЛЬШИМИ ярко-красными буквами в самом начале всех страниц.
кстати, может как на forum.ixbt.com сделать? там прежде чем запостить новую тему, нужно согласиться, что ты фак прочитал и с правилами ознакомился. как-никак, но напоминание лишнее.
а вот в самой теме чтобы можно было постить как сейчас.


 
Thor ©   (2004-03-24 22:47) [77]


> panov ©   (24.03.04 22:42) [75]

будь я на вашем месте, создал бы в каждом форуме свой фак.
и чтобы там были не ответы на все вопросы, а, положим, коротенько и в общих деталях, но со ссылками по темам.
и поместил бы ссылку БОЛЬШИМИ ярко-красными буквами в самом начале всех страниц.
кстати, может как на forum.ixbt.com сделать? там прежде чем запостить новую тему, нужно согласиться, что ты фак прочитал и с правилами ознакомился. как-никак, но напоминание лишнее.
а вот в самой теме чтобы можно было постить как сейчас.


 
Thor ©   (2004-03-24 22:49) [78]

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


 
Thor ©   (2004-03-24 22:49) [78]

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


 
panov ©   (2004-03-24 22:52) [79]

>Thor ©   (24.03.04 22:49) [78]
Хорошее предложение на ссылку в FAQ из каждого форума...


 
panov ©   (2004-03-24 22:52) [79]

>Thor ©   (24.03.04 22:49) [78]
Хорошее предложение на ссылку в FAQ из каждого форума...


 
Rouse_ ©   (2004-03-24 22:54) [80]

Кстати, дельные советы Thor говорит ИМХО


 
Rouse_ ©   (2004-03-24 22:54) [80]

Кстати, дельные советы Thor говорит ИМХО


 
Thor ©   (2004-03-24 22:56) [81]


> Ig ©   (24.03.04 22:43) [76]

фак прочитать это одно, а вот понять что там описано - это другое.
ведь не все сразу понимают, например какие модули нужно подключить и т.п.
к тому же есть много нестандартных вопросов или вопросов типа "посмотрите код, почему он не работает?". на этот же вопрос в факе ответа не будет.
а форум...
форум жил, форум жив, форум будет жить! (особенно "Потрепаться" ;)


 
Thor ©   (2004-03-24 22:56) [81]


> Ig ©   (24.03.04 22:43) [76]

фак прочитать это одно, а вот понять что там описано - это другое.
ведь не все сразу понимают, например какие модули нужно подключить и т.п.
к тому же есть много нестандартных вопросов или вопросов типа "посмотрите код, почему он не работает?". на этот же вопрос в факе ответа не будет.
а форум...
форум жил, форум жив, форум будет жить! (особенно "Потрепаться" ;)


 
panov ©   (2004-03-24 22:57) [82]

Еще забыл 3 вопроса:
1. Почему удалили мою ветку
2. Почему удалили мое сообщение
3. Почему закрыли ветку


 
panov ©   (2004-03-24 22:57) [82]

Еще забыл 3 вопроса:
1. Почему удалили мою ветку
2. Почему удалили мое сообщение
3. Почему закрыли ветку


 
Thor ©   (2004-03-24 22:58) [83]


> panov ©   (24.03.04 22:57) [82]

а это не в фак нужно, а на каждой страничке.
понимаю, что трудно все впихнуть, но покрупнее надо написать о правилах.


 
Thor ©   (2004-03-24 22:58) [83]


> panov ©   (24.03.04 22:57) [82]

а это не в фак нужно, а на каждой страничке.
понимаю, что трудно все впихнуть, но покрупнее надо написать о правилах.


 
Thor ©   (2004-03-24 23:00) [84]

да и добавить бы кнопочку "закрыть обсуждение"
а то флуду очень много не по теме.
хотя, это уже дело вкуса.


 
Thor ©   (2004-03-24 23:00) [84]

да и добавить бы кнопочку "закрыть обсуждение"
а то флуду очень много не по теме.
хотя, это уже дело вкуса.


 
Thor ©   (2004-03-24 23:08) [85]

еще один вопрос.
немного экзотический, но все же.
какими средствами писать под КПК и иже с ними.


 
Thor ©   (2004-03-24 23:08) [85]

еще один вопрос.
немного экзотический, но все же.
какими средствами писать под КПК и иже с ними.


 
Rouse_ ©   (2004-03-25 00:23) [86]

Во, забыли тоже: как создать директорию/несколько директорий вложенных друг в друга


 
Rouse_ ©   (2004-03-25 00:23) [86]

Во, забыли тоже: как создать директорию/несколько директорий вложенных друг в друга


 
uw ©   (2004-03-25 00:51) [87]

100. Где взять денег для поддержки Потрепалова?


 
uw ©   (2004-03-25 00:51) [87]

100. Где взять денег для поддержки Потрепалова?


 
konstantinov ©   (2004-03-25 01:37) [88]

Я вот тут покопался в своих архивах и вот какие вопросы мне кажуться интересными для FAQ( извините если повторюсь ).

Запрет запуска второй копии программы
Вращение текста
Информация о системе ( серийный номер винчестера и пр. )
Перехват сообщений ( хуки )
Медиа - микшер, джостик, WaveOut, WaveIn,
работа с буфером обмена
работа с корзиной
Чтение ( запись ) BlockWrite ( ошибка при записи указателя вместо данных )
Хранитель экрана
Как удалить / переместить ехе RunTime
Ресурсы приложения ( ~ размеры ехе )
Защита программ от взлома
Installer
Цветной стринг грид
Раскладка клавиатуры
Запуск приложения с параметрами
Автозапуск
Зарегистрировать расширение
Выключить ПК
хранение данных в приложении
создание Wav файла


 
konstantinov ©   (2004-03-25 01:37) [88]

Я вот тут покопался в своих архивах и вот какие вопросы мне кажуться интересными для FAQ( извините если повторюсь ).

Запрет запуска второй копии программы
Вращение текста
Информация о системе ( серийный номер винчестера и пр. )
Перехват сообщений ( хуки )
Медиа - микшер, джостик, WaveOut, WaveIn,
работа с буфером обмена
работа с корзиной
Чтение ( запись ) BlockWrite ( ошибка при записи указателя вместо данных )
Хранитель экрана
Как удалить / переместить ехе RunTime
Ресурсы приложения ( ~ размеры ехе )
Защита программ от взлома
Installer
Цветной стринг грид
Раскладка клавиатуры
Запуск приложения с параметрами
Автозапуск
Зарегистрировать расширение
Выключить ПК
хранение данных в приложении
создание Wav файла


 
Игорь Шевченко ©   (2004-03-25 01:43) [89]


> Как удалить / переместить ехе RunTime


Это нафига ?


> Защита программ от взлома


Это как ?


> Выключить ПК


Пуск|Завершение работы...


> хранение данных в приложении


Включая модификацию ?


 
Игорь Шевченко ©   (2004-03-25 01:43) [89]


> Как удалить / переместить ехе RunTime


Это нафига ?


> Защита программ от взлома


Это как ?


> Выключить ПК


Пуск|Завершение работы...


> хранение данных в приложении


Включая модификацию ?


 
dr Tr0jan ©   (2004-03-25 01:43) [90]

Народ, еще забыли:
Как перезагрузить Вынь по сети?


 
dr Tr0jan ©   (2004-03-25 01:43) [90]

Народ, еще забыли:
Как перезагрузить Вынь по сети?


 
mfender ©   (2004-03-25 01:44) [91]

Очень часто вопросы про дату/время задают, например, как вычислить разницу во времени и т.п.


 
mfender ©   (2004-03-25 01:44) [91]

Очень часто вопросы про дату/время задают, например, как вычислить разницу во времени и т.п.


 
Игорь Шевченко ©   (2004-03-25 01:48) [92]

dr Tr0jan ©   (25.03.04 01:43)


> Как перезагрузить Вынь по сети?

Объясни целесообразость включения данного вопроса в список "Часто задаваемых вопросов" ?


 
Игорь Шевченко ©   (2004-03-25 01:48) [92]

dr Tr0jan ©   (25.03.04 01:43)


> Как перезагрузить Вынь по сети?

Объясни целесообразость включения данного вопроса в список "Часто задаваемых вопросов" ?


 
имя   (2004-03-25 01:54) [93]

Удалено модератором


 
имя   (2004-03-25 01:54) [93]

Удалено модератором


 
имя   (2004-03-25 02:00) [94]

Удалено модератором


 
имя   (2004-03-25 02:00) [94]

Удалено модератором


 
dr Tr0jan ©   (2004-03-25 02:03) [95]

Народ, аможет вообще FAQ прикрыть, и отправлять всех на DelphiWorld... Вот только, там как-то не очень все систематизировано.

2 Игорь Шевченко ©   (25.03.04 01:48) [92]:

> Объясни целесообразость включения данного вопроса в список "Часто задаваемых вопросов" ?

Но это все же чатозадаваемый вопрос, или кто-то хочет поспорить. "Все генитальное - просто" not (c), тогда пусть будет моим
В WinXP вызываем shutdown.exe с параметрами, и все пироги.


 
dr Tr0jan ©   (2004-03-25 02:03) [95]

Народ, аможет вообще FAQ прикрыть, и отправлять всех на DelphiWorld... Вот только, там как-то не очень все систематизировано.

2 Игорь Шевченко ©   (25.03.04 01:48) [92]:

> Объясни целесообразость включения данного вопроса в список "Часто задаваемых вопросов" ?

Но это все же чатозадаваемый вопрос, или кто-то хочет поспорить. "Все генитальное - просто" not (c), тогда пусть будет моим
В WinXP вызываем shutdown.exe с параметрами, и все пироги.


 
RealRascal ©   (2004-03-25 05:43) [96]


> Как перехватить Ctrl+Alt+Del
> Как скрыть программу от Ctrl+Alt+Del

Обычно встречается в сочетании с Альт-Таб и Контрол-Ескейп


 
RealRascal ©   (2004-03-25 05:43) [96]


> Как перехватить Ctrl+Alt+Del
> Как скрыть программу от Ctrl+Alt+Del

Обычно встречается в сочетании с Альт-Таб и Контрол-Ескейп


 
TUser ©   (2004-03-25 06:38) [97]

Вот делаю свой сайт, думаю туда поместить что-то типа факи. Список составил себе примерно такой:
1. Как упихать прогу в трей.
2. Динамическое создание компонентов. Добавление пунктов в меню, пайджей, нодов и т.д.
3. Сайты, факи, книги и пр. Чего читать, где брать инфу.
4. Создание нестандартной формы (форма, цвет, градиенты, прозрачность).
5. Как сделать прогу невидимой .
5. Обмен инфой между прогами - сообщения, параметры ком. строки, файлы, отображенные в память, вопросы синхронизации.
6. Панель задач.
7. Сохранение настроек программы. Разграничения для пользователей.
8. Шифрование, зипование.
9. Работа с регулярными выражениями - TRegExpr.
...
14. Настройка системы через реестр - обои, разрешение экрана, регистрация проги в реестре, плугины к эксплореру.
...
18. Раскладка клавиатуры.
...
21. Private, public, published и пр. - ООП в Delphi
22. Запуск и остановка процесса.
23. Потоки.
...
25. Компоненты, которые часто ищут - CheckTreeView, панель, как в аутглюке ...
26. Вольное рассуждение о том, почему первая программа - ото всегда ось.
27. Подсветка синтаксиса.
28. Заполнение веб-форм.
29. Таймер, даты, время, расписание работы программы.
...
31. SelStart и пр. - работа с текстом. Ввод в Edit"е с ограничениями.
32. Как встроить что-нибудь куда-нибудь.
33. Учимся задавать вопросы. Ака перловник.
...
39. Хуки, кони и контроль над системой.
40. Использование файлов ресурса.
41. Какой язык лучше (сугубо частное мнение).
...
43. Вторая копия программы.
44. FindFirst и рекурсивный обход папок.
45. Как открыть прогу и дождаться завершения ее работы.
46. Консоль.
47. Как определить, на каком элементе списка, ноде и т.д. произошел клик.
...
49. Как обойти компоненты в цикле, Tag, FindComponet.
50. Как вывести splash-форму.
51. Как перетаскивать форму за любое место.
...

Вопросы написаны не слишком коррекстно, но просто писал для себя. Надеюсь понятно будет. Из списка удалил то, что к Delphi не имеет прямого отношения.
Немного порассуждав на эту тему, я пришел к выводу, что просто написание еще одной факи ничего не дает. Факов уже и так есть достаточно (для того, кто их читает). Поэтому я решил основное внимание уделать не собственно даванию одного простого и маленького ответа на вопрос, а описывать как можно подробнее и понятнее все варианты. Не должно быть в ответе на вопрос (1) написано "SHNOTIFYICON" или просто кусок кода. Короче, поэтому пишется все долго. Но когда напишу, готов дать тексты для такого дела.

PS. Я где-то здесь уже высказывал мысль, что неплохо бы в скипт, который руководит форумом, добавить код, который будет анализировать посты. Еслди там встречаются определенные слова, например "раскладк", значит очень верноятно, что речь идет о том, как поменять раскладку клавы. Тогда надо генерить автоматисеский ответ, типа
  "Автоматический ответот сайта ""Мастера Делфи""
   Судя по Вашему вопросу, возможно, что Вам требуется поменять
   раскладку клавиатуры. Подробное описание, как эо сделать
   можно прочитать здесь ...
   Извините, если оффтоп.

   С уважением, админы сайта."


 
TUser ©   (2004-03-25 06:38) [97]

Вот делаю свой сайт, думаю туда поместить что-то типа факи. Список составил себе примерно такой:
1. Как упихать прогу в трей.
2. Динамическое создание компонентов. Добавление пунктов в меню, пайджей, нодов и т.д.
3. Сайты, факи, книги и пр. Чего читать, где брать инфу.
4. Создание нестандартной формы (форма, цвет, градиенты, прозрачность).
5. Как сделать прогу невидимой .
5. Обмен инфой между прогами - сообщения, параметры ком. строки, файлы, отображенные в память, вопросы синхронизации.
6. Панель задач.
7. Сохранение настроек программы. Разграничения для пользователей.
8. Шифрование, зипование.
9. Работа с регулярными выражениями - TRegExpr.
...
14. Настройка системы через реестр - обои, разрешение экрана, регистрация проги в реестре, плугины к эксплореру.
...
18. Раскладка клавиатуры.
...
21. Private, public, published и пр. - ООП в Delphi
22. Запуск и остановка процесса.
23. Потоки.
...
25. Компоненты, которые часто ищут - CheckTreeView, панель, как в аутглюке ...
26. Вольное рассуждение о том, почему первая программа - ото всегда ось.
27. Подсветка синтаксиса.
28. Заполнение веб-форм.
29. Таймер, даты, время, расписание работы программы.
...
31. SelStart и пр. - работа с текстом. Ввод в Edit"е с ограничениями.
32. Как встроить что-нибудь куда-нибудь.
33. Учимся задавать вопросы. Ака перловник.
...
39. Хуки, кони и контроль над системой.
40. Использование файлов ресурса.
41. Какой язык лучше (сугубо частное мнение).
...
43. Вторая копия программы.
44. FindFirst и рекурсивный обход папок.
45. Как открыть прогу и дождаться завершения ее работы.
46. Консоль.
47. Как определить, на каком элементе списка, ноде и т.д. произошел клик.
...
49. Как обойти компоненты в цикле, Tag, FindComponet.
50. Как вывести splash-форму.
51. Как перетаскивать форму за любое место.
...

Вопросы написаны не слишком коррекстно, но просто писал для себя. Надеюсь понятно будет. Из списка удалил то, что к Delphi не имеет прямого отношения.
Немного порассуждав на эту тему, я пришел к выводу, что просто написание еще одной факи ничего не дает. Факов уже и так есть достаточно (для того, кто их читает). Поэтому я решил основное внимание уделать не собственно даванию одного простого и маленького ответа на вопрос, а описывать как можно подробнее и понятнее все варианты. Не должно быть в ответе на вопрос (1) написано "SHNOTIFYICON" или просто кусок кода. Короче, поэтому пишется все долго. Но когда напишу, готов дать тексты для такого дела.

PS. Я где-то здесь уже высказывал мысль, что неплохо бы в скипт, который руководит форумом, добавить код, который будет анализировать посты. Еслди там встречаются определенные слова, например "раскладк", значит очень верноятно, что речь идет о том, как поменять раскладку клавы. Тогда надо генерить автоматисеский ответ, типа
  "Автоматический ответот сайта ""Мастера Делфи""
   Судя по Вашему вопросу, возможно, что Вам требуется поменять
   раскладку клавиатуры. Подробное описание, как эо сделать
   можно прочитать здесь ...
   Извините, если оффтоп.

   С уважением, админы сайта."


 
Alex Konshin ©   (2004-03-25 07:28) [98]

Ну могу добавить "мой" вопрос:
Как определить серийный номер диска (винчестера)? Ну и заодно - сетевой карты, видеокарты и материнской платы. Из той же серии привязка компьютера к железу.


 
Alex Konshin ©   (2004-03-25 07:28) [98]

Ну могу добавить "мой" вопрос:
Как определить серийный номер диска (винчестера)? Ну и заодно - сетевой карты, видеокарты и материнской платы. Из той же серии привязка компьютера к железу.


 
Rouse_ ©   (2004-03-25 07:35) [99]

Как определить сколько логических дисков/сидиромов в системе и их имена


 
Rouse_ ©   (2004-03-25 07:35) [99]

Как определить сколько логических дисков/сидиромов в системе и их имена


 
Паниковский   (2004-03-25 09:01) [100]

ну и?
А FAQ по выше изложенному писать не будете?


 
Паниковский   (2004-03-25 09:01) [100]

ну и?
А FAQ по выше изложенному писать не будете?


 
Rouse_ ©   (2004-03-25 09:08) [101]

> [100] Паниковский   (25.03.04 09:01)
Будем...


 
Rouse_ ©   (2004-03-25 09:08) [101]

> [100] Паниковский   (25.03.04 09:01)
Будем...


 
Dmitriy O. ©   (2004-03-25 09:10) [102]

Как распечатать с помощью Qreport Изображение больше чем формата A4


 
Dmitriy O. ©   (2004-03-25 09:10) [102]

Как распечатать с помощью Qreport Изображение больше чем формата A4


 
Digitman ©   (2004-03-25 09:13) [103]

в "Сетях" без конца одно и то же : "Как сделать так, чтобы когда TServerSocket не активен, при попытке соединения с ним компонент TClientSocket не выдавал окно об ошибке ? Обертка try..except вокруг  метода Open не помогает"


 
Digitman ©   (2004-03-25 09:13) [103]

в "Сетях" без конца одно и то же : "Как сделать так, чтобы когда TServerSocket не активен, при попытке соединения с ним компонент TClientSocket не выдавал окно об ошибке ? Обертка try..except вокруг  метода Open не помогает"


 
Verg ©   (2004-03-25 09:14) [104]

Да, братья, так скоро в FAQ попадет любой вопрос по программированию....
И будет это не FAQ, а энциклопедия....какая-то Юных Сурков...


 
Verg ©   (2004-03-25 09:14) [104]

Да, братья, так скоро в FAQ попадет любой вопрос по программированию....
И будет это не FAQ, а энциклопедия....какая-то Юных Сурков...


 
Паниковский   (2004-03-25 09:20) [105]

Rouse_
когда?
где можно скачать сие творение?


 
Паниковский   (2004-03-25 09:20) [105]

Rouse_
когда?
где можно скачать сие творение?


 
able ©   (2004-03-25 09:34) [106]

Удалено модератором
Примечание: Оффтоп...


 
able ©   (2004-03-25 09:34) [106]

Удалено модератором
Примечание: Оффтоп...


 
Иксик ©   (2004-03-25 09:34) [107]

Еще хорошо было бы сделать продуманную систему ссылок на соответствующие статьи. К примеру, выделить в каждой статье ключевые слова и при появлении соответствующего слова в FAQ"e давать ссылку на статью. Там конечно сложнее получится, но это в общих чертах.

Или же можно в конце ответа выводить список на похожие вопросы/статьи как в Рамблере, в новостях.


 
Иксик ©   (2004-03-25 09:34) [107]

Еще хорошо было бы сделать продуманную систему ссылок на соответствующие статьи. К примеру, выделить в каждой статье ключевые слова и при появлении соответствующего слова в FAQ"e давать ссылку на статью. Там конечно сложнее получится, но это в общих чертах.

Или же можно в конце ответа выводить список на похожие вопросы/статьи как в Рамблере, в новостях.


 
Alex_Bredin ©   (2004-03-25 09:40) [108]

как эмулировать нажатие клавиши в чужом приложении?


 
Alex_Bredin ©   (2004-03-25 09:40) [108]

как эмулировать нажатие клавиши в чужом приложении?


 
Rouse_ ©   (2004-03-25 09:41) [109]

> [105] Паниковский   (25.03.04 09:20)
Вопрос не ко мне :) Я понятия не имею :)


 
Rouse_ ©   (2004-03-25 09:41) [109]

> [105] Паниковский   (25.03.04 09:20)
Вопрос не ко мне :) Я понятия не имею :)


 
Nikolay M. ©   (2004-03-25 09:46) [110]

А почему бы каждый при каждом новом вопросе просто не делать поиск по FAQ? Неважно, по своему или по десятку чужих, пусть хоть просто яндексом.
Если коэффициент соответствия найденных вопросов введенному >= Х, тогда заставить прочитать все найденное :)
Только не надо кидаться камнями, что никто за чайников не будет делать их работу и тд., это и так понятно. Выгода от такого подхода будет всем: человек быстрее найдет ответ на свой вопрос, а форум не будет захламляться. Если сделать нормальный поиск по ФАКам с релевантностью, имхо, это будет намного лучше, чем введение Обязательной Регистрации (ОР), принуждения к Прочтению Правил (ПП) и Факов (ПФ), выполнение десяти Ритуальных Подскоков и Распития Пива с Главным Модератором (РПРПсГМ) и тд.


 
Nikolay M. ©   (2004-03-25 09:46) [110]

А почему бы каждый при каждом новом вопросе просто не делать поиск по FAQ? Неважно, по своему или по десятку чужих, пусть хоть просто яндексом.
Если коэффициент соответствия найденных вопросов введенному >= Х, тогда заставить прочитать все найденное :)
Только не надо кидаться камнями, что никто за чайников не будет делать их работу и тд., это и так понятно. Выгода от такого подхода будет всем: человек быстрее найдет ответ на свой вопрос, а форум не будет захламляться. Если сделать нормальный поиск по ФАКам с релевантностью, имхо, это будет намного лучше, чем введение Обязательной Регистрации (ОР), принуждения к Прочтению Правил (ПП) и Факов (ПФ), выполнение десяти Ритуальных Подскоков и Распития Пива с Главным Модератором (РПРПсГМ) и тд.


 
Dmitriy O. ©   (2004-03-25 09:46) [111]

Как закрыть чужое приложени и виндовское в том числе ? Как вообще вырубить Виндовс на другом компе по сети ? Как включить и выключить комп по сети ?.


 
Dmitriy O. ©   (2004-03-25 09:46) [111]

Как закрыть чужое приложени и виндовское в том числе ? Как вообще вырубить Виндовс на другом компе по сети ? Как включить и выключить комп по сети ?.


 
Паниковский   (2004-03-25 09:53) [112]

Rouse_
вопрос ко всем


 
Паниковский   (2004-03-25 09:53) [112]

Rouse_
вопрос ко всем


 
Гарри Поттер ©   (2004-03-25 10:02) [113]

Как заработать в интернете?
Подскажите бесплатный хостинг но что б MySQL, PHP и Perl, SMTP\POP3\IMAP и т.д.?
Делали ли вы шаравары? Разбогатели? А как?


 
Гарри Поттер ©   (2004-03-25 10:02) [113]

Как заработать в интернете?
Подскажите бесплатный хостинг но что б MySQL, PHP и Perl, SMTP\POP3\IMAP и т.д.?
Делали ли вы шаравары? Разбогатели? А как?


 
panov ©   (2004-03-25 10:44) [114]

Спасибо всем за активное участие. над списком вопросов-ответов работаем.
Также были высказаны хорошие предложения, за что отдельное спасибо.

>Паниковский

Обсуждение началось тотлько вчера, а ты хочешь готовый FAQ уже сегодня?


 
panov ©   (2004-03-25 10:44) [114]

Спасибо всем за активное участие. над списком вопросов-ответов работаем.
Также были высказаны хорошие предложения, за что отдельное спасибо.

>Паниковский

Обсуждение началось тотлько вчера, а ты хочешь готовый FAQ уже сегодня?


 
Паниковский   (2004-03-25 10:57) [115]

panov
а вай бы и не нот?
на эти вопросы то уже не раз отвечали.


 
Паниковский   (2004-03-25 10:57) [115]

panov
а вай бы и не нот?
на эти вопросы то уже не раз отвечали.


 
Матлабист   (2004-03-25 11:14) [116]

Может и было, но... Как не используя пакеты победить проблемы помещения в DLL классов, форм, исключений, ...


 
Матлабист   (2004-03-25 11:14) [116]

Может и было, но... Как не используя пакеты победить проблемы помещения в DLL классов, форм, исключений, ...


 
Romkin ©   (2004-03-25 11:20) [117]

Матлабист  (25.03.04 11:14) [116]
Ну ты спросил :))))
Тут путей много. Однозначно ответить "делай так" оченно сложно...
ИМХО, самый валидный путь - делать не просто dll, а ActiveX libraries. В СОМ все уже предусмотрено. И работать с интерфейсами, ActiveXForm и тд.
Но я видел решения и просто с заменой Application & Screen в dll...
Сорри за оффтоп ;)


 
Romkin ©   (2004-03-25 11:20) [117]

Матлабист  (25.03.04 11:14) [116]
Ну ты спросил :))))
Тут путей много. Однозначно ответить "делай так" оченно сложно...
ИМХО, самый валидный путь - делать не просто dll, а ActiveX libraries. В СОМ все уже предусмотрено. И работать с интерфейсами, ActiveXForm и тд.
Но я видел решения и просто с заменой Application & Screen в dll...
Сорри за оффтоп ;)


 
Партизан отважный Коля   (2004-03-25 11:32) [118]

Vlad ©   (24.03.04 21:26) [50]
> Какую СУБД выбрать? :)
> По-моему для этого тут существует раздел "Статьи",
 Я разве с этим спорю?
> кстати вот тут в Базах один из учасников написал оч. полезную
> (imho) статью для начинающих по этому поводу.
 Хорошая статья. Но локальными движками дело не ограничивается.


 
Партизан отважный Коля   (2004-03-25 11:32) [118]

Vlad ©   (24.03.04 21:26) [50]
> Какую СУБД выбрать? :)
> По-моему для этого тут существует раздел "Статьи",
 Я разве с этим спорю?
> кстати вот тут в Базах один из учасников написал оч. полезную
> (imho) статью для начинающих по этому поводу.
 Хорошая статья. Но локальными движками дело не ограничивается.


 
Vemer ©   (2004-03-25 19:24) [119]

Здравствуйте.
Ответы/пояснения к вопросам, попавшим в список.
-Вопрос про FetchAll - без него в DBLookupCBox отражаеться только первая строка обычно + если весь список не весь влазит в DBGrid - выглядит и ведет себя вертикальный скроллбар.
Самое простое решение - DatasetName.Fetchall в обработчике OnOpen датасета.

-вопрос по точному хранению денег - дело в том, что многие пытаються хранить денежные суммы (типы полей для IB) во Float, Double Precision и Numeric(Dialect 1). Все эти форматы неточные вроде. Самый лучший способ (применяют и в банковских системах и (тоже так сделал, работает отлично)) - хранение в виде Integer в копейках или даже их долях (смотря какая точность требуется) + пояснение или ссылка на объяснение форматов Паскаля.


 
Vemer ©   (2004-03-25 19:24) [119]

Здравствуйте.
Ответы/пояснения к вопросам, попавшим в список.
-Вопрос про FetchAll - без него в DBLookupCBox отражаеться только первая строка обычно + если весь список не весь влазит в DBGrid - выглядит и ведет себя вертикальный скроллбар.
Самое простое решение - DatasetName.Fetchall в обработчике OnOpen датасета.

-вопрос по точному хранению денег - дело в том, что многие пытаються хранить денежные суммы (типы полей для IB) во Float, Double Precision и Numeric(Dialect 1). Все эти форматы неточные вроде. Самый лучший способ (применяют и в банковских системах и (тоже так сделал, работает отлично)) - хранение в виде Integer в копейках или даже их долях (смотря какая точность требуется) + пояснение или ссылка на объяснение форматов Паскаля.


 
panov ©   (2004-03-26 15:09) [120]

http://delphimaster.net/view/3-1079783255/


 
panov ©   (2004-03-26 15:09) [120]

http://delphimaster.net/view/3-1079783255/


 
Romkin ©   (2004-03-26 15:35) [121]

Посылать на http://sources.ru/delphi/delphi_system.shtml#17


 
Romkin ©   (2004-03-26 15:35) [121]

Посылать на http://sources.ru/delphi/delphi_system.shtml#17


 
panov ©   (2004-03-26 21:45) [122]

2 вопрос.
Как спрятать (свернуть) приложение при нажатии на кнопку «закрыть» в области заголовка формы или при нажатии Alt-F4?
---------
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
 private
   { Private declarations }
 public
   { Public declarations }
   procedure OnWM_SYSCOMMAND(var Message: TMessage); message WM_SYSCOMMAND;
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.OnWM_SYSCOMMAND(var Message: TMessage);
begin
 if Message.WParam=SC_CLOSE then
 begin
   Application.Minimize;
   Message.Result := 0;
 end
 else inherited;
end;

end.


 
panov ©   (2004-03-26 21:45) [122]

2 вопрос.
Как спрятать (свернуть) приложение при нажатии на кнопку «закрыть» в области заголовка формы или при нажатии Alt-F4?
---------
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
 private
   { Private declarations }
 public
   { Public declarations }
   procedure OnWM_SYSCOMMAND(var Message: TMessage); message WM_SYSCOMMAND;
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.OnWM_SYSCOMMAND(var Message: TMessage);
begin
 if Message.WParam=SC_CLOSE then
 begin
   Application.Minimize;
   Message.Result := 0;
 end
 else inherited;
end;

end.


 
DrPass ©   (2004-03-26 23:51) [123]

А вот еще популярный вопрос по этой теме:
"Как заставить юзеров сначала читать FAQ, а потом спрашивать на форуме, а не наоборот"


 
DrPass ©   (2004-03-26 23:51) [123]

А вот еще популярный вопрос по этой теме:
"Как заставить юзеров сначала читать FAQ, а потом спрашивать на форуме, а не наоборот"


 
_none_ ©   (2004-03-27 01:21) [124]

надо посылать всех на www.soobcha.ru


 
_none_ ©   (2004-03-27 01:21) [124]

надо посылать всех на www.soobcha.ru


 
Piter ©   (2004-03-27 19:14) [125]

Предлагаю оформлять FAQ не как сейчас, а разбивать их по темам, как форумы!
Так будет логичнее...

типа Базы данных, Основные вопросы, WinApi и т.д.

Панов, как идет работа над FAQ"ом? Я хочу принять участие...


 
Piter ©   (2004-03-27 19:14) [125]

Предлагаю оформлять FAQ не как сейчас, а разбивать их по темам, как форумы!
Так будет логичнее...

типа Базы данных, Основные вопросы, WinApi и т.д.

Панов, как идет работа над FAQ"ом? Я хочу принять участие...


 
Rouse_ ©   (2004-03-27 19:27) [126]

> [125] Piter ©   (27.03.04 19:14)
Работа идет :)
По поводу участия - адрес у Саши знаешь :)


 
Rouse_ ©   (2004-03-27 19:27) [126]

> [125] Piter ©   (27.03.04 19:14)
Работа идет :)
По поводу участия - адрес у Саши знаешь :)


 
PVOzerski ©   (2004-03-27 20:12) [127]

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


 
PVOzerski ©   (2004-03-27 20:12) [127]

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


 
Игорь Шевченко ©   (2004-03-27 20:30) [128]

Как избавиться от ScrollBars на главной MDI-форме:


{  (С) Peter Below (TeamB)              }

unit MainForm;

interface
uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 Menus;

type
 TfMain = class(TForm)
   procedure FormCreate(Sender: TObject);
 ....
 end;

var
 fMain: TfMain;

implementation

{$R *.DFM}

function ClientWindowProc( wnd: HWND; msg: Cardinal; wparam, lparam: Integer ): Integer; stdcall;
var
 f: Pointer;
begin
 f := Pointer(GetWindowLong (wnd, GWL_USERDATA));
 case msg of
 WM_NCCALCSIZE:
   if (GetWindowLong (wnd, GWL_STYLE) and
      (WS_HSCROLL or WS_VSCROLL)) <> 0 then
     SetWindowLong (wnd, GWL_STYLE,
       GetWindowLong (wnd, GWL_STYLE) and
         not (WS_HSCROLL or WS_VSCROLL));
 end;
 Result := CallWindowProc(f, wnd, msg, wparam, lparam);
end;

procedure TfMain.FormCreate(Sender: TObject);
begin
 if ClientHandle <> 0 then begin
   if GetWindowLong (ClientHandle, GWL_USERDATA) <> 0 then
     Exit;  {cannot subclass client window, userdata already in use}
   SetWindowLong (ClientHandle, GWL_USERDATA,
     SetWindowLong (ClientHandle, GWL_WNDPROC,
       integer(@ClientWindowProc)));
 end;
end;

end.


 
Игорь Шевченко ©   (2004-03-27 20:30) [128]

Как избавиться от ScrollBars на главной MDI-форме:


{  (С) Peter Below (TeamB)              }

unit MainForm;

interface
uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 Menus;

type
 TfMain = class(TForm)
   procedure FormCreate(Sender: TObject);
 ....
 end;

var
 fMain: TfMain;

implementation

{$R *.DFM}

function ClientWindowProc( wnd: HWND; msg: Cardinal; wparam, lparam: Integer ): Integer; stdcall;
var
 f: Pointer;
begin
 f := Pointer(GetWindowLong (wnd, GWL_USERDATA));
 case msg of
 WM_NCCALCSIZE:
   if (GetWindowLong (wnd, GWL_STYLE) and
      (WS_HSCROLL or WS_VSCROLL)) <> 0 then
     SetWindowLong (wnd, GWL_STYLE,
       GetWindowLong (wnd, GWL_STYLE) and
         not (WS_HSCROLL or WS_VSCROLL));
 end;
 Result := CallWindowProc(f, wnd, msg, wparam, lparam);
end;

procedure TfMain.FormCreate(Sender: TObject);
begin
 if ClientHandle <> 0 then begin
   if GetWindowLong (ClientHandle, GWL_USERDATA) <> 0 then
     Exit;  {cannot subclass client window, userdata already in use}
   SetWindowLong (ClientHandle, GWL_USERDATA,
     SetWindowLong (ClientHandle, GWL_WNDPROC,
       integer(@ClientWindowProc)));
 end;
end;

end.


 
Piter ©   (2004-03-27 21:12) [129]

Игорь Шевченко (27.03.04 20:30) [128]
Как избавиться от ScrollBars на главной MDI-форме


а можно поинтересоваться - а в чем проблема? Я никак не пойму... какой еще скролл бар у MDI формы?


 
Piter ©   (2004-03-27 21:12) [129]

Игорь Шевченко (27.03.04 20:30) [128]
Как избавиться от ScrollBars на главной MDI-форме


а можно поинтересоваться - а в чем проблема? Я никак не пойму... какой еще скролл бар у MDI формы?


 
Игорь Шевченко ©   (2004-03-27 21:25) [130]

Piter ©   (27.03.04 21:12)

Можно поинтересоваться. У главной формы MDI-приложения есть клиентская область, в которой размещаются дочерние MDI-окна. Если какая-то из дочерних форм не помещается полностью в клиентской области главной формы, то в этой области появляются скроллбары. В форуме периодически задается вопрос, как от них избавиться.


 
Игорь Шевченко ©   (2004-03-27 21:25) [130]

Piter ©   (27.03.04 21:12)

Можно поинтересоваться. У главной формы MDI-приложения есть клиентская область, в которой размещаются дочерние MDI-окна. Если какая-то из дочерних форм не помещается полностью в клиентской области главной формы, то в этой области появляются скроллбары. В форуме периодически задается вопрос, как от них избавиться.


 
Piter ©   (2004-03-27 22:21) [131]

Игорь Шевченко (27.03.04 21:25) [130]
Если какая-то из дочерних форм не помещается полностью в клиентской области главной формы, то в этой области появляются скроллбары


хм, ну так ведь так и должно быть! Какой смысл убирать этот скролл бар? Каким образом тогда дотянуться до невидимого участка дочерней формы?


 
Piter ©   (2004-03-27 22:21) [131]

Игорь Шевченко (27.03.04 21:25) [130]
Если какая-то из дочерних форм не помещается полностью в клиентской области главной формы, то в этой области появляются скроллбары


хм, ну так ведь так и должно быть! Какой смысл убирать этот скролл бар? Каким образом тогда дотянуться до невидимого участка дочерней формы?


 
Игорь Шевченко ©   (2004-03-27 22:26) [132]


> Какой смысл убирать этот скролл бар?


Просят...


 
Игорь Шевченко ©   (2004-03-27 22:26) [132]


> Какой смысл убирать этот скролл бар?


Просят...


 
Sergey Masloff   (2004-03-27 22:31) [133]

еще вопрос про значек мастера. Ну сейчас вроде пореже а то в неделю по нескольку раз же было ;-)


 
Sergey Masloff   (2004-03-27 22:31) [133]

еще вопрос про значек мастера. Ну сейчас вроде пореже а то в неделю по нескольку раз же было ;-)


 
Rouse_ ©   (2004-03-27 22:35) [134]

> [133] Sergey Masloff   (27.03.04 22:31)
А это уже к программированию не относится :)


 
Rouse_ ©   (2004-03-27 22:35) [134]

> [133] Sergey Masloff   (27.03.04 22:31)
А это уже к программированию не относится :)


 
Sergey Masloff   (2004-03-27 22:37) [135]

Rouse_ ©   (27.03.04 22:35) [134]
> это уже к программированию не относится :)
а что делать? Я вспоминал-вспоминал но другого частого в голову не пришло...


 
Sergey Masloff   (2004-03-27 22:37) [135]

Rouse_ ©   (27.03.04 22:35) [134]
> это уже к программированию не относится :)
а что делать? Я вспоминал-вспоминал но другого частого в голову не пришло...


 
Rouse_ ©   (2004-03-27 22:44) [136]

> [135] Sergey Masloff   (27.03.04 22:37)
Иногда лучше жевать, чем говорить © :)))


 
Rouse_ ©   (2004-03-27 22:44) [136]

> [135] Sergey Masloff   (27.03.04 22:37)
Иногда лучше жевать, чем говорить © :)))


 
Sergey Masloff   (2004-03-27 22:56) [137]

Rouse_ ©   (27.03.04 22:44) [136]
>> [135] Sergey Masloff   (27.03.04 22:37)
>Иногда лучше жевать, чем говорить © :)))
Я и так за 90 вот-вот перевалю :( Жевать, нет уж спасибо... Поговорю лучше ;-)


 
Sergey Masloff   (2004-03-27 22:56) [137]

Rouse_ ©   (27.03.04 22:44) [136]
>> [135] Sergey Masloff   (27.03.04 22:37)
>Иногда лучше жевать, чем говорить © :)))
Я и так за 90 вот-вот перевалю :( Жевать, нет уж спасибо... Поговорю лучше ;-)


 
Fenik ©   (2004-03-27 23:26) [138]

Как объединить два изображения в одно.


 
Fenik ©   (2004-03-27 23:26) [138]

Как объединить два изображения в одно.


 
TButton ©   (2004-03-27 23:33) [139]

>Как избавиться от ScrollBars на главной MDI-форме

а я всегда думал, что надо AutoScroll поставить в false...


 
TButton ©   (2004-03-27 23:33) [139]

>Как избавиться от ScrollBars на главной MDI-форме

а я всегда думал, что надо AutoScroll поставить в false...


 
TButton ©   (2004-03-27 23:35) [140]

>а я всегда думал, что надо AutoScroll поставить в false...

плохо думал...


 
TButton ©   (2004-03-27 23:35) [140]

>а я всегда думал, что надо AutoScroll поставить в false...

плохо думал...


 
Юрий Зотов ©   (2004-03-28 07:33) [141]

> panov ©   (26.03.04 21:45) [122]
> if Message.WParam=SC_CLOSE then

Не совсем так.

In WM_SYSCOMMAND messages, the four low-order bits of the uCmdType parameter are used internally by Windows. To obtain the correct result when testing the value of uCmdType, an application must combine the value 0xFFF0 with the uCmdType value by using the bitwise AND operator.

Поэтому надо так:
if Message.WParam and $FFF0 = SC_CLOSE then...


 
Юрий Зотов ©   (2004-03-28 07:33) [141]

> panov ©   (26.03.04 21:45) [122]
> if Message.WParam=SC_CLOSE then

Не совсем так.

In WM_SYSCOMMAND messages, the four low-order bits of the uCmdType parameter are used internally by Windows. To obtain the correct result when testing the value of uCmdType, an application must combine the value 0xFFF0 with the uCmdType value by using the bitwise AND operator.

Поэтому надо так:
if Message.WParam and $FFF0 = SC_CLOSE then...


 
panov ©   (2004-03-29 11:52) [142]

>Юрий Зотов ©   (28.03.04 07:33) [141]
Спасибо за замечание, испроавлю в ответе.


 
panov ©   (2004-03-29 11:52) [142]

>Юрий Зотов ©   (28.03.04 07:33) [141]
Спасибо за замечание, испроавлю в ответе.


 
panov ©   (2004-03-29 15:53) [143]

Третий вопрос.

Как получить список/размер всех файлов в каталоге и его подкаталогах?

Функции или процедуры, позволяющей это сделать нет, поэтому для получения списка файлов нужно воспользоваться рекурсивно функциями FindFirst/FindNext/FindClose.

Пример:

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Classes, Controls, Forms,
 StdCtrls, Masks;

type
 TForm1 = class(TForm)
   Button1: TButton;
   ListBox1: TListBox;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

//Простой поиск всех файлов в каталоге и его покаталогах
procedure GetFilesSimple(const aPath: String;var aListFile: TStringList);
var
 SR: TSearchRec;
 tPath: String;
begin
 tPath := IncludeTrailingBackSlash(aPath);
 if FindFirst(tPath+"\*.*",faAnyFile,SR)=0 then
 begin
   try
     repeat
       if (SR.Name=".") or (SR.Name="..") then Continue;
       if (SR.Attr and faDirectory)<>0 then GetFilesSimple(tPath+SR.Name,aListFile);
       aListFile.Add(tPath+SR.Name);
     until FindNext(SR)<>0;
   finally
     Sysutils.FindClose(SR);
   end;
 end;
end;

//Поиск файлов в каталоге и его покаталогах с фильтром по маске и исключением
//из поиска всех файлов, атрибуты которых попадают в aExcludeAttr
function GetFiles(const aPath,aMask: String;var aListFile: TStringList;const aExcludeAttr: Integer=0): Integer;
var
 SR: TSearchRec;
 tPath: String;
begin
 tPath := IncludeTrailingBackSlash(aPath);
 if FindFirst(tPath+"*.*",faDirectory,SR)=0 then
 begin
   try
     repeat
       if (SR.Name=".") or (SR.Name="..") then Continue;
       if (SR.Attr and faDirectory)<>0 then GetFiles(tPath+SR.Name,aMask,aListFile,aExcludeAttr);
       if (aExcludeAttr<>0) and (SR.Attr and aExcludeAttr <> 0) then Continue;
       if MatchesMask(SR.Name,aMask) then aListFile.Add(tPath+SR.Name);
     until FindNext(SR)<>0;
   finally
     Sysutils.FindClose(SR);
   end;
 end;
end;

//Процедура вычисления размера каталога
procedure GetDirSize(const aPath: String;var SizeDir: Int64);
var
 SR: TSearchRec;
 tPath: String;
begin
 tPath := IncludeTrailingBackSlash(aPath);
 if FindFirst(tPath+"*.*",faAnyFile,SR)=0 then
 begin
   try
     repeat
       if (SR.Name=".") or (SR.Name="..") then Continue;
       if (SR.Attr and faDirectory)<>0 then
       begin
         GetDirSize(tPath+SR.Name,SizeDir);
         Continue;
       end;
       SizeDir := SizeDir +
                 (SR.FindData.nFileSizeHigh shl 32)+
                 SR.FindData.nFileSizeLow;
     until FindNext(SR)<>0;
   finally
     Sysutils.FindClose(SR);
   end;
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 SizeDir: Int64;
 ListFiles: TStringList;
begin
 ListFiles := TStringList.Create;

 GetFilesSimple("c:\winnt",ListFiles);  //Поиск всех файлов

 ListFiles.Add("---------");

 GetFiles("c:\winnt","*.exe",ListFiles,faArchive);

 ListFiles.Add("---------");

 SizeDir := 0;
 GetDirSize("c:\winnt",SizeDir);

 ListFiles.Add("Размер каталога "+IntToStr(SizeDir));

 ListBox1.Items.Assign(ListFiles);

 ListFiles.Free;
end;

end.


 
panov ©   (2004-03-29 15:53) [143]

Третий вопрос.

Как получить список/размер всех файлов в каталоге и его подкаталогах?

Функции или процедуры, позволяющей это сделать нет, поэтому для получения списка файлов нужно воспользоваться рекурсивно функциями FindFirst/FindNext/FindClose.

Пример:

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Classes, Controls, Forms,
 StdCtrls, Masks;

type
 TForm1 = class(TForm)
   Button1: TButton;
   ListBox1: TListBox;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

//Простой поиск всех файлов в каталоге и его покаталогах
procedure GetFilesSimple(const aPath: String;var aListFile: TStringList);
var
 SR: TSearchRec;
 tPath: String;
begin
 tPath := IncludeTrailingBackSlash(aPath);
 if FindFirst(tPath+"\*.*",faAnyFile,SR)=0 then
 begin
   try
     repeat
       if (SR.Name=".") or (SR.Name="..") then Continue;
       if (SR.Attr and faDirectory)<>0 then GetFilesSimple(tPath+SR.Name,aListFile);
       aListFile.Add(tPath+SR.Name);
     until FindNext(SR)<>0;
   finally
     Sysutils.FindClose(SR);
   end;
 end;
end;

//Поиск файлов в каталоге и его покаталогах с фильтром по маске и исключением
//из поиска всех файлов, атрибуты которых попадают в aExcludeAttr
function GetFiles(const aPath,aMask: String;var aListFile: TStringList;const aExcludeAttr: Integer=0): Integer;
var
 SR: TSearchRec;
 tPath: String;
begin
 tPath := IncludeTrailingBackSlash(aPath);
 if FindFirst(tPath+"*.*",faDirectory,SR)=0 then
 begin
   try
     repeat
       if (SR.Name=".") or (SR.Name="..") then Continue;
       if (SR.Attr and faDirectory)<>0 then GetFiles(tPath+SR.Name,aMask,aListFile,aExcludeAttr);
       if (aExcludeAttr<>0) and (SR.Attr and aExcludeAttr <> 0) then Continue;
       if MatchesMask(SR.Name,aMask) then aListFile.Add(tPath+SR.Name);
     until FindNext(SR)<>0;
   finally
     Sysutils.FindClose(SR);
   end;
 end;
end;

//Процедура вычисления размера каталога
procedure GetDirSize(const aPath: String;var SizeDir: Int64);
var
 SR: TSearchRec;
 tPath: String;
begin
 tPath := IncludeTrailingBackSlash(aPath);
 if FindFirst(tPath+"*.*",faAnyFile,SR)=0 then
 begin
   try
     repeat
       if (SR.Name=".") or (SR.Name="..") then Continue;
       if (SR.Attr and faDirectory)<>0 then
       begin
         GetDirSize(tPath+SR.Name,SizeDir);
         Continue;
       end;
       SizeDir := SizeDir +
                 (SR.FindData.nFileSizeHigh shl 32)+
                 SR.FindData.nFileSizeLow;
     until FindNext(SR)<>0;
   finally
     Sysutils.FindClose(SR);
   end;
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 SizeDir: Int64;
 ListFiles: TStringList;
begin
 ListFiles := TStringList.Create;

 GetFilesSimple("c:\winnt",ListFiles);  //Поиск всех файлов

 ListFiles.Add("---------");

 GetFiles("c:\winnt","*.exe",ListFiles,faArchive);

 ListFiles.Add("---------");

 SizeDir := 0;
 GetDirSize("c:\winnt",SizeDir);

 ListFiles.Add("Размер каталога "+IntToStr(SizeDir));

 ListBox1.Items.Assign(ListFiles);

 ListFiles.Free;
end;

end.


 
panov ©   (2004-03-29 16:03) [144]

4 вопрос.
Как перекодировать строку из кодировки OEM в кодировку ANSI и обратно?

function Win2Dos(const aStr: String): String;
begin
 Result := aStr;
 CharToOem(PChar(Result),PChar(Result));
end;

function Dos2Win(const aStr: String): String;
begin
 Result := aStr;
 OemToChar(PChar(Result),PChar(Result));
end;


 
panov ©   (2004-03-29 16:03) [144]

4 вопрос.
Как перекодировать строку из кодировки OEM в кодировку ANSI и обратно?

function Win2Dos(const aStr: String): String;
begin
 Result := aStr;
 CharToOem(PChar(Result),PChar(Result));
end;

function Dos2Win(const aStr: String): String;
begin
 Result := aStr;
 OemToChar(PChar(Result),PChar(Result));
end;


 
Dmitriy O. ©   (2004-03-29 16:06) [145]

А на мой вопрос по печати больших изображений уже был ответ ?
Например нужно распечатать Имаже 700*5600 как это сделать ?


 
Dmitriy O. ©   (2004-03-29 16:06) [145]

А на мой вопрос по печати больших изображений уже был ответ ?
Например нужно распечатать Имаже 700*5600 как это сделать ?


 
panov ©   (2004-03-29 16:22) [146]

>Dmitriy O. ©   (29.03.04 16:06) [145]

Я иду по списку, который был выше, и до графики еще далеко. А так как с графикой я не работал вообще, то сразу будет сложно ответить. Может быть Вы ответите на этот вопрос и опубликуете здесь?


 
panov ©   (2004-03-29 16:22) [146]

>Dmitriy O. ©   (29.03.04 16:06) [145]

Я иду по списку, который был выше, и до графики еще далеко. А так как с графикой я не работал вообще, то сразу будет сложно ответить. Может быть Вы ответите на этот вопрос и опубликуете здесь?


 
Тимохов ©   (2004-03-29 16:29) [147]


> panov ©   (29.03.04 16:03) [144]

проверку на astr <> "" забыли


 
Тимохов ©   (2004-03-29 16:29) [147]


> panov ©   (29.03.04 16:03) [144]

проверку на astr <> "" забыли


 
panov ©   (2004-03-29 16:31) [148]

5 вопрос.

Как выполнить длительную(по времени) процедуру в дополнительном потоке и одновременно обновлять TProgressBar в основном потоке.

unit ufMyLongProcedure;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, ComCtrls, StdCtrls;

type

 TForm1 = class(TForm)
   Button1: TButton;
   ProgressBar1: TProgressBar;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

//Класс потока для выполнения длительных расчетов
 TMyLongProcedure = class(TThread)
   FProgressBar: TProgressBar;
   FCounter: Integer;
 protected
     procedure Execute; override;
 public
   //Параметром передаем TProgressBar, который необходимо обновлять
   constructor Create(aProgressBar: TProgressBar);
   //Процедура для работы с объектами в основном потоке
   procedure ShowProgress;
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

constructor TMyLongProcedure.Create(aProgressBar: TProgressBar);
begin
 inherited Create(True);   //Создается в приостановленном состоянии
 FreeOnTerminate := True;  //После окончания выполнения потока все
                           // ресурсы освобождаются автоматически
 FProgressBar := aProgressBar;
 FProgressBar.Min := 0;
 FProgressBar.Max := 100;
 FProgressBar.Position := 0;
 FCounter := 0;
 Resume;
end;

procedure TMyLongProcedure.ShowProgress;
begin
//Обновление TProgressBar в основном потоке
 FProgressBar.Position := FCOunter;
end;

procedure TMyLongProcedure.Execute;
var
 i: Integer;
begin
 i := 0;
 while (not Terminated) and (i<10000) do
 begin
   if (i mod 10) = 0 then  //Не обновляем на каждой итерации,
                           // так как тогда не сможем работать
                           // в основном потоке с формой
   begin
     inc(FCounter);
     Synchronize(ShowProgress);  //Обновляем TProgressBar
     if FCounter=100 then FCOunter := 0; //TProgressBar будет обновляться
                                         // циклически
   end;
   Sleep(1);                             //Для эмуляции длительной работы
   Inc(i);
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  TMyLongProcedure.Create(ProgressBar1);
end;

end.


 
panov ©   (2004-03-29 16:31) [148]

5 вопрос.

Как выполнить длительную(по времени) процедуру в дополнительном потоке и одновременно обновлять TProgressBar в основном потоке.

unit ufMyLongProcedure;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, ComCtrls, StdCtrls;

type

 TForm1 = class(TForm)
   Button1: TButton;
   ProgressBar1: TProgressBar;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

//Класс потока для выполнения длительных расчетов
 TMyLongProcedure = class(TThread)
   FProgressBar: TProgressBar;
   FCounter: Integer;
 protected
     procedure Execute; override;
 public
   //Параметром передаем TProgressBar, который необходимо обновлять
   constructor Create(aProgressBar: TProgressBar);
   //Процедура для работы с объектами в основном потоке
   procedure ShowProgress;
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

constructor TMyLongProcedure.Create(aProgressBar: TProgressBar);
begin
 inherited Create(True);   //Создается в приостановленном состоянии
 FreeOnTerminate := True;  //После окончания выполнения потока все
                           // ресурсы освобождаются автоматически
 FProgressBar := aProgressBar;
 FProgressBar.Min := 0;
 FProgressBar.Max := 100;
 FProgressBar.Position := 0;
 FCounter := 0;
 Resume;
end;

procedure TMyLongProcedure.ShowProgress;
begin
//Обновление TProgressBar в основном потоке
 FProgressBar.Position := FCOunter;
end;

procedure TMyLongProcedure.Execute;
var
 i: Integer;
begin
 i := 0;
 while (not Terminated) and (i<10000) do
 begin
   if (i mod 10) = 0 then  //Не обновляем на каждой итерации,
                           // так как тогда не сможем работать
                           // в основном потоке с формой
   begin
     inc(FCounter);
     Synchronize(ShowProgress);  //Обновляем TProgressBar
     if FCounter=100 then FCOunter := 0; //TProgressBar будет обновляться
                                         // циклически
   end;
   Sleep(1);                             //Для эмуляции длительной работы
   Inc(i);
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  TMyLongProcedure.Create(ProgressBar1);
end;

end.


 
blackman ©   (2004-03-29 16:32) [149]

>panov ©   (29.03.04 16:03) [144]
Если пустая aStr, то будет ОЙ :)


 
blackman ©   (2004-03-29 16:32) [149]

>panov ©   (29.03.04 16:03) [144]
Если пустая aStr, то будет ОЙ :)


 
panov ©   (2004-03-29 16:32) [150]

>Тимохов ©   (29.03.04 16:29) [147]
Спасибо, исправлено.


 
panov ©   (2004-03-29 16:32) [150]

>Тимохов ©   (29.03.04 16:29) [147]
Спасибо, исправлено.


 
Игорь Шевченко ©   (2004-03-29 16:35) [151]

Еще часто задаваемые вопросы:
Как добавить свой пункт меню в контекстное меню Explorer.
Как создать ярлык на рабочем столе.
Как зарегистрировать свое расширение файлов (или изменить регистрацию существующего)


 
Игорь Шевченко ©   (2004-03-29 16:35) [151]

Еще часто задаваемые вопросы:
Как добавить свой пункт меню в контекстное меню Explorer.
Как создать ярлык на рабочем столе.
Как зарегистрировать свое расширение файлов (или изменить регистрацию существующего)


 
panov ©   (2004-03-29 16:36) [152]

>blackman ©   (29.03.04 16:32) [149]
>Тимохов ©   (29.03.04 16:29) [147]

function Win2Dos(const aStr: String): String;
begin
Result := aStr;
if Result = "" then Exit;
CharToOem(PChar(Result),PChar(Result));
end;

function Dos2Win(const aStr: String): String;
begin
Result := aStr;
if Result = "" then Exit;
OemToChar(PChar(Result),PChar(Result));
end;


 
panov ©   (2004-03-29 16:36) [152]

>blackman ©   (29.03.04 16:32) [149]
>Тимохов ©   (29.03.04 16:29) [147]

function Win2Dos(const aStr: String): String;
begin
Result := aStr;
if Result = "" then Exit;
CharToOem(PChar(Result),PChar(Result));
end;

function Dos2Win(const aStr: String): String;
begin
Result := aStr;
if Result = "" then Exit;
OemToChar(PChar(Result),PChar(Result));
end;


 
Игорь Шевченко ©   (2004-03-29 16:37) [153]


> function Dos2Win(const aStr: String): String;
> begin
> Result := aStr;
> if Result = "" then Exit;
> OemToChar(PChar(Result),PChar(Result));
> end;


Предлагаю

function Dos2Win(const aStr: String): String;
begin
 Result := aStr;
 if Result <> "" then
   OemToChar(PChar(Result),PChar(Result));
end;


 
Игорь Шевченко ©   (2004-03-29 16:37) [153]


> function Dos2Win(const aStr: String): String;
> begin
> Result := aStr;
> if Result = "" then Exit;
> OemToChar(PChar(Result),PChar(Result));
> end;


Предлагаю

function Dos2Win(const aStr: String): String;
begin
 Result := aStr;
 if Result <> "" then
   OemToChar(PChar(Result),PChar(Result));
end;


 
panov ©   (2004-03-29 16:39) [154]

>Игорь Шевченко ©   (29.03.04 16:37) [153]

Согласен, так и запишем-)


 
panov ©   (2004-03-29 16:39) [154]

>Игорь Шевченко ©   (29.03.04 16:37) [153]

Согласен, так и запишем-)


 
Dmitriy O. ©   (2004-03-29 16:50) [155]


> panov ©   (29.03.04 16:22) [146]
Хорошо вот рабочий код из моей Avtoshema. Печатает очень
большие изображения практическибесконечные. С помощью Qreport.Вся фишка в использовании двух Qrimage. При одном изображение есть на превьев а на печать выводится пустая страница. Итак зацените !

procedure TMyform.ApechExecute(Sender: TObject);
var
i,str:integer;
stras:string;
strap:pchar;
begin

idiag1.Stretch:=false;
if radiogroup1.ItemIndex=0 then begin
//idiag1.Stretch:=true;
//idiag1.Height:=1040;
qrimage1.AutoSize:=false;
qrimage2.AutoSize:=false;
qrimage1.Height:=idiag1.Height;
qrimage2.Height:=idiag1.Height;
qrimage1.Canvas.CopyMode:=cmSrcCopy;
qrimage1.Canvas.CopyRect(rect(0,0,350,idiag1.Height),idiag1.Canvas,rect(0,0,350,idiag1.Height));
qrimage2.Canvas.CopyMode:=cmSrcCopy;
qrimage2.Canvas.CopyRect(rect(0,0,350,idiag1.Height),idiag1.Canvas,rect(350,0,700,idiag1.Height));
qrimage2.Canvas.TextOut(320,1020,"1");
qrimage1.Stretch:=true;
qrimage2.Stretch:=true;
qrimage1.Height:=1040;
qrimage2.Height:=1040;
quickrep1.Preview;
qrimage1.Stretch:=false;
qrimage2.Stretch:=false;;
exit;
end;
str:=ceil(idiag1.Height/1040);
stras:="Всего "+inttostr(str)+" страниц";
strap:=PChar(stras);
if (application.messagebox(strap,"Печать",mb_yesno+mb_iconquestion)=idno) then exit;
if cbprint.Checked=true then begin
quickrep1.PrinterSetup;
//quickrep1.Prepare;
end;
qrimage1.Canvas.CopyMode:=cmSrcCopy;
qrimage2.Canvas.CopyMode:=cmSrcCopy;
for i:=1 to str do begin
case i of
1:begin
qrimage1.Picture.Graphic:=nil;
qrimage2.Picture.Graphic:=nil;
qrimage1.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(0,0,350,1040));
qrimage2.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(350,0,700,1040));
qrimage2.Canvas.TextOut(320,1020,"1");
quickrep1.Print;
end;
2:begin
qrimage1.Picture.Graphic:=nil;
qrimage2.Picture.Graphic:=nil;
qrimage1.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(0,1040,350,2080));
qrimage2.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(350,1040,700,2080));
qrimage2.Canvas.TextOut(320,1020,"2");
quickrep1.Print;
end;
3:begin
qrimage1.Picture.Graphic:=nil;
qrimage2.Picture.Graphic:=nil;
qrimage1.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(0,2080,350,3120));
qrimage2.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(350,2080,700,3120));
qrimage2.Canvas.TextOut(320,1020,"3");
quickrep1.Print;
end;
4:begin
qrimage1.Picture.Graphic:=nil;
qrimage2.Picture.Graphic:=nil;
qrimage1.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(0,3120,350,4160));
qrimage2.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(350,3120,700,4160));
qrimage2.Canvas.TextOut(320,1020,"4");
quickrep1.Print;
end;
5: begin
qrimage1.Picture.Graphic:=nil;
qrimage2.Picture.Graphic:=nil;
qrimage1.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(0,4160,350,5200));
qrimage2.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(350,4160,700,5200));
qrimage2.Canvas.TextOut(320,1020,"5");
quickrep1.Print;
end;
6:begin
qrimage1.Picture.Graphic:=nil;
qrimage2.Picture.Graphic:=nil;
qrimage1.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(0,5200,350,6240));
qrimage2.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(350,5200,700,6240));
qrimage2.Canvas.TextOut(320,1020,"6");
quickrep1.Print;
end;
7:begin
qrimage1.Picture.Graphic:=nil;
qrimage2.Picture.Graphic:=nil;
qrimage1.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(0,6240,350,7280));
qrimage2.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(350,6240,700,7280));
qrimage2.Canvas.TextOut(320,1020,"7");
quickrep1.Print;
end;
8:begin
qrimage1.Picture.Graphic:=nil;
qrimage2.Picture.Graphic:=nil;
qrimage1.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(0,7280,700,8320));
qrimage2.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(350,7280,350,8320));
qrimage2.Canvas.TextOut(320,1020,"8");
quickrep1.Print;
end;
9:begin
qrimage1.Picture.Graphic:=nil;
qrimage2.Picture.Graphic:=nil;
qrimage1.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(0,8320,350,9360));
qrimage2.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(350,8320,700,9360));
qrimage2.Canvas.TextOut(320,1020,"9");
quickrep1.Print;
end;
10:begin
qrimage1.Picture.Graphic:=nil;
qrimage2.Picture.Graphic:=nil;
qrimage1.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(0,9360,350,10400));
qrimage1.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(350,9360,700,10400));
qrimage2.Canvas.TextOut(320,1020,"10");
quickrep1.Print;
end;
11: begin
if i=str then begin
qrimage1.Picture.Graphic:=nil;
qrimage2.Picture.Graphic:=nil;
end;
qrimage1.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(0,10400,350,11440));
qrimage2.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(350,10400,700,11440));
qrimage2.Canvas.TextOut(320,1020,"11");
quickrep1.Print;
end;
12:begin
qrimage1.Picture.Graphic:=nil;
qrimage2.Picture.Graphic:=nil;
qrimage1.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(0,11440,350,12480));
qrimage2.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(350,11440,700,12480));
qrimage2.Canvas.TextOut(320,1020,"12");
quickrep1.Print;
end;
else begin
showmessage("Нет печати более 12 страниц");
break;
end;
end;//case
end;//for

end;


 
Dmitriy O. ©   (2004-03-29 16:50) [155]


> panov ©   (29.03.04 16:22) [146]
Хорошо вот рабочий код из моей Avtoshema. Печатает очень
большие изображения практическибесконечные. С помощью Qreport.Вся фишка в использовании двух Qrimage. При одном изображение есть на превьев а на печать выводится пустая страница. Итак зацените !

procedure TMyform.ApechExecute(Sender: TObject);
var
i,str:integer;
stras:string;
strap:pchar;
begin

idiag1.Stretch:=false;
if radiogroup1.ItemIndex=0 then begin
//idiag1.Stretch:=true;
//idiag1.Height:=1040;
qrimage1.AutoSize:=false;
qrimage2.AutoSize:=false;
qrimage1.Height:=idiag1.Height;
qrimage2.Height:=idiag1.Height;
qrimage1.Canvas.CopyMode:=cmSrcCopy;
qrimage1.Canvas.CopyRect(rect(0,0,350,idiag1.Height),idiag1.Canvas,rect(0,0,350,idiag1.Height));
qrimage2.Canvas.CopyMode:=cmSrcCopy;
qrimage2.Canvas.CopyRect(rect(0,0,350,idiag1.Height),idiag1.Canvas,rect(350,0,700,idiag1.Height));
qrimage2.Canvas.TextOut(320,1020,"1");
qrimage1.Stretch:=true;
qrimage2.Stretch:=true;
qrimage1.Height:=1040;
qrimage2.Height:=1040;
quickrep1.Preview;
qrimage1.Stretch:=false;
qrimage2.Stretch:=false;;
exit;
end;
str:=ceil(idiag1.Height/1040);
stras:="Всего "+inttostr(str)+" страниц";
strap:=PChar(stras);
if (application.messagebox(strap,"Печать",mb_yesno+mb_iconquestion)=idno) then exit;
if cbprint.Checked=true then begin
quickrep1.PrinterSetup;
//quickrep1.Prepare;
end;
qrimage1.Canvas.CopyMode:=cmSrcCopy;
qrimage2.Canvas.CopyMode:=cmSrcCopy;
for i:=1 to str do begin
case i of
1:begin
qrimage1.Picture.Graphic:=nil;
qrimage2.Picture.Graphic:=nil;
qrimage1.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(0,0,350,1040));
qrimage2.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(350,0,700,1040));
qrimage2.Canvas.TextOut(320,1020,"1");
quickrep1.Print;
end;
2:begin
qrimage1.Picture.Graphic:=nil;
qrimage2.Picture.Graphic:=nil;
qrimage1.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(0,1040,350,2080));
qrimage2.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(350,1040,700,2080));
qrimage2.Canvas.TextOut(320,1020,"2");
quickrep1.Print;
end;
3:begin
qrimage1.Picture.Graphic:=nil;
qrimage2.Picture.Graphic:=nil;
qrimage1.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(0,2080,350,3120));
qrimage2.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(350,2080,700,3120));
qrimage2.Canvas.TextOut(320,1020,"3");
quickrep1.Print;
end;
4:begin
qrimage1.Picture.Graphic:=nil;
qrimage2.Picture.Graphic:=nil;
qrimage1.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(0,3120,350,4160));
qrimage2.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(350,3120,700,4160));
qrimage2.Canvas.TextOut(320,1020,"4");
quickrep1.Print;
end;
5: begin
qrimage1.Picture.Graphic:=nil;
qrimage2.Picture.Graphic:=nil;
qrimage1.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(0,4160,350,5200));
qrimage2.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(350,4160,700,5200));
qrimage2.Canvas.TextOut(320,1020,"5");
quickrep1.Print;
end;
6:begin
qrimage1.Picture.Graphic:=nil;
qrimage2.Picture.Graphic:=nil;
qrimage1.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(0,5200,350,6240));
qrimage2.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(350,5200,700,6240));
qrimage2.Canvas.TextOut(320,1020,"6");
quickrep1.Print;
end;
7:begin
qrimage1.Picture.Graphic:=nil;
qrimage2.Picture.Graphic:=nil;
qrimage1.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(0,6240,350,7280));
qrimage2.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(350,6240,700,7280));
qrimage2.Canvas.TextOut(320,1020,"7");
quickrep1.Print;
end;
8:begin
qrimage1.Picture.Graphic:=nil;
qrimage2.Picture.Graphic:=nil;
qrimage1.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(0,7280,700,8320));
qrimage2.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(350,7280,350,8320));
qrimage2.Canvas.TextOut(320,1020,"8");
quickrep1.Print;
end;
9:begin
qrimage1.Picture.Graphic:=nil;
qrimage2.Picture.Graphic:=nil;
qrimage1.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(0,8320,350,9360));
qrimage2.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(350,8320,700,9360));
qrimage2.Canvas.TextOut(320,1020,"9");
quickrep1.Print;
end;
10:begin
qrimage1.Picture.Graphic:=nil;
qrimage2.Picture.Graphic:=nil;
qrimage1.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(0,9360,350,10400));
qrimage1.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(350,9360,700,10400));
qrimage2.Canvas.TextOut(320,1020,"10");
quickrep1.Print;
end;
11: begin
if i=str then begin
qrimage1.Picture.Graphic:=nil;
qrimage2.Picture.Graphic:=nil;
end;
qrimage1.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(0,10400,350,11440));
qrimage2.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(350,10400,700,11440));
qrimage2.Canvas.TextOut(320,1020,"11");
quickrep1.Print;
end;
12:begin
qrimage1.Picture.Graphic:=nil;
qrimage2.Picture.Graphic:=nil;
qrimage1.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(0,11440,350,12480));
qrimage2.Canvas.CopyRect(rect(0,0,350,1040),idiag1.Canvas,rect(350,11440,700,12480));
qrimage2.Canvas.TextOut(320,1020,"12");
quickrep1.Print;
end;
else begin
showmessage("Нет печати более 12 страниц");
break;
end;
end;//case
end;//for

end;


 
Тимохов ©   (2004-03-29 16:53) [156]

да...


 
Тимохов ©   (2004-03-29 16:53) [156]

да...


 
blackman ©   (2004-03-29 17:01) [157]

Как открыть URL браузером, установленным по умолчанию?
Используйте функцию ShellExecute.
Пример:
            uses ShellAPI;
            procedure TForm1.Button1Click(Sender: TObject);
            begin
              ShellExecute(Form1.Handle,
                           nil,
                           "http://blackman.wp-club.net",
                           nil,
                           nil,
                           SW_SHOWNORMAL);
            end;
:)


 
blackman ©   (2004-03-29 17:01) [157]

Как открыть URL браузером, установленным по умолчанию?
Используйте функцию ShellExecute.
Пример:
            uses ShellAPI;
            procedure TForm1.Button1Click(Sender: TObject);
            begin
              ShellExecute(Form1.Handle,
                           nil,
                           "http://blackman.wp-club.net",
                           nil,
                           nil,
                           SW_SHOWNORMAL);
            end;
:)


 
Игорь Шевченко ©   (2004-03-29 17:01) [158]

Dmitriy O. ©   (29.03.04 16:50)


> Итак зацените !


LMD


 
Игорь Шевченко ©   (2004-03-29 17:01) [158]

Dmitriy O. ©   (29.03.04 16:50)


> Итак зацените !


LMD


 
Dmitriy O. ©   (2004-03-29 17:04) [159]


> Игорь Шевченко ©   (29.03.04 17:01)
Что только обзываться умеете. Если знаете как по другому. То  скажите как. А этот метод хорош тем что если  его немножко модифицировать то можно печатать с разными маштабами устанавливать свою разметку страниц.


 
Dmitriy O. ©   (2004-03-29 17:04) [159]


> Игорь Шевченко ©   (29.03.04 17:01)
Что только обзываться умеете. Если знаете как по другому. То  скажите как. А этот метод хорош тем что если  его немножко модифицировать то можно печатать с разными маштабами устанавливать свою разметку страниц.


 
Тимохов ©   (2004-03-29 17:09) [160]


> Игорь Шевченко ©   (29.03.04 17:01) [158]

как точно человек все определил...


 
Тимохов ©   (2004-03-29 17:09) [160]


> Игорь Шевченко ©   (29.03.04 17:01) [158]

как точно человек все определил...


 
panov ©   (2004-03-29 17:14) [161]

Удалено модератором


 
panov ©   (2004-03-29 17:14) [161]

Удалено модератором


 
panov ©   (2004-03-29 17:16) [162]

6 вопрос.

Как запустить другую программу и дождаться ее окончания.

Пример:


unit ufCreateProcess;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

//Функция для создания нового процесса
//Параметры:
// aCommand:  Строка для выполнения исполняемого файла(полный путь)
// aShow:     Показывать/не показывать окно нового процесса
// aWaitExit: Ожидать/не ожидать завершения процесса
function ExecCmd(const aCommand: String;const aShow, aWaitExit: Boolean): Boolean;
var
 pi:PROCESS_INFORMATION;
 si:STARTUPINFO;
 cmdLine,Path: String;
begin
 Result := False;
 ZeroMemory(@si,sizeof(si));
 si.cb:=SizeOf(si);
 si.dwFlags := STARTF_FORCEONFEEDBACK+STARTF_USESHOWWINDOW;
 if aShow then si.wShowWindow := SW_SHOWNORMAL else si.wShowWindow := SW_HIDE;
 Path := ExtractFilePath(aCommand);
 cmdLine := aCommand;

 Result :=
        CreateProcess( nil,             // No module name (use command line).
                       PChar(cmdLine),  // Command line.
                       nil,             // Process handle not inheritable.
                       nil,             // Thread handle not inheritable.
                       False,           // Set handle inheritance to FALSE.
                       0,               // No creation flags.
                       nil,             // Use parent"s environment block.
                       PChar(Path),     // Use parent"s starting directory.
                       si,              // Pointer to STARTUPINFO structure.
                       pi );             // Pointer to PROCESS_INFORMATION structure.
 if Result then
 begin
   if aWaitExit then WaitForSingleObject( pi.hProcess, infinite );
   CloseHandle(pi.hThread);
   CloseHandle(pi.hProcess);
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 ExecCmd(ExtractFilePath(ParamStr(0))+"pkzip test.zip",True,False);
end;

end.


 
panov ©   (2004-03-29 17:16) [162]

6 вопрос.

Как запустить другую программу и дождаться ее окончания.

Пример:


unit ufCreateProcess;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

//Функция для создания нового процесса
//Параметры:
// aCommand:  Строка для выполнения исполняемого файла(полный путь)
// aShow:     Показывать/не показывать окно нового процесса
// aWaitExit: Ожидать/не ожидать завершения процесса
function ExecCmd(const aCommand: String;const aShow, aWaitExit: Boolean): Boolean;
var
 pi:PROCESS_INFORMATION;
 si:STARTUPINFO;
 cmdLine,Path: String;
begin
 Result := False;
 ZeroMemory(@si,sizeof(si));
 si.cb:=SizeOf(si);
 si.dwFlags := STARTF_FORCEONFEEDBACK+STARTF_USESHOWWINDOW;
 if aShow then si.wShowWindow := SW_SHOWNORMAL else si.wShowWindow := SW_HIDE;
 Path := ExtractFilePath(aCommand);
 cmdLine := aCommand;

 Result :=
        CreateProcess( nil,             // No module name (use command line).
                       PChar(cmdLine),  // Command line.
                       nil,             // Process handle not inheritable.
                       nil,             // Thread handle not inheritable.
                       False,           // Set handle inheritance to FALSE.
                       0,               // No creation flags.
                       nil,             // Use parent"s environment block.
                       PChar(Path),     // Use parent"s starting directory.
                       si,              // Pointer to STARTUPINFO structure.
                       pi );             // Pointer to PROCESS_INFORMATION structure.
 if Result then
 begin
   if aWaitExit then WaitForSingleObject( pi.hProcess, infinite );
   CloseHandle(pi.hThread);
   CloseHandle(pi.hProcess);
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 ExecCmd(ExtractFilePath(ParamStr(0))+"pkzip test.zip",True,False);
end;

end.


 
stone ©   (2004-03-29 17:19) [163]


> panov ©  

ExtractFileDir

ЗЫ. еще pkzip не работает с длинными именами


 
stone ©   (2004-03-29 17:19) [163]


> panov ©  

ExtractFileDir

ЗЫ. еще pkzip не работает с длинными именами


 
stone ©   (2004-03-29 17:23) [164]

сорри не доглядел


 
stone ©   (2004-03-29 17:23) [164]

сорри не доглядел


 
zamkom ©   (2004-03-29 17:30) [165]

Игорь Шевченко ©   (29.03.04 16:37) [153]
Прошу прощения, но если использовать
OemToChar(PChar(S),PChar(S))
не в функции как указано вами а при обработке т.е.
вот так
S:="текст";
OemToChar(PChar(S),PChar(S));

То при выполнении этого кода возникает ошибка.
Предлагаю использовать вот такой код
CharToOem(@Result[1],@Result[1]);
В этом случае даже если писать так
S:="текст";
CharToOem(@S[1],@S[1]);
то никакой ошибки не выскочит и текст благополучно сконвертится.


 
zamkom ©   (2004-03-29 17:30) [165]

Игорь Шевченко ©   (29.03.04 16:37) [153]
Прошу прощения, но если использовать
OemToChar(PChar(S),PChar(S))
не в функции как указано вами а при обработке т.е.
вот так
S:="текст";
OemToChar(PChar(S),PChar(S));

То при выполнении этого кода возникает ошибка.
Предлагаю использовать вот такой код
CharToOem(@Result[1],@Result[1]);
В этом случае даже если писать так
S:="текст";
CharToOem(@S[1],@S[1]);
то никакой ошибки не выскочит и текст благополучно сконвертится.


 
Игорь Шевченко ©   (2004-03-29 17:41) [166]

zamkom ©   (29.03.04 17:30)

Как объявлена переменная S ? и как установлена опция компилятора $H ?


 
Игорь Шевченко ©   (2004-03-29 17:41) [166]

zamkom ©   (29.03.04 17:30)

Как объявлена переменная S ? и как установлена опция компилятора $H ?


 
Юрий Зотов ©   (2004-03-29 17:53) [167]

CloseHandle(pi.hThread) лучше вызывать ДО WaitForSingleObject, чтобы сразу освободить ненужный системный ресурс.


 
Юрий Зотов ©   (2004-03-29 17:53) [167]

CloseHandle(pi.hThread) лучше вызывать ДО WaitForSingleObject, чтобы сразу освободить ненужный системный ресурс.


 
zamkom ©   (2004-03-29 17:53) [168]

Игорь Шевченко ©   (29.03.04 17:41) [166]
var
S : String;

а насчет компилятора $H так ниче не трогал и не изменял как по умолчанию там все стоит так и не трогал.


 
zamkom ©   (2004-03-29 17:53) [168]

Игорь Шевченко ©   (29.03.04 17:41) [166]
var
S : String;

а насчет компилятора $H так ниче не трогал и не изменял как по умолчанию там все стоит так и не трогал.


 
panov ©   (2004-03-29 17:54) [169]

>Юрий Зотов ©   (29.03.04 17:53) [167]
CloseHandle(pi.hThread) лучше вызывать ДО WaitForSingleObject, чтобы сразу освободить ненужный системный ресурс.

Не помню, в каком случае, но у меня возникала ошибка, если в таком порядке были написаны операторы(CloseHandle(pi.hThread) до Wait)


 
panov ©   (2004-03-29 17:54) [169]

>Юрий Зотов ©   (29.03.04 17:53) [167]
CloseHandle(pi.hThread) лучше вызывать ДО WaitForSingleObject, чтобы сразу освободить ненужный системный ресурс.

Не помню, в каком случае, но у меня возникала ошибка, если в таком порядке были написаны операторы(CloseHandle(pi.hThread) до Wait)


 
Verg ©   (2004-03-29 17:55) [170]


> zamkom ©   (29.03.04 17:30) [165]


> не в функции как указано вами а при обработке т.е.


Ну так, на то там и фунция.

S:="текст";
S:= Win2Dos(S);

Вот и не будет никаких ошибок.

Просто @S[1] и pchar(S) - это две болших разницы.


 
Verg ©   (2004-03-29 17:55) [170]


> zamkom ©   (29.03.04 17:30) [165]


> не в функции как указано вами а при обработке т.е.


Ну так, на то там и фунция.

S:="текст";
S:= Win2Dos(S);

Вот и не будет никаких ошибок.

Просто @S[1] и pchar(S) - это две болших разницы.


 
Юрий Зотов ©   (2004-03-29 17:59) [171]

> panov ©   (29.03.04 17:54) [169]

> Не помню, в каком случае, но у меня возникала ошибка, если в
> таком порядке были написаны операторы CloseHandle(pi.hThread)
> до Wait

Тут и помнить не надо - при любой попытке использовать pi.hThread после CloseHandle(pi.hThread) будет ошибка. Если такой попытки нет - ошибки не будет.


 
Юрий Зотов ©   (2004-03-29 17:59) [171]

> panov ©   (29.03.04 17:54) [169]

> Не помню, в каком случае, но у меня возникала ошибка, если в
> таком порядке были написаны операторы CloseHandle(pi.hThread)
> до Wait

Тут и помнить не надо - при любой попытке использовать pi.hThread после CloseHandle(pi.hThread) будет ошибка. Если такой попытки нет - ошибки не будет.


 
panov ©   (2004-03-29 18:11) [172]

>Юрий Зотов ©   (29.03.04 17:59) [171]
Ну не думаю, что здесь порядок имеет существенное значение в любом случае-)


 
panov ©   (2004-03-29 18:11) [172]

>Юрий Зотов ©   (29.03.04 17:59) [171]
Ну не думаю, что здесь порядок имеет существенное значение в любом случае-)


 
Игорь Шевченко ©   (2004-03-29 18:13) [173]

zamkom ©   (29.03.04 17:53)

Все правильно, возникает ошибка. Потому что в этом случае константа находится в сегменте кода и по месту ее преобразовывать нельзя. Нужно функцию использовать.
Почему срабатывает @S[1] - потому что в этом случае компилятор делает копию строки. Но для функции в FAQ это не требуется.


 
Игорь Шевченко ©   (2004-03-29 18:13) [173]

zamkom ©   (29.03.04 17:53)

Все правильно, возникает ошибка. Потому что в этом случае константа находится в сегменте кода и по месту ее преобразовывать нельзя. Нужно функцию использовать.
Почему срабатывает @S[1] - потому что в этом случае компилятор делает копию строки. Но для функции в FAQ это не требуется.


 
Юрий Зотов ©   (2004-03-29 18:20) [174]

> panov ©   (29.03.04 18:11) [172]

IMHO, для ПРИМЕРА как раз имеет. Потому что именно ПРИМЕР должен показывать ГРАМОТНОЕ решение. Мы все помним пресловутый пример с "Synhronize аж во весь Execute" - а ведь тоже вполне правильный пример.


 
Юрий Зотов ©   (2004-03-29 18:20) [174]

> panov ©   (29.03.04 18:11) [172]

IMHO, для ПРИМЕРА как раз имеет. Потому что именно ПРИМЕР должен показывать ГРАМОТНОЕ решение. Мы все помним пресловутый пример с "Synhronize аж во весь Execute" - а ведь тоже вполне правильный пример.


 
panov ©   (2004-03-29 18:41) [175]

>Юрий Зотов ©   (29.03.04 18:20) [174]

Согласен, что это так-)
Так и сделаю, но теперь уже не вспомнить, почему же я стал сам так делать. ПРограмма работала именно так, и никак иначе-)


 
panov ©   (2004-03-29 18:41) [175]

>Юрий Зотов ©   (29.03.04 18:20) [174]

Согласен, что это так-)
Так и сделаю, но теперь уже не вспомнить, почему же я стал сам так делать. ПРограмма работала именно так, и никак иначе-)


 
N169   (2004-03-29 18:57) [176]

+ кстати, "вечным" вопросам (иконка в трее, перехват ctrl-alt-del) можно было бы сопоставлять специальный значок-картинку, которая была бы ссылкой на соотв. раздел FAQ или список связанных тем (в архиве). Очень удобно.


 
N169   (2004-03-29 18:57) [176]

+ кстати, "вечным" вопросам (иконка в трее, перехват ctrl-alt-del) можно было бы сопоставлять специальный значок-картинку, которая была бы ссылкой на соотв. раздел FAQ или список связанных тем (в архиве). Очень удобно.


 
panov ©   (2004-03-29 19:19) [177]

>stone ©   (29.03.04 17:19) [163]

ExtractFileDir

Если эту функцию использовать, то в конец нужно добавлять вручную еще "\".


 
panov ©   (2004-03-29 19:19) [177]

>stone ©   (29.03.04 17:19) [163]

ExtractFileDir

Если эту функцию использовать, то в конец нужно добавлять вручную еще "\".


 
Piter ©   (2004-03-29 19:35) [178]

panov (29.03.04 18:41) [175]

опубликуй еще раз полный список вопросов - а то я запутался...


 
Piter ©   (2004-03-29 19:35) [178]

panov (29.03.04 18:41) [175]

опубликуй еще раз полный список вопросов - а то я запутался...


 
panov ©   (2004-03-29 20:23) [179]

Пока обрабатывается такой список вопросов:
Как поместить иконку приложения в System Tray
Как спрятать (свернуть) приложение при нажатии на кнопку «закрыть» в области заголовка формы или при нажатии Alt-F4
Как получить список файлов в каталоге и его подкаталогах
Как перекодировать строку из кодировки OEM в ANSI и обратно.
Как выполнить длительную(по времени) процедуру в дополнительном потоке и одновременно обновлять TProgressBar в основном потоке.
Как запустить другую программу и дождаться ее окончания.
Как запустить процесс от имени другого пользователя
Почему во время выполнения дополнительного потока не обновляются объекты на основной форме (Synchronize аж во весь Execute)
Как создать таймер средствами Win32Api
Как получить список процессов
Как преобразовать тип String к Pchar и обратно
Как уменьшить размер программы
Динамическое создание объектов, включая создание массива объектов и назначения единой процедуры обработки
Почему при динамическом создании объект остается невидимым.
Как найти компонент по имени.
Как послать сообщение окну.
Как эмулировать нажатие клавиши или кнопки мыши.
Как прочитать заголовок или Edit из чужого окна
Как передать строку (длинные данные) из одной программы в другую
Как закрыть чужое приложение из моего
Как узнать время работы Windows после последней загрузки системы
Как перехватить Ctrl+Alt+Del
Как скрыть программу от Ctrl+Alt+Del
Как не дать снять мою программу из Task Manager
Как передать String из EXE в DLL и обратно
Почему текст не загружается целиком в TMemo(символ #0 в середине текста)
Глобальные хуки (стандартная ошибка - неглобальные переменные)
Как избавиться от Scrollbars в MDIForm

Как перенести/установить/настроить алиасы BDE на другой компьютер
Как нормализовать вид ScrollBar (90% ответ - Fetchall :)).
Вопрос про точное хранение денежных сумм и т.п..
Как в выпадающий список DBComboBox вывести все значения поля из таблицы?
Как вставить TCheckBox в поле DBGrid ?
Как раскрасить отдельные строки в TDBGgrid

Определение IP по DNS-имени хоста и наоборот
Где взять proxies.pas
Куда делись TClientSocket/TServerSocket из Delphi7 и где их взять
Как узнать локальный МАС (IP) локального и удаленного компьютера
Как отправить файл по сети на другой компьютер
Как разговаривать по сети
Как отправить письмо с вложением
Как установить - разорвать соединение DialUp
Как запретить доступ к моему компу, но чтоб остались общие ресурсы
Как получить доступ к общим ресурсам удаленного компьютера, зная пароль
Как самому написать Sniffer
Как самому написать Proxy
Как самому написать FireWall
Как получить в локальной сети список:
- имен пользователей
- ресурсов
- доменов
- рабочих групп,
Как работать с низкоуровневыми сокетами WinSock

Как уменьшить мерцание на TImage?
Как сграбить экран?
Как распечатать рисунок?
Как отобразить рисунок очень больших размеров?
Как создать AVI из последовательности BMP?
Как преобразовать JPEG<->BMP
Как преобразовать ... в MP3?
Как создать (полу)прозрачную форму?

Как записать байт в порт (LPT,COM,USB,TCP/IP) и поймать его обратно со второй ножки.
Как русифицировать кнопки на стандартном окне MessageDlg

Как в Word:
- открыть документ
- напечатать документ
- работать с таблицами

http://www.delphimaster.ru/cgi-bin/download.pl?look=1&id=1077992645&n=0
Диалог  выбора папки:
http://www.delphimaster.ru/cgi-bin/download.pl?look=1&id=1078389217&n=0
Хинт :
http://www.delphimaster.ru/cgi-bin/download.pl?look=1&id=1078223087&n=0
http://www.delphimaster.ru/cgi-bin/download.pl?look=1&id=1078646471&n=1


 
panov ©   (2004-03-29 20:23) [179]

Пока обрабатывается такой список вопросов:
Как поместить иконку приложения в System Tray
Как спрятать (свернуть) приложение при нажатии на кнопку «закрыть» в области заголовка формы или при нажатии Alt-F4
Как получить список файлов в каталоге и его подкаталогах
Как перекодировать строку из кодировки OEM в ANSI и обратно.
Как выполнить длительную(по времени) процедуру в дополнительном потоке и одновременно обновлять TProgressBar в основном потоке.
Как запустить другую программу и дождаться ее окончания.
Как запустить процесс от имени другого пользователя
Почему во время выполнения дополнительного потока не обновляются объекты на основной форме (Synchronize аж во весь Execute)
Как создать таймер средствами Win32Api
Как получить список процессов
Как преобразовать тип String к Pchar и обратно
Как уменьшить размер программы
Динамическое создание объектов, включая создание массива объектов и назначения единой процедуры обработки
Почему при динамическом создании объект остается невидимым.
Как найти компонент по имени.
Как послать сообщение окну.
Как эмулировать нажатие клавиши или кнопки мыши.
Как прочитать заголовок или Edit из чужого окна
Как передать строку (длинные данные) из одной программы в другую
Как закрыть чужое приложение из моего
Как узнать время работы Windows после последней загрузки системы
Как перехватить Ctrl+Alt+Del
Как скрыть программу от Ctrl+Alt+Del
Как не дать снять мою программу из Task Manager
Как передать String из EXE в DLL и обратно
Почему текст не загружается целиком в TMemo(символ #0 в середине текста)
Глобальные хуки (стандартная ошибка - неглобальные переменные)
Как избавиться от Scrollbars в MDIForm

Как перенести/установить/настроить алиасы BDE на другой компьютер
Как нормализовать вид ScrollBar (90% ответ - Fetchall :)).
Вопрос про точное хранение денежных сумм и т.п..
Как в выпадающий список DBComboBox вывести все значения поля из таблицы?
Как вставить TCheckBox в поле DBGrid ?
Как раскрасить отдельные строки в TDBGgrid

Определение IP по DNS-имени хоста и наоборот
Где взять proxies.pas
Куда делись TClientSocket/TServerSocket из Delphi7 и где их взять
Как узнать локальный МАС (IP) локального и удаленного компьютера
Как отправить файл по сети на другой компьютер
Как разговаривать по сети
Как отправить письмо с вложением
Как установить - разорвать соединение DialUp
Как запретить доступ к моему компу, но чтоб остались общие ресурсы
Как получить доступ к общим ресурсам удаленного компьютера, зная пароль
Как самому написать Sniffer
Как самому написать Proxy
Как самому написать FireWall
Как получить в локальной сети список:
- имен пользователей
- ресурсов
- доменов
- рабочих групп,
Как работать с низкоуровневыми сокетами WinSock

Как уменьшить мерцание на TImage?
Как сграбить экран?
Как распечатать рисунок?
Как отобразить рисунок очень больших размеров?
Как создать AVI из последовательности BMP?
Как преобразовать JPEG<->BMP
Как преобразовать ... в MP3?
Как создать (полу)прозрачную форму?

Как записать байт в порт (LPT,COM,USB,TCP/IP) и поймать его обратно со второй ножки.
Как русифицировать кнопки на стандартном окне MessageDlg

Как в Word:
- открыть документ
- напечатать документ
- работать с таблицами

http://www.delphimaster.ru/cgi-bin/download.pl?look=1&id=1077992645&n=0
Диалог  выбора папки:
http://www.delphimaster.ru/cgi-bin/download.pl?look=1&id=1078389217&n=0
Хинт :
http://www.delphimaster.ru/cgi-bin/download.pl?look=1&id=1078223087&n=0
http://www.delphimaster.ru/cgi-bin/download.pl?look=1&id=1078646471&n=1


 
Piter ©   (2004-03-29 21:31) [180]

panov (29.03.04 17:16) [162]
ZeroMemory(@si,sizeof(si));


а нафига?

извините, что убегаю немного:
Как получить список процессов
вопрос N10

Будем пользоваться функцией CreateToolhelp32Snapshot, она реализована как в NT системах, так и в 9x. В NT она использует пресловутую NtQuerySystemInformation, которая недокументированна.
Заголовок CreateToolhelp32Snapshot и остальные типы описаны в модуле TlHelp32.
CreateToolhelp32Snapshot может делать снимок процессов и куч, модулей, потоков, используемых процессом. Она заносит требуемые данные в некоторую структуру (снимок) и возвращает ее описатель. После использования нужно закрыть описатель.
Работать со снимком можно с помощью функций Process32First, Process32Next, Thread32First , Thread32Next и так далее (описаны в Win32 SDK в разделе "Tool Help Functions"). Эти функции заносят информацию о конкретном процессе, потоке и т.д. из снимка в структуры типа TProcessEntry32, TThreadEntry32.
Итак, будем получать список процессов и заносить их названия в ListBox1, который лежит у нас на форме:

procedure TForm1.Button1Click(Sender: TObject);
var HSnapShot: THandle;
 pe: TProcessEntry32;
begin
listbox1.Clear; //очишаем наш ListBox1
HSnapShot:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); //нам нужен снимок процессов
pe.dwSize := sizeof(ProcessEntry32); //перед использованием TProcessEntry32 нужно заполнить поле dwSize
if Process32First(HSnapShot, pe) then // если первая запись о процессах получена - продолжаем
 repeat
   listbox1.Items.Add(pe.szExeFile); // добавляем в ListBox
 until ( not Process32Next(HSnapShot,pe) ); // получаем запись о следующем процессе, если не получаем - выходим из цикла
closehandle(HSnapShot); // закрываем описатель снимка
end;


 
Piter ©   (2004-03-29 21:31) [180]

panov (29.03.04 17:16) [162]
ZeroMemory(@si,sizeof(si));


а нафига?

извините, что убегаю немного:
Как получить список процессов
вопрос N10

Будем пользоваться функцией CreateToolhelp32Snapshot, она реализована как в NT системах, так и в 9x. В NT она использует пресловутую NtQuerySystemInformation, которая недокументированна.
Заголовок CreateToolhelp32Snapshot и остальные типы описаны в модуле TlHelp32.
CreateToolhelp32Snapshot может делать снимок процессов и куч, модулей, потоков, используемых процессом. Она заносит требуемые данные в некоторую структуру (снимок) и возвращает ее описатель. После использования нужно закрыть описатель.
Работать со снимком можно с помощью функций Process32First, Process32Next, Thread32First , Thread32Next и так далее (описаны в Win32 SDK в разделе "Tool Help Functions"). Эти функции заносят информацию о конкретном процессе, потоке и т.д. из снимка в структуры типа TProcessEntry32, TThreadEntry32.
Итак, будем получать список процессов и заносить их названия в ListBox1, который лежит у нас на форме:

procedure TForm1.Button1Click(Sender: TObject);
var HSnapShot: THandle;
 pe: TProcessEntry32;
begin
listbox1.Clear; //очишаем наш ListBox1
HSnapShot:=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); //нам нужен снимок процессов
pe.dwSize := sizeof(ProcessEntry32); //перед использованием TProcessEntry32 нужно заполнить поле dwSize
if Process32First(HSnapShot, pe) then // если первая запись о процессах получена - продолжаем
 repeat
   listbox1.Items.Add(pe.szExeFile); // добавляем в ListBox
 until ( not Process32Next(HSnapShot,pe) ); // получаем запись о следующем процессе, если не получаем - выходим из цикла
closehandle(HSnapShot); // закрываем описатель снимка
end;


 
Игорь Шевченко ©   (2004-03-30 10:34) [181]

Piter ©   (29.03.04 21:31)


> Будем пользоваться функцией CreateToolhelp32Snapshot, она
> реализована как в NT системах, так и в 9x.


Кроме Windows NT.

"Requires Windows XP, Windows 2000 Professional, Windows Me, Windows 98, or Windows 95."


 
Игорь Шевченко ©   (2004-03-30 10:34) [181]

Piter ©   (29.03.04 21:31)


> Будем пользоваться функцией CreateToolhelp32Snapshot, она
> реализована как в NT системах, так и в 9x.


Кроме Windows NT.

"Requires Windows XP, Windows 2000 Professional, Windows Me, Windows 98, or Windows 95."


 
VMcL ©   (2004-03-30 16:02) [182]

2 [0]
Работа со значками на рабочем столе.

P.S. У меня есть небольшой простой пример:
http://igp.org.ua/vmcl/?id=view_article&aid=1
http://vvmcl.amillo.net/?id=view_article&aid=1 (зеркало)
Зацените, если будет время. С замечаниями прошу в ICQ или сюда.


 
VMcL ©   (2004-03-30 16:02) [182]

2 [0]
Работа со значками на рабочем столе.

P.S. У меня есть небольшой простой пример:
http://igp.org.ua/vmcl/?id=view_article&aid=1
http://vvmcl.amillo.net/?id=view_article&aid=1 (зеркало)
Зацените, если будет время. С замечаниями прошу в ICQ или сюда.


 
Юрий Зотов ©   (2004-03-30 16:33) [183]

> panov

Еще один супервопрос - как определить версию системы.

Готовый ответ здесь:
http://delphi84.valuehost.ru/cgi-bin/forum.pl?id=1077391423&n=2


 
Юрий Зотов ©   (2004-03-30 16:33) [183]

> panov

Еще один супервопрос - как определить версию системы.

Готовый ответ здесь:
http://delphi84.valuehost.ru/cgi-bin/forum.pl?id=1077391423&n=2


 
Rouse_ ©   (2004-03-30 16:51) [184]

Ребят, мы забыли еще одну вещь, я сейчас специально пересмотрел все вопросы - а где вопросы по базам? Там же их тоже куча должна быть?


 
Rouse_ ©   (2004-03-30 16:51) [184]

Ребят, мы забыли еще одну вещь, я сейчас специально пересмотрел все вопросы - а где вопросы по базам? Там же их тоже куча должна быть?


 
Romkin ©   (2004-03-30 16:55) [185]

Нету? Любимый вопрос всех времен и народов - как загрузить jpeg в BLOB и потом ея оттуда извлечь?

function GetStreamImgType(Stream: TStream): TClass;
var
 StreamPos: int64;
 ImgSign: string;
begin
 StreamPos := Stream.Position;
 try
   //BMP если не определено
   Result := Graphics.TBitmap;
   //JPEG
   SetLength(ImgSign, 4);
   Stream.Seek(6, soFromCurrent);
   Stream.Read(ImgSign[1],4);
   if (UpperCase(ImgSign) = "JFIF") or (UpperCase(ImgSign) = "EXIF") then
     Result := Jpeg.TJPEGImage;
   //WMF
   Stream.Position := StreamPos;
   SetLength(ImgSign, 4);
   Stream.Read(ImgSign[1],4);
   if ImgSign = #$D7#$CD#$C6#$9A then
     Result := Graphics.TMetafile;
 finally
   Stream.Position := StreamPos;
 end;
end;

procedure LoadProperImage(Stream: TStream; Picture: TPicture);
var
 Img: TGraphic;
 StreamPos: int64;
begin
 StreamPos := Stream.Position;
 Img := TGraphicClass(GetStreamImgType(Stream)).Create;
 try
   Stream.Position := StreamPos;
   Img.LoadFromStream(Stream);
   Picture.Graphic := Img;
 finally
   Img.Free;
 end;
end;

function LoadPictureFromBLOB(Picture: TPicture; Field: TBlobField): boolean;
var
 Stream: TStream;
begin
 Result := False;
 if not Field.isNULL then
 begin
   Stream := TMemoryStream.Create;
   try
     Field.SaveToStream(Stream);
     Stream.Position := 0;
     LoadProperImage(Stream, Picture);
     Result := True;
   finally
     Stream.Free;
   end;
 end;
end;

procedure SavePictureToBlob(Picture: TPicture; Field: TBlobField);
var
 Stream: TStream;
begin
 if not (Field.DataSet.State in [dsEdit, dsInsert]) then
   Field.DataSet.Edit;
 Field.Clear;
 if Assigned(Picture.Graphic) then
   if not Picture.Graphic.Empty then
     begin
       Stream := TMemoryStream.Create;
       try
         Picture.Graphic.SaveToStream(Stream);
         Stream.Position := 0;
         Field.LoadFromStream(Stream);
       finally
         Stream.Free;
       end;
     end;
end;


Правда, не фонтан :((( Для метафайла и иконки есть предопределенные константы сигнатур. Да и считывание в поток, а потом из него - тоже не особо.


 
Romkin ©   (2004-03-30 16:55) [185]

Нету? Любимый вопрос всех времен и народов - как загрузить jpeg в BLOB и потом ея оттуда извлечь?

function GetStreamImgType(Stream: TStream): TClass;
var
 StreamPos: int64;
 ImgSign: string;
begin
 StreamPos := Stream.Position;
 try
   //BMP если не определено
   Result := Graphics.TBitmap;
   //JPEG
   SetLength(ImgSign, 4);
   Stream.Seek(6, soFromCurrent);
   Stream.Read(ImgSign[1],4);
   if (UpperCase(ImgSign) = "JFIF") or (UpperCase(ImgSign) = "EXIF") then
     Result := Jpeg.TJPEGImage;
   //WMF
   Stream.Position := StreamPos;
   SetLength(ImgSign, 4);
   Stream.Read(ImgSign[1],4);
   if ImgSign = #$D7#$CD#$C6#$9A then
     Result := Graphics.TMetafile;
 finally
   Stream.Position := StreamPos;
 end;
end;

procedure LoadProperImage(Stream: TStream; Picture: TPicture);
var
 Img: TGraphic;
 StreamPos: int64;
begin
 StreamPos := Stream.Position;
 Img := TGraphicClass(GetStreamImgType(Stream)).Create;
 try
   Stream.Position := StreamPos;
   Img.LoadFromStream(Stream);
   Picture.Graphic := Img;
 finally
   Img.Free;
 end;
end;

function LoadPictureFromBLOB(Picture: TPicture; Field: TBlobField): boolean;
var
 Stream: TStream;
begin
 Result := False;
 if not Field.isNULL then
 begin
   Stream := TMemoryStream.Create;
   try
     Field.SaveToStream(Stream);
     Stream.Position := 0;
     LoadProperImage(Stream, Picture);
     Result := True;
   finally
     Stream.Free;
   end;
 end;
end;

procedure SavePictureToBlob(Picture: TPicture; Field: TBlobField);
var
 Stream: TStream;
begin
 if not (Field.DataSet.State in [dsEdit, dsInsert]) then
   Field.DataSet.Edit;
 Field.Clear;
 if Assigned(Picture.Graphic) then
   if not Picture.Graphic.Empty then
     begin
       Stream := TMemoryStream.Create;
       try
         Picture.Graphic.SaveToStream(Stream);
         Stream.Position := 0;
         Field.LoadFromStream(Stream);
       finally
         Stream.Free;
       end;
     end;
end;


Правда, не фонтан :((( Для метафайла и иконки есть предопределенные константы сигнатур. Да и считывание в поток, а потом из него - тоже не особо.


 
Rouse_ ©   (2004-03-30 16:55) [186]

С постановкой некоторых из вопросов я немного не согласен, но ответы привел:

Вопрос:
Как определить имя DNS-хоста (компьютера) по IP?
Ответ:
Для этого воспользуемся функцией gethostbyaddr
Пример:
uses ..., WinSock;

function GetNameFromIP(const IP: String): String;
const  
 ERR_INADDR    = "Can not convert IP to in_addr.";
 ERR_HOST      = "Can not get host information.";
 RES_UNKNOWN   = "Unknown";
 ERR_WSA       = "Can not initialize WSA.";
 WSA_TYPE      = $101; //$202;
var
 WSA   : TWSAData;
 Host  : PHostEnt;
 Addr  : Integer;
 Err   : Integer;
begin
 Result := RES_UNKNOWN;
 Err := WSAStartup(WSA_TYPE, WSA);
 if Err <> 0 then  
 begin            
   MessageDlg(ERR_WSA, mtError, [mbOK], 0);
   Exit;
 end;
 Addr := inet_addr(PChar(IP));
 if Addr = INADDR_NONE then
 begin
   MessageDlg(ERR_INADDR, mtError, [mbOK], 0);
   WSACleanup;
   Exit;
 end;                                  
 Host := gethostbyaddr(@Addr, SizeOf(Addr), PF_INET);
 if Assigned(Host) then
   Result := Host.h_name
 else
   MessageDlg(ERR_HOST, mtError, [mbOK], 0);
 WSACleanup;
end;

Пример вызова:
procedure TForm1.Button1Click(Sender: TObject);
begin
 Caption := GetNameFromIP("192.168.24.1");
end;

==============================================================================
Вопрос:
Как получить IP по имени DNS-хоста (компьютера)?
Ответ:
Воспользуемся функцией GetHostByName
Пример:
uses ..., WinSock

function GetIPFromName(DNS: string): string;
const
 ERR_HOST      = "Can not get host information.";
 RES_UNKNOWN   = "Unknown";
 ERR_WSA       = "Can not initialize WSA.";
 WSA_TYPE      = $101; //$202;
var
 WSA   : TWSAData;
 Host  : PHostEnt;
 Err   : Integer;
begin
 Result := RES_UNKNOWN;
 Err := WSAStartup(WSA_TYPE, WSA);
 if Err <> 0 then
 begin            
   MessageDlg(ERR_WSA, mtError, [mbOK], 0);
   Exit;
 end;
 Host := GetHostByName(PChar(DNS));
 if Assigned(Host.h_addr_list) then  
   Result :=                        
     inet_ntoa(PInAddr(Host.h_addr_list^)^)
 else
   MessageDlg(ERR_HOST, mtError, [mbOK], 0);
 WSACleanup;
end;

Пример вызова:
procedure TForm1.Button1Click(Sender: TObject);
begin
 Caption := GetIPFromName("Rouse");
end;

==============================================================================
Вопрос:
Где взять proxies.pas
Ответ:
Данный модуль необходим только для DesignTime. Его требует DesignEditors.
Суррогатный способ обойти данное препятствие заключается в его "урезаном" аналоге:

unit Proxies;

interface

function IsProxyClass(ComponentClass: TClass): Boolean;

implementation

function IsProxyClass(ComponentClass: TClass): Boolean;
begin
 Result := True;
end;

end.

А также существует правильный способ:
Просто реорганизуйте ваш проект на использование RunTime пакетов и добавьте "DesignIDE.dcp" к вашему списку RunTime пакетов. Proxies.pas находится именно здесь, и вам не нужен исходный текст вообще.  

Почему это сделано? Просто доля уверенности, что вы не сможете распространять Design Time части (Property Editors, Component Editors), это запрещено по лицензии. DesignIDE.bpl не является свободно распространяемым, вы имеете право использовать его только на машине на которой установлена Delphi, подобно Component Libraries.


 
Rouse_ ©   (2004-03-30 16:55) [186]

С постановкой некоторых из вопросов я немного не согласен, но ответы привел:

Вопрос:
Как определить имя DNS-хоста (компьютера) по IP?
Ответ:
Для этого воспользуемся функцией gethostbyaddr
Пример:
uses ..., WinSock;

function GetNameFromIP(const IP: String): String;
const  
 ERR_INADDR    = "Can not convert IP to in_addr.";
 ERR_HOST      = "Can not get host information.";
 RES_UNKNOWN   = "Unknown";
 ERR_WSA       = "Can not initialize WSA.";
 WSA_TYPE      = $101; //$202;
var
 WSA   : TWSAData;
 Host  : PHostEnt;
 Addr  : Integer;
 Err   : Integer;
begin
 Result := RES_UNKNOWN;
 Err := WSAStartup(WSA_TYPE, WSA);
 if Err <> 0 then  
 begin            
   MessageDlg(ERR_WSA, mtError, [mbOK], 0);
   Exit;
 end;
 Addr := inet_addr(PChar(IP));
 if Addr = INADDR_NONE then
 begin
   MessageDlg(ERR_INADDR, mtError, [mbOK], 0);
   WSACleanup;
   Exit;
 end;                                  
 Host := gethostbyaddr(@Addr, SizeOf(Addr), PF_INET);
 if Assigned(Host) then
   Result := Host.h_name
 else
   MessageDlg(ERR_HOST, mtError, [mbOK], 0);
 WSACleanup;
end;

Пример вызова:
procedure TForm1.Button1Click(Sender: TObject);
begin
 Caption := GetNameFromIP("192.168.24.1");
end;

==============================================================================
Вопрос:
Как получить IP по имени DNS-хоста (компьютера)?
Ответ:
Воспользуемся функцией GetHostByName
Пример:
uses ..., WinSock

function GetIPFromName(DNS: string): string;
const
 ERR_HOST      = "Can not get host information.";
 RES_UNKNOWN   = "Unknown";
 ERR_WSA       = "Can not initialize WSA.";
 WSA_TYPE      = $101; //$202;
var
 WSA   : TWSAData;
 Host  : PHostEnt;
 Err   : Integer;
begin
 Result := RES_UNKNOWN;
 Err := WSAStartup(WSA_TYPE, WSA);
 if Err <> 0 then
 begin            
   MessageDlg(ERR_WSA, mtError, [mbOK], 0);
   Exit;
 end;
 Host := GetHostByName(PChar(DNS));
 if Assigned(Host.h_addr_list) then  
   Result :=                        
     inet_ntoa(PInAddr(Host.h_addr_list^)^)
 else
   MessageDlg(ERR_HOST, mtError, [mbOK], 0);
 WSACleanup;
end;

Пример вызова:
procedure TForm1.Button1Click(Sender: TObject);
begin
 Caption := GetIPFromName("Rouse");
end;

==============================================================================
Вопрос:
Где взять proxies.pas
Ответ:
Данный модуль необходим только для DesignTime. Его требует DesignEditors.
Суррогатный способ обойти данное препятствие заключается в его "урезаном" аналоге:

unit Proxies;

interface

function IsProxyClass(ComponentClass: TClass): Boolean;

implementation

function IsProxyClass(ComponentClass: TClass): Boolean;
begin
 Result := True;
end;

end.

А также существует правильный способ:
Просто реорганизуйте ваш проект на использование RunTime пакетов и добавьте "DesignIDE.dcp" к вашему списку RunTime пакетов. Proxies.pas находится именно здесь, и вам не нужен исходный текст вообще.  

Почему это сделано? Просто доля уверенности, что вы не сможете распространять Design Time части (Property Editors, Component Editors), это запрещено по лицензии. DesignIDE.bpl не является свободно распространяемым, вы имеете право использовать его только на машине на которой установлена Delphi, подобно Component Libraries.


 
Игорь Шевченко ©   (2004-03-30 17:02) [187]


> А также существует правильный способ:
> Просто реорганизуйте ваш проект на использование RunTime
> пакетов и добавьте "DesignIDE.dcp" к вашему списку RunTime
> пакетов. Proxies.pas находится именно здесь, и вам не нужен
> исходный текст вообще.  


И нафига, спрашивается, приложению использовать в run-time пакет, который нужен только в Design-time ?


 
Игорь Шевченко ©   (2004-03-30 17:02) [187]


> А также существует правильный способ:
> Просто реорганизуйте ваш проект на использование RunTime
> пакетов и добавьте "DesignIDE.dcp" к вашему списку RunTime
> пакетов. Proxies.pas находится именно здесь, и вам не нужен
> исходный текст вообще.  


И нафига, спрашивается, приложению использовать в run-time пакет, который нужен только в Design-time ?


 
Юрий Зотов ©   (2004-03-30 17:12) [188]

Еще одна суперпуперпроблема:
http://delphi84.valuehost.ru/cgi-bin/forum.pl?id=1080637822&n=0
Рекомендую ответ [19] из той же ветки.


 
Юрий Зотов ©   (2004-03-30 17:12) [188]

Еще одна суперпуперпроблема:
http://delphi84.valuehost.ru/cgi-bin/forum.pl?id=1080637822&n=0
Рекомендую ответ [19] из той же ветки.


 
Rouse_ ©   (2004-03-30 17:17) [189]

> [187] Игорь Шевченко ©   (30.03.04 17:02)
Вопрос не ко мне :)
Данный текст был взят из текущего FAQ и ответ, если не ошибаюсь был Анатолия Подгорецкого ...

Просто реорганизуйте ваш проект - действительно стоит изменить...


 
Rouse_ ©   (2004-03-30 17:17) [189]

> [187] Игорь Шевченко ©   (30.03.04 17:02)
Вопрос не ко мне :)
Данный текст был взят из текущего FAQ и ответ, если не ошибаюсь был Анатолия Подгорецкого ...

Просто реорганизуйте ваш проект - действительно стоит изменить...


 
Игорь Шевченко ©   (2004-03-30 17:21) [190]

Rouse_ ©   (30.03.04 17:17)

Ссылочку на FAQ ?


 
Игорь Шевченко ©   (2004-03-30 17:21) [190]

Rouse_ ©   (30.03.04 17:17)

Ссылочку на FAQ ?


 
Rouse_ ©   (2004-03-30 17:29) [191]

http://podgoretsky.com/ftp/Language/nps/ru.delphi.html#N144


 
Rouse_ ©   (2004-03-30 17:29) [191]

http://podgoretsky.com/ftp/Language/nps/ru.delphi.html#N144


 
Rouse_ ©   (2004-03-30 17:29) [192]

Про текущее FAQ я действительно напутал...


 
Rouse_ ©   (2004-03-30 17:29) [192]

Про текущее FAQ я действительно напутал...


 
Rouse_ ©   (2004-03-30 17:40) [193]

До кучи, также просмотрите, может допустил какую ошибку:

Вопрос:
Как получить МАС адрес по IP
Ответ: Воспользоваться функцией GetIpNetTable из IpHlpApi
Пример:

interface

 IPHLPAPI = "IPHLPAPI.DLL";
 MAX_ADAPTER_ADDRESS_LENGTH = 7; .
 
type

 // Так будет выглядеть МАС
 TMacAddress = array[0..MAX_ADAPTER_ADDRESS_LENGTH] of byte;

 // Это структура для единичного запроса
 TMibIPNetRow = packed record
   dwIndex         : DWORD;
   dwPhysAddrLen   : DWORD;
   bPhysAddr       : TMACAddress;  // Вот здесь и лежит МАС!!!
   dwAddr          : DWORD;
   dwType          : DWORD;
 end;
 
 TMibIPNetRowArray = array [0..512] of TMibIPNetRow;

 // запрашиваемая структура
 PTMibIPNetTable = ^TMibIPNetTable;
 TMibIPNetTable = packed record
   dwNumEntries    : DWORD;
   Table: TMibIPNetRowArray;
 end;
 
 {$EXTERNALSYM GetIpNetTable}
 function GetIpNetTable(pIpNetTable: PTMibIPNetTable;
   pdwSize: PULONG; bOrder: Boolean): DWORD; stdcall;
   
 function GetIpNetTable; external IPHLPAPI name "GetIpNetTable";
 
implementation
   
function GetMacFromIP(const IP: String): String;

 function GetMAC(Value: TMacAddress; Length: DWORD): String;
 var
   I: Integer;
 begin
   if Length = 0 then Result := "00-00-00-00-00-00" else
   begin
     Result := "";
     for i:= 0 to Length -2 do
       Result := Result + IntToHex(Value[i], 2) + "-";
     Result := Result + IntToHex(Value[Length-1], 2);
   end;
 end;

 // Получаем IP адрес, в отличии от работы с классом WC_IPADDRESS
 // здесь преобразование идет в обратном порядке!
 function GetDottedIPFromInAddr(const InAddr: Integer): String;
 begin
   Result := "";
   Result := IntToStr(FOURTH_IPADDRESS(InAddr));
   Result := Result + "." + IntToStr(THIRD_IPADDRESS(InAddr));
   Result := Result + "." + IntToStr(SECOND_IPADDRESS(InAddr));
   Result := Result + "." + IntToStr(FIRST_IPADDRESS(InAddr));
 end;

const
 ERR_MAC     = "Can not get ARP table.";
 RES_UNKNOWN = "Unknown";
var
 Table: TMibIPNetTable;
 Size: Integer;
 CatchIP: String;
 Err, I: Integer;
begin
 Result := RES_UNKNOWN;
 Size := SizeOf(Table);                      
 Err := GetIpNetTable(@Table, @Size, False);
 if Err <> NO_ERROR then                    
 begin
   MessageDlg(ERR_MAC, mtError, [mbOK], 0);
   Exit;
 end;
 // Теперь мы имеем таблицу из IP адресов и соответсвующих им MAC адресов
 for I := 0 to Table.dwNumEntries - 1 do     // Ищем нужный IP ...
 begin
   CatchIP := GetDottedIPFromInAddr(Table.Table[I].dwAddr);
   if CatchIP = IP then                      // И выводим его МАС ...
   begin
     Result := GetMAC(Table.Table[I].bPhysAddr, Table.Table[I].dwPhysAddrLen);
     Break;
   end;
 end;
end;


Пример вызова:
procedure TForm1.Button1Click(Sender: TObject);
begin
 Caption := GetMacFromIP("192.168.24.1");
end;


 
Rouse_ ©   (2004-03-30 17:40) [193]

До кучи, также просмотрите, может допустил какую ошибку:

Вопрос:
Как получить МАС адрес по IP
Ответ: Воспользоваться функцией GetIpNetTable из IpHlpApi
Пример:

interface

 IPHLPAPI = "IPHLPAPI.DLL";
 MAX_ADAPTER_ADDRESS_LENGTH = 7; .
 
type

 // Так будет выглядеть МАС
 TMacAddress = array[0..MAX_ADAPTER_ADDRESS_LENGTH] of byte;

 // Это структура для единичного запроса
 TMibIPNetRow = packed record
   dwIndex         : DWORD;
   dwPhysAddrLen   : DWORD;
   bPhysAddr       : TMACAddress;  // Вот здесь и лежит МАС!!!
   dwAddr          : DWORD;
   dwType          : DWORD;
 end;
 
 TMibIPNetRowArray = array [0..512] of TMibIPNetRow;

 // запрашиваемая структура
 PTMibIPNetTable = ^TMibIPNetTable;
 TMibIPNetTable = packed record
   dwNumEntries    : DWORD;
   Table: TMibIPNetRowArray;
 end;
 
 {$EXTERNALSYM GetIpNetTable}
 function GetIpNetTable(pIpNetTable: PTMibIPNetTable;
   pdwSize: PULONG; bOrder: Boolean): DWORD; stdcall;
   
 function GetIpNetTable; external IPHLPAPI name "GetIpNetTable";
 
implementation
   
function GetMacFromIP(const IP: String): String;

 function GetMAC(Value: TMacAddress; Length: DWORD): String;
 var
   I: Integer;
 begin
   if Length = 0 then Result := "00-00-00-00-00-00" else
   begin
     Result := "";
     for i:= 0 to Length -2 do
       Result := Result + IntToHex(Value[i], 2) + "-";
     Result := Result + IntToHex(Value[Length-1], 2);
   end;
 end;

 // Получаем IP адрес, в отличии от работы с классом WC_IPADDRESS
 // здесь преобразование идет в обратном порядке!
 function GetDottedIPFromInAddr(const InAddr: Integer): String;
 begin
   Result := "";
   Result := IntToStr(FOURTH_IPADDRESS(InAddr));
   Result := Result + "." + IntToStr(THIRD_IPADDRESS(InAddr));
   Result := Result + "." + IntToStr(SECOND_IPADDRESS(InAddr));
   Result := Result + "." + IntToStr(FIRST_IPADDRESS(InAddr));
 end;

const
 ERR_MAC     = "Can not get ARP table.";
 RES_UNKNOWN = "Unknown";
var
 Table: TMibIPNetTable;
 Size: Integer;
 CatchIP: String;
 Err, I: Integer;
begin
 Result := RES_UNKNOWN;
 Size := SizeOf(Table);                      
 Err := GetIpNetTable(@Table, @Size, False);
 if Err <> NO_ERROR then                    
 begin
   MessageDlg(ERR_MAC, mtError, [mbOK], 0);
   Exit;
 end;
 // Теперь мы имеем таблицу из IP адресов и соответсвующих им MAC адресов
 for I := 0 to Table.dwNumEntries - 1 do     // Ищем нужный IP ...
 begin
   CatchIP := GetDottedIPFromInAddr(Table.Table[I].dwAddr);
   if CatchIP = IP then                      // И выводим его МАС ...
   begin
     Result := GetMAC(Table.Table[I].bPhysAddr, Table.Table[I].dwPhysAddrLen);
     Break;
   end;
 end;
end;


Пример вызова:
procedure TForm1.Button1Click(Sender: TObject);
begin
 Caption := GetMacFromIP("192.168.24.1");
end;


 
Юрий Зотов ©   (2004-03-30 17:56) [194]

Предлагаю такую редакцию:

Но способ с "урезанным" Proxies все же опасен, поэтому лучше использовать следующий способ, рекомендованный Borland.

Если ошибка возникает при компиляции пакета, то просто добавьте в его секцию requires файл DesignIDE.dcp.

Если же ошибка возникает при компиляции приложения или DLL, то это означает, что проект или один из используемых им пакетов  неверно структурирован и подтягивает в свой run-time код специфичный design-time модуль. Реструктурируйте его так, чтобы run-time код нигде бы не ссылался на design-time модули.

Чтобы было понятнее - вот пример НЕВЕРНОЙ структуризации.

unit MyComp;
...
type
 TMyComponent = class(...)
 ...
 end;
 TMyComponentEditor = class(...)
 ...
 end;
...
end;

Поскольку модуль содержит не только сам компонент TMyComponent, но и его редактор TMyComponentEditor, то в uses будет необходимо указать DesignEditors - что и потащит за собой design-time код вместе с Proxies. Указав в requires пакета DesignIDE.dcp, проблему мы решим - но что произойдет при компиляции приложения, которое использует компонент TMyComponent?

Произойдет то, в его uses надо будет включить MyComp - а далее потащится весь тот же самый код. Но у проекта нет никакой секции requires и возникнет неразрешимая проблема. А чтобы она не возникла, нужно разбить модуль MyComp на два. В первом оставить только сам компонент и включить этот модуль в run-time пакет. А во второй вынести класс TMyComponentEditor, процедуру Register и ресурс с иконкой компонента (если она есть) - и вот этот второй модуль нужно включить в design-time пакет, а к нему в requires надо подключить тот самый DesignIDE.dcp.

Естественно, второй модуль будет ссылаться на первый - и это вполне нормально. Главное как раз в том, что первый не будет ссылаться на второй и, таким образом, design-time код окажется полностью отделен от run-time кода.


 
Юрий Зотов ©   (2004-03-30 17:56) [194]

Предлагаю такую редакцию:

Но способ с "урезанным" Proxies все же опасен, поэтому лучше использовать следующий способ, рекомендованный Borland.

Если ошибка возникает при компиляции пакета, то просто добавьте в его секцию requires файл DesignIDE.dcp.

Если же ошибка возникает при компиляции приложения или DLL, то это означает, что проект или один из используемых им пакетов  неверно структурирован и подтягивает в свой run-time код специфичный design-time модуль. Реструктурируйте его так, чтобы run-time код нигде бы не ссылался на design-time модули.

Чтобы было понятнее - вот пример НЕВЕРНОЙ структуризации.

unit MyComp;
...
type
 TMyComponent = class(...)
 ...
 end;
 TMyComponentEditor = class(...)
 ...
 end;
...
end;

Поскольку модуль содержит не только сам компонент TMyComponent, но и его редактор TMyComponentEditor, то в uses будет необходимо указать DesignEditors - что и потащит за собой design-time код вместе с Proxies. Указав в requires пакета DesignIDE.dcp, проблему мы решим - но что произойдет при компиляции приложения, которое использует компонент TMyComponent?

Произойдет то, в его uses надо будет включить MyComp - а далее потащится весь тот же самый код. Но у проекта нет никакой секции requires и возникнет неразрешимая проблема. А чтобы она не возникла, нужно разбить модуль MyComp на два. В первом оставить только сам компонент и включить этот модуль в run-time пакет. А во второй вынести класс TMyComponentEditor, процедуру Register и ресурс с иконкой компонента (если она есть) - и вот этот второй модуль нужно включить в design-time пакет, а к нему в requires надо подключить тот самый DesignIDE.dcp.

Естественно, второй модуль будет ссылаться на первый - и это вполне нормально. Главное как раз в том, что первый не будет ссылаться на второй и, таким образом, design-time код окажется полностью отделен от run-time кода.


 
Piter ©   (2004-03-30 18:24) [195]

Игорь Шевченко (30.03.04 10:34) [181]
Кроме Windows NT.


Ок. Надо изменить фразу
она реализована как в NT системах, так и в 9x.
на
она реализована в windows 95, 98, ME, 2000, XP и, вероятно, останется в следующих версиях.


 
Piter ©   (2004-03-30 18:24) [195]

Игорь Шевченко (30.03.04 10:34) [181]
Кроме Windows NT.


Ок. Надо изменить фразу
она реализована как в NT системах, так и в 9x.
на
она реализована в windows 95, 98, ME, 2000, XP и, вероятно, останется в следующих версиях.


 
Rouse_ ©   (2004-03-30 18:56) [196]

> [195] Piter ©   (30.03.04 18:24)
Если быть точным, то

Requirements
Client: Included in Windows XP, Windows 2000 Professional, Windows Me, Windows 98, and Windows 95.
Server: Included in Windows Server 2003 and Windows 2000 Server.


 
Rouse_ ©   (2004-03-30 18:56) [196]

> [195] Piter ©   (30.03.04 18:24)
Если быть точным, то

Requirements
Client: Included in Windows XP, Windows 2000 Professional, Windows Me, Windows 98, and Windows 95.
Server: Included in Windows Server 2003 and Windows 2000 Server.


 
Piter ©   (2004-03-30 20:25) [197]

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


 
Piter ©   (2004-03-30 20:25) [197]

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


 
Игорь Шевченко ©   (2004-03-30 21:26) [198]

Piter ©   (30.03.04 20:25)

Есть предложение не вносить вопрос про убийство чужого процесса в FAQ, потому как MS пишет, что использовать его надо очень осторожно и при крайней нужде. А горе-хацкеров нефиг плодить :)


 
Игорь Шевченко ©   (2004-03-30 21:26) [198]

Piter ©   (30.03.04 20:25)

Есть предложение не вносить вопрос про убийство чужого процесса в FAQ, потому как MS пишет, что использовать его надо очень осторожно и при крайней нужде. А горе-хацкеров нефиг плодить :)


 
Rouse_ ©   (2004-03-30 21:38) [199]

Ну тогда уж думаю стоит и это вычеркнуть:

Как перехватить Ctrl+Alt+Del
Как скрыть программу от Ctrl+Alt+Del
Как не дать снять мою программу из Task Manager
Как отправить письмо с вложением
Как установить - разорвать соединение DialUp
Как закрыть чужое приложение из моего

А вот вопросов по базам нинка не наблюдается... Что, разве в "Базах" никто не сидит?


 
Rouse_ ©   (2004-03-30 21:38) [199]

Ну тогда уж думаю стоит и это вычеркнуть:

Как перехватить Ctrl+Alt+Del
Как скрыть программу от Ctrl+Alt+Del
Как не дать снять мою программу из Task Manager
Как отправить письмо с вложением
Как установить - разорвать соединение DialUp
Как закрыть чужое приложение из моего

А вот вопросов по базам нинка не наблюдается... Что, разве в "Базах" никто не сидит?


 
Юрий Зотов ©   (2004-03-30 22:29) [200]

> Rouse_ ©   (30.03.04 21:38) [199]

Саш, для твоей же коллекции:

> А вот вопросов по базам нинка не наблюдается...
А казалось бы - ведь такое распространенное имя.

> Что, разве в "Базах" никто не сидит?
Нет, только в "Крестах".


 
Юрий Зотов ©   (2004-03-30 22:29) [200]

> Rouse_ ©   (30.03.04 21:38) [199]

Саш, для твоей же коллекции:

> А вот вопросов по базам нинка не наблюдается...
А казалось бы - ведь такое распространенное имя.

> Что, разве в "Базах" никто не сидит?
Нет, только в "Крестах".


 
Piter ©   (2004-03-30 23:19) [201]

Rouse_ (30.03.04 21:38) [199]
А вот вопросов по базам нинка не наблюдается... Что, разве в "Базах" никто не сидит?


ну Vemer, Vlad как минимум писали про базы.

Игорь Шевченко (30.03.04 21:26) [198]
Есть предложение не вносить вопрос про убийство чужого процесса в FAQ, потому как MS пишет, что использовать его надо очень осторожно и при крайней нужде


ну я за свободу информации :) Это проблема человека, использующего эту функцию, а предупредить - предупредим :)

Rouse_ (30.03.04 21:38) [199]
Ну тогда уж думаю стоит и это вычеркнуть


опять не согласен. Пусть кому надо - разбирается, лично я их не боюсь. А вы? Думаю тоже... ну тогда это и не проблема, пусть себе троянов делают, если им так хочется. Перебесятся и поймут, что все уже написано давно и ничем они не выделились, заодно знаний поднакопится


 
Piter ©   (2004-03-30 23:19) [201]

Rouse_ (30.03.04 21:38) [199]
А вот вопросов по базам нинка не наблюдается... Что, разве в "Базах" никто не сидит?


ну Vemer, Vlad как минимум писали про базы.

Игорь Шевченко (30.03.04 21:26) [198]
Есть предложение не вносить вопрос про убийство чужого процесса в FAQ, потому как MS пишет, что использовать его надо очень осторожно и при крайней нужде


ну я за свободу информации :) Это проблема человека, использующего эту функцию, а предупредить - предупредим :)

Rouse_ (30.03.04 21:38) [199]
Ну тогда уж думаю стоит и это вычеркнуть


опять не согласен. Пусть кому надо - разбирается, лично я их не боюсь. А вы? Думаю тоже... ну тогда это и не проблема, пусть себе троянов делают, если им так хочется. Перебесятся и поймут, что все уже написано давно и ничем они не выделились, заодно знаний поднакопится


 
Игорь Шевченко ©   (2004-03-30 23:47) [202]


> пусть себе троянов делают, если им так хочется. Перебесятся
> и поймут, что все уже написано давно и ничем они не выделились,
> заодно знаний поднакопится


Я против. Здесь не филиал xakep.ru


 
Игорь Шевченко ©   (2004-03-30 23:47) [202]


> пусть себе троянов делают, если им так хочется. Перебесятся
> и поймут, что все уже написано давно и ничем они не выделились,
> заодно знаний поднакопится


Я против. Здесь не филиал xakep.ru


 
Rouse_ ©   (2004-03-30 23:56) [203]

> Перебесятся и поймут,
Если не ошибаюсь - то Юрий приводил пример про чайника который зарабатывает деньги при помощи компьютера на лечение своей старой - больной матери и получает в подарок вирус, который губит все результаты его работы...

> [200] Юрий Зотов ©   (30.03.04 22:29)
Хотел написать НИКАК :))
Как написал нинка... ума не приложу :) Видать весна :))


 
Rouse_ ©   (2004-03-30 23:56) [203]

> Перебесятся и поймут,
Если не ошибаюсь - то Юрий приводил пример про чайника который зарабатывает деньги при помощи компьютера на лечение своей старой - больной матери и получает в подарок вирус, который губит все результаты его работы...

> [200] Юрий Зотов ©   (30.03.04 22:29)
Хотел написать НИКАК :))
Как написал нинка... ума не приложу :) Видать весна :))


 
lyeh ©   (2004-03-31 04:02) [204]

2 panov ©
Вот пока собирать будем эти жалкие 20 вопросов, на очереди еще добрая сотня появится, а потом еще и еще :).


 
lyeh ©   (2004-03-31 04:02) [204]

2 panov ©
Вот пока собирать будем эти жалкие 20 вопросов, на очереди еще добрая сотня появится, а потом еще и еще :).


 
lyeh ©   (2004-03-31 04:07) [205]

Ага, там уже и побольше накопилось :)


 
lyeh ©   (2004-03-31 04:07) [205]

Ага, там уже и побольше накопилось :)


 
panov ©   (2004-03-31 10:04) [206]

Еще вопрос по БД.
http://delphimaster.net/view/3-1079783255/


 
panov ©   (2004-03-31 10:04) [206]

Еще вопрос по БД.
http://delphimaster.net/view/3-1079783255/


 
panov ©   (2004-03-31 15:54) [207]

Еще вопрос:
http://delphimaster.net/view/3-1079783255/


 
panov ©   (2004-03-31 15:54) [207]

Еще вопрос:
http://delphimaster.net/view/3-1079783255/


 
Piter ©   (2004-03-31 23:45) [208]

Игорь Шевченко (30.03.04 23:47) [202]
Здесь не филиал xakep.ru


согласен, но в тоже время практически любой ответ на этом форуме можно применяться во вред, никто не знает что за программу на самом деле пишет автор, верно?
А скрыть приложение от Диспетчера задач... ну внедрение в чужой процесс - это ведь достаточно увлекательно! Плохо что используется практически для вредоносных программ, но мне кажется это не повод об этом не писать. Лично мне это интересно просто с точки зрения понимания устройства как это все работает, хотя в реальных программах вряд ли буду применять такие приемы...

Rouse_ (30.03.04 23:56) [203]
Юрий приводил пример про чайника который зарабатывает деньги при помощи компьютера на лечение своей старой - больной матери и получает в подарок вирус, который губит все результаты его работы...


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


 
Piter ©   (2004-03-31 23:45) [208]

Игорь Шевченко (30.03.04 23:47) [202]
Здесь не филиал xakep.ru


согласен, но в тоже время практически любой ответ на этом форуме можно применяться во вред, никто не знает что за программу на самом деле пишет автор, верно?
А скрыть приложение от Диспетчера задач... ну внедрение в чужой процесс - это ведь достаточно увлекательно! Плохо что используется практически для вредоносных программ, но мне кажется это не повод об этом не писать. Лично мне это интересно просто с точки зрения понимания устройства как это все работает, хотя в реальных программах вряд ли буду применять такие приемы...

Rouse_ (30.03.04 23:56) [203]
Юрий приводил пример про чайника который зарабатывает деньги при помощи компьютера на лечение своей старой - больной матери и получает в подарок вирус, который губит все результаты его работы...


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


 
Игорь Шевченко ©   (2004-03-31 23:54) [209]

Piter ©   (31.03.04 23:45)

Согласись, что ответ на форуме и помещение в FAQ это все-таки некоторая разница.


> А скрыть приложение от Диспетчера задач...
> Плохо что используется практически для вредоносных программ,
> но мне кажется это не повод об этом не писать.


Я не вижу другого применения для скрытия от Диспетчера задач - вот в чем причина моего неприятия помещения этого вопроса в FAQ.
Разговоры насчет несчастных админов компьютерных клубов, которым во что бы то ни стало, надо скрыть их контрольно-административную программу, не выдерживают, на мой взгляд, никакой критики и являются довольно наивной отмазкой :))

Про внедрение в процессы написано в книжке Рихтера, довольно неплохо написано, рассматриваются разные способы.


 
Игорь Шевченко ©   (2004-03-31 23:54) [209]

Piter ©   (31.03.04 23:45)

Согласись, что ответ на форуме и помещение в FAQ это все-таки некоторая разница.


> А скрыть приложение от Диспетчера задач...
> Плохо что используется практически для вредоносных программ,
> но мне кажется это не повод об этом не писать.


Я не вижу другого применения для скрытия от Диспетчера задач - вот в чем причина моего неприятия помещения этого вопроса в FAQ.
Разговоры насчет несчастных админов компьютерных клубов, которым во что бы то ни стало, надо скрыть их контрольно-административную программу, не выдерживают, на мой взгляд, никакой критики и являются довольно наивной отмазкой :))

Про внедрение в процессы написано в книжке Рихтера, довольно неплохо написано, рассматриваются разные способы.


 
Юрий Зотов ©   (2004-04-01 00:17) [210]

Согласен с Игорем. Если процесс легальный, то все решается средствами администрирования самой системы - сделайте его сервисом и юзер просто не сможет его срубить. И не надо извращаться. А если процесс нелегальный - то и нефиг такие писать. А если кто взялся писать - так пусть сам и мучается, нефиг ему еще и помогать. Соучастником становиться.

Что же насчет "ну не надо драматизировать" - я приводил РЕАЛЬНЫЙ пример, произошедший когда-то давно с одним из моих знакомых. Драматизировать ту драму еще больше - просто уже некуда. С тех пор я этих подонков-вирусотворцев просто ненавижу.


 
Юрий Зотов ©   (2004-04-01 00:17) [210]

Согласен с Игорем. Если процесс легальный, то все решается средствами администрирования самой системы - сделайте его сервисом и юзер просто не сможет его срубить. И не надо извращаться. А если процесс нелегальный - то и нефиг такие писать. А если кто взялся писать - так пусть сам и мучается, нефиг ему еще и помогать. Соучастником становиться.

Что же насчет "ну не надо драматизировать" - я приводил РЕАЛЬНЫЙ пример, произошедший когда-то давно с одним из моих знакомых. Драматизировать ту драму еще больше - просто уже некуда. С тех пор я этих подонков-вирусотворцев просто ненавижу.


 
Тимохов ©   (2004-04-01 15:03) [211]

Еще один очень актуальный вопрос в фак.
Не знаю, правда как его назвать, но задолбался уже отвечать так (точно раз десять отвечал).

Вопрос: как мне распечатать файл word.

Ответ:
1. открываешь word
2. начинаешь запись макроса
3. открываешь файл
4. распечатываешь его
5. останаваливаешь запись макроса
6. жмешь alt+f11
7. переносишь макрос в дельфи и выполняешь его через OLE.


 
Тимохов ©   (2004-04-01 15:03) [211]

Еще один очень актуальный вопрос в фак.
Не знаю, правда как его назвать, но задолбался уже отвечать так (точно раз десять отвечал).

Вопрос: как мне распечатать файл word.

Ответ:
1. открываешь word
2. начинаешь запись макроса
3. открываешь файл
4. распечатываешь его
5. останаваливаешь запись макроса
6. жмешь alt+f11
7. переносишь макрос в дельфи и выполняешь его через OLE.


 
Piter ©   (2004-04-01 18:00) [212]

Тимохов (01.04.04 15:03) [211]

это не ответ, нужен код, имхо

Игорь Шевченко (31.03.04 23:54) [209]
Про внедрение в процессы написано в книжке Рихтера, довольно неплохо написано, рассматриваются разные способы


написано, конечно. Но с другой стороны, думаю, любой вопрос в FAQ"е освещен в какой-нибудь книжке


 
Piter ©   (2004-04-01 18:00) [212]

Тимохов (01.04.04 15:03) [211]

это не ответ, нужен код, имхо

Игорь Шевченко (31.03.04 23:54) [209]
Про внедрение в процессы написано в книжке Рихтера, довольно неплохо написано, рассматриваются разные способы


написано, конечно. Но с другой стороны, думаю, любой вопрос в FAQ"е освещен в какой-нибудь книжке


 
Игорь Шевченко ©   (2004-04-01 18:03) [213]

Piter ©   (01.04.04 18:00)


>  Но с другой стороны, думаю, любой вопрос в FAQ"е освещен
> в какой-нибудь книжке


Вовсе не обязательно. К тому же, FAQ - это часто задаваемые вопросы, а особой частоты вопроса "как внедриться в другой процесс" я, честно говоря, не наблюдаю.


 
Игорь Шевченко ©   (2004-04-01 18:03) [213]

Piter ©   (01.04.04 18:00)


>  Но с другой стороны, думаю, любой вопрос в FAQ"е освещен
> в какой-нибудь книжке


Вовсе не обязательно. К тому же, FAQ - это часто задаваемые вопросы, а особой частоты вопроса "как внедриться в другой процесс" я, честно говоря, не наблюдаю.


 
Плохиш   (2004-04-01 19:12) [214]

Ходил, ходил по и-нету, смотрю, ба фрицы расстарались ;-)

http://www.delphi-source.de/tipps/

> Piter ©   (01.04.04 18:00) [212]
> Тимохов (01.04.04 15:03) [211]
>
> это не ответ, нужен код, имхо

Там-же http://www.delphi-source.de/tipps/COM_OLE_DDE/?id=30


 
Плохиш   (2004-04-01 19:12) [214]

Ходил, ходил по и-нету, смотрю, ба фрицы расстарались ;-)

http://www.delphi-source.de/tipps/

> Piter ©   (01.04.04 18:00) [212]
> Тимохов (01.04.04 15:03) [211]
>
> это не ответ, нужен код, имхо

Там-же http://www.delphi-source.de/tipps/COM_OLE_DDE/?id=30


 
MOA ©   (2004-04-01 20:27) [215]

По MSSQL очень частый вопрос:
Почему (неправильно)(не) передаётся параметр типа Datetime?
Ответ: в 99% случаев - используется ODBC, сбросить флаг "Use regional setting when outputting currency, numbers, dates and times"  в свойствах источника данных ODBC, иначе в Client network Utility сбросить флаг "use international setting".


 
MOA ©   (2004-04-01 20:27) [215]

По MSSQL очень частый вопрос:
Почему (неправильно)(не) передаётся параметр типа Datetime?
Ответ: в 99% случаев - используется ODBC, сбросить флаг "Use regional setting when outputting currency, numbers, dates and times"  в свойствах источника данных ODBC, иначе в Client network Utility сбросить флаг "use international setting".


 
panov ©   (2004-04-01 22:11) [216]

Пример InjectLib из Рихтера, написанный на Delphi, помещать в FAQ?


 
panov ©   (2004-04-01 22:11) [216]

Пример InjectLib из Рихтера, написанный на Delphi, помещать в FAQ?


 
blackman ©   (2004-04-01 22:22) [217]

>7. переносишь макрос в дельфи и выполняешь его через OLE.
Это просто праздник.


 
blackman ©   (2004-04-01 22:22) [217]

>7. переносишь макрос в дельфи и выполняешь его через OLE.
Это просто праздник.


 
Тимохов ©   (2004-04-02 10:10) [218]


> blackman ©   (01.04.04 22:22) [217]
> >7. переносишь макрос в дельфи и выполняешь его через OLE.
> Это просто праздник.

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


 
Тимохов ©   (2004-04-02 10:10) [218]


> blackman ©   (01.04.04 22:22) [217]
> >7. переносишь макрос в дельфи и выполняешь его через OLE.
> Это просто праздник.

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


 
Alexander666 ©   (2004-04-02 10:51) [219]


> Плохиш   (01.04.04 19:12) [214]

Не все по-фрицскому понимают. Была бы у них английская версия.


 
Alexander666 ©   (2004-04-02 10:51) [219]


> Плохиш   (01.04.04 19:12) [214]

Не все по-фрицскому понимают. Была бы у них английская версия.


 
Anatoly Podgoretsky ©   (2004-04-02 10:54) [220]

blackman ©   (01.04.04 22:22) [217]
Зря смеешься, обще принятый метод, только не понимай буквально, что именно макрос будет выполняться, хотя это и возможно.
Макрос используется только для создания последовательности, далее эта последовательность команд реализуется с помошью OLE, с незначительными переделками.


 
Anatoly Podgoretsky ©   (2004-04-02 10:54) [220]

blackman ©   (01.04.04 22:22) [217]
Зря смеешься, обще принятый метод, только не понимай буквально, что именно макрос будет выполняться, хотя это и возможно.
Макрос используется только для создания последовательности, далее эта последовательность команд реализуется с помошью OLE, с незначительными переделками.


 
blackman ©   (2004-04-02 10:56) [221]

>Тимохов ©   (02.04.04 10:10) [218]
Конечно надо описать сам принцип. Однако то, что вы написали - не ответ. И даже можно сказать неверен сам принцип.
Вы же ривели хорошую ссылку:
var MeinWord: Variant;
begin
 ...
 MeinWord := CreateOleObject("Word.Application");
 //Verschiedene Aufrufarten
 MeinWord.Run("MeinMakro");
 MeinWord.Run("Normal.Module1.MAIN");
 MeinWord.Run("MeinProjekt.MeinModul.MeineProzedur");
 MeinWord.Run("MeinDokument.doc!DiesesModul.DieseProzedur");
 ...
end;

Надо только расшифровать :)


 
blackman ©   (2004-04-02 10:56) [221]

>Тимохов ©   (02.04.04 10:10) [218]
Конечно надо описать сам принцип. Однако то, что вы написали - не ответ. И даже можно сказать неверен сам принцип.
Вы же ривели хорошую ссылку:
var MeinWord: Variant;
begin
 ...
 MeinWord := CreateOleObject("Word.Application");
 //Verschiedene Aufrufarten
 MeinWord.Run("MeinMakro");
 MeinWord.Run("Normal.Module1.MAIN");
 MeinWord.Run("MeinProjekt.MeinModul.MeineProzedur");
 MeinWord.Run("MeinDokument.doc!DiesesModul.DieseProzedur");
 ...
end;

Надо только расшифровать :)


 
blackman ©   (2004-04-02 11:01) [222]

>Anatoly Podgoretsky ©   (02.04.04 10:54) [220]
>реализуется с помошью OLE, с незначительными переделками.
Если попробовать, то переделки не будут казаться НЕ значительными :)
А самое главное если только начинаешь, то НЕ знаешь, что именно переделывать и сказать новичку "перенеси и выполни" означает толкнуть его в омут без плавсредств :)


 
blackman ©   (2004-04-02 11:01) [222]

>Anatoly Podgoretsky ©   (02.04.04 10:54) [220]
>реализуется с помошью OLE, с незначительными переделками.
Если попробовать, то переделки не будут казаться НЕ значительными :)
А самое главное если только начинаешь, то НЕ знаешь, что именно переделывать и сказать новичку "перенеси и выполни" означает толкнуть его в омут без плавсредств :)


 
Тимохов ©   (2004-04-02 11:07) [223]


> то НЕ знаешь, что именно переделывать и сказать новичку
> "перенеси и выполни" означает толкнуть его в омут без плавсредств
> :)

пусть спрашивает.

хотя, согласен, что работающий пример то нужен. но их имхо в сети до фига.

в моем ответе важнее принцип, позволяющий самообразовываться.


 
Тимохов ©   (2004-04-02 11:07) [223]


> то НЕ знаешь, что именно переделывать и сказать новичку
> "перенеси и выполни" означает толкнуть его в омут без плавсредств
> :)

пусть спрашивает.

хотя, согласен, что работающий пример то нужен. но их имхо в сети до фига.

в моем ответе важнее принцип, позволяющий самообразовываться.


 
blackman ©   (2004-04-02 13:25) [224]

>но их имхо в сети до фига...
Но мы же об этом сайте говорим ?


 
blackman ©   (2004-04-02 13:25) [224]

>но их имхо в сети до фига...
Но мы же об этом сайте говорим ?


 
Тимохов ©   (2004-04-02 13:27) [225]


> Но мы же об этом сайте говорим ?

об этом.

тогда надо сделать так:
сначала идет действия приведенные мной ранее, затем идет пример конкретной реализации некоего действа в excel через ole. Так пойдет?


 
Тимохов ©   (2004-04-02 13:27) [225]


> Но мы же об этом сайте говорим ?

об этом.

тогда надо сделать так:
сначала идет действия приведенные мной ранее, затем идет пример конкретной реализации некоего действа в excel через ole. Так пойдет?


 
blackman ©   (2004-04-02 14:07) [226]

Совмести и будет очень хорошо :)


 
blackman ©   (2004-04-02 14:07) [226]

Совмести и будет очень хорошо :)


 
panov ©   (2004-04-02 14:14) [227]

>Тимохов ©   (02.04.04 13:27) [225]

Правильно...
Вроде бы останивились на таком принципе формирования FAQ:

В ответ помещается -
1. Полноценный работающий пример с комментариями.
2. Если необходимо, более подробные объяснения.
3. Если есть - ссылки н статьи и информацию в инете.


 
panov ©   (2004-04-02 14:14) [227]

>Тимохов ©   (02.04.04 13:27) [225]

Правильно...
Вроде бы останивились на таком принципе формирования FAQ:

В ответ помещается -
1. Полноценный работающий пример с комментариями.
2. Если необходимо, более подробные объяснения.
3. Если есть - ссылки н статьи и информацию в инете.


 
blackman ©   (2004-04-02 14:23) [228]

>panov ©   (02.04.04 14:14) [227]
Вашими бы устами мед пить :)


 
blackman ©   (2004-04-02 14:23) [228]

>panov ©   (02.04.04 14:14) [227]
Вашими бы устами мед пить :)


 
panov ©   (2004-04-02 16:49) [229]

>blackman ©   (02.04.04 14:23) [228]

Нет пределов совершенствованию-)


 
panov ©   (2004-04-02 16:49) [229]

>blackman ©   (02.04.04 14:23) [228]

Нет пределов совершенствованию-)


 
Diamond Cat ©   (2004-04-03 00:24) [230]

Посмею вмешаться в выш плотный коллектив,
ответ сразу на несколько вопросов а именно
Сворачивание в трей
Установка таймера
Уменьшение размеров программы
И добавленно от себя но тоже довольно часто встречающийся вопрос, создание меню в рантайм
Все на API
program Project1;

uses
 windows,shellapi,sysutils,
 Messages;

{$R *.RES}
var
WndClassEx: TWndClassEx;
nid: TNotifyIconData;
men:thandle;
timecount:integer=0;

function WinProc (hWnd: THandle; nMsg: UINT; wParam, lParam: Cardinal): Cardinal; export; stdcall;
var
 p:Tpoint;
 Cds: TCopyDataStruct;
begin
getcursorpos(p);
case nmsg of
wm_Destroy , wm_Close , wm_quit:
   begin
       Shell_NotifyIcon (NIM_delete, @nid); // удаление иконки
       postquitmessage(0);
   end;
wm_user+10:     //получение нашего сообщения и обработка
   begin
       if lparam=wm_lbuttonup then   // была нажата правая кнопка мышы
       begin ;
       setforegroundwindow(hwnd);
       // показываем системное меню
       TrackPopupMenu(GetSystemMenu(hwnd,false),TPM_TOPALIGN ,p.x,p.y,0,hwnd,nil);
       end;
       if lparam=wm_rbuttonup then  // была нажата левая кнопка мышы
       begin
       setforegroundwindow(hwnd);
       TrackPopupMenu(men,TPM_TOPALIGN ,p.x,p.y,0,hwnd,nil);
       end;
   end;
wm_command:
   begin
       if hiword(wparam)=0 then nmsg:=wm_syscommand;  // если из трея показали системное меню то передаем управление
     if wparam=1 then
     begin
       if iswindowvisible(hwnd) then
       begin
       showwindow(hwnd,sw_hide);
       ModifyMenu(men,1, MF_STRING,1,pchar("Восстановить"));
       end else
       begin
       showwindow(hwnd,SW_RESTORE);
       ModifyMenu(men,1, MF_STRING,1,pchar("Свернуть в трей"));
       end;
     end;
     if wparam=2 then
     begin
        if MF_UNCHECKED=GetMenuState(men,2,mf_bycommand) then
        begin
           CheckMenuItem (men,2,MF_CHECKED);
           Setwindowpos(hwnd,hwnd_topmost,0,0,0,0,swp_nosize or swp_nomove);
        end else
        begin
           CheckMenuItem (men,2,MF_UNCHECKED);
           Setwindowpos(hwnd,hwnd_notopmost,0,0,0,0,swp_nosize or swp_nomove);
        end;
     end;
     if wparam=3 then
     begin
        EnableMenuItem(men,4,MF_enabled) ;
        EnableMenuItem(men,3,MF_GRAYED) ;
        setwindowtext(hwnd,"0");
        settimer(hwnd,3,1000,nil);//запуск таймера
     end;
     if wparam=4 then
     begin
        EnableMenuItem(men,3,MF_enabled) ;
        EnableMenuItem(men,4,MF_GRAYED) ;
        killtimer(hwnd,3);//убиваем таймер
        setwindowtext(hwnd,wndclassex.lpszClassName);
     end;
     if wparam=5 then postmessage(hwnd,wm_close,0,0);
   end;
wm_timer:  //прием сообщений от таймера
   begin
       timecount:=timecount+1;
       setwindowtext(hwnd,pchar(inttostr(timecount))); //способ установки текста на окна, не единственный
   end;

end ;{of case}
   Result := DefWindowProc (hWnd, nMsg, wParam, lParam);
end;

procedure iconcreate(wnd:hwnd);   //создание иконки в трее
begin
 nid.cbSize := sizeof (TNotifyIconData);
 nid.wnd := wnd;   //определяет окно которое будет принимать сообщения от иконки
 nid.uID := 1;     //идентификатор иконки
 nid.uCallBAckMessage := wm_user+10; //сообщение приходящее окну
 nid.hIcon :=LoadIcon(hInstance, MakeIntResource("smolicon")); //загрузка иконки
 nid.szTip := "Hint от тестовой программы";
 nid.uFlags := nif_Message or nif_Icon or nif_Tip; // описание содержимого структуры
 Shell_NotifyIcon (NIM_ADD, @nid); //команда на показывание иконки
end;

procedure menucreate(wnd:hwnd); //сздание меню
begin
men:=CreatePopupMenu;
       if men=0 then messagebox(wnd,"не создалось меню","Тестовая программа",mb_ok);
       AppendMenu(men,mf_ByCommand, 1, "Свернуть в трей");
       AppendMenu(men,mf_ByCommand,2,"Поверх остальных окон");
       AppendMenu(men,mf_ByCommand,3,"Запустить таймер");
       AppendMenu(men,mf_ByCommand,4,"Остановить таймер");
       AppendMenu(men,MF_SEPARATOR,0,nil);
       AppendMenu(men,mf_ByCommand,5,"Выход");
       EnableMenuItem(men,4,MF_GRAYED);
end;

procedure WinMain;
var
 hWnd: THandle;
 Msg: TMsg;
begin
 WndClassEx.cbSize := sizeOf (TWndClassEx);
 WndClassEx.lpszClassName := "Тестовая программа";
 WndClassEx.style := CS_PARENTDC or CS_VREDRAW  ;
 WndClassEx.hInstance := HInstance;
 WndClassEx.lpfnWndProc := @WinProc;
 WndClassEx.cbClsExtra := 0;
 WndClassEx.cbWndExtra := 0;
 WndClassEx.hIcon := LoadIcon (hInstance, MakeIntResource ("MAINICON"));
 WndClassEx.hIconSm  := LoadIcon (hInstance, MakeIntResource ("smolicon"));;
 WndClassEx.hCursor := LoadCursor (0, IDC_ARROW);
 WndClassEx.hbrBackground := COLOR_WINDOW;
 WndClassEx.lpszMenuName :="Тестовая программа";
 if RegisterClassEx (WndClassEx) = 0 then begin
 MessageBox (0, "Ошибка регистрации класса","Тестовая программа", mb_ok + MB_ICONERROR);
 halt;
 end ;
   hWnd := CreateWindowEx (WS_EX_APPWINDOW  ,WndClassEx.lpszClassName,"Тестовая программа",WS_VISIBLE or  WS_OVERLAPPEDWINDOW ,0,0,400,300, 0,0, HInstance, nil);
   if hWnd = 0 then begin
     MessageBox (0, "Window not created","Ошибка создания окна", MB_OK);
     halt;
 end;
 iconcreate(hwnd);  //создание иконки
 menucreate(hwnd); // создание меню
     while GetMessage (Msg, 0, 0, 0) do
     begin
       TranslateMessage (Msg);
       DispatchMessage (Msg);
     end;
end;
begin
winmain;
end.

Могу еще (если надо) написАть пример как установить соединение по dialup с помощью RASAPI и спомощью TAPI


 
Diamond Cat ©   (2004-04-03 00:24) [230]

Посмею вмешаться в выш плотный коллектив,
ответ сразу на несколько вопросов а именно
Сворачивание в трей
Установка таймера
Уменьшение размеров программы
И добавленно от себя но тоже довольно часто встречающийся вопрос, создание меню в рантайм
Все на API
program Project1;

uses
 windows,shellapi,sysutils,
 Messages;

{$R *.RES}
var
WndClassEx: TWndClassEx;
nid: TNotifyIconData;
men:thandle;
timecount:integer=0;

function WinProc (hWnd: THandle; nMsg: UINT; wParam, lParam: Cardinal): Cardinal; export; stdcall;
var
 p:Tpoint;
 Cds: TCopyDataStruct;
begin
getcursorpos(p);
case nmsg of
wm_Destroy , wm_Close , wm_quit:
   begin
       Shell_NotifyIcon (NIM_delete, @nid); // удаление иконки
       postquitmessage(0);
   end;
wm_user+10:     //получение нашего сообщения и обработка
   begin
       if lparam=wm_lbuttonup then   // была нажата правая кнопка мышы
       begin ;
       setforegroundwindow(hwnd);
       // показываем системное меню
       TrackPopupMenu(GetSystemMenu(hwnd,false),TPM_TOPALIGN ,p.x,p.y,0,hwnd,nil);
       end;
       if lparam=wm_rbuttonup then  // была нажата левая кнопка мышы
       begin
       setforegroundwindow(hwnd);
       TrackPopupMenu(men,TPM_TOPALIGN ,p.x,p.y,0,hwnd,nil);
       end;
   end;
wm_command:
   begin
       if hiword(wparam)=0 then nmsg:=wm_syscommand;  // если из трея показали системное меню то передаем управление
     if wparam=1 then
     begin
       if iswindowvisible(hwnd) then
       begin
       showwindow(hwnd,sw_hide);
       ModifyMenu(men,1, MF_STRING,1,pchar("Восстановить"));
       end else
       begin
       showwindow(hwnd,SW_RESTORE);
       ModifyMenu(men,1, MF_STRING,1,pchar("Свернуть в трей"));
       end;
     end;
     if wparam=2 then
     begin
        if MF_UNCHECKED=GetMenuState(men,2,mf_bycommand) then
        begin
           CheckMenuItem (men,2,MF_CHECKED);
           Setwindowpos(hwnd,hwnd_topmost,0,0,0,0,swp_nosize or swp_nomove);
        end else
        begin
           CheckMenuItem (men,2,MF_UNCHECKED);
           Setwindowpos(hwnd,hwnd_notopmost,0,0,0,0,swp_nosize or swp_nomove);
        end;
     end;
     if wparam=3 then
     begin
        EnableMenuItem(men,4,MF_enabled) ;
        EnableMenuItem(men,3,MF_GRAYED) ;
        setwindowtext(hwnd,"0");
        settimer(hwnd,3,1000,nil);//запуск таймера
     end;
     if wparam=4 then
     begin
        EnableMenuItem(men,3,MF_enabled) ;
        EnableMenuItem(men,4,MF_GRAYED) ;
        killtimer(hwnd,3);//убиваем таймер
        setwindowtext(hwnd,wndclassex.lpszClassName);
     end;
     if wparam=5 then postmessage(hwnd,wm_close,0,0);
   end;
wm_timer:  //прием сообщений от таймера
   begin
       timecount:=timecount+1;
       setwindowtext(hwnd,pchar(inttostr(timecount))); //способ установки текста на окна, не единственный
   end;

end ;{of case}
   Result := DefWindowProc (hWnd, nMsg, wParam, lParam);
end;

procedure iconcreate(wnd:hwnd);   //создание иконки в трее
begin
 nid.cbSize := sizeof (TNotifyIconData);
 nid.wnd := wnd;   //определяет окно которое будет принимать сообщения от иконки
 nid.uID := 1;     //идентификатор иконки
 nid.uCallBAckMessage := wm_user+10; //сообщение приходящее окну
 nid.hIcon :=LoadIcon(hInstance, MakeIntResource("smolicon")); //загрузка иконки
 nid.szTip := "Hint от тестовой программы";
 nid.uFlags := nif_Message or nif_Icon or nif_Tip; // описание содержимого структуры
 Shell_NotifyIcon (NIM_ADD, @nid); //команда на показывание иконки
end;

procedure menucreate(wnd:hwnd); //сздание меню
begin
men:=CreatePopupMenu;
       if men=0 then messagebox(wnd,"не создалось меню","Тестовая программа",mb_ok);
       AppendMenu(men,mf_ByCommand, 1, "Свернуть в трей");
       AppendMenu(men,mf_ByCommand,2,"Поверх остальных окон");
       AppendMenu(men,mf_ByCommand,3,"Запустить таймер");
       AppendMenu(men,mf_ByCommand,4,"Остановить таймер");
       AppendMenu(men,MF_SEPARATOR,0,nil);
       AppendMenu(men,mf_ByCommand,5,"Выход");
       EnableMenuItem(men,4,MF_GRAYED);
end;

procedure WinMain;
var
 hWnd: THandle;
 Msg: TMsg;
begin
 WndClassEx.cbSize := sizeOf (TWndClassEx);
 WndClassEx.lpszClassName := "Тестовая программа";
 WndClassEx.style := CS_PARENTDC or CS_VREDRAW  ;
 WndClassEx.hInstance := HInstance;
 WndClassEx.lpfnWndProc := @WinProc;
 WndClassEx.cbClsExtra := 0;
 WndClassEx.cbWndExtra := 0;
 WndClassEx.hIcon := LoadIcon (hInstance, MakeIntResource ("MAINICON"));
 WndClassEx.hIconSm  := LoadIcon (hInstance, MakeIntResource ("smolicon"));;
 WndClassEx.hCursor := LoadCursor (0, IDC_ARROW);
 WndClassEx.hbrBackground := COLOR_WINDOW;
 WndClassEx.lpszMenuName :="Тестовая программа";
 if RegisterClassEx (WndClassEx) = 0 then begin
 MessageBox (0, "Ошибка регистрации класса","Тестовая программа", mb_ok + MB_ICONERROR);
 halt;
 end ;
   hWnd := CreateWindowEx (WS_EX_APPWINDOW  ,WndClassEx.lpszClassName,"Тестовая программа",WS_VISIBLE or  WS_OVERLAPPEDWINDOW ,0,0,400,300, 0,0, HInstance, nil);
   if hWnd = 0 then begin
     MessageBox (0, "Window not created","Ошибка создания окна", MB_OK);
     halt;
 end;
 iconcreate(hwnd);  //создание иконки
 menucreate(hwnd); // создание меню
     while GetMessage (Msg, 0, 0, 0) do
     begin
       TranslateMessage (Msg);
       DispatchMessage (Msg);
     end;
end;
begin
winmain;
end.

Могу еще (если надо) написАть пример как установить соединение по dialup с помощью RASAPI и спомощью TAPI


 
Piter ©   (2004-04-03 18:13) [231]

Что-то все встало на месте. Предлагаю обсудить вопросы № 7,8,9:
7) Как запустить процесс от имени другого пользователя
8) Почему во время выполнения дополнительного потока не обновляются объекты на основной форме (Synchronize аж во весь Execute)
9) Как создать таймер средствами Win32Api

7 - надо использовать, вероятно, CreateProcessAsUser. Я с ней не работал, судя по примеру в интернете найденному, код достаточно громоздкий. Разбираться влом. Если у кого есть заготовки - пишите.

8 - если я правильно понял примечание в скобочках, то ответ очевиден:

Метод, вызванный Synchronize, выполняется в контексте основного потока (в этом же потоке идет обновление компонентов VCL), из-за чего отрисовка контролов приостанавливается

9 - я не знаю. Есть кое-какие соображения, но уверен, что есть и общепринятые способы...


 
Piter ©   (2004-04-03 18:13) [231]

Что-то все встало на месте. Предлагаю обсудить вопросы № 7,8,9:
7) Как запустить процесс от имени другого пользователя
8) Почему во время выполнения дополнительного потока не обновляются объекты на основной форме (Synchronize аж во весь Execute)
9) Как создать таймер средствами Win32Api

7 - надо использовать, вероятно, CreateProcessAsUser. Я с ней не работал, судя по примеру в интернете найденному, код достаточно громоздкий. Разбираться влом. Если у кого есть заготовки - пишите.

8 - если я правильно понял примечание в скобочках, то ответ очевиден:

Метод, вызванный Synchronize, выполняется в контексте основного потока (в этом же потоке идет обновление компонентов VCL), из-за чего отрисовка контролов приостанавливается

9 - я не знаю. Есть кое-какие соображения, но уверен, что есть и общепринятые способы...


 
Piter ©   (2004-04-03 18:20) [232]

Кстати, про скрытие процесса от Диспетчера задач... трояны говорите. А между прочит, такие вопросы задают авторы сайта!

Сокрытие программы от Task Manager в NT/2000/XP

J_S ©   (18.07.03 20:28)
Может быть кто-то сталкивался с подобной задачей?


 
Piter ©   (2004-04-03 18:20) [232]

Кстати, про скрытие процесса от Диспетчера задач... трояны говорите. А между прочит, такие вопросы задают авторы сайта!

Сокрытие программы от Task Manager в NT/2000/XP

J_S ©   (18.07.03 20:28)
Может быть кто-то сталкивался с подобной задачей?


 
Diamond Cat ©   (2004-04-03 19:44) [233]


> Piter ©  
> 9) Как создать таймер средствами Win32Api

смотри чуть выше


 
Diamond Cat ©   (2004-04-03 19:44) [233]


> Piter ©  
> 9) Как создать таймер средствами Win32Api

смотри чуть выше


 
Игорь Шевченко ©   (2004-04-03 19:53) [234]

Piter ©   (03.04.04 18:13)


> 7) Как запустить процесс от имени другого пользователя


Код отослан Панову.


 
Игорь Шевченко ©   (2004-04-03 19:53) [234]

Piter ©   (03.04.04 18:13)


> 7) Как запустить процесс от имени другого пользователя


Код отослан Панову.


 
Piter ©   (2004-04-03 20:34) [235]

Игорь Шевченко (03.04.04 19:53) [234]
Код отослан Панову.


народ, вы хоть говорите - какие ответы уже есть? А то непонятно как с вами работать... зачем писать то, что у вас уже есть? Как-то обязанности распределите что ли...

К тому же на мои письма никто не отвечает. Я посылал на adm@delphimaster.ru окончательный вариант моего ответа на вопрос про иконку в SysTray. Но реакции я так и не получил... блин


 
Piter ©   (2004-04-03 20:34) [235]

Игорь Шевченко (03.04.04 19:53) [234]
Код отослан Панову.


народ, вы хоть говорите - какие ответы уже есть? А то непонятно как с вами работать... зачем писать то, что у вас уже есть? Как-то обязанности распределите что ли...

К тому же на мои письма никто не отвечает. Я посылал на adm@delphimaster.ru окончательный вариант моего ответа на вопрос про иконку в SysTray. Но реакции я так и не получил... блин


 
Игорь Шевченко ©   (2004-04-03 21:07) [236]

Piter ©   (03.04.04 20:34)

Вроде, Саша Панов взялся - ему и карты в руки. Про то, что код у меня есть и я поделюсь, я вроде говорил в начале ветки.
Я предлагаю - нехай Саша периодически выкладывает те вопросы из списка, которые остались без ответа, всем, наверное, будет удобно.


 
Игорь Шевченко ©   (2004-04-03 21:07) [236]

Piter ©   (03.04.04 20:34)

Вроде, Саша Панов взялся - ему и карты в руки. Про то, что код у меня есть и я поделюсь, я вроде говорил в начале ветки.
Я предлагаю - нехай Саша периодически выкладывает те вопросы из списка, которые остались без ответа, всем, наверное, будет удобно.


 
Piter ©   (2004-04-03 22:38) [237]

Игорь Шевченко (03.04.04 21:07) [236]
Я предлагаю - нехай Саша периодически выкладывает те вопросы из списка, которые остались без ответа


Можно так. Просто я исходил из того, что если Панов здесь ответа не выложил - значит, ответа нету. По-моему, так будет удобнее, заодно и люди посмотрят - подправят что-нибудь


 
Piter ©   (2004-04-03 22:38) [237]

Игорь Шевченко (03.04.04 21:07) [236]
Я предлагаю - нехай Саша периодически выкладывает те вопросы из списка, которые остались без ответа


Можно так. Просто я исходил из того, что если Панов здесь ответа не выложил - значит, ответа нету. По-моему, так будет удобнее, заодно и люди посмотрят - подправят что-нибудь


 
Piter ©   (2004-04-03 22:43) [238]

Diamond Cat (03.04.04 19:44) [233]
смотри чуть выше


а ты столько кода выложил - что разбираться не хочется.

Насчет таймера - подход может и ламерский, но первое что приходит в голову насчет создания таймера на WinApi - это создать доп. поток в котором вызывать что-то типа Sleep, после чего вызывать обработчик таймера, потом опять Sleep и опять обработчик и т.д.
В чем я не прав?


 
Piter ©   (2004-04-03 22:43) [238]

Diamond Cat (03.04.04 19:44) [233]
смотри чуть выше


а ты столько кода выложил - что разбираться не хочется.

Насчет таймера - подход может и ламерский, но первое что приходит в голову насчет создания таймера на WinApi - это создать доп. поток в котором вызывать что-то типа Sleep, после чего вызывать обработчик таймера, потом опять Sleep и опять обработчик и т.д.
В чем я не прав?


 
Rouse_ ©   (2004-04-03 22:48) [239]

> [238] Piter ©   (03.04.04 22:43)
Стало быть
function SetTimer(hWnd: HWND; nIDEvent, uElapse: UINT;
 lpTimerFunc: TFNTimerProc): UINT; stdcall;
Уже забыли? :))


 
Rouse_ ©   (2004-04-03 22:48) [239]

> [238] Piter ©   (03.04.04 22:43)
Стало быть
function SetTimer(hWnd: HWND; nIDEvent, uElapse: UINT;
 lpTimerFunc: TFNTimerProc): UINT; stdcall;
Уже забыли? :))


 
Игорь Шевченко ©   (2004-04-03 23:05) [240]


> насчет создания таймера на WinApi


1) Реализация TTimer из VCL
2) WaitableTimers (совсем API), начиная с Windows 98 и Windows NT 4
3) Для Win2k и выше - Timer Queues. "Timer-queue timers are lightweight objects that enable you to specify a callback function to be called at a specified time."


 
Игорь Шевченко ©   (2004-04-03 23:05) [240]


> насчет создания таймера на WinApi


1) Реализация TTimer из VCL
2) WaitableTimers (совсем API), начиная с Windows 98 и Windows NT 4
3) Для Win2k и выше - Timer Queues. "Timer-queue timers are lightweight objects that enable you to specify a callback function to be called at a specified time."


 
Piter ©   (2004-04-04 00:09) [241]

Rouse_ (03.04.04 22:48) [239]
Стало быть
function SetTimer(hWnd: HWND; nIDEvent, uElapse: UINT;
lpTimerFunc: TFNTimerProc): UINT; stdcall;Уже забыли? :))


да я ее и не помнил никогда :)
Значит, все просто... дядюшка Билли все предусмотрел :) И во всех виндах реализована


 
Piter ©   (2004-04-04 00:09) [241]

Rouse_ (03.04.04 22:48) [239]
Стало быть
function SetTimer(hWnd: HWND; nIDEvent, uElapse: UINT;
lpTimerFunc: TFNTimerProc): UINT; stdcall;Уже забыли? :))


да я ее и не помнил никогда :)
Значит, все просто... дядюшка Билли все предусмотрел :) И во всех виндах реализована


 
panov ©   (2004-04-04 01:50) [242]

>Piter

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

По поводу письма на adm@delphimaster.ru.
Это моя вина. Код в письме был переслан мне Максимом, но я   немного замотался, да и писем много. В результате не ответил.
В понедельник на работе обязательно подниму снова письма.


 
panov ©   (2004-04-04 01:50) [242]

>Piter

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

По поводу письма на adm@delphimaster.ru.
Это моя вина. Код в письме был переслан мне Максимом, но я   немного замотался, да и писем много. В результате не ответил.
В понедельник на работе обязательно подниму снова письма.


 
Piter ©   (2004-04-04 13:12) [243]

Итак, вопросы № 11-14

11) Как преобразовать тип String к Pchar и обратно

В принципе, можно написать s := PChar(p)
Но я думаю нелишним будет написать мини-лекцию об устройстве  этих типов данных. Кто как считает?
Мне и самому интересно, так как в этом вопросе не очень разбираюсь. Могу попробовать написать

12) Как уменьшить размер программы

в принципе, ответ на этот вопрос в нормальном виде есть в текущем FAQ.
Мне кажется только надо немного переоформить, а то там комментарии какие-то, в том смысле, что смотрится не очень. Вырвали откуда-то, да так и оставили. Просто четко и лаконично расписать существующие способы прямо по пунктам.

13) Динамическое создание объектов, включая создание массива объектов и назначения единой процедуры обработки

Может, ссылку на статью давать? Тут, по-моему,  где-то есть про такое.

14) Почему при динамическом создании объект остается невидимым

Ответ:

Проверьте, что задано свойство Parent - указатель на контрол, на котором должен располагаться ваш объект (чаще всего в его роли выступает форма) и свойство Visible выставлено в True


 
Piter ©   (2004-04-04 13:12) [243]

Итак, вопросы № 11-14

11) Как преобразовать тип String к Pchar и обратно

В принципе, можно написать s := PChar(p)
Но я думаю нелишним будет написать мини-лекцию об устройстве  этих типов данных. Кто как считает?
Мне и самому интересно, так как в этом вопросе не очень разбираюсь. Могу попробовать написать

12) Как уменьшить размер программы

в принципе, ответ на этот вопрос в нормальном виде есть в текущем FAQ.
Мне кажется только надо немного переоформить, а то там комментарии какие-то, в том смысле, что смотрится не очень. Вырвали откуда-то, да так и оставили. Просто четко и лаконично расписать существующие способы прямо по пунктам.

13) Динамическое создание объектов, включая создание массива объектов и назначения единой процедуры обработки

Может, ссылку на статью давать? Тут, по-моему,  где-то есть про такое.

14) Почему при динамическом создании объект остается невидимым

Ответ:

Проверьте, что задано свойство Parent - указатель на контрол, на котором должен располагаться ваш объект (чаще всего в его роли выступает форма) и свойство Visible выставлено в True


 
Piter ©   (2004-04-04 13:19) [244]

Piter (04.04.04 13:12) [243]
13) Динамическое создание объектов, включая создание массива объектов и назначения единой процедуры обработки


вот статья. Имхо, полностью удовлетворяет вопросу:

http://delphimaster.ru/articles/comparray.html


 
Piter ©   (2004-04-04 13:19) [244]

Piter (04.04.04 13:12) [243]
13) Динамическое создание объектов, включая создание массива объектов и назначения единой процедуры обработки


вот статья. Имхо, полностью удовлетворяет вопросу:

http://delphimaster.ru/articles/comparray.html


 
Piter ©   (2004-04-04 17:58) [245]

Вот написал тут насчет вопроса №11 http://delphimaster.net/view/3-1079783255/


 
Piter ©   (2004-04-04 17:58) [245]

Вот написал тут насчет вопроса №11 http://delphimaster.net/view/3-1079783255/


 
Piter ©   (2004-04-04 19:11) [246]

Вот еще один вопрос:

http://delphimaster.net/view/3-1079783255/

"Есть ли аналог delay в Delphi, как это было в Pascal?"

Также предлагаю включить такой вопрос:

Как динамически создать TWebBrowser (как задать свойство Parent)

Ответ:

Дело в том, что свойство Parent, которым обладают контролы, в TWebBrowser перекрыто другим свойством. Но дотянуться до первоначального свойства возможно. Например так:

procedure TForm1.Button1Click(Sender: TObject);
var wb:TWebBrowser;
begin
wb:= TWebBrowser.Create(self);
TWinControl(wb).Parent:=self;
end;


После чего экземпляр wb появится на форме


 
Piter ©   (2004-04-04 19:11) [246]

Вот еще один вопрос:

http://delphimaster.net/view/3-1079783255/

"Есть ли аналог delay в Delphi, как это было в Pascal?"

Также предлагаю включить такой вопрос:

Как динамически создать TWebBrowser (как задать свойство Parent)

Ответ:

Дело в том, что свойство Parent, которым обладают контролы, в TWebBrowser перекрыто другим свойством. Но дотянуться до первоначального свойства возможно. Например так:

procedure TForm1.Button1Click(Sender: TObject);
var wb:TWebBrowser;
begin
wb:= TWebBrowser.Create(self);
TWinControl(wb).Parent:=self;
end;


После чего экземпляр wb появится на форме


 
Piter ©   (2004-04-04 22:49) [247]

А еще можно написать сочинения на тему:

"Проблемы взаимоотношений поколений: Родители и наследующие объекты"
"Сюжетная линия процедуры LineTo(x,y)@
"Третий сон операнда Halt"
"Правдивость и лживость булевых переменных"
"Мой любимый тип данных. Как я отношусь к ним"
"Трагизм дважды освобожденного поинтера"
"Переполнение чаши терпения стека"
"End. - закончился ли сюжет?"
"Мое отношение к абсолютизму функции ABS(x)"
"Переплетение судеб Бегина и Энда".

(c) FIDO


 
Piter ©   (2004-04-04 22:49) [247]

А еще можно написать сочинения на тему:

"Проблемы взаимоотношений поколений: Родители и наследующие объекты"
"Сюжетная линия процедуры LineTo(x,y)@
"Третий сон операнда Halt"
"Правдивость и лживость булевых переменных"
"Мой любимый тип данных. Как я отношусь к ним"
"Трагизм дважды освобожденного поинтера"
"Переполнение чаши терпения стека"
"End. - закончился ли сюжет?"
"Мое отношение к абсолютизму функции ABS(x)"
"Переплетение судеб Бегина и Энда".

(c) FIDO


 
Игорь Шевченко ©   (2004-04-04 23:02) [248]

А также глубокомысленное эссе на тему "Как очистить переменную совсем" и описать вечный конфликт компьютронов с богонами.


 
Игорь Шевченко ©   (2004-04-04 23:02) [248]

А также глубокомысленное эссе на тему "Как очистить переменную совсем" и описать вечный конфликт компьютронов с богонами.


 
Diamond Cat ©   (2004-04-05 00:40) [249]

А может просто разорвать список задач, на колличество присутствующих здесь людей (с учетом интересов) и потом объединить все примеры, вот собственно и готовый "фак" а то скоро эта ветка разрастется до невероятных размеров, и найти место откуда ноги растут и сколько этих ног выросло будет просто не возможно.


 
Diamond Cat ©   (2004-04-05 00:40) [249]

А может просто разорвать список задач, на колличество присутствующих здесь людей (с учетом интересов) и потом объединить все примеры, вот собственно и готовый "фак" а то скоро эта ветка разрастется до невероятных размеров, и найти место откуда ноги растут и сколько этих ног выросло будет просто не возможно.


 
Piter ©   (2004-04-05 00:46) [250]

Игорь Шевченко (04.04.04 23:02) [248]
тему "Как очистить переменную совсем


IronHawk если не ошибаюсь? :)

P.S. Ладно, больше флудить не будем...


 
Piter ©   (2004-04-05 00:46) [250]

Игорь Шевченко (04.04.04 23:02) [248]
тему "Как очистить переменную совсем


IronHawk если не ошибаюсь? :)

P.S. Ладно, больше флудить не будем...


 
Anatoly Podgoretsky ©   (2004-04-05 00:51) [251]

Diamond Cat ©   (05.04.04 00:40) [249]
Можно если согласовать список тем, то обсуждение можно вести по каждой отдельной теме отдельно.


 
Anatoly Podgoretsky ©   (2004-04-05 00:51) [251]

Diamond Cat ©   (05.04.04 00:40) [249]
Можно если согласовать список тем, то обсуждение можно вести по каждой отдельной теме отдельно.


 
Piter ©   (2004-04-06 18:57) [252]

panov?


 
Piter ©   (2004-04-06 18:57) [252]

panov?


 
Piter ©   (2004-04-07 22:02) [253]

не понимаю


 
Piter ©   (2004-04-07 22:02) [253]

не понимаю


 
Rouse_ ©   (2004-04-09 00:03) [254]

Еще одна демка:
http://www.rouse.front.ru/Tracert.zip


 
Rouse_ ©   (2004-04-09 00:03) [254]

Еще одна демка:
http://www.rouse.front.ru/Tracert.zip


 
Piter ©   (2004-04-10 13:56) [255]

Панов, я тебя не понимаю, ты можешь хотя бы объявлять ответы на какие вопросы уже есть? или ты забил на все?


 
Piter ©   (2004-04-10 13:56) [255]

Панов, я тебя не понимаю, ты можешь хотя бы объявлять ответы на какие вопросы уже есть? или ты забил на все?


 
panov ©   (2004-04-10 14:36) [256]

>Piter ©   (10.04.04 13:56) [255]

Ну не успеваю я все систематизировать и разобрать.
Работа над FAQ идет, но медленно.
Прислано очень много материалов, но напрямую копи-паст не сделаешь.
Кроме того, что нужно все проверить, в редакторе FAQ ((c) Romkin ) нужно еще форматировать текст.

Также в любом случае нужна еще проверка всего FAQ.
Из него нужно вычистить ошибки и прочий разный бред.


 
panov ©   (2004-04-10 14:36) [256]

>Piter ©   (10.04.04 13:56) [255]

Ну не успеваю я все систематизировать и разобрать.
Работа над FAQ идет, но медленно.
Прислано очень много материалов, но напрямую копи-паст не сделаешь.
Кроме того, что нужно все проверить, в редакторе FAQ ((c) Romkin ) нужно еще форматировать текст.

Также в любом случае нужна еще проверка всего FAQ.
Из него нужно вычистить ошибки и прочий разный бред.


 
Jack128 ©   (2004-04-10 15:26) [257]


> Как в Word:
> - открыть документ
> - напечатать документ


Открыть документ

procedure OpenWordDocument(const AFileName: string);
var
 MsWord: OleVariant;
begin
 MsWord := CreateOleObject("Word.Application");
 MsWord.Visible := True;
 MsWord.Documents.Open(Filename := AFilename);
end;

Напечатать документ

procedure PrintWordDocument(const AFileName: string);
var
 MsWord: OleVariant;
begin
 MsWord := CreateOleObject("Word.Application");
 try
   MsWord.Documents.Open(Filename := AFilename);
   MsWord.ActiveDocument.PrintOut();
 finally
   MsWord.Quit;
 end;
end;


 
Jack128 ©   (2004-04-10 15:26) [257]


> Как в Word:
> - открыть документ
> - напечатать документ


Открыть документ

procedure OpenWordDocument(const AFileName: string);
var
 MsWord: OleVariant;
begin
 MsWord := CreateOleObject("Word.Application");
 MsWord.Visible := True;
 MsWord.Documents.Open(Filename := AFilename);
end;

Напечатать документ

procedure PrintWordDocument(const AFileName: string);
var
 MsWord: OleVariant;
begin
 MsWord := CreateOleObject("Word.Application");
 try
   MsWord.Documents.Open(Filename := AFilename);
   MsWord.ActiveDocument.PrintOut();
 finally
   MsWord.Quit;
 end;
end;


 
IronHawk ©   (2004-04-14 18:08) [258]


> Игорь Шевченко ©

Теперь это девиз форума!
:)


 
IronHawk ©   (2004-04-14 18:08) [258]


> Игорь Шевченко ©

Теперь это девиз форума!
:)


 
panov ©   (2004-04-18 16:06) [259]



 
panov ©   (2004-04-18 16:06) [259]




Страницы: 1 2 3 4 5 6 7 вся ветка

Форум: "Потрепаться";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];

Наверх




Память: 2.3 MB
Время: 0.055 c
6-1079081830
Jaxtor
2004-03-12 11:57
2004.05.09
Отсылка сообщения через Outlook 2000 (COM)


8-1076589619
able
2004-02-12 15:40
2004.05.09
TImage сильно мерцает...


1-1082808233
Юлия
2004-04-24 16:03
2004.05.09
как определить позицию курсора в tmemo?


3-1081933782
nv_
2004-04-14 13:09
2004.05.09
Поиск в подстановочном поле


1-1082928780
x_michael
2004-04-26 01:33
2004.05.09
Как использовать DLL скомпилинные в MathLab е в проектах Delphi?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский