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

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

Автор: Frodo_Torbins
Дата сообщения: 20.01.2009 21:29
Erazer

Цитата:
Что значит не существует ?

Некоторые из папок, к которым можно получить доступ с помощью SHGetSpecialFolderPath создаются по первому запросу.

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

CSIDL_LOCAL_APPDATA + '\Temp' - но это конечно крайний вариант.
Автор: Erazer
Дата сообщения: 20.01.2009 22:02
Frodo_Torbins

Цитата:
Некоторые из папок, к которым можно получить доступ с помощью SHGetSpecialFolderPath создаются по первому запросу.

Так это ж некоторые а мы говорим о конкретной..

Добавлено:
delover

Цитата:
Есть ещё такая фунция - GetEnvironmentVariable('TEMP')

Спасиб! Расчудесная функция, она как раз вернула мне путь к ПОЛЬЗОВАтельскому каталогу временных файлов, в отличии от всех остальных дававших путь к системному каталогу.
НО, почему то помещенная в OnCreate она тоже возвращает пустую строку,а вот в OnShow прекрасно дает что положено. Кто нибудь может объяснить почему так ? Я вот только что подумал, может и другие функции точно так же возвращают пути, просто я вызывал их всегда в OnCreate и поэтому они давали пустую строку ?
Но проверять сегодня уже просто нет сил.


Добавлено:
Теперь у меня другая проблема, 1 чел наваял сию функцию

function RegGetExpandString(RootKey: HKEY; Name: String; Var Value: String): boolean;
var
Buf: Pointer;
BufSize: Cardinal;
begin
Result := False;
Value := '';
if RegGetValue(RootKey, Name, REG_EXPAND_SZ, Buf, BufSize) then
begin
Dec(BufSize);
SetLength(Value, BufSize);
if BufSize > 0 then
Move(Buf^, Value[1], BufSize);
FreeMem(Buf);
Result := True;
end;
end;

И она чудненько работает под 2007, а в 2009, возвращает что надо,+ кучу мусора
Может у кого из пристутствующих хватит ума и желания подрихтовать ее чтобы она нормально взаимодействовала и с юникодным string, т.к. мне кажется вся проблема в нем... А то сам я не в силах пока - "многабукаф"
Автор: Erazer
Дата сообщения: 21.01.2009 01:10
Кто нить может подсказать как заставить работать

Reg := TRegistry.Create(KEY_READ);
Try
Reg.SaveKey('Software\Microsoft\Windows Mail',TmpFolder + '\WMailReg1.reg');
Finally
Reg.Free;
End;
в Vista без прав админа ?
Автор: ShIvADeSt
Дата сообщения: 21.01.2009 07:22
Erazer
Проблема в этом
Opens the specified key with the security access value KEY_ALL_ACCESS and saves the specified key and all of its subkeys and values to a hive file.

function SaveKey(const Key, FileName: String): Boolean;
то есть при SaveKey автоматом права пытаются взяться с полным доступом, в итоге обломинго.
Автор: Erazer
Дата сообщения: 21.01.2009 11:03
Пасип! придется самамому сохранять все что нужно персонально так сказать.
Автор: delover
Дата сообщения: 22.01.2009 18:14
Maks150988
Вы смотрели sbrlprof? Если четно, то я закрутился. Однако,.. Сейчас пишите ближе к вечеру - inet дома и бывает возможность помочь...
Автор: Maks150988
Дата сообщения: 23.01.2009 09:33
delover
А что такое sbrlprof? Даже гугил не знает... =)
Автор: DmitryKz
Дата сообщения: 23.01.2009 13:32
После переустановки системы нужно заново ставить все библиотеки, но когда их несколько, лень с каждой выполнять одни и те же телодвижения. Скажите, где можно почитать о параметрах командной строки, с которыми можно создать батник и компилять сразу несколько пакетов?
Автор: lerthe61
Дата сообщения: 23.01.2009 13:49
DmitryKz
Может сделать ProjectGroup и BuildAll?
Автор: DmitryKz
Дата сообщения: 23.01.2009 14:00
lerthe61
это может и хорошо, если среда одна, а если нужно на несколько IDE компилить? скажем на Дельфи 7 и Дельфи 2009? Потом, хотелось бы и пути автоматически прописывать.
Автор: Maks150988
Дата сообщения: 23.01.2009 15:43
Ребята, можно ли оптимизировать вот такой код?


Код: procedure DisplayControlGrid(DC: HDC);
var
w: Integer;
h: Integer;
begin
SetPixel(DC, 0, 0, RGB(0, 0, 0));
SetPixel(DC, 1, 0, RGB(0, 0, 0));
SetPixel(DC, 1, 10, RGB(0, 0, 0));
SetPixel(DC, 0, 12, RGB(0, 0, 0));
SetPixel(DC, 1, 12, RGB(0, 0, 0));
SetPixel(DC, 1, 14, RGB(0, 0, 0));
SetPixel(DC, 0, 24, RGB(0, 0, 0));
SetPixel(DC, 1, 24, RGB(0, 0, 0));
for h := 0 to (iSpecHeight - 3) do
if not Odd(h) then
SetPixel(DC, 2, h, RGB(0, 0, 0));
for h := 0 to (iSpecHeight - 3) do
if not Odd(h) then
SetPixel(DC, iSpecWidth - 3, h, RGB(0, 0, 0));
SetPixel(DC, iSpecWidth - 1, 0, RGB(0, 0, 0));
SetPixel(DC, iSpecWidth - 2, 0, RGB(0, 0, 0));
SetPixel(DC, iSpecWidth - 2, 10, RGB(0, 0, 0));
SetPixel(DC, iSpecWidth - 1, 12, RGB(0, 0, 0));
SetPixel(DC, iSpecWidth - 2, 12, RGB(0, 0, 0));
SetPixel(DC, iSpecWidth - 2, 14, RGB(0, 0, 0));
SetPixel(DC, iSpecWidth - 1, 24, RGB(0, 0, 0));
SetPixel(DC, iSpecWidth - 2, 24, RGB(0, 0, 0));
for w := 2 to (iSpecWidth - 3) do
if not Odd(w) then
SetPixel(DC, w, iSpecHeight - 3, RGB(0, 0, 0));
SetPixel(DC, 10, iSpecHeight - 2, RGB(0, 0, 0));
SetPixel(DC, 10, iSpecHeight - 1, RGB(0, 0, 0));
SetPixel(DC, 18, iSpecHeight - 2, RGB(0, 0, 0));
SetPixel(DC, 26, iSpecHeight - 2, RGB(0, 0, 0));
SetPixel(DC, 34, iSpecHeight - 2, RGB(0, 0, 0));
SetPixel(DC, 44, iSpecHeight - 2, RGB(0, 0, 0));
SetPixel(DC, 44, iSpecHeight - 1, RGB(0, 0, 0));
SetPixel(DC, 54, iSpecHeight - 2, RGB(0, 0, 0));
SetPixel(DC, 62, iSpecHeight - 2, RGB(0, 0, 0));
SetPixel(DC, 70, iSpecHeight - 2, RGB(0, 0, 0));
SetPixel(DC, 78, iSpecHeight - 2, RGB(0, 0, 0));
SetPixel(DC, 78, iSpecHeight - 1, RGB(0, 0, 0));
end;
Автор: deks
Дата сообщения: 23.01.2009 16:26
привет всем!

кто может направить в следующей ситуации...

есть прикладная софтина, коннектится к Firebird. При старте традиционно спрашивает user name/password.

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

данная фича опциональна, но прикольно было бы реализовать.

где рыть инфу? что смотреть? может есть компоненты в помосч? как настроить - любые идеи веллкам!
Автор: delover
Дата сообщения: 23.01.2009 16:35
DmitryKz
Для этих дел используется Delphi\bin\make

Добавлено:
Maks150988
Да не надо Вам оптимизировать. Вам вес наращивать нужно. Если файл программы меньше 10 мегабайт, то сразу понятно, что она приносит эстетическое удовольствие программисту и не вызывает никакого удовольствия у юзеров. Добавляйте графику - это у Вас восхитительно получается. sbrlprof.zip я выкладывал то ли на рапидшару или на ифолдер для Вас.
Автор: Maks150988
Дата сообщения: 23.01.2009 17:00

Цитата:
Добавляйте графику - это у Вас восхитительно получается.

То есть? Вы видели мои программы?

Насчет sbrlprof.zip, да, было вроде. Надо поискать на диске. =)

А оптимизация мне действительно нужна. Даже прорисовка в потоке и то не помогает, то ли GDI такой...
Project.rar.html
Кидаете mp3 файл на диалог и любуетесь как рисуются элементы управления. Слишком много ЦП кушает, вот я и хочу оптимизировать. Если нужно - могу исходный код модулей для этих контролов выложить. Буду рад любой помощи. =)
Автор: Frodo_Torbins
Дата сообщения: 23.01.2009 17:03
DmitryKz
Silverpoint MultiInstaller попробуйте.
Автор: delover
Дата сообщения: 23.01.2009 17:37
Maks150988

Цитата:
То есть? Вы видели мои программы?

Я видел то, что Вы действительно понимаете в это вопросе.


Цитата:
А оптимизация мне действительно нужна.

Пишите на C++ там есть макро... Я Ваши программы скачивал и видел. У меня ещё не было времени проверить Ваши идеи, но они мне понравились. Вычихвостить добрую половину сюстем, удовольствие для гурманов.

DmitryKz
Мистер Бин, однако.
Автор: Maks150988
Дата сообщения: 23.01.2009 21:34
Так, у меня такой вопросик. Например требуется сделать автоапдейтер. Опыт в этом есть. Но хочется сделать через динамическую библиотеку. Неясно пока одно, то есть...
Загружу я библиотеку (неважно статически или динамически) и вызову из нее функции. Значит она скачает файл с сервера, позырит циферки в этом файле, вытянет версию обновляемого файла и сравнит, если число меньше - начнет загружать новый файл с сервера. Проблема как потом выполнить подмену скачанного файла. Ведь это ж получается завершение процесса, который грузанул обновлялку в виде библиотеки. А если завершается такой процесс - значит и мой автоапдейтер с ним же завершиться должен, так как по логике если библиотека не используется - она выгружается. Это как нужно в данном случае поступать?
Автор: Tantos
Дата сообщения: 24.01.2009 07:55
Maks150988
Запускать другое приложение, котороое завершит программу, произведет копирование и снова запустит программу.
Автор: BSUacad
Дата сообщения: 24.01.2009 07:58
Можно выгрузить библиотеку из памяти, заменить ее и загрузить снова.
А можно попользовать компонент TmxWebUpdate - http://www.maxcomponents.net/index.php?id=1&page=1
Автор: ShIvADeSt
Дата сообщения: 24.01.2009 11:28
Maks150988

Цитата:
Загружу я библиотеку (неважно статически или динамически) и вызову из нее функции. Значит она скачает файл с сервера, позырит циферки в этом файле, вытянет версию обновляемого файла и сравнит, если число меньше - начнет загружать новый файл с сервера.

Убивал бы за такие автоапдейтеры. Нельзя скачивать программу с сайта полностью. Трафик учитывать надо. Делается след образом, По определенному запросу сайт возврашает строку с версией программы на сайте, а далее апдейтер анализирует, надо ли обновлять. Скачиваем обновление, чтобы его поставить, запускаем отдельный ехешник, который
1. Завершает основную программу (например посылает ей бродкаст QUIT, получив который программа предупреждает пользователя и выходит)
2. Заменяет исполняемый модуль (библиотеки).
3. Завершает свою работу.
Примерно так я вижу работу автоапдейтера.

Цитата:
Кидаете mp3 файл на диалог и любуетесь как рисуются элементы управления. Слишком много ЦП кушает, вот я и хочу оптимизировать. Если нужно - могу исходный код модулей для этих контролов выложить. Буду рад любой помощи. =)

Загруз проца не постоянный, а скачкообразный. Не думаю, что виноваты контролы. Я отключил отрисовку визуализации - один фиг проц переодически до 37% (раз в 15-20 сек) нагружается. Здесь что то не связаное с визуализацией. Вариант - либа басс.длл подгружает процесс, попробуй ее в отдельном приложении подгрузить и воспроизвести мп3. Уверен - будет загруз. Либо попробуй визуализацию погонять без загрузки либы (случайно рисуй че нить). Насчет оптимизации - RGB(0,0,0) замени на константу - лишним не будет.

Добавлено:
Кстати, тут еще немного посмотрел программу, а использование стольких статиков для отрисовки графики не слишком ли? Может все рисовать на контексте окна в WM_PAINT? Надо только разобраться как в нем отрисовывать только необходимые области, чтобы все окно не рисовать. Попробуй в эту сторону копать.
Автор: Frodo_Torbins
Дата сообщения: 24.01.2009 12:11
Maks150988

Цитата:
Проблема как потом выполнить подмену скачанного файла.

Файл еще работающего процесса нельзя удалить, но вполне можно переименовать
Автор: ShIvADeSt
Дата сообщения: 24.01.2009 14:03
Frodo_Torbins

Цитата:
Файл еще работающего процесса нельзя удалить, но вполне можно переименовать

Только на NTFS, на FAT32 такой фокус не пройдет.
Автор: Maks150988
Дата сообщения: 24.01.2009 15:32
Короче вот исходный код всего проекта. Работа продвигается в свободное время. Оптимизирую/делаю код как знаю. =)
http://webdrive.avtograd.ru/Download/Explorer/sources/stream_radio_player_src.zip

Насчет обновления, подумывал пдменять через bat файл. Но это слишком примитивно и тупо и шаловливые руки пользователя захотят как-нибудь исковеркать такой способ.

Еще такая ошибка интерсеная. Бывает запустишь через компиляторный отладчик и нужно будет закрыть программу. И бац она зависает. Стандартно 15 потоков в рабочем состоянии, а тут остаются 8. Вероятно я серьезно напутал код, либо хэндлы пересекаются каким-то образом. Непонятно...

Насчет загрузки. Знакомый тестировал, когда я специально отриосвывал только по одному элементу. Говорит что загрузка чуть ли не нулевая, а когда все элементы вместе - грузит хорошо. Но я не думаю, ведь тут перерисовка то вроде небольшая, с чего бы так нагружать. Просто у меня двухядерный коре 2.53 и все по нулям, разве что показывает 2-3% в редких случаях, да и то сам Винамп больше грузит иногда тоже. Поэтому задумался об оптимизации. И первоначально вообще хотел создать как свой класс нового элемента, но потом как-то просто засабклассил.

Еще хотелось как-то переделать скроллер. Иногда он мелькает. Вроде в потоке проверяю текст из окна и если он меняется - только тогда пересоздаю временный битмап для отрисовки. Хотя может что напутал, но вроде все должно быть верно... =)

ShIvADeSt
Не, я про другое. Скачали например то же ини файл. Прочитали в нем строку и все. А если например вообще сайт на том же народе или обычном хостинге - как тогда надо обновлять?
Автор: ZEQUALITY
Дата сообщения: 24.01.2009 19:03
2 deks

Trusted Authentication, начиная с FB 2.1
http://www.ibase.ru/ibfaq.htm#ta и Release Notes
Автор: shadow user777
Дата сообщения: 24.01.2009 20:15
Да простят меня модеры. Позволю себе продублировать месагу.
Господа, требуется помощь.
Нужны исходники программы для составления подобия Электронного журнала учета заявок и их исполнения.
С возможностью поиска по таблице, вывода на печать, выгрузки таблицы в тхт или xls.
Т.е. небольшая база данных по учету заявок и контролю за их исполнением.
Если у кого-либо есть что-то подобное, поделитесь плиз.
Заранее спасибо за помощь.
Автор: Andrey_Kil
Дата сообщения: 25.01.2009 13:59
Соорудил прогу для подсчета времени нахождения в инете. Она работает (в общем). Теперь поблема: нужно чтобы она автоматически начинала подсчет времени, после подключения (у меня диалап), и заканчивала подсчет после отключеня, и сохраняла время нахождения в инете в файле. Напишите код (если не трудно- весь).
заранее благодарен.
Автор: RSoFT1978
Дата сообщения: 25.01.2009 18:54
Andrey_Kil
Если тебе нужна готовая программа, то скачай себе DialUp Monitor (или аналогичную) и не мучайся. А если тебе нужно написать свою программу, то просьба написать код (весь) выглядит по меньшей мере странно после упоминания, что программа работает.
Автор: Tantos
Дата сообщения: 26.01.2009 02:16
Maks150988
Информация к размышлению: Live Update в X-стиле.
Автор: Andrey_Kil
Дата сообщения: 26.01.2009 09:23
Мне нужна только часть кода -как запустить отсчет. (его не хватает)
Мож знаете где готовый взять (хотя бы похожий). А там я переделаю.
Автор: Maks150988
Дата сообщения: 26.01.2009 18:56
Значит вот есть проблема - вылет программы. Система создает отчет об ошибке.


Код: <?xml version="1.0" encoding="UTF-16"?>
<DATABASE>
<EXE NAME="Project.exe" FILTER="GRABMI_FILTER_PRIVACY">
<MATCHING_FILE NAME="bass.dll" SIZE="98360" CHECKSUM="0x6B3049CA" BIN_FILE_VERSION="2.4.2.3" BIN_PRODUCT_VERSION="2.4.0.0" FILE_DESCRIPTION="BASS" COMPANY_NAME="Un4seen Developments" FILE_VERSION="2.4.2" LEGAL_COPYRIGHT="Copyright © 1999-2008" VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x4" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x20004" UPTO_BIN_FILE_VERSION="2.4.2.3" UPTO_BIN_PRODUCT_VERSION="2.4.0.0" LINK_DATE="10/28/2008 14:00:51" UPTO_LINK_DATE="10/28/2008 14:00:51" VER_LANGUAGE="English (United Kingdom) [0x809]" />
<MATCHING_FILE NAME="basswma.dll" SIZE="15424" CHECKSUM="0x473C43E1" BIN_FILE_VERSION="2.4.1.0" BIN_PRODUCT_VERSION="2.4.0.0" FILE_DESCRIPTION="BASSWMA" COMPANY_NAME="Un4seen Developments" FILE_VERSION="2.4.1" LEGAL_COPYRIGHT="Copyright © 2002-2008" VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x4" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x20004" UPTO_BIN_FILE_VERSION="2.4.1.0" UPTO_BIN_PRODUCT_VERSION="2.4.0.0" LINK_DATE="07/28/2008 10:40:23" UPTO_LINK_DATE="07/28/2008 10:40:23" VER_LANGUAGE="English (United Kingdom) [0x809]" />
<MATCHING_FILE NAME="bass_aac.dll" SIZE="150904" CHECKSUM="0x65682D4F" BIN_FILE_VERSION="2.4.0.1" BIN_PRODUCT_VERSION="2.4.0.0" PRODUCT_VERSION="2, 4, 0, 0" FILE_DESCRIPTION="Advanced Audio Coding and MPEG-4 add-on for the BASS library" COMPANY_NAME="MaresWEB" PRODUCT_NAME="BASS_AAC" FILE_VERSION="2.4.0.1" ORIGINAL_FILENAME="bass_aac.dll" INTERNAL_NAME="BASS_AAC" LEGAL_COPYRIGHT="2003-2006, MaresWEB" VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x40004" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x20004" UPTO_BIN_FILE_VERSION="2.4.0.1" UPTO_BIN_PRODUCT_VERSION="2.4.0.0" LINK_DATE="04/17/2008 11:17:36" UPTO_LINK_DATE="04/17/2008 11:17:36" VER_LANGUAGE="Language Neutral [0x0]" />
<MATCHING_FILE NAME="bass_fx.dll" SIZE="28248" CHECKSUM="0xE9BE502" BIN_FILE_VERSION="2.4.3.1" BIN_PRODUCT_VERSION="2.4.3.1" FILE_DESCRIPTION="BASS_FX" COMPANY_NAME="(: JOBnik! [Arthur Aminov, ISRAEL]" FILE_VERSION="2.4" LEGAL_COPYRIGHT="Copyright © 2002-2009" VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x40004" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="2.4.3.1" UPTO_BIN_PRODUCT_VERSION="2.4.3.1" LINK_DATE="01/07/2009 17:11:05" UPTO_LINK_DATE="01/07/2009 17:11:05" VER_LANGUAGE="Hebrew [0x40d]" />
<MATCHING_FILE NAME="Project.exe" SIZE="118784" CHECKSUM="0x43BE0F1D" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" LINK_DATE="06/19/1992 22:22:17" UPTO_LINK_DATE="06/19/1992 22:22:17" />
</EXE>
<EXE NAME="kernel32.dll" FILTER="GRABMI_FILTER_THISFILEONLY">
<MATCHING_FILE NAME="kernel32.dll" SIZE="1009664" CHECKSUM="0xEEF74274" BIN_FILE_VERSION="5.2.3790.4062" BIN_PRODUCT_VERSION="5.2.3790.4062" PRODUCT_VERSION="5.2.3790.4062" FILE_DESCRIPTION="Windows NT BASE API Client DLL" COMPANY_NAME="Microsoft Corporation" PRODUCT_NAME="Microsoft® Windows® Operating System" FILE_VERSION="5.2.3790.4062 (srv03_sp2_gdr.070417-0203)" ORIGINAL_FILENAME="kernel32" INTERNAL_NAME="kernel32" LEGAL_COPYRIGHT="© Microsoft Corporation. All rights reserved." VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x40004" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0x1002E0" LINKER_VERSION="0x50002" UPTO_BIN_FILE_VERSION="5.2.3790.4062" UPTO_BIN_PRODUCT_VERSION="5.2.3790.4062" LINK_DATE="04/18/2007 16:25:32" UPTO_LINK_DATE="04/18/2007 16:25:32" VER_LANGUAGE="English (United States) [0x409]" />
</EXE>
</DATABASE>

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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