|
Вопрос # 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]:
Я с начала написал что мне надо, а потом увидел уже ответ.
Спасибо . Я дальше разберусь
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|