| 
| 
 | Вопрос # 2 148/ вопрос открыт / | 
 |  Здравствуйте, эксперты!Подскажите как прочесть  имена всех  COM портов и их значения ?
 HKEY_LOCAL_MACHINE
 HARDWARE\DEVICEMAP\SERIALCOMM
 
|  |   Вопрос задал: 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 (статус: Посетитель), 1 декабря 2008, 15:42 [#2]:Напишите примерчик. мне нужно в таком ввиде \Device\Serial0 = COM1
 
 нашел пример как считать значения через функцию GetValueNames. А мне нужы имена (\Device\Serial0)
 |  
|   | 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 (статус: Посетитель), 1 декабря 2008, 16:31 [#4]:Я с начала написал что мне надо, а потом увидел уже ответ. Спасибо . Я дальше разберусь
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |