- Details
 - Written by: Stanko Milosev
 - Category: Lazarus
 - Hits: 5991
 
This is one example of late binding using Lazarus, and example of disabling radio frequency DENSO BHT-200BW-CE devices, API manual you can download from here.
 
...
uses dynlibs;
...
procedure TForm1.Button4Click(Sender: TObject);
type
  TBHT_RF_CloseEx = function(_opt:DWord): DWord; stdcall;
var
  BHT_RF_CloseEx : TBHT_RF_CloseEx;
  FDllHandle: TLibHandle;
  intRes: DWord;
  intError: Integer;
begin
  FDllHandle := LoadLibrary('BHTLib.dll');
  intError := GetLastError;
  if FDLLHandle = NilHandle then begin
   ShowMessage(SysErrorMessage(intError) + ' (Error ' + IntToStr(intError) + ')');
  end else begin
    BHT_RF_CloseEx := TBHT_RF_CloseEx(GetProcedureAddress(FDllHandle, 'BHT_RF_CloseEx'));
    intError := GetLastError;
    if BHT_RF_CloseEx = nil then begin
      ShowMessage(SysErrorMessage(intError) + ' (Error ' + IntToStr(intError) + ')')
    end else begin
      intRes := BHT_RF_CloseEx(1);
    end;
  end;
end;
Another example is:
procedure TForm1.Button4Click(Sender: TObject);
type
  TBHT_RF_CloseEx  = function(_opt:DWord): DWord; stdcall;
var
  BHT_RF_CloseEx : TBHT_RF_CloseEx;
  p: pointer;
  FDllHandle: TLibHandle;
  intRes: DWord;
  intError: Integer;
begin
  FDllHandle := LoadLibrary('BHTLib.dll');
  intError := GetLastError;
  if FDLLHandle = NilHandle then begin
   ShowMessage(SysErrorMessage(intError) + ' (Error ' + IntToStr(intError) + ')');
  end else begin
    p := GetProcAddress(VBHTLibHandle, 'BHT_RF_CloseEx');
    if p <> nil then begin
      Pointer(BHT_RF_CloseEx) := p;
    end;
    intError := GetLastError;
    if BHT_RF_CloseEx = nil then begin
      ShowMessage(SysErrorMessage(intError) + ' (Error ' + IntToStr(intError) + ')')
    end else begin
      intRes := BHT_RF_CloseEx();
    end;
  end;
end;
For opening and closing you can use:
BHT_RF_Open() (*1) 
BHT_RF_Close() (*2) 
BHT_RF_OpenEx(COMM_CONTINUOUS) 
BHT_RF_CloseEx(COMM_CONTINUOUS) 
(*1) Includes BHT_RF_OpenEx(COMM_NORMAL) 
(*2) Includes BHT_RF_CloseEx(COMM_NORMAL) 
Where COMM_CONTINUOUS is 1, and COMM_NORMAL is 0 (I hope)
- Details
 - Written by: Stanko Milosev
 - Category: Lazarus
 - Hits: 6586
 
Code is taken from here, and translated to Lazarus.
Dialing:
uses ras
...
var
  rasDialParam:RASDIALPARAMS;
  pRasConn:HRASCONN;
  dwResult: DWORD;
begin
  pRasConn := null;
  FillChar(rasDialParam, SizeOf(RASDIALPARAMS), 0);
  rasDialParam.dwSize:=SizeOf(RASDIALPARAMS);
  rasDialParam.szCallbackNumber[0]:=#0;
  rasDialParam.szDomain[0]:=#0;
  rasDialParam.szEntryName:='ConnName'; //important, name of the connection which I want to use
  rasDialParam.szPassword:='pass'; //important, if pass or user is wrong, then I will receive error code 619
  rasDialParam.szPhoneNumber[0]:=#0; 
  rasDialParam.szUserName:='user'; //important
  dwResult := RasDial(nil, nil, @rasDialParam, null, nil, @pRasConn);
  if dwResult = ERROR_SUCCESS then
    ShowMesage('It is working')
  else
    ShowMesage('Error: ' + IntToStr(dwResult))
Get connection status:
...
var
  dwResult: DWORD;
  MyRasconnstatus: RASCONNSTATUS;
...
 dwResult := RasGetConnectStatus(VRasConn, @MyRasconnstatus);
 if dwResult = ERROR_SUCCESS then 
 begin
   if MyRasconnstatus.rasconnstate = RASCS_Connected then 
   begin
     ShowMessage('Connected')
   end 
   else 
   begin
     ShowMessage('Not connected')
   end;
 end;
Hang up:
RasHangUp(VRasConn)
- Details
 - Written by: Stanko Milosev
 - Category: Downloads
 - Hits: 722
 
BatchExtractGpsCoordinates.exe folder:C:\ csvFile:test.csv jsonFile:test.json connectionString:"Server=myServer;Database=myDb;User Id=myUser;Password=myPass;TrustServerCertificate=True;" tableName:GpsInfo
- The parameters csvFile, jsonFile, and connectionString are optional, but at least one of them must be provided.
 - If connectionString is set but tableName is not, the default table name GpsInfo will be used.
 - A log file named BatchExtractGpsCoordinates.log will be automatically created in the same folder as BatchExtractGpsCoordinates.exe
 
Download the EXE in ZIP format from here; the source code can be found here.
- Details
 - Written by: Stanko Milosev
 - Category: Downloads
 - Hits: 1332
 
java" -jar "\validator-1.5.0-distribution\validationtool-1.5.0-standalone.jar" -s "\validator-configuration-xrechnung_3.0.2_2024-06-20\scenarios.xml" -r "\validator-configuration-xrechnung_3.0.2_2024-06-20" "eInvoice.xml" -h -o \outputWithout TPL library download exe from here source code from here. If you need XML files good and wrong for tests, download from here. With TPL library download from here , source from here Source you can also find on GitHub