Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 2 148

/ вопрос открыт /

Здравствуйте, эксперты!
Подскажите как прочесть имена всех COM портов и их значения ?
HKEY_LOCAL_MACHINE
HARDWARE\DEVICEMAP\SERIALCOMM

Zlodey Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Zlodey (статус: Посетитель)
Вопрос отправлен: 1 декабря 2008, 14:37
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: min@y™

Вот примерчик такой:

program p2148;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils, Registry, Classes, Windows;
 
var
  Reg: TRegistry;
  KeyNames: TStringList;
  Index: Integer;
  Value: string;
 
begin
  Reg:= TRegistry.Create();
  KeyNames:= TStringList.Create();
 
  try
    Reg.RootKey:= HKEY_LOCAL_MACHINE;
    if Reg.OpenKeyReadOnly('HARDWARE\DEVICEMAP\SERIALCOMM')
      then begin
             Reg.GetValueNames(KeyNames);
             WriteLn('  Key opened. Values: ', IntToStr(KeyNames.Count));
 
             for Index:= 0 to KeyNames.Count - 1 do
               begin
                 Value:= Reg.ReadString(KeyNames[Index]);
                 WriteLn(' Key --> ', KeyNames[Index], ', '#9'value --> ', Value);
               end;
 
             Reg.CloseKey();
           end
      else WriteLn(' Error!');
  finally
    Reg.Free();
    KeyNames.Free();
  end;
 
  Write(' Press "Enter" for exit...');
  ReadLn;
end.

Вот результат, скопированный из консоли:

Key opened. Values: 12
Key --> \Device\Serial2, value --> COM3
Key --> \Device\Serial3, value --> COM4
Key --> \Device\Serial4, value --> COM5
Key --> \Device\Serial5, value --> COM6
Key --> \Device\Serial6, value --> COM7
Key --> \Device\Serial7, value --> COM8
Key --> \Device\Serial8, value --> COM9
Key --> \Device\Serial9, value --> COM10
Key --> \Device\Serial10, value --> COM11
Key --> \Device\Serial11, value --> COM12
Key --> \Device\Serial12, value --> COM13
Key --> \Device\Serial0, value --> COM1
Press "Enter" for exit...

Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 1 декабря 2008, 15:38


Мини-форум вопроса

Всего сообщений: 4; последнее сообщение — 1 декабря 2008, 16:31; участников в обсуждении: 3.
Вадим К

Вадим К (статус: Академик), 1 декабря 2008, 14:54 [#1]:

Мне показалось, что Вы сами ответили на свой вопрос. или рассказать, как читать с реестра?
Галочка "подтверждения прочтения" - вселенское зло.
Zlodey

Zlodey (статус: Посетитель), 1 декабря 2008, 15:42 [#2]:

Напишите примерчик. мне нужно в таком ввиде
\Device\Serial0 = COM1

нашел пример как считать значения через функцию GetValueNames. А мне нужы имена (\Device\Serial0)
min@y™

min@y™ (статус: Доктор наук), 1 декабря 2008, 15:56 [#3]:

Цитата:


Напишите примерчик. мне нужно в таком ввиде
\Device\Serial0 = COM1

Да ЁПРСТ!
Вместо
WriteLn(' Key --> ', KeyNames[Index], ', '#9'value --> ', Value);
напиши
WriteLn(KeyNames[Index], ' = ', Value);
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Zlodey

Zlodey (статус: Посетитель), 1 декабря 2008, 16:31 [#4]:

Я с начала написал что мне надо, а потом увидел уже ответ.
Спасибо . Я дальше разберусь

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:46
Выполнено за 0.03 сек.