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

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


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


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

Выпуск № 116
от 21.12.2002, 19:30

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


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

Idle Sign
Статус: Опытный
Общий рейтинг: 149.19
URL: Blind Team
[Подробней >>]
Артём Шегеда
Статус: Профессиональный
Общий рейтинг: 116.53
URL: Пристанище неодинокого программиста
[Подробней >>]
baldr
Статус: Профессиональный
Общий рейтинг: 114.07
URL: Сайт об ОС DOS. Всем, кто любит эту ОС!
[Подробней >>]
 
Jadd
Статус: Профессиональный
Общий рейтинг: 144.32
[Подробней >>]
vitya
Статус: Профессиональный
Общий рейтинг: 108.18
[Подробней >>]
Melkor
Статус: Доверительный
Общий рейтинг: 133.33
[Подробней >>]
 
toshka
Статус: Начальный
Общий рейтинг: 114.45
[Подробней >>]
Vadim
Статус: Доверительный
Общий рейтинг: 148.31
[Подробней >>]


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

Вопрос № 361. Здравствуйте! Был такой вопрос: ----------------- Вопрос № 344. Сказите плиз, как в списке TListBox ... (ответов: 4)
Вопрос № 362. Здравствуйте ув. Эксперты!!! Я сделал программу типа телефонной книги в ValueListEditor1 под Key-Имя... (ответов: 2)
Вопрос № 363. Здравствуйте ув. Эксперты!!! Помогите пожалуйста программа не хочет работать, Delphi выдаёт ‘Incompi... (ответов: 5)
Вопрос № 364. Всем здрасте... В общем, опять я с БД. Есть таблица с memo-полем и картинкой. Оба они, естественно... (ответов: 3)
Вопрос № 365. Приветствую вас эксперты. Last: Такое дело, необходимо из программы запустить свойства "Мой ком... (ответов: 2)
Вопрос № 366. Здраствуйте уважаемые эксперты! вот незадача немогу решить проблему..... Необходимо получить список... (ответов: 3)

Вопросов: 6, ответов: 19


 Вопрос № 361

Здравствуйте!
Был такой вопрос:
-----------------
Вопрос № 344. Сказите плиз, как в списке TListBox узнать сколько все тама элементов внесли?...
на которую я ответил так:
-----------------
ListBox.Count
Ответил и Отвечает Idle Sign
-----------------
Доброе время суток, Ландграф Павел!
===== Pro bono publico, no bloody panico! =====
MEMOAK правда немного лажанулся... В торопях, наверное.
Короче, эксперты совершенно правы:
TListBox.Items.Count.
ПиС: Ты себе что справку не установил? Зря.
Смешно! Особенно вот этот:
-----------------
ПиС: Ты себе что справку не установил? Зря.
Установить мало, надо и прочитать.
У ListBoxa есть такой property Count. В отличие от ListBox.Items.Count, ListBox.Count не Read-Only!!!!!!! Правда ListBox.Count наполовины ссылается на ListBox.Items.Count, но это уже другой вопрос.
Я не отрицаю ответы других, но верно и мой ответ.
Можно и ListBox.Items.Count и ListBox.Count. Мне больше нравится ListBox.Count, так как он дает возможность оперировать Count-ом.
P.S. Взамен моральный ущерб, я требую от Idle Sign прочитать Help! :)



Вопрос отправлен: 16.12.2002, 21:15
Отправитель: MEMOAK

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

Отвечает Idle Sign

Добрый день, MEMOAK!
===== Pro bono publico, no bloody panico! =====
Ну, раз уж ты вывесил этот вопрос на всеобщее обозрение, то...
Приношу свои глубочайшие извинения, если задел тебя за живое, хотя, совершенно не обязан Поясню почему.
Действительно, при работе с VCL можно обращаться к этому свойству (маленький секрет приоткрою: я изначально, ответил также как и ты, потом прочитал твой ответ и задумался). Задумался я над тем что есть такая вешь как CLX, которая становится все актуальнее и актуальнее из года в год. Не зря же Borland внедрил в Delphi пресловутую кроссплатформенность. Я посчитал нужным повернуть читателя "лицом к будущему" :) и не позабыть о старом-добром прошлом, в котором помниться и в VCL не было такого свойства.
Кстати, ПиС был написан не в твой адрес, а в адрес читателя...
ПиС: пойду запасусь чайком и под Motorhead проштудирую хэлп. Так, на всякий случай, для повышения жизненного тонуса.

Ответ отправлен: 17.12.2002, 17:34
Отправитель: Idle Sign


Отвечает Артём Шегеда

Приветствую Вас, MEMOAK!

Прежде чем возмущаться, советую посмотреть в исходники модулей VCL!
Там даже намёка на TListBox.Count не существует.
А что касается обсуждения ответов экспертов, так Вам на форум

Приложение:

Ответ отправлен: 17.12.2002, 11:28
Отправитель: Артём Шегеда


Отвечает baldr

Доброе время суток, MEMOAK!
Странно... Может, у меня какой другой TListBox? Но в справке я не обнаружил у него такого
свойства, как Count... :(


Ответ отправлен: 17.12.2002, 00:15
Отправитель: baldr


Отвечает Jadd

Здравствуйте, MEMOAK!
Это все, конечно же, флейм. Может в новых версиях и появилось такое свойство, но в версии 5 такого нет(я проверил это в BCB 5, а там, как известно компоненты паскалевские) и я не думаю, что что-то изменилось с тех пор. Потом, какая логика в не read only поле с таким назначением? Оперировать Count'ом нет смысла, т.к. это поле заполняется методами самого TListBoxa. Не вижу смысла писать что-то экстра. Так баги и рождаются. Так что, это скорее ошибка (я не спорю. исходя из глючности этих продуктов).

Ответ отправлен: 17.12.2002, 03:10
Отправитель: Jadd


 Вопрос № 362

Здравствуйте ув. Эксперты!!!
Я сделал программу типа телефонной книги в ValueListEditor1 под Key-Имя, под Values-телефон.
Но при поиске по телефону(byTel) выдаёт сообщение: List index out of bounds(-2)
Заранее Big Thank’s!!!



Приложение:


Вопрос отправлен: 16.12.2002, 21:25
Отправитель: elvis

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

Отвечает Idle Sign

Доброе время суток, elvis!
1) возможность/необходимость завершения работы приложения лучше обрабатывать в событии OnCloseQuery
2) FindRow ищет по ключу, чтобы искать по значению можно изловчиться так (с расчетом на то, что ищем только по второй колонке aka телефон):
for int:=0 to ValueListEditor1.RowCount-1 do begin
if Edit3.Text = ValueListEditor1.Cells[2, i] then
ShowMessage(ValueListEditor1.Keys[int]);
end;

Ответ отправлен: 17.12.2002, 17:34
Отправитель: Idle Sign


Отвечает Jadd

Добрый день, elvis!
Вероятнее всего, что нужный элемент не найден по какой-то причине(читай внимательно про метод поиска в этом классе) и передает в int значение выходит за диапазон значений индексов в этом ValueListEditor(видимо это класс из версий Дельфи 6+, я слез с дельфей после 5-й версии). Сделай проверку на значение int. Читай внимательно в хэлпе про этот класс и методы доступа к элементам класса.

Ответ отправлен: 17.12.2002, 03:00
Отправитель: Jadd


 Вопрос № 363

Здравствуйте ув. Эксперты!!!
Помогите пожалуйста программа не хочет работать, Delphi выдаёт ‘Incompitable Tipes: ‘string’ and ‘PAnsiChar’’


Приложение:


Вопрос отправлен: 16.12.2002, 21:23
Отправитель: Elvis

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

Отвечает vitya

Доброе время суток, Elvis!
Занешь, у меня такое подозрение, что если заменить string на PChar или PAnsiChar, то твоя программа откомпилируется!

Ответ отправлен: 17.12.2002, 15:15
Отправитель: vitya


Отвечает Idle Sign

Добрый день, Elvis!
===== Pro bono publico, no bloody panico! =====
WinExec требует pchar, а не строку. Тебе нужно преобразовать строку так: pchar(text). Вообще все виндовые функции обожают работать с pchar, да и не только виндовые...

Ответ отправлен: 17.12.2002, 17:35
Отправитель: Idle Sign


Отвечает Melkor

Здравствуйте, Elvis!
1 - Попробуй преобразование типов, напр Text := String(RegIni.ReadString('Razd', '1', 'Default') или переключи опции компилятора в Project Options.
2 - если не сработает, см. пример.


Приложение:

Ответ отправлен: 19.12.2002, 03:03
Отправитель: Melkor


Отвечает Jadd

Добрый день, Elvis!
Судя по нотации, PAnsiChar - указатель на строку символов, которая представляется в памяти как массив типа Char(в данном случае AnsiChar). Стало быть, дело сводится к приведению типов. Если явного приведения не получается, сделай неявное или ищи функции, которые конвертируют из одного типа в другой. Такие точно есть. Просто однозначно. Ищите.

Ответ отправлен: 17.12.2002, 02:49
Отправитель: Jadd


Отвечает toshka

Приветствую Вас, Elvis!
Почитай хелп к WinExec. Там первый параметр - PChar. Поэтому писать надо так:
WinExec(PChar(text),Sw_Normal);


Ответ отправлен: 17.12.2002, 09:36
Отправитель: toshka


 Вопрос № 364

Всем здрасте...
В общем, опять я с БД. Есть таблица с memo-полем и картинкой. Оба они, естественно, BLOB-поля.
Я работаю с таблицей исключительно через несколько TQuery и для вывода из специальных визуальных
компонентов для работы с БД использую только TDBGrid. И теперь вопрос. Как с помощью запроса
получить из базы и вывести в стандартный TImage эту картинку? Если делать через API BDE, то,
в принципе, можно получить эту картинку в виде просто набора байт. Скорее всего, как-то еще
можно - попроще. Но как?
И еще вопрос. При изменении такой записи (с Memo-полем и картинкой), как их (эти поля) изменить?
А как добавить такую новую запись? Где и каким образом нужно будет указать ссылки на текст и картинку?



Вопрос отправлен: 16.12.2002, 22:18
Отправитель: baldr (baldr@pisem.net)

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

Отвечает Артём Шегеда

Доброе время суток, baldr!

Открой справку по VCL на статье "TStream.CopyFrom" и посмотри пример. Там идёт работа с потоками (Streams). Чтобы сохранить картинку в BLOB, создай MemoryStream, сохрани в него картинку, создай BLOBStream, примени для него CopyFrom. Если же картинка находится в файле, то создай FileStream и скопируй из него в BLOBStream.
А твоя проблема с BLOB в запросах мне не понятна - там всё работает средствами VCL также, как и в таблицах.

Ответ отправлен: 17.12.2002, 12:04
Отправитель: Артём Шегеда


Отвечает Jadd

Здравствуйте, baldr!
1)Есть TDBImage и его использование, на мой взгляд, целесообразно в твоей случае. Можно использовать гриды с отображением картинок в ячейках, таких много. Соответственно загружать и изменять картинки там будет легче легкого.
2)Если п.1 не подходит, юзай TStream для загрузки BLOB'ов в базу. Есть такие методы, как SaveToStream и LoadFromStream. Так что тут простор широк. Дерзай.

Ответ отправлен: 17.12.2002, 02:45
Отправитель: Jadd


Отвечает toshka

Доброе время суток, baldr!
Во первых: зачем использовать TImage, если есть TDBImage.
Во вторых: для чтения и записи картинки в BLOB-поле у этого поля (объект TBlobField) существуют методы LoadFromFile и LoadFromStream (см. пример.)

Приложение:

Ответ отправлен: 17.12.2002, 10:00
Отправитель: toshka


 Вопрос № 365

Приветствую вас эксперты.
Last: Такое дело, необходимо из программы запустить свойства "Мой компьютер", закладка "Оборудование"(WinXP)
New: Так что, неужели нельзя, не поверю. Скажите хоть где можно посмотреть, только просьба без ответов типа, рамблер......



Вопрос отправлен: 18.12.2002, 00:38
Отправитель: Iv

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

Отвечает Vadim

Приветствую Вас, Iv!
Не знаю как в ХР, но в win98 можно применить такую команду:
control.exe sysdm.cpl,,1
иными словами, запускается апплет "Свойства: система", закладка 1 (закладки начинаются с 0).
В ХР наверно тоже будет работать, только подобрать номер закладки.

Ответ отправлен: 18.12.2002, 07:40
Отправитель: Vadim


Отвечает Артём Шегеда

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

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

Чтобы открыть свойства "Моего компьютера" нужно запустить приложение C:\windows\control.exe с параметром C:\windows\system\sysdm.cpl. Надеюсь, запускать приложение вопрошающий умеет?
А какие примбамбасы имелись ввиду?

Ответ отправлен: 18.12.2002, 12:06
Отправитель: Артём Шегеда


 Вопрос № 366

Здраствуйте уважаемые эксперты!
вот незадача немогу решить проблему.....
Необходимо получить список запущенных процессов затем получить "сомандные строки" с которых они были запущенны(имя и путь к исполнимому файлу) Затем получить дескрипторы всех окон каждого процесса?
пытаясь решить эту задачу получил список хенделов окон и путь к модулю окна ,но у программ написанных на VB млдуль окна находится в папке windows а не там от кель запущенна программа :(!!! Я совсем запутался и уже не знаю с какой стороны подходить к етой задачи, то ли искать окна а от них процессы, толи найти процесс а потом все остальное :-/ ???
вобщем помогите хто чем может конечно лучще кусок кода ;-).
Зарание благодарен!
З.Ы. и ограменное спасибо экспертам за ответы на предыдущии вопросы!



Вопрос отправлен: 18.12.2002, 17:36
Отправитель: Nikolay (v-niki@mail.ru)

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

Отвечает Vadim

Добрый день, Nikolay!
Может быть тебе это поможет?
См. приложение.
Кстати, окна могут запускаться не только из экзешников, но и из DLL, а VB свои библиотеки стандартных функций запихивает именно в %WINDIR%SYSTEM.


Приложение:

Ответ отправлен: 19.12.2002, 12:50
Отправитель: Vadim


Отвечает Idle Sign

Доброе время суток, Nikolay!
===== Pro bono publico, no bloody panico! =====
Могу теорией. Принимай.
Про ВБ все логично - приложения, написанные на нем не являются самостоятельными исполняемыми файлами, а лишь набором команд (утрирую, конечно, но что поделать), обращающимся к системным библиотекам.
На счет того, что вначале: начинать, конечно, нужно с головы - с процесса, а потом искать принадлежащие ему окна (на сколько я понимаю именно так действует WinSight32).

Ответ отправлен: 18.12.2002, 18:21
Отправитель: Idle Sign


Отвечает toshka

Доброе время суток, Nikolay!
Для сканирования списка процессов нужно использовать методы ToolHelp (модуль TlHelp32.pas)
Получаешь список все процессов, затем сканируешь все окна, для кажного окна получаешь ID процесса и сопоставляешь.
Для работы примера создай TreeView на форме. (см. пример)

Приложение:

Ответ отправлен: 19.12.2002, 10:05
Отправитель: toshka



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

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

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

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

Программисту
Assembler (39)
C / C++ (30)
Perl (5)
Delphi (21)
Pascal (23)
Basic / VBA (10)
Java / JavaScript (6)
PHP (4)
MySQL / MSSQL (5)
Пользователю
Windows 95/98/Me (32)
Windows NT/2000/XP (26)
"Железо" (32)
Поиск информации (14)
Администратору
Windows NT/2000/XP (10)
Linux / Unix (14)
Юристу
Гражданское право (8)
Семейное право (3)
Трудовое право (5)
КоАП (2)

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




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

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

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

В избранное