![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
футкция RasEnumDevices. Кто знает, как ей пользоваться? [D5, D6, Win95/98, Win2k]
ych_boriss © (2003-02-13 04:03:00)Если кто знает, скажите пожалуйста, как правильно производить вызов функции RasEnumDevices?
Заранее благодарен
Набережных С. (2003-02-13 20:09:00) [1]
type
ERasError = class(Exception)
private
FErrorCode: Cardinal;
public
property ErrorCode: Cardinal read FErrorCode;
constructor CreateOnCode(Error: Cardinal);
end;
constructor ERasError.CreateOnCode(Error: Cardinal);
var
s: string;
begin
FErrorCode:=Error;
SetLength(s, 1024);
RasGetErrorStringA(Error, @s[1], 1024);
Message:=PChar(s);
end;
procedure EnumRasDevices(const List: TStrings);
type
TDevArr = array[0..0] of TRasDevInfoA;
PDevArr = ^TDevArr;
var
Size, n, Count: integer;
P: PDevArr;
begin
Size:=0; Count:=0;
n:=RasEnumDevicesA(nil, Size, Count);
if
(n <> 0) and
(n <> ERROR_BUFFER_TOO_SMALL)
then
raise ERasError.CreateOnCode(n);
GetMem(P,Size);
try
P[0].dwSize:=SizeOf(TRasDevInfoA);
n:=RasEnumDevicesA(LpRasDevInfoA(P), Size, Count);
if n <> 0 then raise ERasError.CreateOnCode(n);
{$R-}
for n:=0 to Pred(Count) do
List.Add(P[n].szDeviceType + " :"#9 + P[n].szDeviceName);
{$R+}
finally
FreeMem(P);
end;
end;