nun bin ich einen Schritt weiter: mein code sieht nun so aus:
Delphi-Quellcode:
procedure TForm1.Button6Click(Sender: TObject);
var hRadio,hDeviceFind:THANDLE;
hfind:HBLUETOOTH_RADIO_FIND;
btfrp:PBlueToothFindRadioParams;
radioInfo:BLUETOOTH_RADIO_INFO;
deviceInfo:BLUETOOTH_DEVICE_INFO;
deviceSearchParams:BLUETOOTH_DEVICE_SEARCH_PARAMS;
begin
btfrp.dwSize:=sizeof(btfrp); //hier Problem
hFind := BluetoothFindFirstRadio( btfrp, hRadio );
showmessage(inttostr(sizeof(btfrp)));
if (hFind > 0) then
begin
repeat
begin
radioInfo.dwSize:= sizeof(radioInfo);
if (ERROR_SUCCESS = BluetoothGetRadioInfo(hRadio, radioInfo)) then
begin
memo1.Lines.Add('Radio: '+ radioInfo.szName)
end
else
begin
showmessage('error');
end;
deviceInfo.dwSize := sizeof(deviceInfo);
// memset(&deviceSearchParams, 0, sizeof(deviceSearchParams));
deviceSearchParams.dwSize := sizeof(deviceSearchParams);
//deviceSearchParams.fReturnAuthenticated = true;
deviceSearchParams.fReturnRemembered := true;
//deviceSearchParams.fReturnUnknown = true;
//deviceSearchParams.fReturnConnected = true;
deviceSearchParams.hRadio := hRadio;
hDeviceFind := BluetoothFindFirstDevice(deviceSearchParams, deviceInfo);
if (hDeviceFind>0) then
begin
while(BluetoothFindNextDevice(hDeviceFind, deviceInfo)) do
begin
showmessage('Device: '+deviceInfo.szName);
//BluetoothDisplayDeviceProperties(0, &deviceInfo);
end;
BluetoothFindDeviceClose(hDeviceFind);
end;
// if BluetoothGetDeviceInfo(hRadio, deviceInfo) then
begin
showmessage('Device: '+deviceInfo.szName);
// BluetoothUpdateDeviceRecord - change name
// BluetoothRemoveDevice
end;
end;
until (BluetoothFindNextRadio( hFind, hRadio ) );
end;
BluetoothFindRadioClose( hFind );
end;
mein Problem ist folgendes und zwar die Zeile:
btfrp.dwSize:=sizeof(btfrp);
verursacht eine Zugriffsverletzung aber ich weiss nicht wieso
in der
API ist folgender code aufgeführt nach welchem ich meinen nachgebaut habe:
[code]
// ************************************************** *************************
//
// Radio Enumeration
//
// Description:
// This group of APIs enumerates the installed Bluetooth radios.
//
// Sample Usage:
//
HANDLE hRadio;
// BLUETOOTH_FIND_RADIO_PARAMS btfrp = { sizeof(btfrp) };
//
// HBLUETOOTH_RADIO_FIND hFind = BluetoothFindFirstRadio( &btfrp, &hRadio );
// if ( NULL != hFind )
// {
// do
// {
// //
// // TODO: Do something with the radio
handle.
// //
//
// CloseHandle( hRadio );
//
// } while( BluetoothFindNextRadio( hFind, &hRadio ) );
//
// BluetoothFindRadioClose( hFind );
// }
//
// ************************************************** *************************
[code]
und dort wird
BLUETOOTH_FIND_RADIO_PARAMS btfrp = { sizeof(btfrp) };
direckt zugewisen was aber in delphi nicht möglich ist wenn ich das hier probiere:
btfrp:=sizeof(btfrp);
dann erhalte ich einen Fehler da die typen Integer und PBlueToothFindRadioParams nicht überein stimmen
ausser ich schreibe die Zahl 0 hin dann gehts. aber sizeof(btfrp) wenn ich mir das anzeigen lasse ist 4 und auch 4 kann ich nicht direckt zuweisen nur über das btfrp.dwsize:=4; ghets jedoch gibts dann zur laufzeit eine zugriffsverletzung.
hat jemand eine idee was das Problem ist?
ich währe sehr dankbar! das muss doch irgendwie gehen
Greetz Cy