Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по Delphi (все версии) - часть 4

Автор: Frodo_Torbins
Дата сообщения: 14.01.2009 11:36
Alexslv
Лучше всего был бы обычный текст, ну или rtf, если нужно форматирование. Для работы с обычным текстом в делфи есть тысяча и один способ. Для rtf наверно придется использовать сторонние пакеты, но тоже особых проблем быть не должно.
Автор: MrZeRo
Дата сообщения: 14.01.2009 15:59
Alexslv
Можно попробовать XML, структуру которого спроектировать под требуемые задачи.
Потом можно будет легко менять визуализацию, не касаясь содержимого.
Автор: Alexslv
Дата сообщения: 14.01.2009 20:45
Frodo_Torbins
MrZeRo
Спасибо за советы. Мне тут идею подкинули, реализовать это все через ексель и макросы. Буду пробовать.
Автор: ShIvADeSt
Дата сообщения: 15.01.2009 01:07
Frodo_Torbins

Цитата:
Для rtf наверно придется использовать сторонние пакеты

Для ртф вполне хватает например контрола от RxLib
Автор: Wild User
Дата сообщения: 16.01.2009 17:07
Ребята, никто не заморачивался форматом FLAC, а в частности, как определить у сжатого им файла, величину Compression level, которая использовалась при кодировании?
К примеру, у вавпака или "обезьяны" такое значение можно прочитать, а вот для ФЛАКа... Документацию поковырял, конкретно этот параметр там "вычитать" невозможно - может есть способ как-то косвенно узнать?
Автор: Maks150988
Дата сообщения: 16.01.2009 18:09
Wild User

Может через Bass плагин или Audio Tools Library можно узнать.

Так, кто-нибудь подскажите как нормально отобразить значок, загруженный как 256 цветное изображение. Пробовал уже фоновый цвет заменять, и безполезно.
Реализация таймера, только изображения цифр помещены в ImageList.

http://webdrive.avtograd.ru/Download/Explorer/sources/timer_image_scr.zip

Пришлось цвет пока подогнать под фон значков. Ведь можно же в 32-битных значках с прозрачностью выводить. А в данном слуае как?
P.S. Использовать 32-битный растровый рисунок не предлагать.
Автор: Wild User
Дата сообщения: 16.01.2009 19:22
2 Maks150988
ATL точно этого не умеет, bass.dll поковыряю, но думаю, что тоже врядли...
Автор: Grande
Дата сообщения: 16.01.2009 19:40
Уважаемые Мастера!
Не подскажет ли кто - как реализовать исчезающую панель (боковую, либо верхнюю-нижнюю) с помощью Delphi? Например, наподобие боковой панели в FireFox'e: подводишь курсор к краю экрана - появляется панель
Спасибо.
Автор: Frodo_Torbins
Дата сообщения: 16.01.2009 19:44
Grande
Гдето так: http://delphikingdom.com/asp/viewitem.asp?catalogid=1227
Maks150988
Наверно с маской чтото не то.
Автор: Grande
Дата сообщения: 16.01.2009 19:59
Frodo_Torbins
Спасибо, сейчас поиграюсь с ним

Добавлено:
Вы правы: замечательный компонент
Автор: delover
Дата сообщения: 17.01.2009 19:20
Maks150988
Вопрос на том же месте где и был. Если это АПИ то лучше пользоваться хэндлами от Icon. Если вы не хотите, чтобы только в вашем любимом формате экрана значёк был красивым, а в других разрешениях был карявым... В этом отношении лучшие традиции у программы Микро-Ангело. Однако для систрэя лучше пользовать 20x20 пикселов. Эт только мазоли, а не научно установленный факт. )
Автор: delover
Дата сообщения: 18.01.2009 10:50
j7
Зачем это надо? Купив тюнер типа Pinnacle нужно заплатить всего 5 евро, и у тебя будет h264 цифровые каналы. Для пользователей это перекроет массу запросов. Смысл есть только если услуги Вашего потока будут иметь низкую себестоимость. Вот если бы была возможность TV каналы ловить своей программой используя купленный драйвер h264, вот это было бы весьма интересно.
Автор: Maks150988
Дата сообщения: 18.01.2009 13:06
delover
Ну да, это полный Апи. Грузанул битмап, нарубал значки и все. А дальше извлекаем из списка значок и отображаем.
А для трея вроде стандарт 16х16 иначе система коряво будет подгонять размер так что значок перекосится в цвете.

А как вообще с маской список изображений делается? Сделал так.


Код:
hImLst := ImageList_Create(12, 19, ILC_MASK or ILC_COLOR16, 0, 11);
hImBmp := LoadBitmapW(hinstance, PChar(101));
ImageList_Add(hImLst, hImBmp, RGB(255, 255, 255));
ImageList_SetBkColor(hImLst, RGB(255, 255, 255));
if hImBmp <> 0 then
DeleteObject(hImBmp);
hImBmp := LoadBitmapW(hinstance, PChar(102));
ImageList_AddMasked(hImLst, hImBmp, RGB(255, 255, 255));
if hImBmp <> 0 then
DeleteObject(hImBmp);
Автор: delover
Дата сообщения: 18.01.2009 16:43
Maks150988
Есть старые люди и высокое разрешение. Они плохо читают если не включен крупный шрифт. Я могу уточнить, икона должна быть 16 + ещё обязательно 2X для систрэя. При увеличенном шрифте, твои рисунки будут как работа обезьяны, а не как коммерческое ПО.
Автор: Maks150988
Дата сообщения: 18.01.2009 22:49
Я даже не знаю такого и коммерческого ПО чтобы были такие нестандартные размеры значков. Постоянно попадались 16х16 сколько не смотрел редакторами ресурсов.
А значки то не мои, да и это сама система же картинку растягивает.
Автор: Frodo_Torbins
Дата сообщения: 19.01.2009 09:12
Maks150988
GoogleDesktop например генерит иконку для трея основываясь на настройках системы.
Автор: j7
Дата сообщения: 19.01.2009 23:24
delover
Хотел научиться набор картинок, получаемых online с usb веб камеры, заворачивать в видео поток с кодированием "налету".
Что-то типа http://gmax.gpnet.at/ipcam.html, только в Mpeg4 или h.264.
Автор: delover
Дата сообщения: 20.01.2009 06:05
j7
Во всяком случае это тоже интересно. Я смогу посмотреть ссылку только дома, почему-то не получается зайти на эту ссылку. Незнаете, а какое-либо АПИ для h. 264 есть?
Автор: KurtWagner
Дата сообщения: 20.01.2009 09:47
Дайте плиз исходник не тему... ЗАМЕНА ТЕКСТА
Скажем так у меня в RichEdit1 записанно парам пам пам г. Воронеж а мне надо чтоб там было при нажатии на кнопку Button1 г. Москва ... как это реализовать?

Уже ненадо!!! спасибо...
Автор: Maks150988
Дата сообщения: 20.01.2009 11:03
Блин, прришлось 32-битный битмап использовать. А вообще, как будут отображены значки, скажем в 2000 системе или ранних? С темным цветом по краям или прозрачно? Просто нет возможности проверить. =)

Это и еще есть тупой вопрос. Почему чуть ли не во всех примерах использования функций FindFirst в finally суют Windows.FindClose, а не просто FindClose? Я так понимаю Windows с точкой перед FindClose в данном случае просто тупо обозначение модуля, из которого вытягивается сама функция с ее параметрами. Или это прям так важно Windows.FindClose всегда указывать? =)

И еще непонятно. Например хочется перерисовать контрол, и нужен сабкласс. Можно ли каким-то образом там обработать WM_DRAWITEM, а не WM_PAINT? Что-то не получается. =)
Автор: lerthe61
Дата сообщения: 20.01.2009 11:31
Maks150988

Цитата:
Windows.FindClose

Так обычно поступают, если есть другой модуль в котором также объявлена функция FindClose.


Цитата:
И еще непонятно. Например хочется перерисовать контрол, и нужен сабкласс. Можно ли каким-то образом там обработать WM_DRAWITEM, а не WM_PAINT? Что-то не получается. =)

Можно, см message (directive) в справке. Там очень неплохие примеры
Автор: ShIvADeSt
Дата сообщения: 20.01.2009 11:53
Maks150988

Цитата:
И еще непонятно. Например хочется перерисовать контрол, и нужен сабкласс. Можно ли каким-то образом там обработать WM_DRAWITEM, а не WM_PAINT? Что-то не получается

Потому что по сути контрол это отдельное окно, и если ты его сабклассишь, то он отрисовывается в событии WM_PAINT (WM_DRAWITEM - это событие основного окна о том, что перерисовывается контрол, а не само окно. В случае сабкласса - контрол является основным окном). Это мои догадки, хотя думаю я не далек от истины.

Цитата:
А вообще, как будут отображены значки, скажем в 2000 системе или ранних

А разве 2000 32-битные поддерживает? Просто насколько я помню иконки в ней убого смотрятся, но по крайней мере на тулбаре когда использовал 32 битные иконки темных областей не видел. Более ранние винды ИМХО можно забыть, да и 2к в качестве рабочей станции редкость уже.
Автор: Erazer
Дата сообщения: 20.01.2009 17:12
Подскажите плз, как разрулить проблему :

thePath holds the Windows Temp directory:

~~~~~~~~~~~~~~~~~~~~~~~~~
var
lng: DWORD;
thePath: string;
begin
SetLength(thePath, MAX_PATH) ;
lng := GetTempPath(MAX_PATH, PChar(thePath)) ;
SetLength(thePath, lng) ;
end;

К сожалению в Vista прога запущенная с правами ограниченного пользователя получает от этой функции пустую строку,если же запустить с правами админа, то получаем реальный путь.
Автор: lerthe61
Дата сообщения: 20.01.2009 18:00
Erazer
Возможно трабл в том, что пользователь на столько ограничен, что не имеет доступа к переменным среды.
Попробуйте под пользователем получить значение переменной TEMP
(в консоли набрать set Temp, если не выдаст строку - это оно самое)

Также можно получить ошибку сразу после GetTempPath при помощи GetLastError и FormatMessage (для строкового представления)
Автор: Frodo_Torbins
Дата сообщения: 20.01.2009 18:03
Erazer
Может попробовать через SHGetSpecialFolderPath? Кстати у нее есть интересная приписка:

Цитата:
fCreate
Indicates if the folder should be created if it does not already exist. If this value is nonzero, the folder will be created. If this value is zero, the folder will not be created.

Может просто ваша папка еще не существует? Кстати что вам возвращает ваш код под админом?
Автор: Erazer
Дата сообщения: 20.01.2009 18:24
lerthe61
Обычный пользователь висты с правами админа. Из проводника все проги запускаются с минимальными правами.. В манифесте стоит "asInvocker". Изучите матчасть прежде чем строить такие предположения

Добавлено:
Frodo_Torbins

Цитата:
Может просто ваша папка еще не существует?

Что значит не существует ? Это же не просто тупо папка это виндозная пака временных файлов. И она себе прекрасно существует, если программа запускается с правами администратора (requestedExecutionLevel level="requireAdministrator").

Добавлено:

Цитата:
Может попробовать через SHGetSpecialFolderPath

С удовольствием, подходящую константу не подскажете ? Полный список здесь:Ссылка

Добавлено:
lerthe61
Цитата:
Также можно получить ошибку сразу после GetTempPath при помощи GetLastError и FormatMessage (для строкового представления)
Боюсь что там скажут что нехватает прав, но конечно сегодня гляну как только попаду домой.

Автор: Maks150988
Дата сообщения: 20.01.2009 19:30
lerthe61
Спасибо, теперь понятно. Но что самое интересное, такое очень часто попадается просто в примерах, где других модулей и не используется. Вероятно по привычке не глядя размещают код. =)

Erazer
GetTempPath вроде бы возвращает путь временной директории в директории пользователя, а не в самой директории системы. Вот может действительно в ограниченной учетной записи такой директории просто нет?

P.S. Я как-то не заморачивался без всяких SetLength.

function ExtractTempPathA: AnsiString;
var
lpBuffer : Array [0..MAX_PATH] of AnsiChar;
begin
GetTempPathA(Length(lpBuffer), lpBuffer);
Result := lpBuffer;
end;
Автор: Erazer
Дата сообщения: 20.01.2009 20:36
Maks150988

Цитата:
Вот может действительно в ограниченной учетной записи такой директории просто нет?

Может и так, мне в общем то все равно куда писать, мне просто нужно получить путь к папке для временных файлов. Вопрос в том КАК это сделать, так чтобы работало и в Vista без запуска проги с правами админа.
Автор: delover
Дата сообщения: 20.01.2009 20:46
Erazer
В висте новая фича - не давать узнать какого типа значение в реестре, а тем более сами данные этого значения. Вы можете получить в таком раскладе - либо экзепшен либо отсутствие данных. Моя программа делает вообще замечательный вывод - в висте нет интернет эксплорера. Ну зачем интернет юзерам давать , пусть в нём только админы сидят. Да и каталог темп давно используют только инсталлеры.

lerthe61
Есть ещё такая фунция - GetEnvironmentVariable('TEMP'). Она учитывает возможность того, что в консоли могли переопределить каталог TEMP для конкретного процесса, а не в реестре.
Автор: Erazer
Дата сообщения: 20.01.2009 20:53
delover

Цитата:
Моя программа делает вообще замечательный вывод - в висте нет интернет эксплорера.
мож она не так смотрит ? Прав просто не хватает... Так их наверное получить просто надо, вопрос только в том как ?


Добавлено:
просто даже судя по тому что другие программы из под ограниченного пользователя с привилегиями типа asInvoker прекрасно работают и с реестром и с временными папками,становится ясно что все работает, вот только как?

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Глобальные переменные в разных формах с++ builder 'a.


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.