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

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


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 548
от 31.07.2006, 16:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 360, Экспертов: 51
В номере:Вопросов: 3, Ответов: 5


Вопрос № 50218: Здравствуйте уважаемые эксперты! Delphi 7. Есть такой код: program Project2; {$APPTYPE CONSOLE} uses Windows, Messages, SysUtils, Variants, Classes, OleCtrls,ComObj,ActiveX, StdCtrls, SHDocVw ; var wb: TWebBrow...
Вопрос № 50231: Здравствуйте! 1)Возможно ли на Дельфи програмировать ПЗУ, микроконтроллеры? 2)Если возможно програмировать на Дельфи ПЗУ, микроконтроллеры где взять документацию по этому направлению? 3)Есть ли компоненты для програмирования ПЗУ и микроко...
Вопрос № 50239: Здравствуйте Уважаемые Эксперты! У меня к вам несколько вопросов. 1) Почему при компиляции проекта, пустой формы, Delphi .Net, получается такой большой (1,26 МБ) размер исполняемого файла? 2) Как, неиспользуя ActiveX, открыть файлы pdf, например в Ri...

Вопрос № 50.218
Здравствуйте уважаемые эксперты!

Delphi 7. Есть такой код:
program Project2;
{$APPTYPE CONSOLE}
uses
Windows, Messages, SysUtils, Variants, Classes,
OleCtrls,ComObj,ActiveX, StdCtrls, SHDocVw ;
var
wb: TWebBrowser;
begin
wb := TWebBrowser.Create(nil);
wb.Navigate('http://site.ru/');
end.
После запуска (из под Delphi) вылетает такая ошибка: "Project Project2.exe raised exeption class EOleSysError with message 'Не был произведен вызов CoInitialize'. ...", если запускать из под винды, то просто "программа выполнила недопустимую ...". Писал еще такой код (см прил), но эффект тот же. Если писать данный код в обычно приложении (с "формой"), то все работает. Подскажите, как побороть??

Приложение:

Отправлен: 26.07.2006, 08:14
Вопрос задал: Koven (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, Koven!
Ответ у Вас в самом первом сообщении об ошибке лежит. :)
Прежде чем обращаться к любым COM-объектам, Вам нужно инициализировать библиотеку с помощью функции CoInitialize или CoInitializeEx. Если Вы делаете стандартное оконное приложение с VCL, то в какой-то из VCL-ек вызов этой функции происходит автоматически.
При обращении к OLE-объектам необхадимо предварительно вызывать функцию инициализации OLE-библиотеки OleInitialize().
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 26.07.2006, 08:33
Оценка за ответ: 5

Отвечает: Проходящий Мимо
Здравствуйте, Koven!
В дополнение к ответу sir henry добавлю, что функция CoInitialize(nil) вызывается автоматически из метода Application.Initialize(). Так как у Вас консольное приложение, метод Initialize не вызывается. Завершать роботу с библиотекой нужно функцией CoUninitialize(nil), которая в приложении выполняется при завершении работы модуля ComObj.
---------
Carpe diem!
Ответ отправил: Проходящий Мимо (статус: 6-ой класс)
Ответ отправлен: 26.07.2006, 09:10
Оценка за ответ: 5


Вопрос № 50.231
Здравствуйте!
1)Возможно ли на Дельфи програмировать ПЗУ, микроконтроллеры?
2)Если возможно програмировать на Дельфи ПЗУ, микроконтроллеры где взять документацию по этому направлению?
3)Есть ли компоненты для програмирования ПЗУ и микроконтроллеров?
4)Если есть, где их взять?
5)Спасибо, что откликнулись!
Отправлен: 26.07.2006, 12:14
Вопрос задал: KuchumHan (статус: Студент)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Dr.Alex
Здравствуйте, KuchumHan!
Я думаю, что это вряд-ли. Сам много лет занимаюсь программирование микроконтроллеров, но такого не всречал. Ведь для исполнения программы на дельфине нужно, что бы на контроллере стояла винда, или ДОС для консольных приложений.
Ответ отправил: Dr.Alex (статус: 10-ый класс)
Ответ отправлен: 26.07.2006, 12:41


Вопрос № 50.239
Здравствуйте Уважаемые Эксперты! У меня к вам несколько вопросов. 1) Почему при компиляции проекта, пустой формы, Delphi .Net, получается такой большой (1,26 МБ) размер исполняемого файла? 2) Как, неиспользуя ActiveX, открыть файлы pdf, например в RichEdit? 3) Как можно раелизовать режим чтения, как в Office 2003? 4) Не вопрос, а как бы мысли в слух, при компиляции с включёной функцией "Включить пакеты для выполнения" исполняемый файл как в Delphi так и в C++ Builder получается около 20 кб, и вот я думаю, почему бы Borland не создать технологию подобную Net Framevork только для VCL? Тогда программы написанный на Delphi и C++ Builder были бы не несколько мегабайт, а несколько сотен или десятков килобайт. Помоему программисты Borland не хуже программистов Microsoft и такую технологию могли бы рализовать если не для BDS 2006 так для будующих. Как вам такая идея и можно ли её притворить в жизнь? Заранее Спасибо.
Отправлен: 26.07.2006, 12:50
Вопрос задал: Шишкин М.А. (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 11)

Отвечает: sir henry
Здравствуйте, Шишкин М.А.!
1) Этот вопрос обсуждается уже второе десятилетие, поверьте. :) И относится это не только к Delphi .NET, но и ко всем старым версиям Delphi.
Дело в том, что и в приложениях для WinAPI и для .NET, все равно включаются многочисленные функции из VCL, в надежде, что Вы их может быть используете. Такой размер программы дает возможность программисту не писать свой код для обработки тех или иных событий, за Вас это сделали программисты Борланд.
2) Никак. Вы же сами должны понимать, что для парсинга документа pdf нужен соответствующий движок, который в RitchEdit отсутствует, поскольку RicthEdit всего лишь паразитирует на соответствующей библиотеке для разбора rtf.
3) А что Вы имеете в виду?
4) А вот пакеты это и есть как раз Борландовская разработка, аналогичная Net FrameWork, выполняющая теже функции, т.е. пакеты хранят общий для всех приложений код. Аналогичным образом строятся программы на VB, которые в обязательном порядке сопровождаются несколькими библиотеками стандартных функций.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 26.07.2006, 13:20

Отвечает: Проходящий Мимо
Здравствуйте, Шишкин М.А.!
3) Накинул Вам формочку в приложении, на ней лежат Memo1 и Memo2, Button и Panel. Для простоты Memo1 и Memo2 одного размера. Далее, создаем объект TStringList, в него загружаем текстовый файл. Потом построчно перебрасываем текст в Memo1, пересовываемся на колличество строчек в Memo1 и бросаем текст на Memo2. Возможно, эксперты подскажут более оптимальный вариант.

Приложение:

---------
Carpe diem!

Ответ отправил: Проходящий Мимо (статус: 6-ой класс)
Ответ отправлен: 28.07.2006, 10:55
Оценка за ответ: 5
Комментарий оценки:
Спасибо за наводку.


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

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

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

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.35 от 27.07.2006
Яндекс Rambler's Top100

В избранное