Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (версии 2009, 2010 Weaver, 2011 Fulcrum)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111

Открыть новую тему     Написать ответ в эту тему

data man



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обсуждаем новые возможности и баги
Просьба писать только про Delphi 2009 и выше - по остальным версиям есть соответствующая тема.
Вопросы вареза здесь не обсуждаются !!!
См. также:
Известные важные баги Delphi 2010:

Описание________________________________________________ Исправлено Решение/Альтернатива_____________________
  1. Внимание !  Деинсталляция D2010 нарушает работу D2007 и D2009 !  
При деинсталляции удаляются CC3280MT.DLL и CC3290MT.DLL из Windows\System32,   необходимые для работы D2007 и D2009 соответственно.
Сделайте резервные копии
  2. Code Formatter не работает, если не инсталлирован пакет моделирования.   В нем также присутствует множество багов. Используйте с осторожностью.   1.   JEDI CodeFormat 2.44 SVN Snapshot (~750Kb)   Требуются JCL и JVCL  
2.GExperts with Formatter
  3. Не работает F1 в Object Inspector Update 2   IDEFixPack 2.9 от Andreas Hausladen
(dev. snapshots)
  4. Если IDE начинает падать с сообщением "Out of resources", возможно, что поврежден .res файл проекта. Удалить его, запустить IDE, открыть проект - новый .res файл будет создан автоматически.
  5. В редакторе не работает Class Completion, если в декларируемом классе есть поля с шаблонами. Перед декларированием поля добавить public или private и т.д.
  6. TTrayIcon.ShowBalloonHint() не работает на ОС ниже Vista [QC 77561] Update 2 * Установить Update 2   * ИЛИ почитать о причинах и решении проблемы на форуме embarcadero и в QC   * ИЛИ воспользоваться альтернативой, например Cooltray 4.4.0
  ...      


Всего записей: 1696 | Зарегистр. 13-10-2005 | Отправлено: 14:28 26-08-2009 | Исправлено: data man, 18:27 06-08-2010
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ludens
Это в dpr-файле. Или просто Project->View source. Это свойство как раз и реализует трюк с родителями окон о котором говорил 0D0A.

Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 23:30 20-11-2010
Ludens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ух ты, блин, как же я сам не заметил!
0D0A, Frodo_Torbins, спасибо вам, мужики! Закончились мои страдания :)

Всего записей: 1512 | Зарегистр. 16-01-2006 | Отправлено: 12:59 21-11-2010
Aleksoid1978



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MatrixNT

Цитата:
каким образом, и вообще, возможно ли получить список запущенных процессов в 64битной системе?

 
Чтобы получить имена х64 процессов - нужно х64 приложении.  
Я так в свое время писал плагин для AtiTrayTool для детекта Crysis x64. Как раз если не удается получить имя модуля для процесса Crysis, значит он х64

----------
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /Patriot 32Gb@3200 /Kingston 500Gb M.2 /RTX 4060 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

Всего записей: 9225 | Зарегистр. 11-05-2006 | Отправлено: 04:17 22-11-2010
Pavel_M2



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MatrixNT
 

Цитата:
 
каким образом, и вообще, возможно ли получить список запущенных процессов в 64битной системе?
 

EnumProcess работает и на х64 винде (и также возвращает ProcessID для х64 процессов в системе, даже если она - EnumProcess, вызвана в х86 приложении).  
 
далее используем новую функцию, появившуюся в WinVista:  QueryFullProcessImageName..можно так:

function GetModuleNameByProcessID(AProcessID: DWORD): string;
const
  AccessRights: array[Boolean] of DWORD = (PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, PROCESS_QUERY_LIMITED_INFORMATION);
var
  HProcess: THandle;
  Buffer: array[0..MAX_PATH - 1] of WideChar;
  BufferSize: Integer;  
begin
  Result := '';
  HProcess := OpenProcess(AccessRights[IsWinVista], False, AProcessID);
  if HProcess <> 0 then
    try
      BufferSize := SizeOf(Buffer);
      if IsWinVista then
      begin
        if QueryFullProcessImageName(HProcess, 0, PChar(@Buffer), @BufferSize) then
          SetString(Result, PChar(@Buffer), BufferSize);
      end
      else
        SetString(Result, PChar(@Buffer), GetModuleFileNameEx(HProcess, 0, PChar(@Buffer), BufferSize));
    finally
      CloseHandle(HProcess);
    end;
end;

 
P.S. Не забудьте сделать динамическую (а НЕ статическую) загрузку QueryFullProcessImageName (GetProcAddress)... и обратить внимание на UNICODE или ANSI версию функции

Всего записей: 12 | Зарегистр. 19-08-2005 | Отправлено: 09:35 22-11-2010
Aleksoid1978



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pavel_M2
 
А если надо не на Висте или 7 ???  
Тогда на помощь приходит - GetProcessImageFileName
 
 
Добавлено:
Если надо - могу предоставить рабочий вариант, с определением пути, разрядности процесса(х64 или х86) а также из под какого юзера запущен процесс.

----------
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /Patriot 32Gb@3200 /Kingston 500Gb M.2 /RTX 4060 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

Всего записей: 9225 | Зарегистр. 11-05-2006 | Отправлено: 09:38 22-11-2010
ZBEP



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как выводить звук с микрофона на колонки в реальном времени?
(желательно средствами bass).
 
п.с.
Тупанул, это можно в самой винде в свойствах микрофона выставить.

Всего записей: 186 | Зарегистр. 09-04-2009 | Отправлено: 11:33 22-11-2010 | Исправлено: ZBEP, 22:29 22-11-2010
Pavel_M2



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
 
Aleksoid1978
 
А если надо не на Висте или 7 ???  
Тогда на помощь приходит - GetProcessImageFileName
 
 
Добавлено:
Если надо - могу предоставить рабочий вариант, с определением пути, разрядности процесса(х64 или х86) а также из под какого юзера запущен процесс.
 

 
в том примере кода, что я послал, уже делается проверка на Vista or prior Vista (в случае НЕ Windows Vista достаточно GetModuleFileNamEx)
Для проверки, является ли процесс x86 или x64, можно использовать IsWow64Process (определенную, начиная с Windows XP SP2.. а раньше и нужно было, т.к. только начиная XP появились x64 OS от MS). Соответственно, при использовании IsWow64Process также надо быть аккуратным: использовать только "в связке" с GetProcAddress.

Всего записей: 12 | Зарегистр. 19-08-2005 | Отправлено: 12:43 22-11-2010
Aleksoid1978



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Pavel_M2
 
В твоем коде GetModuleFileNameEx - а она для х64 процессов не возвращает данные, поэтому надо юзать
GetProcessImageFileName ... но там есть подводные камни, т.к. вернется путь в виде \Device\HarddiskVolume1\Windows\system32\svchost.exe.
 
А еще надо быть аккуратным с IsWow64Process, т.к. - на х64 системах для х64 программ она всегда возвращает False в возвращаемый параметр(т.е. также как и для х86 программ на х86 системе).

----------
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /Patriot 32Gb@3200 /Kingston 500Gb M.2 /RTX 4060 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

Всего записей: 9225 | Зарегистр. 11-05-2006 | Отправлено: 15:22 22-11-2010 | Исправлено: Aleksoid1978, 15:25 22-11-2010
Pavel_M2



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Aleksoid1978

GetModuleFileNameEx - вызывается только для Windows XP и предыдущих.
Ок. Код для редакции Windows XP x64 работать не будет, но для Windows Vista and above будет вызываться QueryFullProcessImageName (вне зависимости от разрядности) и все будет работать тип-топ.
 
что касается IsWow64Process

Цитата:
 
А еще надо быть аккуратным с IsWow64Process, т.к. - на х64 системах для х64 программ она всегда возвращает False в возвращаемый параметр(т.е. также как и для х86 программ на х86 системе).
 

это естественно - ведь x64 процессы это не Wow процессы
 
 

Всего записей: 12 | Зарегистр. 19-08-2005 | Отправлено: 19:16 22-11-2010
Aleksoid1978



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопрос - кто использует ZEOS для доступа к MySQL на D2009 и выше ??? Интересует вопрос работы с UTF8 базами - кто смог побороть ???
 
В неуникодных Delphi все решалось легко - связка Zeos+TNT control + TNT fields.
 
А вот в 2009, 2010 и XE  - не прокатывает.
 
P.S. - Вопрос снимается,  в последних ревизиях все пофиксили ...

----------
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /Patriot 32Gb@3200 /Kingston 500Gb M.2 /RTX 4060 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

Всего записей: 9225 | Зарегистр. 11-05-2006 | Отправлено: 11:06 23-11-2010 | Исправлено: Aleksoid1978, 12:23 23-11-2010
Andryshok



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Можт кто знает
В windows XP и ранее такая фича работает без проблем
 prog := tinifile.Create(ExtractFilePath(Application.ExeName) + 'baseconfig.ini');
а в windows 7 ошибочка выходитт, не подскажет ли кто в чем дело ?

Всего записей: 649 | Зарегистр. 03-06-2009 | Отправлено: 19:40 24-11-2010
V1s1ter



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Andryshok
C обновкой тебя!
У меня работает (Вынь7х32 и Вынь7х64), а что за ошибка?
Вот мой фрагмент

Код:
 
  ProgramPath    := ExtractFilePath(Application.ExeName);
  ProgramName    := ChangeFileExt(ExtractFileName(Application.ExeName), '');
  IniFileName      := ProgramPath+ProgramName+'.ini';
  IniFileNameProp  := ProgramPath+ProgramName+'D.ini';
  IniFileNameValue := ProgramPath+ProgramName+'V.ini';
  IniFileNameColor := ProgramPath+ProgramName+'C.ini';
  IniFile := TIniFile.Create(IniFileName);
  IniFile := TIniFile.Create(IniFileNameProp);
  IniFile := TIniFile.Create(IniFileNameValue);
  IniFile := TIniFile.Create(IniFileNameColor);
 

 
 
Добавлено:
Правда компилятор Delphi2007.

Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 19:56 24-11-2010
marser

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Andryshok
Да и в Delphi 2009 - Delphi XE работает без проблем. А у пользователя права на запись в ExtractFilePath(Application.ExeName) есть?

Всего записей: 398 | Зарегистр. 29-03-2007 | Отправлено: 20:01 24-11-2010
JAPWork

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Andryshok
Повторить не удалось...  У меня Windows7 64 Ultimate.
 
По крайней мере код типа  
 
procedure TfMain.bbGetFileIniClick(Sender: TObject);
var
  F     : TIniFile;
begin
  F := tinifile.Create(ExtractFilePath(Application.ExeName) + 'baseconfig.ini');
  mMain.Lines.Add( F.FileName);
  F.Free;
end;
 
отрабатывает без проблем...
 
 

Всего записей: 470 | Зарегистр. 12-02-2003 | Отправлено: 20:18 24-11-2010
tanaseduard



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Andryshok
 
Тоже все проходит нормально.
Проверьте что у вас отдает ExtractFilePath(Application.ExeName).

Всего записей: 518 | Зарегистр. 21-11-2009 | Отправлено: 21:00 24-11-2010
spasius



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Andryshok
на этой ОС бывают проблемы при работе в каталогах с псевдонимами: аля "Мои Документы" и т.д.

Всего записей: 695 | Зарегистр. 16-03-2009 | Отправлено: 22:27 24-11-2010
Aleksoid1978



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Andryshok
 
Ты бы для начала написал что за ошибка, а то все ринулись проверять ... а может дело в другом, что-то с системой, права доступа и т.д.

----------
AMD Ryzen 5 3600 /GIGABYTE B450 Gaming X /Patriot 32Gb@3200 /Kingston 500Gb M.2 /RTX 4060 /Samsung U28R550UQI /OLED Philips 55OLED707 /Yamaha RX-V471 + NS-555 + NS-C444 + NS-333 + YST-SW215

Всего записей: 9225 | Зарегистр. 11-05-2006 | Отправлено: 02:09 25-11-2010
Andryshok



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да, ошибка все таки с правами доступа.....  
V1s1ter Я не обновлялся, сижу на XP....  это у пользователя у которого прога win 7
 
 

Цитата:
А у пользователя права на запись в ExtractFilePath(Application.ExeName) есть?
 Это в десяточку - точно - он их не имеет, скажу пусть приобретает
 
 

Всего записей: 649 | Зарегистр. 03-06-2009 | Отправлено: 03:07 25-11-2010
0D0A

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Andryshok
При чем тут юзер? Надо просто писать туда, куда говорят гайдлайны (начиная с Вин2000), например в User\AppData, AllUsers\AppData и тд. Если очень уж требуется писать под себя (в Program Files например), то задавать права в приложении (манифест и тд), а не сваливать проблемы на юзера.

Всего записей: 158 | Зарегистр. 21-09-2009 | Отправлено: 04:06 25-11-2010
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Или еще вариант - совсем удалить манифест. Тогда винда подумает, что запускается старый хлам, и включит виртуализацию

Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 11:29 25-11-2010 | Исправлено: Frodo_Torbins, 11:37 25-11-2010
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi (версии 2009, 2010 Weaver, 2011 Fulcrum)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru