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

Интернет для Delphi-программиста


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

Интернет для Delphi программиста.

Выпуск : № 11


Здравствуйте уважаемые подписчики рассылки "Интернет для Delphi программиста". Данная рассылка предназначена для всех кого интересует Delphi, здесь будут выкладываться ссылки на различные ресурсы интернета так или иначе связанные с Delphi: книги, исходники, программы... Изучайте Delphi один из лучших языков программирования!!!


ЗАДАТЬ ВОПРОС :

Правила рассылки: 
1. Не присылайте ответов на вопросы типа "да, нет".  
2. Если отвечаешь на вопрос - то отвечай подробно с примерами (желательно с исходником примера).
Внимание авторам: - Я не указываю ваши адреса из-за спама, но кто хочет, чтобы его email был - пишите, иначе только имя.

Отправить вопрос

Новые вопросы.

1. Вопрос такой, если кто работал из делфей с BTrieve 6.15 поделитесь опытом, и по возможности подробнее, какие компоненты, я пробовал установить Pervasive SQL v8, но там для подключения BTrieve таблиц нужно знать еще и их поля, а если база большая и не моя, не вбивать же тысячи полей руками... как быть подскажите? Ответить.

2. Как программно создать обработчик событий TGauge для левой (ОнКлик) и правой (вызов контекстного меню) кнопок мыши без определения места положения мыши? Ответить.

8. Как определить, что пользователь выделил какой-то объект - текст, картинку и т.д. ? Ответить.

9. Как в cxGrid (Development Express) прочитать таблицу DBF, приветствуются стандартные компоненты Ответить.


Ответы.


3. Как создать mp3 плеер на Delphi похожем на WinAmp? Ответить. 

Отвечает SHKoder: 

используй библиотеки или через MCI устройство можешь проиграть

uses
MMSystem;

// Play

procedure TForm1.Button1Click;
const
FileName = 'C:\YourFile.mp3';
begin
MCISendString(PChar('play ' + FileName), nil, 0, 0);
end;

// Stop

procedure TForm1.Button1Click;
const
FileName = 'C:\YourFile.mp3';
begin
MCISendString(PChar('stop ' + FileName), nil, 0, 0);
end;

Отвечает Андрей Ерёмин: 

Есть небольшой пример mp3-плеера. Правда, основное его назначение - вынимать информацию из id3-тегов, но всё
равно неплохой.


4. Здравствуйте, подскажите плиз, можно ли в компонент RichEdit, как-нибудь загнать текстовый файл, среднего объёма (250 Кб)?. Пытаюсь загнать файл такого размера и програ сразу же ВисиТ. Что делать? Ответить.

Отвечает Burich-Caeser:

Если через VCL, то:

RichEdit11.MaxLength := $7FFFFFF0;

или через API функцию:

SendMessage(RichEdit1.Handle, EM_EXLIMITTEXT, 0, $7FFFFFF0);

Если используешь чистый АПИ,

SendMessage(RE1, EM_EXLIMITTEXT, 0, $7FFFFFF0);

где RE1 - переменная типа hwnd, полученная при создании RichEdit с помощью CreateWindow

Отвечает Андрей Ерёмин:

По умолчанию RichEdit не позволяет загружать такие большие тексты. Если не 
ошибаюсь, ограничение установлено в 32 Кб. Решается так:

SendMessage(RichEdit.Handle, EM_EXLIMITTEXT, 0, NewBigSize); 
Где NewBigSize - размер-ограничение, который нужно ставить побольше.

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


5. Пытаюсь самостоятельно изучить Delphi по книге Архангельского у меня вопрос: допустим на главной форме несколько окошек редактирования, как сделать так, что-бы курсор перескакивал по порядку вперед из окна в окно при нажатии клавиши Enter, а при нажатии Esc - обратно ? Ответить.

Отвечает anfinogenov:

установите свойсто формы KeyPreview в True
в обработчике onKeyDown - пишите
если типа Key=VK_RETURN тот-то
если типа Key=VK_ESCAPE тот-то

Отвечает Burich-Caeser:

Обрабатывай сообщение KeyDown таким образом:

(это пример перехода из 2-го эдита)

procedure TForm1.Edit2KeyDown(Sender: TObject; var Key: Word;Shift: TShiftState);
begin
if key=VK_ESCAPE then
edit1.setfocus;
if key=VK_RETURN then
edit3.setfocus;
end;

Отвечает Андрей Ерёмин:

В пакете JediVCL (http://jvcl.sourceforge.net) есть компонент, предназначенный 
именно для этих целей.

Отвечает Алмаз Рафитович:

Например у тебя два поля label1 и label2 на form1. Делай следующее. 
1. В панели Object Inspector формы form1 ставь keyPreview = true; 
2. Выдели label1, в панели Object Inspector, во вкладке Events делай двойной щелчок на OnKeyDown;
2. Пиши следующее

If key=vk_return then label2.SetFocus;
//так переходят на другую форму
3. Выдели label2, в панели Object Inspector, во вкладке Events делай двойной щелчок на OnKeyDown;
3. Пиши следующее

If key=vk_escape then label1.SetFocus;

Думаю ответил не слишком подробно. 


6. Пробовал написать на Delphi 7 программу по аналогии с другой (уже готовой и имеющейся, но не полностью устраивающей по потребностям). В результате еще не дописанная программа занимала уже в 3-4 раза (!) больше места на диске (*.exe).
В чем может заключаться причина этого? Вроде бы я ничего лишнего в программу не добавляю. Хотя, модули, подключаемые по умолчанию, оставляю все, поскольку не знаю точно, какой чем занимается.
И вообще, не будет ли совета(ов): как программировать так, чтобы программы (на Delphi) занимали как можно меньше места? Ответить.

Отвечает Михаил:

В принципе то, что у Вас получилось - нормальное явление. Пустая форма на Delphi 7 в откомпиленном виде вешает 1 мегабайт, а уж про непустую форму можно скромно промолчать. А для того, чтобы прога занимала меньше места необходимо отказаться от использования VCL и пользоваться либо чистым WinAPI, либо можно писать программу с импользованием библиотек KOL / MSK - это кодоптимизированные библиотеки, программы, написанные на них занимают мало места. Скачать можно с сайта "Мастера Delphi". Адрес я точно не помню, но можно поглядеть в поисковике. А можно не трепыхаться и просто после компиляции программы ужать exe-шник с помощью ASPack или PECompact - очень хорошо помогает, раз в 10 примерно сжимает.
Удачи!

Отвечает SHKoder:

можно на API попробывать, но геморно

используй ASPack, если хочешь я вышлю, или на www.aspack.com

Отвечает Андрей Ерёмин:

Можно сжимать exe-шники специальными утилитами, вроде UPX. Другой вариант - не использовать визуальных элементов (в том числе форм!) в программе, т.е. использовать консольные приложения. Размер таких приложений вряд ли будет более 20-40 Кб.

Отвечает Алмаз Рафитович:

- Пользуйтесь "короткими" переменными: ShortString вместо String, Smallint вместо Integer. Иногда (особенно в консольном приложении) это может уменьшить размер EXE на несколько килобайт.
- Следите за секцией Uses. Там постоянно "оседают" модули, которыми, может, вы уже не пользуетесь. К примеру, если вы осчастливили свою форму компонентом TBitBtn, поставили на него какой-то код, а потом отказались и удалили, то модуль Buttons.pas останется в Uses, засоряя исполняемый файл. Избавляйтесь от модулей вместе с компонентами и не бойтесь удалить что-нибудь нужное: при компиляции Delphi автоматически добавляет в Uses модули присутствующих объектов. Изредка (если вы работаете с нестандартными компонентами) такого рода чистка может дать эффект в сотни(!) килобайт.
- Пользуйтесь компрессорами исполняемых файлов. AsPack, UPX и другие в 3-4 раза уменьшают размер EXE, и запакованное ими приложение нельзя просмотреть шпионом ресурсов.
- Достаньте себе шпион ресурсов. (Как найти софт в Сети - не мне вам рассказывать ;)). Restorator, ResHacker и т.д. позволяют вскрывать и редактировать EXE-файлы, если только они не запакованы (см. выше). Дело в том, что Delphi по собственному почину добавляет к приложению курсоры, рисунки (галочки/палочки/крестики), которые содержатся в BitButton'ах, даже если BitButton'ов в вашем проекте нет. С помощью шпиона ресурсов можно удалить этот мусор. Далее, шпионы почти всегда могут показать форму вашего приложения, как она записана в файле *.DFM (т.е. не в графическом, а в текстовом виде) и строковые ресурсы (различные сообщения, обычно на английском), которые можно (и нужно) редактировать.


7. Нужно вывести текст на французском языке. Что и где поставить? Ответить.

Отвечает SHKoder:

установи в винде поддержку европейских языков, или азиатских для отображения китайского

Отвечает Андрей Ерёмин:

Во-первых, нужно использовать шрифт, который поддерживает французский язык. А затем нужно настроить свойство Font-Charset (у TLabel, например). Конкретно, французского там кажется нет, но можно поэкспериментировать, вдруг что-то получится.


Ссылки, компоненты:

В интернете есть сайт http://delphi.icm.edu.pl/ - здесь очень много различных компонентов :) почти для всех версий Delphi - расположены по темам (интернет, графика...). Но есть и один маленький минус всё это на английском. 

Есть интересные компоненты MMTools для Delphi и С++Builder. Они очень хорошие, можно за пару минут слепить WinAmp.
Ограничениями для этого компонента является то, что ваша прога может запускаться, если только Delphi или С++Builder запущены.
Чтобы избавиться от ограничения нужно или заплатить или скачать файл MMtools_Unlocker - который избавит от ограничений.

Для Delphi 7.0
http://www.alcatech.de/download/mmtools/mmtool7.exe
http://www.swiftsoft.de/files2/mmtool7.exe

Для Delphi 6.0
http://www.alcatech.de/download/mmtools/mmtool6.exe
http://www.swiftsoft.de/files2/mmtool6.exe

MMTools Demo files 
All demo projects for Delphi and C++Builder
http://www.alcatech.de/download/mmtools/mmdemos.exe
http://www.swiftsoft.de/files2/mmdemos.exe

Пример (похож на Winamp)
http://www.swiftsoft.de/files2/mpkit09.exe

Нашёл описание в интернете на русском - статья из журнала "xaker" упаковал в chm формат кому интересно качаем.


Немного юмора:  :))

Туризм - это самая древняя 3D-бродилка с полноценными видео, аудио и сенсорными эффектами.


Вирусы, вирусы... уборщица - вот Сила!
Один удар шваброй по серверу и полконторы без работы уже час.


В сортире лучше быть юзером, чем админом...


- Для регистрации введите имя...
- "имя"
- ...и пароль
- "пароль"
- В системе уже существует пользователь с такими данными!


- Уберите у меня магнитную программу
- Не понял?
- У меня бумага к монитору липнет.
- Ну так статика, экран намагничивается.
- А почему при нажатии ESC она отмагничивается.


Новая игра. Казахский DOOM!
Никаких тебе лабиринтов! Голая степь!


Когда она рядом, меня лихорадит. От одного ее прикосновения я сбиваюсь и путаюсь. Ее "да" и "нет" невпопад поставят в тупик кого угодно. Она сама не знает, чего от меня хочет. Когда она пускает в ход свои длинные накрашенные ногти, я срываюсь на писк.
Кто-нибудь! Уберите же от меня эту юзершу!!!


Есть хорошая рассылка "Программирование на Delphi" подписываемся не пожалеете.

Рассылки Subscribe.Ru
Программирование на Delphi.
Всё о Delphi


Если вы встретили в интернете интересный сайт или статью, да и вообще, что угодно связанное с Delphi, поделитесь ссылкой.
Если можете написать статью связанную с Delphi - присылайте с радостью выложу.
Давайте поможем друг другу!  Архив рассылки.

Предложения, критику и пожелания пишите на e-mail.


http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphiinternet
Отписаться

В избранное