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

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


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

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

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

Выпуск № 328
от 18.12.2005, 19:00

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


Вопрос № 31360: Нужна вша помощь. Может кто сталкивался с кодеком lame(lame_enc.dll) может подскажете как пользоваться этой DLL, а именно как с помощью неё перекодировать из mp3 в wav. Пасиб за предыдущие ответы ..
Вопрос № 31380: Здравствуйте.Я использую Delphi 5 и загружаю данные из Excel. В uses прописываю Excel97.Когда пытаюсь загрузить данные из Excel 2003 выдаёт ошибку OLE error 800A03EC(скорее всего ругается на Range). Когда прописываю в uses Excel 2003 пишет,что не най...
Вопрос № 31382: Здравствуйте. Проблема при преобразовании строк в переменную DateTime: Я преобразовываю строки функцией encodeDateTime(year, month, day, hour, minute, 0, 0) в переменную типа DateTime. Если моя дата раньше чем 1899 год 30 декабря, то происхо...
Вопрос № 31384: Многоуважаемые эксперты, здравствуйте! А нет ли кого из Вас полного примера с использоваием BLOB полей? Если можно с объснениями....
Вопрос № 31392: Большая просьба подскажите какую нибудь бесплатную книгу по созданию классов в Delphi, желательно с примерами и не с одним, а также возможно с исходниками. Где и как ее можно скачать? Ответ шлите на ser_i@mail.ru...
Вопрос № 31396: Уважаемые эксперты! Может кто-нибудь знает как можно поселить программу в трее (иконка, выпадающее меню при правом клике и д.р.) и заставить её производеть какие либо действия через N секунд?...
Вопрос № 31404: Я хочу спросить я ввожу В Edit1.text,Edit2.text,Edit3.text,Edit4.text,Edit5.text.... значения после того как ввел все нажимаю кнопку сохранить, затем закрываю полностью форму, потом открываю ее заново и те значения которые я ...

Вопрос № 31.360
Нужна вша помощь.
Может кто сталкивался с кодеком lame(lame_enc.dll) может подскажете как пользоваться этой DLL, а именно как с помощью неё перекодировать из mp3 в wav. Пасиб за предыдущие ответы
Отправлен: 12.12.2005, 21:25
Вопрос задал: Dimon007 (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, Dimon007!
http://sizov.boom.ru/libdll.htm
Там описано, как получить заголовочный файл с объявлениями функций для C++, а Вы потом свободно конвертнете *.h файл в *.pas с помощью утилитки h2pas.exe.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 13.12.2005, 05:20


Вопрос № 31.380
Здравствуйте.Я использую Delphi 5 и загружаю данные из Excel. В uses прописываю Excel97.Когда пытаюсь загрузить данные из Excel 2003 выдаёт ошибку OLE error 800A03EC(скорее всего ругается на Range). Когда прописываю в uses Excel 2003 пишет,что не найден Excel2003.dcu. Можно ли это исправить,чтобы можно было работать и с Excel2003?
Спасибо.

Приложение:

Отправлен: 13.12.2005, 10:52
Вопрос задал: Сусликов Евгений Павлович (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Архангельский Андрей Германович
Здравствуйте, Сусликов Евгений Павлович!

Проблема использования OLE-компонентов в том, что Билли в каждой версии меняет алгоритм доступа к программам, поэтому при разработке используется только один вариант. Либо можно вручную прописать все варианты, но это геморойно.
Поэтому я в своих разработках отказался от OLE еще в 1998 году.
Я использую компоненты фирмы Axolot (www.axolot.com), которые осуществляют прямой доступ к файлу Excel любой версии. Причем версию можно менять в свойстве во время работы.
Ответ отправил: Архангельский Андрей Германович (статус: Студент)
Отправлен: 13.12.2005, 11:04
Оценка за ответ: 5
Комментарий оценки:
Спасибо.Уже пользуюсь.Удобно,а главное без ошибок ))

Отвечает: sir henry
Здравствуйте, Сусликов Евгений Павлович!
В Excel97 и Excel2003 разное количество параметров у одних и тех же функций, поэтому не используйте стандартные компоненты, а работайте через OleVariant:
Var
MsExcel: OleVariant;
Begin
MsExcel:=CreateObject('Excel.Application');
MsExcel.Documents.Add('Имя_документа.xlc', ...);
MsExcel.Visible:=True;
...
MsExcel.Quit;
End;
Конкретное описание параметров функций надо смотреть в хелпе по VBA.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 13.12.2005, 11:10


Вопрос № 31.382
Здравствуйте.
Проблема при преобразовании строк в переменную DateTime:
Я преобразовываю строки функцией encodeDateTime(year, month, day, hour, minute, 0, 0) в переменную типа DateTime. Если моя дата раньше чем 1899 год 30 декабря, то происходит глюк, дата при преобразовании почему-то увеличивается на один день, и время становится 12 часов 48 минут (какое бы я время не задавал). Если дата, которую я преобразовываю позже вышеуказанной, то все получается верно. Тип year, month, day, hour, minute: word
Делфи 6, 7. Виндоуз ХР
Отправлен: 13.12.2005, 11:25
Вопрос задал: Qwas (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Архангельский Андрей Германович
Здравствуйте, Qwas!

А дела в том, что дата это целая часть числа, у которого значение 0 соответствует 30 декабря 1899г. А время это дробная часть. Такая же проблема в продуктах Microsoft.
Почему то считается что до 1900г никаких событий и данных не было.
В Interbase/Firebird нулем считается 100 год.
Ответ отправил: Архангельский Андрей Германович (статус: Студент)
Отправлен: 13.12.2005, 11:32

Отвечает: sir henry
Здравствуйте, Qwas!
"Проблема при преобразовании строк в переменную DateTime"
Сразу же возникает вопрос - а почему Вы не используете функцию StrToDateTime(), которая как раз и предназначена для этих целей? В ней я глюков не заметил. Или Вы работаете по принципу: "нормальные герои всегда идут в обход"? :)
Ответ отправил: sir henry (статус: Академик)
Отправлен: 13.12.2005, 12:06

Отвечает: Denisss
Здравствуйте, Qwas!
Класс TDateTime ведет отсчет времени от 01 января 1900 года. Потому, если Вы хотите использовать даты до этого срока, то использовать TDateTime не рекомендуется. Потому Вам придется либо хранить дату в строковой переменной, либо создать свой собственный класс и собственные функции для работы с этим классом.
И еще: далее рекомендую использовать функцию StrToDateTime для преобразования строки в TDateTime.
Тип WORD не является строкой - это 2-х байтное число (слово)!!!
Ответ отправил: Denisss (статус: Специалист)
Отправлен: 13.12.2005, 21:11

Отвечает: Ерёмин Андрей
Здравствуйте, Qwas!
Попробуйте воспользоваться функцией StrToDateTime('дата и время в строковом формате'); Хотя, насколько помню из личного опыта, любые функции будут выдавать подобный глюк. Решение - работайте с более поздними датами на определённый сдвиг, например, на 50 лет. Конечно, неудобно, но проблем быть не должно.
---------
В то время как остальные процессоры уже закончили работу, процессоры VIA продолжают работать, работать и работать! :))
Ответ отправил: Ерёмин Андрей (статус: Специалист)
Отправлен: 14.12.2005, 17:08


Вопрос № 31.384
Многоуважаемые эксперты, здравствуйте!
А нет ли кого из Вас полного примера с использоваием BLOB полей?
Если можно с объснениями.
Отправлен: 13.12.2005, 12:06
Вопрос задал: Vbhjndjhtw (статус: 7-ой класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Werewolf
Здравствуйте, Миротворец!
У меня есть. Уточните, какая функциональность BLOB полей должна быть раскрыта, в какой СУБД. Можно по местной почте либо в комментариях. к данному вопросу.
Ответ отправил: Werewolf (статус: Студент)
Отправлен: 13.12.2005, 12:14
Оценка за ответ: 5
Комментарий оценки:
Смотрите в минифоруме, обращение к sir henry.

Отвечает: Архангельский Андрей Германович
Здравствуйте, Vbhjndjhtw!

В приложении работающие функции из реальной программы

Приложение:

Ответ отправил: Архангельский Андрей Германович (статус: Студент)
Отправлен: 13.12.2005, 12:15
Оценка за ответ: 5

Отвечает: sir henry
Здравствуйте, Vbhjndjhtw!
Для начала Вы должны объяснить, что Вы подразумеваете под полным примером. Это ведь тоже самое, что и попросить "полный пример по использованию молотка". Многим экспертам даже в голову не придет использовать молоток так, как например показывают в передаче "Криминальные новости". Надеюсь Вы поняли? :)
Ответ отправил: sir henry (статус: Академик)
Отправлен: 13.12.2005, 12:18
Оценка за ответ: 5
Комментарий оценки:
:-) :-) :-))))))))))))))))))))))))))))))))))))))))))))))))))
1-е Создание, например BDE таблицы (как мне обозначить что это блоб поле).
А остальные вопросы потом по мере появления.
P.S. Вместе с дистрибутивом Дельфи7 поставляется пример извлечения блоб полей.
А мне надо занести туда фото учащихся, а потомвытащить их от туда.
Последнее меня пока мало интересует т.к. я незнаю этого.


Вопрос № 31.392
Большая просьба подскажите какую нибудь бесплатную книгу по созданию классов в Delphi, желательно с примерами и не с одним, а также возможно с исходниками. Где и как ее можно скачать? Ответ шлите на ser_i@mail.ru
Отправлен: 13.12.2005, 14:29
Вопрос задал: Кузнецов С.Н. (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ujin Antikvar
Здравствуйте, Кузнецов С.Н.!

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

Приложение:

---------
"Будущее принадлежит тем, кто верен своей мечте" - Элеонора Рузвельт

Ответ отправил: Ujin Antikvar (статус: 4-ый класс)
Отправлен: 13.12.2005, 16:04
Оценка за ответ: 4
Комментарий оценки:
Хорошие книги спасибо!


Вопрос № 31.396
Уважаемые эксперты!

Может кто-нибудь знает как можно поселить программу в трее (иконка, выпадающее меню при правом клике и д.р.) и заставить её производеть какие либо действия через N секунд?
Отправлен: 13.12.2005, 16:15
Вопрос задал: Golden Spider (статус: 3-ий класс)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Werewolf
Здравствуйте, Golden Spider!
Для помещения иконки в tray можно использовать как компоненты (типа RxTrayIcon, JvTrayIcon, CoolTrayIcon), так и на чистом API. в приложении исходный код одного из таких компонент.
Чтобы произвести действие через n секунд бросьте на форму таймер и установите timer1.Interval=n*1000, timer1.Enabled=false. После запуска программы делаете timer1.enabled=true /*запускаете отсчет времени*/ по истечению этого времени выполняется событие OnTimer, обработчик к которому необходимо написать.
Ответ отправил: Werewolf (статус: Студент)
Отправлен: 13.12.2005, 17:10
Оценка за ответ: 5
Комментарий оценки:
спасибо

Отвечает: Татьяна
Здравствуйте, Golden Spider!
http://erased.info/articles/programming/3343.html
здесь все описано
---------
Нет ничего невозможного!!!
Ответ отправила: Татьяна (статус: 10-ый класс)
Отправлен: 14.12.2005, 16:52
Оценка за ответ: 5
Комментарий оценки:
Пасиба

Отвечает: Ерёмин Андрей
Здравствуйте, Golden Spider!
На torry.net кучи компонентов для помещения иконок в трей. Лично я предпочитаю CoolTrayIcon.
Чтобы программа выполняла какие-либо действия через определённые интервалы времени, нужно использовать таймер (TTimer) со страницы System.
---------
В то время как остальные процессоры уже закончили работу, процессоры VIA продолжают работать, работать и работать! :))
Ответ отправил: Ерёмин Андрей (статус: Специалист)
Отправлен: 14.12.2005, 17:14
Оценка за ответ: 5
Комментарий оценки:
Большое спасибо

Отвечает: Маренич Владимир
Здравствуйте, Golden Spider!
Используйте компоненте TrayIcon из библиотеки RxLib или CoolTrayIcon (см. www.torry.net)
Ответ отправил: Маренич Владимир (статус: 9-ый класс)
Отправлен: 15.12.2005, 15:52
Оценка за ответ: 5
Комментарий оценки:
Good


Вопрос № 31.404
Я хочу спросить я ввожу
В Edit1.text,Edit2.text,Edit3.text,Edit4.text,Edit5.text.... значения
после
того как ввел все нажимаю кнопку сохранить, затем закрываю
полностью форму, потом открываю ее заново и те значения которые я
ввел сохранились и появились вновь.
Как мне это сделать? Нужно записать все значения в Файл?
Отправлен: 13.12.2005, 18:36
Вопрос задал: Иванов Анатолий Петрович (статус: Посетитель)
Всего ответов: 9
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ataman N. N.
Здравствуйте, Иванов Анатолий Петрович!
Вы сами ответили на свой вопрос.
Действительно, все значения нужно сохранять либо в файл, либо в реестр.
Ответ отправил: Ataman N. N. (статус: 4-ый класс)
Отправлен: 13.12.2005, 18:47

Отвечает: Golden Spider
Здравствуйте, Иванов Анатолий Петрович!
Именно так вам нужно записывать значения в файл,
а при активации формы читать их:
procedure TForm1.Button1Click(Sender: TObject);
var f:textfile;
begin
assignfile(f,'data.txt');
rewrite(f);
write(f,edit1.text);
write(f,edit2.text);
...
closefile(f);

end;

procedure TForm1.FormActivate(Sender: TObject);
var f:textfile;
tmp:string;
begin
assignfile(f,'data.txt');
reset(f);
read(f,tmp);
edit1.Text:=tmp;
...
closefile(f);
end;

---------
Семь раз проверь, один раз откомпилируй!
Ответ отправил: Golden Spider (статус: 3-ий класс)
Отправлен: 13.12.2005, 19:21

Отвечает: Denisss
Здравствуйте, Иванов Анатолий Петрович!
Можно:
1) Сохранять в реестр (не рекомендую - зачем его захламлять?!)
2) Сохранять в текстовый файл (см. предыдущие ответы)
3) Сохранять в Ini-файл (см. пример)
и т.д.

Приложение:

Ответ отправил: Denisss (статус: Специалист)
Отправлен: 13.12.2005, 21:04

Отвечает: CJ
Здравствуйте, Иванов Анатолий Петрович!
Да конечно, значения можно сохранять в текстовый файл. Но самым оптимальным я считаю писать их в INI-файл. Очень просто сохранить, и очень просто восстановить. Будут трудности, спрашивайте.
Ответ отправил: CJ (статус: Студент)
Отправлен: 13.12.2005, 23:22

Отвечает: nimoid
Здравствуйте, Иванов Анатолий Петрович!

Почитал тут ответы... кхм... вариантов сохранения/загрузки достаточно много на самом деле....
Выбор нужно делать исходя из поставленной задачи.
Например: если это настройки программы, то лучше сохранять в реестре или ini файле.
---------
Перед тем как задать вопрос, поищи сначала сам ответ. Яндекс в руки и в перед... )
Ответ отправил: nimoid (статус: 5-ый класс)
Отправлен: 13.12.2005, 23:39

Отвечает: sir henry
Здравствуйте, Иванов Анатолий Петрович!
Вы удивительным образом правы. Нужно записать все в файл. Ведь Edit'ы - это всего лишь участок в оперативной памяти, который сохраняется пока работает программа.
Можно записать в реестр. Можно записать в ini-файл.
Однако проще будет записать их в обычный текстовый файл с помощью WriteLn.
Ответ отправил: sir henry (статус: Академик)
Отправлен: 14.12.2005, 05:02

Отвечает: Schmak
Здравствуйте, Иванов Анатолий Петрович!
Действительно для того чтобы значения в полях восстановились при следующем запуске необходимо их сохранить в файл (или реестр). При этом можно использовать как готовые классы Tinifile, Tregistry (уместно использовать если параметров много и они разнотипны), так и использовать стандартные Read/Write
---------
Не всё то Windows, что висит!
Ответ отправил: Schmak (статус: Студент)
Отправлен: 14.12.2005, 14:29

Отвечает: Ерёмин Андрей
Здравствуйте, Иванов Анатолий Петрович!
Естественно. В файл или в реестр. В файлах - удобнее всего в INI - подключаете модуль IniFiles.pas и пошло-поехало... Для работы с реестром - модуль Registry.pas. Примеры работы с ini-файлами и реестром описаны в этой статье:
Примеры работы с INI-файлами и реестром в Delphi.
---------
В то время как остальные процессоры уже закончили работу, процессоры VIA продолжают работать, работать и работать! :))
Ответ отправил: Ерёмин Андрей (статус: Специалист)
Отправлен: 14.12.2005, 17:17

Отвечает: Маренич Владимир
Здравствуйте, Иванов Анатолий Петрович!
Можно записать в INI файл. Потом при открытии формы прочитать из INI файла:

Приложение:

Ответ отправил: Маренич Владимир (статус: 9-ый класс)
Отправлен: 15.12.2005, 15:58


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

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

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

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

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


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


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

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphiplus
Архив рассылки
Отписаться
Вспомнить пароль

В избранное