Einzelnen Beitrag anzeigen

Benutzerbild von CTV
CTV

Registriert seit: 20. Jan 2004
Ort: Zug CH
83 Beiträge
 
Delphi 7 Professional
 
#4

Re: Bluetooth API (JwaBluetoothAPIs) Problem erhalte immer 0

  Alt 7. Feb 2006, 23:46
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
Wer glaub er ist, hört auf zu werden!
Delphi Rulez!!!
  Mit Zitat antworten Zitat