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

Delphi - проблемы и решения

  Все выпуски  

Проблемы и решения в Delphi #15


Служба Рассылок Subscribe.Ru проекта Citycat.Ru

Проблемы и решения в Delphi - выпуск 15 от 27.04.2001.


Легко! Сказал Пятачок Винипуху,
стреляя в него из ружья.

ВСЕ ВОПРОСЫ СПРОСИТЬ ПРЕДЛОЖИТЬ АРХИВЫ СКОЛЬКО НАС


Доброго Вам времени суток уважаемый читатель.

Прошу всех кто пробовал какие-то компоненты обеспечивающие доступ,
к БД в обход БДЕ и др. (бесплатные) присылать мне(до 10 Мб) или
ссылочки на дистрибы(ftp). Желательно с краткими комментариями.
Обобщив полученный материал сделаю пару выпусков на эту тему!


Сегодня в выпуске :
~~~~~~~~~~~~~~~~~~~
1. Закончим с WinApi.
2. Очередные вопросы.
3. Отвеченные вопросы.
4. Ищу подельника.
~~~~~~~~~~~~~~~~~~~


1. Закончим с WinApi.
---------------------

Последний раз мы рассмотрели пару ф-й и их особенности(FindWindow,
GetNextWindow и GetWindowText), однако несмотря на это были вопросы
именно на эту тему - вывод : торопитесь ребята. Старайтесь по
максимуму использовать, то что у Вас уже есть.

Итак вдогонку к 12-у выпуску хочется отметить, что при поиске окон,
как отмечалось, нужен класс и имя, так вот - если Вы ищите DOS-окно,
то его класс всегда = 'tty'.

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

Получить каталог Windows( вдруг при установке Вы назвали его Unix :) ).

var
s1 : array[0..254] of Char;
...
GetWindowsDirectory(s1,255);

В s1 получим искомый путь.
Один момент - не надо описывать s1 просто как PChar, иначе
при выполнении получите неприятное сообщение.

Анологично можно найти и системный каталог. Это тоже важно, поскольку,
например для Win9x это 'Windows\System', а для NT 'System32'.

GetSystemDirectory(s1,255);

255 - это длинна строки. Отдельно подчеркну, что очень рекомендую вместо
этого числа ставить переменную Max_Path, содержащую в себе максимальную
длинну пути в Вашей операционной системе.


Еще очень интересная функция. Она позволяет запретить или разрешить все
действия с окном пользователю.

EnableWindow(H:Hwnd,t:Boolean);

Где h-дескриптор окна, если сказать Application.Handle, то свое окно.
t=False - запретить действия, True - разрешить.

Ну и все с Api - функциями на этом.


2. Очередные вопросы.
---------------------


Вопрос 180:

От: school73


Здравствуйте!
Нужно из Delphi создать документ Word, дать ему
имя, нарисовать табличку и скачать туда, кое-какие
данные из базы. Если не сложно, пришлите команды работы
с таблицами Word.
Богданова Рита.


Ответить.

Ответ 1:


Вопрос 181:

От: Александр Федюнин


Вопрос: А кто-нибудь знает, можно ли в Дельфи подключить кларионовскую
базу и если можно то как?


Ответить.

Ответ 1:


Вопрос 182:

От: Миленький


Как получить исходный текст html-странички, не используя свойство
SourceText компонента THTML, а используя какие-нибудь другие компоненты,
например: TWebBrowser.
И еще. Подскажите, где взять что-нибудь (VCL, ActiveX-компоненты) для
парсинга строк, например сохранение всех ссылок из html-странички и т.п.



Ответить.

Ответ 1:


Вопрос 183:

От: Popov Eugene

У меня следующий вопрос:
Строю график двух переменных (например x:=cos(t); y:=sin(t)) используя
TeeChart v4 (тип Line/FastLine), так у меня вместо окружности фигня
какая то получается - оно соединяет точки отрезками не в том порядке, в
котором я делаю Series1.AddXY, а как будто сортирует их по горизонт.
координатам (визуально выглядит как закрашенный круг). Т.е. если график
- что нибудь типа прямой или параболы, то все OK.
Можно ли это победить?
Может кто подскажет компонент для построения графиков, с возможностью
рисования на графике и простой в использовании.


Ответить.

Ответ 1:


Вопрос 184:

От: Сергиенко Максим

Вопрос:
Здравствуйте
Как поместить на вкладку "Servers" какой нибудь СОМ-сервер, например ИЕ или
MS SQL Server
Спасибо



Ответить.

Ответ 1:


Вопрос 185:

От: SeRj


Вопрос:

Создаю *.ini файл, в нем:

[Options]
Dametr_valov_ustanovki=123, 321, 456, 654

Запятые в данном случае разделяют числа, мне нужно в ComboBox поместить
эти четыре значения, чтобы
выпадающий список показал:
123
321
456
654
Помогите советом или лучше кодом примера.


Ответить.

Ответ 1:


Вопрос 186:

От: "Зюка"

Я создаю телефонный справочник (открываю БД только для чтения) используя
DBGrid, а для поиска добавляю кучу полей Edit. А можно ли было бы
вводить тлф. номер прямо в DBGrid, но она бы не редактировалась, а
осуществлялся бы поиск по данному полю?


Ответить.

Ответ 1:
Прямо в DBGrid на мой взгляд будет слишком сложно, можно обрабатывать
событие OnKeyPress компонента DBGrid:

procedure TSubscriber_frm.RxDBGrid1KeyPress(Sender: TObject;
var Key: Char);
begin
// если набор номера (численного значения)
if ((Ord(key)>=48) and (Ord(key)<=57)) or ((Ord(key)>=96) and (Ord(key)<=105)) then begin
edit1.Visible:=True;
edit1.SetFocus;
edit1.Text:=key;
edit1.SelStart:=1;
end;
// если набор текста
if (Ord(key)>=192) and (Ord(key)<=255) then begin
edit2.Visible:=True;
edit2.SetFocus;
edit2.Text:=key;
edit2.SelStart:=1;
end;
end;
'
, а в обработке события OnChange edit1 и edit2 применить
ф-цию FindNearest по нужному полю. Прятать edit-ы , после
удачного поиска, либо по нажатии пользователем стрелки, Enter-a
и т.п. (как душе угодно) можно обрабатывая OnKeyDown edit-ов.
У меня подобная штука работает без проблем. Описана в литературе
как "инкрементальный поиск".


Вопрос 187:

От: ION


Вопрос:Как сделать полноэкранный режим програмы?
Можно ли менять разрешение в програме?


Ответить.

Ответ 1:


Вопрос 188:

От: Ivan Maroz

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


Ответить.

Ответ 1:


Вопрос 189:

От: anton

Здраствуйте.
Скажите как написать процедуру для часов(Label)так,чтобы одни часы
показывали бы одно время,а другие,к примеру,на 2 часа меньше.
Антон.


Ответить.

Ответ 1:


Вопрос 190:

От: Hecht Andreas


Как написать программу для составления списка заданий для
паралельных процессоров. Каждое задание может быть выполнено на любом
процессоре. Любое задание из списка выполняется на первом освободившемся
процессоре.


Ответить.

Ответ 1:


Вопрос 191:

От: Alex Bull

:Добрый день,Дмитрий.
У меня достаточно специфический вопрос.
Как работать с MIDI портом в Delphi. Т.е. как отсылать и принимать
сообщения (имеются в виду просто посыл и прием одиночных байтов) через
MIDI порт аудио карты.
Буду благодарен за ответ.
С уважением,Александр


Ответить.

Ответ 1:


Вопрос 192:

От: Алексей Малиновский

Здраствуйте господа пограммисты!

У возникла необходимость имитацию движения жидкости по каким-нибудь
трубам.
Вот не знаю как лучше сделать :-(
- Можно через TShape, но не знаю как изобразить жидкость...
- Можно через TPaintBox, но это очень муторно...
Может есть какой-нить компонентик нормальный?
Господа подскажите какие-нить идейки по этому поводу?

Заранее благодарен за советы...

С уважением, Алексей.


Ответить.

Ответ 1:


Вопрос 193:

От: Алексей Малиновский

Здраствуйте господа пограммисты!

Господа подскажите, как сделать висячую форму, типа как в Delphi -
Object Inspector (только чтобы при активизации основной формы эта форма
не пропадала (не пряталась за неё))?

Заранее спасибо...

С уважением, Алексей.


Ответить.

Ответ 1:


Вопрос 194:

От: Astanin Dmitry

Здравствуйте!
Пожалуйста, подскажите наилучший способ очистить TImage после рисования
на нем.


Ответить.

Ответ 1:


Вопрос 195:

От: Dyadin Yurij

Здравствуйте.
Где можно взять компонент для Делфи4.0 подобный StringGrid, который бы
позволял выделять множество ячеек, сбрасывать информацию в буфер обмена
и обратно.


Ответить.

Ответ 1:


Вопрос 196:

От: Igor Mahnach

Здравствуйте!
Может кто-нибудь знает, где взять компонент, при помощи которого можно
организовать карту мира. Естественно, с возможностью чего-либо на этой
карте дорисовывать.
Спасибо!
Игорь


Ответить.

Ответ 1:


Вопрос 197:

От: Юрий Безсонов

Приветствую Вас.
Есть вопрос: Как можно из Делфи 5 вызвать окошко управления доступом
к файлу в NT или w2k на системе NTFS и выбранные пользователем
разрешения применить к каталогу или файлу. Это должно решаться
средствами WinAPI, но документации по нему маловато :(
Заранее благодарен.


Ответить.

Ответ 1:


Вопрос 198:

От: Загорский Антон

Здравствуйте.
У меня вот какая проблема:
Я пишу своеобразный почтовик, и там есть функция "Просмотреть полученное
письмо через ИЕ".
Стоит задача: переслать всё это в ИЕ из Lines объекта Memo1.
Создавать временный файл и потом через WinExec и через Clipboard+SendMessage
мне не хочется.
Я узнал что существует так называемые pipe-каналы или просто pipe.
Скажите, как с ним (pipe) работать. (В хелпе есть описание но там нет
примеров, да тем более он на английском. если у Вас есть толковый хелп по
win32 developer's references (вроде так, у меня это файл win32sdk.hlp) на
Русском языке то пожалуйста вышлите мне его.


Ответить.

Ответ 1:


Вопрос 199:

От: VVM

Здраствуйте.
Как обнулить .swp-файл?
Задали мне такое домашнее задание.



Ответить.

Ответ 1:


Вопрос 200:

От: Марк Берсон

Hello Дмитрий,

Хочу спросить Вас.
Где то читал, что существуют уникальные заводские номера процессора и
винчестера.
Как до них добраться из Делфи. Хочу привязать программу к железу а не к
среде.
Заранее благодарю.

Хочу ответить Лобастову Николаю. Но не на вопрос а на предложение из
раздела "3. Ищу подельника."
Не знаю интересно ли это всем.

Я делал года 2 назад компонент TPlategka. Все данные сохранялись из
TStream в ВLob .
Идея была такой TDocument, TUser,TCklad, TXolding...
Компоненты оказались страшно медленные.
Кроме того сильные сомнения насчет залотой клади
>>Такая библиотека сильно облегчит автоматизацию предприятия, а
разработчикам
>>поможет заработать кучу денег.
>>Ведь это же златая кладезь.


Ответить.

Ответ 1:


Вопрос 201:

От: Lslayer


>>Уважаемый Lslayer.

>>Попробуйте следующий вариант:

>>procedure TForm1.Button1Click(Sender: TObject);
>>var
>> V:Variant;
>>begin
>> V := CreateOleObject('Word.Basic');
>> V.AppShow;
>> V.FileNew;
>> V.Insert('Automation is easy!');
>>end;

>>С уважением,
>>Сергей.

Еще раз здравствуйте!

А руководства по командам ентим (AppShow, FileNew, Insert и так далее!)у Вас
нету?
(пришлите, если есть, плс)!


Ответить.

Ответ 1:


Вопрос 202:

От: Константин Михайлович Воротов

Здравствуй Дима.

Подскажите плз.
Как определить наличие мыши и ее тип ?


Ответить.

Ответ 1:


Вопрос 203:

От: Константин Михайлович Воротов

И еще вопрос:
Перед тем как помещать выбранный файл в БД, хотелось бы провести
его архивирование прямо в программе. Существует ли возфожность упаковки "на лету".
Как это можно сделать?


Ответить.

Ответ 1:


Вопрос 204:

От: Калашников Артур

Как запустить из программы написаной на дельфи Excel используя OLE я
знаю, а вот как объеденить две ячейки в Excel и выравнять текст по
центру я не знаю. Помогите будласка!!!


Ответить.

Ответ 1:


Вопрос 205:

От: Virus

Здравствуйте!
Я хочу попробовать программировать DirectX7 на Delphi, но не имею ни
малейшего представления как это можно сделать. Что мне для этого нужно
(какие библиотеки), и как это дело подключить?
Очень интересно! Заранее ОГРОМНОЕ СПАСИБО! :)
С уважением, Virus


Ответить.

Ответ 1:


Вопрос 206:

От: Nohcha@iname.com

:Подскажите как подписать ActiveX, чтобы IE не задавал дополнительных
вопросов?


Ответить.

Ответ 1:


Вопрос 207:

От: anton

Здраствуйте.
Пришлите,если у кого есть компонент часов с электронными цифрами и
жидко-кристаллическим экраном для Delphi5.Заранее благодарен.Антон.
mailto:armen@online.sinor.ru


Ответить.

Ответ 1:


Вопрос 208:

От: Andrey F Ivanov

Добрый день!
Не может ли кто-нибудь поделиться примером из WinAPI , который
проверял бы , не занят ли COM1 и возвращал handle (если я правильно
выражаюсь) окна , которое это сотворило.
Заранее благодарен за любой ответ.
Ответить.



Ответить.

Ответ 1:


Вопрос 209:

От: Andrew Slobodyanyk

Вопрос: Как перерисовывать изображение без мерцания?
Рисовать прямо на форме или на PaintBox-е? Если прямо на Canvas -
мерцает ужасно; создавать МетаФайл с МетаКанвой, а потом Draw - плохо;
BitMap в памяти, а потом CopyRect или BitBln - чуть-чуть, но мерцает.
Как совсем избавиться, ведь скажем мышь над окном двигаеться - и
нормально.


Ответить.

Ответ 1:


Вопрос 210:

От: Pavel Trushko

Добрый день.
Как сделать, чтобы при вызове внешней программы, выполнение кода Дельфи
продолжалось лишь после завершения работы внешней программы?
Спасибо.
С уважением, Павел Трушко.


Ответить.

Ответ 1:


Вопрос 211:

От: "Ирина Арзамасцева"


Вопрос: Может кто подскажет: как строить диаграммы и графики, используя
значения из таблицы или текстового файла (программным путем).
Заранее спасибо. Irinchik@r66.ru <mailto:Irinchik@r66.ru>


Ответить.

Ответ 1:


Вопрос 212:

От: "Ирина Арзамасцева"


Вопрос:
Можно ли из Delphi запустить макрос, записанный в MS Word'e?
Заранее спасибо Irinchik@r66.ru <mailto:Irinchik@r66.ru>


Ответить.

Ответ 1:


Вопрос 213:

От: Алексей Малиновский

Господа, подскажите как сделать форму типа формы Object Inspector с
функцией Stay on top?
Заранее спасибо.

С уважением, Алексей.


Ответить.

Ответ 1:


Вопрос 214:

От: Sir Antony

Привет, всезнающий All!

У меня вопрос:
Есть ли процедура копирования каталога со всем его содержимым (файлами
и подкаталогами). Если есть, укажите, PLS, если нет - не подскажите, как
организовать этот процесс.

Заранее спасибо, Sir Antony.


Ответить.

Ответ 1:


Вопрос 215:

От: Furmanov@nursat.kz

Имеется Win2000Server.

Требуется сделать суточный лимит времени по DialUp, т.е. пользователю
дается, к примеру, 1 час в сутки. Он подключился, провел на линии N
минут, отключился на некоторое время, затем опять подключился и ему
дается времени (1час-N прошедших минут). Если кто-то знает, как это
сделать стандартными средствами Windows, либо при помощи каких либо
конкретных программ, то подскажите, пожалуйста. Если же никто не слышал
о подобном, то вот вторая часть вопроса: Как написать программу (Delphi
или C++), которая осуществляла бы подобный контроль? Знаю, что можно
использовать функции NetUserAdd, NetUserDel и т.п., но не знаю, как их
применить в собственной программе. (к сожалению знания мои еще не так
велики). Есть ли функция, при помощи которой можно отключить учетную
запись? Был бы очень благодарен за небольшой исходник, в котором
описывалась хотя бы одна из этих функций на конкретном примере.

И еще один вопрос: как при помощи TAPI можно оборвать соединение
созданное не моей программой?

Буду очень признателен всем откликнувшимся! Помогите пожалуйста!
Горю!!!! Рассылку забираю нерегулярно, поэтому огромная просьба -
продублируйте ответ на furmanov@nursat.kz <mailto:furmanov@nursat.kz>

Заранее благодарен Фурманов С.


Ответить.

Ответ 1:


Вопрос 216:

От: George Dolin

Как при создании таблицы, например Paradox, добавить в нее поля типа
Memo и Graphic.


Ответить.

Ответ 1:


Вопрос 217:

От: George Dolin

Добрый день!
Для блока математических вычислений требуется увеличить точность
вычислений чисел - сверх типа extended. Какие методики стоит
использовать, возможно есть ссылки на примеры решения подобной проблемы.


Ответить.

Ответ 1:


Вопрос 218:

От: Ернар Шамбаев

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

У меня вот какой вопрос. Имеется таблица, одно поле которой - binary.
Алгоритм записи в него мне неизвестен. Каким образом я смогу (если
смогу вообще) прочесть содержимое этого поля?

Заранее благодарен.





Ответить.

Ответ 1:


Вопрос 219:

От: Ернар Шамбаев

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

Не подскажите, где можно взять хорошую справку по Win API
(желательно, на великом и могучем и, если можно, с примерами
использования)?

Премного благодарен.


Ответить.

Ответ 1:


Вопрос 220:

От: Константин Михайлович Воротов

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


Ответить.

Ответ 1:


Вопрос 221:

От: Ольга **********

У меня возникла проблема при работе с компонентом БД TDBLookupCombo она заключается в следующем, При активизации окна поле этого компонента пусто, после нажатии на него выпадает список при выборе из него поле заполняется этим значением, подскажите как сделать так что бы при активизации окна этот компонент содержал значение определенной записи используемая БД на Access2000.

С уважением Ольга


Ответить.

Ответ 1:


Вопрос 222:

От: Wladimir

Как в Delphi повесить процедуру на событие открытия - закрытия CD-ROM ?
В Windows есть сообщение WM_DEVICECHANGE но оно возникает только когда в
дисководе есть диск.


Ответить.

Ответ 1:


Вопрос 223:

От: Micky

Привет, господа DELPHIсты, мой вопрос никаким боком нельзя отнести к
вопросу по программированию. У меня проблема. У меня есть диск:
"Delphi 5.1" фирмы AlexSoft. С недавних пор, после установки, Delphi
перестал загружатся. Сначала выходит некоторое сообщение, типа "хочу
ли я принять новые установки дебаггера", а затем "виснит", причем все,
кроме RESET ничего не помомает.
Затем в каталоге Delphi появляется файл: "BORDBG50.FFFF961B.log"
Содержимое которого выглядит так:
[FFFD1DEB:C438] StartServiceCtrlDispatcher being called.

[FFFD1DEB:C438] StartServiceCtrlDispatcher failed.

[FFFD1DEB:C438] StartServiceCtrlDispatcher being called.

[FFFD1DEB:C438] StartServiceCtrlDispatcher failed.

[FFFD1DEB:C438] StartServiceCtrlDispatcher being called.

[FFFD1DEB:C438] StartServiceCtrlDispatcher failed.

Вот такая у меня проблема.Форматировал диск, не помогло. Не работает
(а ведь работал!!!) не только у меня.

Помогите люди добрые!!!


Ответить.

Ответ 1:


Вопрос 224:

От: Mikl Kapustnicov

:Где можно достать драйвер для базы Clarion. Которая стоит в ПФР 2000.
Если, кто может то киньте мне mailto:ximka@yandex.ru
<mailto:ximka@yandex.ru> или укажите адрес, где можно достать их.


Ответить.

Ответ 1:


Вопрос 225:

От: Никита

Как программно изменять значение DBCheckBox
т.ч. значение в связанном поле тоже менялись


Ответить.

Ответ 1:


Вопрос 226:

От: Nat

:Здраствуйте!
Подскажите, пожалуйста.

Есть такая форма:

<FORM METHOD=POST ACTION="http://www.111.222/cgi-bin/333/send_page_www">
<INPUT NAME="num" Type="Hidden" Value="59" SIZE=10>
<B>Текст сообщения</B> <INPUT NAME="message" SIZE=50>
<INPUT TYPE=SUBMIT VALUE="Отправить">
</FORM>

А как передать данные по точно такому адресу, но не открывая форму в
веб-броузере, а из программы, написанной на Delphi (у меня 4)? Точнее я
хочу сделать программку, которая могла бы при выполнении определенных
условий послать такое же сообщение, какое отправляет эта форма при нажитии
пользователем кнопки "Отправить"?.



Ответить.

Ответ 1:


Вопрос 227:

От: John D

Здравствуйте!
Возник вопрос такой, немного дурацкий, но всё-таки...

Попробовал я намедни свою компоненту написать. (Для справки - всю эту
чуму я пробовал
не из-под Delphi, а из-под C++ Builder 5) Оказалось, что это вообще не
страшно и ежели сильно
не разгоняться, то даже и очень просто. Но в процессе этого дела заметил
я каку одну.
И вот о ней хочу спросить.

Возьмем, например, стандартную метку (TLabel). У неё есть свойство
Caption.
Когда в Object Inspector'e этот Caption редактируешь, то СРАЗУ ЖЕ В
ПРОЦЕССЕ
РЕДАКТИРОВАНИЯ МЕНЯЕТСЯ И ТЕКСТ МЕТКИ НА ФОРМЕ.
Затем создадим новый компонент и отнаследуем его, например, от
TCustomLabel.
Запишем ему в published: __property Caption;

Инсталлируем эту компоненту и бросим на форму. И появится у нас на форме
такая же,
как и TLabel метка, только свойств у нее в Object Inspector'e будет
поменьше. Но Caption
будет!

Теперь начнем менять этот Caption в Object Inspector'e -
ТЕКСТ МЕТКИ НА ФОРМЕ НЕ БУДЕТ!!! МЕНЯТЬСЯ СРАЗУ ЖЕ В ПРОЦЕССЕ ВВОДА ВАМИ
НОВЫХ ДАННЫХ,
а измениться лишь после того, как вы нажмете на <Enter> или Object
Inspector'e перепрыгнете курсором
на какое-либо другое свойство.

В связи с этим вопрос - а как сделать так, чтобы и для своего компонента
свойства подобные Caption
при работе с Object Inspector'ом вели себя как у встроенных компонентов
(т.е. выдавали
изменения на форму сразу же, а не после щелканья по вводу)?

(Я чего только не пробовал..! И нифига, - не хочет и всё тут! Помогите,
please...)


Ответить.

Ответ 1:


Вопрос 228:

От: Leo Novak

Добрый день.
У меня есть необходимость в получении информации о серийных номерах
физических устройств компьютера: матери, процессора , винчестера.
Пока я научился находить только "серийный номер тома жесткого диска", но
эта информация не очень мне подходит, так как пользователь сам может ее
изменить.
Заранее благодарен за ответ(ы). С уважением Леонид


Ответить.

Ответ 1:


Вопрос 229:

От: AxelT

Привет!
В выпуске ?14 в ответ на вопрос 72 был приведён пример работы с модемом
через ShellAPI. Я написал программу которая реагирует на входящие звонки
(спасибо Станиславу)
---
CommPort := 'COM3';
hCommFile := CreateFile(PChar(CommPort), GENERIC_READ, 0, nil,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL, 0);
Mask:=EV_Ring;
if SetCommMask(hCommFile,Mask) <> False then
if WaitCommEvent(hCommFile, Mask, Nil) <> False then
begin
Result:=True;
end;
CloseHandle(hCommFile);
---
Вопрос такой: При вызове WaitCommEvent происходит полная блокировка
работы приложения пока не
придёт входящий звонок. Пробовал сделать этот кусок кода отдельным
потоком - тот-же результат (даже не закрыть по человечески при отладке,
выход из программы только через Ctrl-F2).
Хотелось бы знать, можно ли обойти эту проблему и как.


Ответить.

Ответ 1:


Вопрос 230:

От: SysAdmin_John

Дрямствуй братва.
Есть вопросик, может хто знает где валяется компонент для доступа к DB
без BDE. Очень нужен. Желательно скоростной т.к. в таблицах > 256000
записей :)


Ответить.

Ответ 1:


Вопрос 231:

От: Hitman

Вопрос: Как при старте приложения показывать изображение, не
останавливая при этом загрузку основной формы, как это сделано
при старте Delphi5, The Bat! и прочих программ? При этом заголовок
формы (синяя полоса) не отображается.
С уважением, Олег.


Ответить.

Ответ 1:


Вопрос 232:

От: Ернар Шамбаев

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

Как делать приложения со splash-формой - я знаю (DEMOS\DB\Mastapp).
А как реализовать следующее:
чтобы сначала загрузилась форма, предлагающая
сделать определенный выбор (режим А либо режим Б), затем
после осуществления выбора она бы выгрузилась из памяти и загрузилась бы
та или иная форма (в зависимости от сделанного выбора)?
Подскажите, пожалуйста, элегантное решение задачи.


Ответить.

Ответ 1:


Вопрос 233:

От: CyberZone

Здравствуйте. У меня проблема - я не хочу, чтобы из меню "пуск" в
Windows при нажатии на правую кнопку мыши нельзя было выключить
программу, а также как можно убрать программу при завершении программы
через Ctrl+Alt+Del.
С большой благодарностью Владимир.


Ответить.

Ответ 1:


Вопрос 234:

От: Енин Сергей Иванович

Как вытащить содержимое Stringgrid в QuickRep?
Через QRRichText туфта какая-то получается...
Help me please!!!


Ответить.

Ответ 1:


Вопрос 235:

От: Andrew

При работе с InterBase столкнулся со следующей проблемой:
Создаю индекс create index iNAME on books (NAME)
по объявленному следующим образом полю -
NAME varchar(200) not null collate PXW_CYRL
возникает ошибка:
Statement failed, SQLCODE = -607
unsuccessful metadata update
-key size too big for index INAME

а таким образом: NAME varchar(250) not null нет.
Как с этим бороться?


Ответить.

Ответ 1:


Вопрос 236:

От: Andrew Slobodyanyk

Вопрос: Как обработать событие - выход мыши за пределы формы?
Спасибо.


Ответить.

Ответ 1:


Вопрос 237:

От: Станислав (GhostKeeper)

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

Меня зовут Станислав. Я программирую в Делфи уже 2 года. И я
столкнулся с таким вопросом, как можно сделать в Делфи АОН, то есть,
что бы он мог определять телефон звонящего. Может для этого надо
какой-нибудь компонент??? Или вы знаете адрес, по которому можно его
скачать??? Если можно, то пожалуйста, ответ продублируйте по e-mail'у.


Ответить.

Ответ 1:


Вопрос 238:

От: yuron

Вопрос: что такое Async Pro, где ее взять и как с ней работать?


Ответить.

Ответ 1:


Вопрос 239:

От: bigmama

Подскажи, как вставлять в базу данных *.db картинки.
я создаю поле формата Graphic, копирую картинку в буфер
и вставляю комбинацией Ctrl+V или Shift+Ins, при этом винт
что-то пишет, но при проверке оказывается, что это поле пустое.
Не хотелось бы в приложении делать Load from file.
Еще вопрос: какой хороший редактор *.db - файлов.
если можно кинь ссылку на его дистрибутив.


Ответить.

Ответ 1:


Вопрос 240:

От: Богер Евгений

у меня 2 вопроса.
1) У меня DELPHI 5 я использую следущий код:
function HookProc(Code: integer; WParam: word; LParam: Longint):
Longint; stdcall;
var
begin
if Code >= 0 then
begin
result := 0;
FORM1.Label1.Caption:=char(wparam);
end
else
result := CallNextHookEx(HookHandle, code, WParam, LParam);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
HookHandle := SetWindowsHookEx(WH_keyboard, @HookProc, HInstance, 0);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
if HookHandle <> 0 then
UnhookWindowsHookEx(HookHandle);
end;
При нажатии клавиши в моей программе всё работает нормально, а при
нажатии в другом выскакивает сообщение "Программа выполнила
недопустимую операцию... " и тд. Что делать amp&# 8'-(
2) Где можно скачать компоненты для программирования формы произвольной
формы :)


Ответить.

Ответ 1:


Вопрос 241:

От: Alexandr Sulimov

:Вопрос на тему Формы в ДЛЛ.

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

Теперь достаем бубен.
Пример 1.
1. TMainForm.Button1Click - создали
2. TMainForm.Button2Click - убили (Все ок)
3. TMainForm.Button1Click - создали
4. TMainForm.Button2Click - убили (Все ок)
До бесконечности

Пример 2.
1. TMainForm.Button1Click - создали
2. TForm.btOkClick - на форме в ддл нажимаем Ок сообщение
попало в TMainForm (1 раз)
3. TMainForm.ApplyCloseMessage - убили (Все ок)
4. TMainForm.Button1Click - создали
5. TForm.btOkClick - на форме в ддл нажимаем Ок сообщение
попало в TMainForm (2 раз)
6. Ошибка Abstract Error
И ошибка будет появлятся все время, но если убить через
TMainForm.Button2Click то все пучком.
Если в процедуру FreeForm добавить пункы 1 и 2 тогда ошибка
возникнет на третий раз.

Поможите чем могеете хоть бубном другим!!!!!!!!!!!!!!!!!!Хельп. %)))

Кусок кода:

library xxx;

type Form1 = TTorm .....

var Form1 = Tform1; ....

{Отсылаем сообщение что можно закрывать}
procedure TForm.btOkClick(Sender: TObject);
begin
SendMessage(MainForm, WM_APPLYCLOSEWINDOW,
cntWindow, LongInt(Form1));
Close;
end;

{Содаем показываем форму}
Function ShowForm(AppHandle, MainFormHandle: THandle; thePathes: TUnAppPathes): LongInt; stdcall;
Begin
Pathes:=thePathes;
MainForm:=MainFormHandle;
Application.Handle:=AppHandle;
Form1:=TForm.Create(Application);
Result:=LongInt(Form1);
Form1.Show;
End;

{Убиваем форму}
Procedure FreeForm(aHandle: LongInt); stdcall;
Begin
If aHandle < 0 Then Exit;
{1} TfmSubNews(aHandle).Release;
TfmSubNews(aHandle).Free;
{2} CloseHandle(aHandle);
End;

In Project;

unit MainForm;

type
TMainForm = class(TForm).....
public
{ Public declarations }
procedure ApplyCloseMessage(var T: TMessage); message WM_APPLYCLOSEWINDOW;
end;

var
H: LongInt;

{Созлаем и Показываем Форму из ДЛЛ}
procedure TMainForm.Button1Click(Sender: TObject);
begin
H:=ShowForm(Application.Handle, MainForm.Handle, AppState.cfgPathes);
end;

{Получаем сообщение и закрываем форму}
procedure TMainForm.ApplyCloseMessage(var T: TMessage);
begin
T.Msg:=WM_APPLYCLOSEWINDOW;
FreeForm(LongInt(T.LParam));
end;

{Убиваем форму нажатием на кнопку}
procedure TMainForm.Button2Click(Sender: TObject);
begin
hdr_dlls.FreeFormNNTPSubscribe(StrToInt64(appState.cfgAccountCurItem.SubItems.Strings[4]));
end;




Ответить.

Ответ 1:


Вопрос 242:

От: Аргын Каиржанов

Здравствуйте. Вы отвечали на вопрос:
Как быстро и просто сохранить результат запроса
в DBF файл? Заметил, что при некорректном завершении
программы, в рабочем каталоге остаются файлы вида
XXX_sql.dbf, а как этого добиться программно?
Можно ли подробнее!
Возможно ли, например, результат запроса из informix-а в dbf?





Ответить.

Ответ 1:


Вопрос 243:

От: Аргын Каиржанов

Не создается таблица!
В чем причина?
Ответьте, пожалуйста!

procedure TForm1.Button1Click(Sender: TObject);
var
MyQuery: TQuery;
begin
MyQuery:=TQuery.Create(self);
with MyQuery do begin
DatabaseName:='bigbud';
SQL.Clear;
SQL.Add('SELECT num,name FROM dept');
Open;
// сохранить результат SQL-запроса
DbiMakePermanent(MyQuery.Handle, 'c:\arc\temp.db',true);
end;
end;


Ответить.

Ответ 1:


Вопрос 244:

От: Sergey Butakov

Здравствуйте, уважаемый редактор рассылки Проблемы и решения в Delphi.
Хотелось бы задать в рассылку следующий вопрос:

Может кто-нибудь видел компоненты для Дельфи, позволяющие сделать
нечто подобное редактору принципиальных электрических схем.
Необязательно электрических, но нужно, чтобы можно было размещать
элементы на листе и соединять их в произвольном порядке.

С уважением Сергей. swb@agtu.secna.ru

:




Ответить.

Ответ 1:


Вопрос 245:

От: Ольга

Здравствуйте. У меня при открытии параметрического запроса

'select pole1, pole2, pole3 from'+Name+
'where pole1=:Param1 and pole2=:Param2 order by pole3'

возникает ошибка EDBEngineError:
'Invalid parametr. File or directory does not exist.
File: c:\..\PDOXUSRS.lck
File: c:\..\PARADOX.lck'

(C:\..\- локальный путь, здесь находится таблица, из которой делается запрос)

Причем в 80-ти % случаев запрос выполняется успешно.
Ошибка начала возникать после того, как я стала использовать
файлы Paradox в сети. В чем может быть дело?
С уважением Ольга.




Ответить.

Ответ 1:



Вопрос 246:

От: Евгений



Проблема для меня сложная но, наверное, набившая Вам оскомину.

Мой любимый шеф поставил задачу написать одну программку.
Т.к. программист из меня как из собачьего... я взял учебники по ТП
6.0, 7.0 и погнал (я когдато на нем "писал"). Сначала писал прос-
то. Потом вычитал про объектное программирование. Попробовал -
понравилось. Все это время я потихоньку приближался к заветной
цели. Но т.к. мой шеф так до конца и не понял, что он хотел, то я
предвидел возможные варианты изменения "требований". В результа-
те, я писал по ДОСовский интерфейс (извиняюсь, если ошибаюсь в
терминологии), и программку строил так, что все "расчетные" цацки
делают одни объекты а интерфейсная часть должна была делаться
другими. За это время я сумел "наворотить" почти все необходимые
мне "расчетные" библиотечные модули. Буквально вчера я начал пи-
сать первый метод интерфесного объекта (естественно с использова-
нием модулей Crt и Windows), как мой шеф вспомнил, что писать
програмки под ДОС не "солидно" и ему нужен виндовый интерфейс.
Проблема вот в чем. Я попытался с использованием TP for Win-
dows подключить свои старые модули написанные с использованием
стандартнык досовских модулей Dos.tpu и других. На что мне компи-
лятор сказал, что он не видит моих модулей, но с расширением TPW.
Попытка перекомпилировать все ни к чему не привела т.к. он захо-
тел перекомпелировать все модули в том числе и DOS.PAS но не на-
шел. Простое переименование модулей из tpu в tpw естественно ни к
чему не привело. Вставка ссылки на новый модуль WinDos вместо Dos
привелок тому что масса переменных и функций стали неизвестными а
при попытке редактировать я понял, что поменялись не только имена
процедур и функций, но и параметры передаваемые им.

Исправлять почти 1500 строк кода не хочется. Кроме того воз-
можно, что эти процедуры работают не так как их "прадеды" и полу-
чу весьма неожиданный результат. Плюс ко всему в TP for Windows,
я так понял, нет стандартных наборов объектов как в Delphi.

Вопрос следующий как мне использовать мои откомпилированные
библиотеки *.tpu с процедурами, функциями и объектами в Delphi.

Извиняюсь за сумбурность и длительность изложения.

Если можно, ответ пришлите мне на адрес jeckp@mai.ru или в
рассылке Проблемы и решения в Delphi. Я недавно на нее подписался
(правда пока почти не читал).

С уважением,
Евгений



Ответить.

Ответ 1:

3. Отвеченные вопросы.
----------------------


Вопрос 75:

От: Vlad Vasilevskiy

Hi,
If anyone who doing COM/ DCOM with Delphi can describe the main idea of
it in couple of words? I know that it is not too easy to describe it
shortly, but... I know all particulars, but can't see whole picture.
Delphi has nice part - TypeLibrary, but some Delphi gurus do not advise
to use it. But without TypeLibrary - I am lost in space of units,
Automation objects, forms and etc..
Sorry for English - not Russian, but I do not have Russian keyboard.
Sorry...
Best Regards,
Tatiana V.
Sydney

Ответить.

Ответ 1:
Честно говоря, поддержка TypeLibraries в Дельфи, автогенерация проксей - одна из самых
глюкавых ее частей, сам в этом недавно воочию убедился, поэтому-то и не рекомендуют для
работы с TypeLib использовать Делфи. Насчет COM- не советовал бы начинать его изучение с
Delphi, потому что слишком много рутинных, но фундаментальных COM-вещей в Delphi
реализовано на уровне языка. Это может облегчить жизнь опытному программисту, но не
начинающемую. Для начинающих рекомендую бесподобную книгу "Основы COM" (автора, к
сожалению, не помню) и VisualC++. Если уж очень надо быстро накатать какой-нибудь ActiveX,
то, возможно, лучше использовать VisualBasic...
Ответ 2:
Hi Tatiana from Sydney!

You are quite right, it isn't easy to describe COM technology in couple
words.
Fist of all the COM is the result of modernization the DDE and the OLE
technologies. The COM technology helps to connect different programs. The
C++, VB and over languages programmers can use your COM program.
The main program named by Client. COM application named by COM Server.
COM Server consists of one or more interfaces, COM object and (may be or
not) main program.
The COM object may be the main program, if you wont.

Client -> COM Server
or the same
Client -> Interface -> COM Object -> Main program

The Interface consists of COM Object methods (procedures and functions).
You must work out your interface one time and never change. In this way over
programmes always will know how use your COM server.
For example our company has one big program and many drivers for it. In the
beginning we worked out the interface documentation with five interfaces.
And all our programmes know how Client will work with any driver and then
each write his driver according documentation.

If you wont receive more information about COM technology you may go to the
internet searching server (for example www.rumbler.ru (Russian),
www.Yahoo.com or over) and write COM or COM Server or Automation into edit
window. I believe you receive many useful information about it.
Ответ 3:
Try to read the sest book for this subject: Charlie
Calvert "Delhpi Unleashed". In two words, the main
idea of COM is :

1) Windows has his own Objects (from Microsoft or any
other company/ but these objects must be registered in
the system)

2) Each these object has common interface, which is
standard, and allows any other object/application use
these objects

3) Inside your application you create just interface -
some kind of filter between COM object and your
application for transffer data, which is "emulating"
this object for your application.

4) Unlike the regular objects, you should not destroy
interfaces, because they are not real objects.


Вопрос 76:

От: gvm

Как дополнить стандартные окна Открыть/Сохранить пользовательскими
формами, которые реагировали на события выделения файла.


Ответить.

Ответ 1:
Может стоит попробовать
прописать какую нить процедуру
в evens - при выделении файла,
которая и будет выводить пользовательские формы.
Sam
Ответ 2:
Есть компоненты, Ds-dialog называются - добавляют на стандартную
форму диалога любые компоненты!
Ответ 3:
У TOpenDialog и TSaveDialog есть событие OnSelectionChange

Вопрос 77:

От: Алексей Малиновский

Здраствуйте господа программисты!

Я тут столкнулся с проблемой: начал делать установочную программу с
помощью InstallShield for Delphi 5 и возникла проблема руссификации всех
сообщений выдаваемых готовой уст. программой. Я знаю точно, что как-то
можно руссифицировать готовую уст. программу, но вот как (я где видел
это дело, но вот где)?

Заранее спасибо за помощь...

С уважением, Алексей.


Ответить.

Ответ 1:
http://online.download.ru/Download/[ProgramID=5811]
Ответ 2:
Алексей! В своё время я приобрел книгу "Программирование в Delphi 4"
(авторы П. Дарахвелидзе и Е. Марков). Я не думаю, что
InstallShield for Delphi 5 в смысле русификации отличается от
InstallShield for Delphi 4. Так вот, следующая информация взята из
этой книжки:

"... в облегченной (Express) версии все сообщения выводятся на
английском языке. Конечно, показываемые вами файлы (License Agreement,
readme) будут на русском, но сам текст во всех диалоговых окнах
остается английским... Если англоязычный интерфейс вас не устраивает,
пойдите одним из трех путей:
1. Воспользуйтесь редактором ресурсов (например, Resource Workshop, до
сих пор поставляемым с Borland C++), и самостоятельно переведите на
русский все ресурсы в InstallShield Express
2. Возьмите проыессиональную версию утилиты (InstallShield Pro). В ней
есть возможность переключения между языками
3. Возьмите другую утилиту для создания дистрибутивов. Можно
порекомендовать программу Wise (www.glbs.com), которая позволяет
полностью настраивать текст и язык всех диалогов, вызывать в процессе
установки динамические библиотеки, написанные вами, и вообще
программировать этот процесс на специальном языке"

Что касается меня, то Wise InstallMaster 8.0 - вполне годиться!
Ответ 3:
Все очень просто тебе нужна прога, которая позволяет выдирать ресурсы
из приложений винды, а затем вставлять их обратно (но уже
модифицированными).
Одна из них - Restorator http://www.bome.com/Restorator/.


Вопрос 78:

От: Sir Antony

Проблема в следующем...
Данная процедура должна создавать в PageControl дополнительный TabSheet, а в нём
WebBrowser. Дык вот... TabSheet замечательно создаётся, а WebBrowser - нет.

> procedure TForm1.CreateTabs(SheetName, URL: string);
> begin
> inc(i);
> with PageControl1 do
> with TTabSheet.Create(Self) do
> begin
> PageControl:=PageControl1;
> Name:='TabSheet'+inttostr(i);
> Caption:='';

> with TWebBrowser.Create(Self) do
> begin
> Align:=alClient;
> Navigate(URL);
> end;

> Caption:=SheetName;
> Hint:=URL;
> end;
> end;

Если кто в курсе как это делается, прошу помочь мне. Pls!


Ответить.

Ответ 1:
Привет, Sir Antony.
Судя из листинга, WebBrowser должен создаваться, но...
У каждой компоненты есть свойство Parent ( тобишь родитель) и если его не
присвоить, то оно будет установлено, если я не ошибаюсь, на форму.
Попробуй дописать строку c Parent.

var TabSheet: TTabSheet;

TabSheet := TTabSheet.Create(Self);

with TWebBrowser.Create(Self) do
begin
Parent := TabSheet;
Align:=alClient;
Navigate(URL);
end;
Ответ 2:
Довольно типичная ошибка - для всех визуальных
компонентов надо указывать родителя - т.е. форму или
панель на которой этот компонент будет лежать:


W:=TWebBrowser.create(nil);

w.parent:=Form1;
{или Form1.insertcomponent(w)}

далее можно использовать компонент


Вопрос 79:

От: Мелитопольская РГА

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


Ответить.

Ответ 1:
Вот процедурка с комментариями.

procedure CreateAlias();
const
DlPs = 5;
var
wrstr,wrstr1 :string;
AParams: TStringList;
Psevdonm: array[1..DlPs] of string;
i : integer;

begin
//Заполним массив
Psevdonm[1] := 'TERMNNSI,NSI'; // имя,каталог
Psevdonm[2] := 'TERMNBASE,BASE';
Psevdonm[3] := 'TERMNTNL,BASE\TNL';
Psevdonm[4] := 'TERMNARH,ARH';
Psevdonm[5] := 'TERMNTELE,TELE';
// if not DirectoryExists(datapath) then begin
// createdir(datapath) ;
// end;
for i := 1 to DlPs do
begin
// Для начала проверим каталоги
wrstr1 := Copy(Psevdonm[i],Pos(',',Psevdonm[i])+1,Length(Psevdonm[i])-Pos(',',Psevdonm[i])+1);
if not DirectoryExists(wrstr1) then
begin
CreateDirectory(PChar(CurrntDir+'\'+wrstr1),nil);
end;

// Если нет псевдонима, то создадим или подправим
wrstr := Copy(Psevdonm[i],1,Pos(',',Psevdonm[i])-1);
if not Session.IsAlias(wrstr) then
begin
try
Session.AddStandardAlias(wrstr,wrstr1,'PARADOX');
Session.SaveConfigFile;
except
SaveTekJrn('ERR:Ошибка создания алиаса - '+wrstr);
Exit;
end;
end;
//Настроим алиас
AParams := TStringList.Create;
AParams.Add('PATH=' + CurrntDir+'\'+wrstr1);
Session.ModifyAlias(wrstr,AParams);
Session.SaveConfigFile;
// Освобождение списка
AParams.Free;
end;
end;
Ответ 2:
Необходимо использовать компонент TDataBase

Вопрос 80:

От: evil


Привет, это Evil!

Я вот подписан на сабж не долго :(. И не знаю как с файломи в сети через
сабж работать. Есть это где, или ты писал уже. ХЕЛП.

Досвидания.
С уважением, Evil!

-=[PS]=-
mailto:evil@orel.ru <mailto:evil@orel.ru> мыль мне!!!
:))
http://www.xakep.ru <http://www.xakep.ru> читай нужное!!!
http://evilsoft.topcities.com <http://evilsoft.topcities.com> <<=
зайди сюда


Ответить.

Ответ 1:



4. Ищу подельника.
------------------
Sam Savinov:
Ищу желающих принять участие в создании новой версии
криптографического пакета FET. С последней версией которого
можно ознакомиться по адресу: www.myportal.ru/ss
SAM / sam@myportal.ru

Astanin Dmitry:
Ищу желающих помочь мне в создании программы, обеспечивающей
одновременный доступ нескольких пользователей с
разных компьютеров в лок. сети (в этом я вообще чайник) и аудит
событий с сохранением результатов в защищенном
файле .. Дима kinch-ch@mail.ru

Лобастов Николай:
Здравстуйте, господа программисты.

У меня в голове куча идей, только не знаю куда с ними сунуться.
Два дня назад пришел к одному выводу и хочу с вами
поделиться. Может кто уже так делает. Может кто дельный совет даст.

Я работаю в банке в отделе разработки и столкнулся с тем, что мы часто
повторяемся в написании каких-то вещей.

Что такое хоз. деятельность любой организации? Это производство мат.
ценностей или услуг и ведение учета и отчетности. К чему сводится
отчетность? К документообороту. Что такое документ? Это объект с набором
свойств и методов. Никому не приходилось создавать компоненты TDocument,
TPlategka, TPKO, TRKO? Можно описать такие свойства как база данных, таблица,
номер, дата, название, методы такие как создать документ, провести документ,
распечатать документ и все это разместить на палитре компонент. И при
разработке чего-то еще нового в организации или в какой-то
фирме для организации просто кидаешь их на форму или в датамодуль
и описываешь реакцию на события.

Такая библиотека сильно облегчит автоматизацию предприятия, а разработчикам
поможет заработать кучу денег. Ведь это же златая кладезь.

Жду ответов и предложений. - Lobastov@kedr.kts.ru

Сильно похоже на рекламу, но ладно:
ProgramminG:
Проекту ProgramminG (http://programming.dax.ru) требуются люди для
совместного создания и администрирования сайта. От вас требуется
знание языка программирования delphi или любого другого.
Совместная работа заключается в ведении уроков, общении, решение проблем.
Ждем отзывов, предложений по адресу programming@dax.ru.




Если Вы хотите как можно скорее получить ответ на свой вопрос, то
укажите в теме письма - delphiV,иначе письмо будет прочитано значительно
позже, если же у вас есть предложения то в теме письма укажите delphiP.

Для интересующихся - немного о себе. Работаю на
железнодорожном транспорте ведущим программистом.
Основные мои разработки это сбор и доставка клиентам
информации о вагонах и поездах: где находится(по России),
куда едет. В связи с этим программировал для e-mail,Socket,БД,ISAPI.

За сим прощаюсь - скорых Вам и качественных программ.

Автор рассылки - Дмитрий.
ICQ - 89533941.

ВСЕ ВОПРОСЫ СПРОСИТЬ ПРЕДЛОЖИТЬ АРХИВЫ СКОЛЬКО НАС



http://subscribe.ru/
E-mail: ask@subscribe.ru

В избранное