Sabtu, 28 Juni 2025

Aplikasi Android Mikrotik Hotspot User Manajemen (AnTikMan)

Hallo teman-teman, 

Baru-baru ini saya membuat sebuah projek aplikasi untuk mengisi waktu luang. Idenya adalah membuat Aplikasi Android menggunakan bahasa pemrograman Free Pascal dan Lazarus IDE yang dapat berkomunikasi dengan perangkat Mikrotik (RouterOS) melalui Application Programming Interface (API). Setidaknya aplikasi harus memiliki kemampuan untuk manajemen data user hotspot dari perangkat android meliputi menambah, menampilkan, mengubah, menghapus, generate dan mencetak user hotspot menjadi file PDF dan HTML. 

Dan setelah berhari-hari mengotak-atik Lazarus Android Module Wizard (LAMW), akhirnya aplikasinya selesai dan saya beri nama Android Mikrotik Hotspot User Manajemen alias AnTikMan. Projek ini menggunakan unit Delphi RouterOS API untuk berkomunikasi dengan Mikrotik sehingga berketergantungan (dependent) dengan Synapse. Sedikit informasi terkait tools pendukung yang saya gunakan adalah sebagai berikut:

- Windows 11 64
- Lazarus 3.6 + Free Pascal (FPC) 3.2.2 + Lazarus Android Module Wizard (LAMW) 0.8.6.4 (dipasang menggunakan tools fpcupdeluxe)
- Apache-ant-1.10.14 (optional)
- Gradle 8.5.0
- Java 21 (Zulu), set JAVA_HOME pada saat instalasi
- Android NDK r22b (versi yang lebih tinggi perlu melakukan build toolchains secara mandiri)
- Android SDK (diperoleh melalui android studio/install platform, platform tools dan build tools yang diperlukan setidaknya versi >=33 yang disyaratkan oleh Google Play Service)

Tampilan

Terlepas dari kekurangannya, salah satu hal yang membuat saya suka mengembangkan aplikasi Android menggunakan Lazarus IDE adalah pada saat melakukan layout tampilan. Rasanya cukup mudah karena hanya mengubah Property pada Object Inspector tanpa harus mengutak-atik file XML. Dan untuk tampilan aplikasinya menggunakan Theme AppCompat, jadi tidak ketinggalan zaman. Beberapa gambar di bawah ini adalah contoh tampilannya. 

Aplikasi Android Mikrotik Hotspot User Manajemen (AnTikMan)Aplikasi Android Mikrotik Hotspot User Manajemen (AnTikMan)Aplikasi Android Mikrotik Hotspot User Manajemen (AnTikMan)

Aplikasi Android Mikrotik Hotspot User Manajemen (AnTikMan)Aplikasi Android Mikrotik Hotspot User Manajemen (AnTikMan)Aplikasi Android Mikrotik Hotspot User Manajemen (AnTikMan)

Selengkapnya silahkan cek di github Source Code | Download .apk. Selamat berkreasi :)

Minggu, 22 Juni 2025

Aplikasi Web Service Android Menggunakan PHP dan Database MariaDB

Satu hal yang paling menyenangkan dari Bahasa Pemrograman Pascal Modern (Free Pascal) adalah kemampuannya untuk membuat berbagai macam aplikasi lintas platform. Saat ini, Free Pascal sudah dapat membuat aplikasi Windows, Linux, MacOS bahkan Android dan IOS sehingga tidak perlu repot mempelajari bahasa pemrograman lain untuk kebutuhan pengembangan aplikasi di platform-platform tersebut. Mempelajari Bahasa Pemrograman Baru tentu memerlukan effort yang tidak sederhana terutama dari sisi efisiensi waktu. 

Pada contoh ini saya akan sharing cara pembuatan aplikasi Web Service menggunakan Free Pascal - PHP - MariaDB. Terlebih dahulu silahkan pasang tools yang diperlukan, jika anda baru pertama kali menggunakan Lazarus dan LAMW, saya sangat menyarankan anda memasangnya menggunakan fpcupdeluxe. Pasang versi stable yang disarankan oleh aplikasi tersebut. Prosesnya memang memakan waktu cuku lama, anda hanya perlu menunggu hingga prosesnya selesai. Jika anda ingin mempelajari langkah-langkah instalasi secara mandiri, silahkan baca postingan saya di sini

Pertama-tama, untuk menyamakan persepsi, pada contoh ini saya menggunakan versi alat pendukung (tools) untuk kebutuhan pembuatan aplikasi sebagai berikut:

- Windows 11 64
- Lazarus 3.6 + FPC 3.2.2 + LAMW 0.8.6.4 (seluruh perkakas dipasang menggunakan tools fpcupdeluxe)
- Apache-ant-1.10.14
- Gradle 8.5.0
- XAMPP (PHP 8.2.4 and MariaDB 10.4.28)
- Java 21 (Zulu), set JAVA_HOME pada saat instalasi
- Android NDK r22b (untuk versi yang lebih tinggi perlu melakukan build toolchains secara mandiri)
- Android SDK (diperoleh melalui android studio/install platform, platform tools dan build tools yang diperlukan setidaknya versi >=33 yang disyaratkan oleh Google Play Service)
- Xiaomi Redmi Note 9 / Android 12 (mode USB debug)
- Samsung / Android 15 

Setelah pemasangan selesai, pada Lazarus IDE jangan lupa atur, Tools - [LAMW] Android Module Wizard - Path Settings [Jdk, Sdk, Ndk...]. Sampai pada tahap ini, saya anggap tidak ada permasalahan dalam proses pemasangan alat pendukung. Buktikan dengan ujicoba Build salah satu projek android milik LAMW yang ada di folder Demo (C:\fpcupdeluxe\ccr\lamw\demos). Pada temuan saya, terkadang terjadi error pada proses build aplikasi android karena versi Gradle yang berbeda, silahkan edit file build.gradle yang ada di dalam folder projek kemudian sesuaikan dengan versi gradle yang digunakan classpath 'com.android.tools.build:gradle:8.5.0'

Penting! Pada saat membuat projek baru, pilih File - New - LAMW [GUI] Android App. Perhatikan pada Target API pilih setidaknya >=33 yang didukung oleh Google Play Store. Pilih Architecture ARMv71+VFPv3 (32 Bit) atau Aarch64 (64 Bit). Jika menemukan error pada saat memindahkan komponen "Error moving component jButton1:jButton", anda hanya perlu melakukan build ulang Lazarus IDE dengan cara Tools - Build Lazarus with Profile: Normal IDE atau pada kasus saya, Project - Project Options - [LAMW] Android Project Options - Min SDK version 23 dan Target SDK version 33.  

Setelah semua konfigurasi selesai, berikutnya adalah melakukan proses menulis script yang akan bertugas memproses data baik itu mengambil atau mengirim data ke server PHP kemudian menyimpannya ke Database MariaDB. Seluruh data akan menggunakan format JSON agar lebih mudah diproses oleh Pascal dan PHP. Sekedar informasi, seluruh file Pascal berada di folder jni (java native interface). 

Pada dasarnya, jika anda sudah memahami bagaimana membuat aplikasi web service menggunakan bahasa pemrograman Free Pascal pada versi Desktop (cek postingan saya di sini), maka hal itu dapat diterapkan juga pada aplikasi Android jika anda menggunakan Lazarus Android Module Wizard (LAMW). Hanya perlu melakukan sedikit penyesuaian pada komponen sisi tampilan perangkat yang digunakan. Selebihnya tidak akan jauh berbeda karena unit yang digunakan masih sama seperti fpjson dan jsonparser. Selain itu, component LAMW juga tergolong lengkap banget jadi tinggal pakai aja. 

Secara umum Aplikasi memiliki kemampuan untuk Mengambil data JSON dari PHP dan menampilkannya ke dalam ListView Android, Mengirimkan Data JSON dari Android Menggunakan Free Pascal untuk selanjutnya diproses oleh PHP (Insert, Update dan Delete) ke dalam Database MariaDB. Selain itu, terdapat Fitur Upload dan Download File. Sudah di ujicoba pada smartphone Andorid 12 (Xiaomi) dan Android 15 (Samsung) dan berjalan dengan normal.  

Perlu diperhatikan dari sisi pengaturan dan tata letak komponen agar tampilannya tidak berantakan pada saat dijalankan di Smartphone Android. Sebagai tambahan informasi, silahkan cek dan pahami Properties masing-masing komponen terutama pada Anchor, LayoutParamHeight, LayoutParamWidth, PosRelativeToAnchor dan PosRelativeToParent. Berikut adalah contoh tampilannya. Namun jika anda tertarik untuk mencicipi, source code projek tersedia di github pada link ini | Contoh Demo.apk

Aplikasi Web Service Android Menggunakan PHP dan Database MariaDBAplikasi Web Service Android Menggunakan PHP dan Database MariaDBAplikasi Web Service Android Menggunakan PHP dan Database MariaDB

Note : Nonaktifkan firewall agar koneksi dari Android tidak diblok oleh Windows

Rabu, 18 Juni 2025

Aplikasi Database Client Server dengan Free Pascal dan Lazarus

Hallo guys,

Di era yang semakin canggih ini, kebutuhan untuk menghubungkan aplikasi melalui jaringan komputer semakin tidak dapat dinafikan. Bahkan tidak berlebihan jika dikatakan kemampuan aplikasi untuk dapat terhubung satu-sama lain menjadi sebuah keharusan. Tidak hanya aplikasi komputer, aplikasi berbasis smartphone juga rata-rata sudah dapat terhung dengan server yang umumnya menggunakan antarmuka Application Programming Interface atau yang juga dikenal dengan istilah API. 

Aplikasi Database Client Server dengan Free Pascal dan Lazarus

Pada implementasinya, pendekatan yang banyak digunakan untuk melakukan pertukaran data pada aplikasi database berbasis client server adalah melalui HTTP Request. Para pengembang aplikasi biasanya membuat aplikasi kecil yang sering disebut dengan istilah mikro service atau umumnya disebut API, selanjutnya aplikasi client akan meminta dan mengirimkan informasi (melalukan pertukaran data) melalui service atau API tersebut.

Aplikasi Database Client Server dengan Free Pascal dan Lazarus

Pada postingan ini saya akan share source code aplikasi database client server menggunakan bahasa pemrograman pascal. Aplikasi ini dapat melakukan pertukaran data melalui protokol HTTP, baik proses pengambilan atau pengiriman data. Seluruh data yang dikirim dan diterima dibungkus ke dalam format JSON agar lebih mudah untuk diproses. Berikut sedikit informasi terkait aplikasi ini.

- Menggunakan FPC 3.2.2 + Lazarus 4.0 
- Mengimplementasikan HTTP Request (Multithread)
- Menggunakan SQLite Database
- Server App as a Service (Start, Stop and Logging) , implementasi HTTP Server.
- Client App (Retrieve, Insert, Update, Delete, Upload and Download File), implementasi HTTP Client. 

Aplikasi ini masih sederhana, kemampuan yang dimiliki hanya sebatas Insert, Update, Delete, mengambil data dari server untuk ditampilkan pada komponen String Grid serta proses pengiriman file baik upload dan download dari aplikasi client. Meski demikian, rasanya sudah cukup mewakili untuk memahami konsep pertukaran data melalui HTTP request pada Free Pascal dan Lazarus. Jika anda tertarik mengembangkannya silahkan cek di github pada link ini. Anda dapat mengembangkan dengan menambahkan fitur-fitur lainnya sesuai kebutuhan. Selamat mencoba. 

Selasa, 20 Februari 2024

Scrape Data dari Website KPU dengan Free Pascal dan Lazarus

Hallo guys,

Jadi ceritanya kemarin saya iseng membuat aplikasi web scraping menggunakan Free Pascal dan IDE Lazarus. Karena kebetulan lagi momen Pemilu 2024, Idenya adalah mengambil data dari website Komisi Pemilihan Umum (KPU) di alamat https://pemilu2024.kpu.go.id/ dengan metode grab alias scraping menggunakan teknik browser automation. Adapun hasil akhirnya adalah memperoleh data hasil perhitungan Pilpres dari tingkat Provinsi - Kabupaten/Kota - Kecamatan - Kelurahan/Desa - TPS. Sekalian kita akan mengambil atau mendownload foto/gambar C1 Plano/Hasil yang ada di TPS tersebut.

Pada contoh ini saya akan mengambil data dari Provinsi NUSA TENGGARA BARAT yang mana alamat URL nya adalah https://pemilu2024.kpu.go.id/pilpres/hitung-suara/52. Dari halaman tersebut kita akan mengambil data Kabupaten/Kota (contoh : KOTA MATARAM), yang selanjutnya akan kita gunakan untuk mendapatkan data Kecamatan (contoh : SELAPARANG) , kemudian kita gunakan untuk mendapatkan data Kelurahan/Desa (contoh : REMBIGA) dan terakhir mendapatkan data TPS (contoh : TPS 002).

Oke, Lets Do It!

Pertama-tama siapkan perkakas yang digunakan. Dalam hal ini adalah WebDriver4L dan Google Chrome Driver (sesuaikan dengan versi yang terpasang di komputer anda)

Kedua, Buat projek menggunakan Lazarus IDE. Saya menggunakan Lazarus versi 2.2.2 dan Free Pascal 3.2.2. Letakan semua file yang ada di WebDriver4L ke dalam folder projek. Berikutnya tambahkan Webdriver4L di uses dan deklarasikan variabel global sbb:

  Robot : TWebDriver;
  kabupaten_kota, kecamatan, kelurahan_desa, tps : TWebElements;
  urlkab, urlkec, urldesa, urltps : String;
  i : integer;

  const
    main_url = 'https://pemilu2024.kpu.go.id';  

Selanjutnya tambahakan Google Chrome Driver yang telah didownload sebelumnya ke dalam folder projek kemudian desain formnya seperti gambar di bawah ini

Tauhidslab

Ketiga, mengambil data Kabupaten dan Kota dari URL Provinsi NUSA TENGGARA BARAT menggunakan script di bawah ini, letakan di dalam tombol Ambil Data Kab/Kota. Sekedar informasi, untuk mendapatkan XPath, klik kanan di browser - Inspect - Klik Kanan di Element - Copy - Copy full XPath.

  {$IFDEF WINDOWS}
  Robot := TChromeDriver.Create(nil);
  Robot.StartDriver(ExtractFileDir(Paramstr(0)) + '\chromedriver.exe');
  {$ELSE}
  //Robot := TChromeDriver.Create(nil);
  Robot := TFireFoxDriver.Create(nil);
  //Robot.StartDriver(ExtractFileDir(Paramstr(0)) + '/chromedriver');
  Robot.StartDriver(ExtractFileDir(Paramstr(0)) + '/geckodriver');
  {$ENDIF}
  Robot.NewSession;
  Robot.Implicitly_Wait(1000);
  Robot.Set_Window_Size(640, 640);
  Robot.GetURL(main_url+'/pilpres/hitung-suara/52');
  Sleep(2000);
  kabupaten_kota := Robot.FindElementsByXPath('//*[@id="main"]/div[3]/div[2]/div[2]/div[2]/div/div/table/tbody/tr/td[1]/a');
  Memo1.Clear;
  Memo1.Append('=== Data Kabupaten/Kota ===');
  for i := 0 to kabupaten_kota.Count - 1 do
  begin
       Memo1.Append(kabupaten_kota.Items[i].Text);
       if (kabupaten_kota.Items[i].Text='KOTA MATARAM') then urlkab:=kabupaten_kota.Items[i].AttributeValue('href');
  end;   

Keempat, mengambil data Kecamatan dari KOTA MATARAM menggunakan script di bawah ini, letakan di dalam tombol Ambil Data Kecamatan

  Robot.GetURL(main_url+urlkab);
  Sleep(2000);
  kecamatan := Robot.FindElementsByXPath('//*[@id="main"]/div[3]/div[2]/div[2]/div[2]/div/div/table/tbody/tr/td[1]/a');
  Memo1.Append('=== Data Kecamatan ===');
  for i := 0 to kecamatan.Count - 1 do
  begin
       Memo1.Append(kecamatan.Items[i].Text);
       if (kecamatan.Items[i].Text='SELAPARANG') then urlkec:=kecamatan.Items[i].AttributeValue('href');
  end;  

Kelima, mengambil data Kelurahan dari Kecamatan SELAPARANG menggunakan script di bawah ini, letakan di dalam tombol Ambil Data Kelurahan/Desa

  Robot.GetURL(main_url+urlkec);
  Sleep(2000);
  kelurahan_desa := Robot.FindElementsByXPath('//*[@id="main"]/div[3]/div[2]/div[2]/div[2]/div/div/table/tbody/tr/td[1]/a');
  Memo1.Append('=== Data Kelurahan/Desa ===');
  for i := 0 to kelurahan_desa.Count - 1 do
  begin
       Memo1.Append(kelurahan_desa.Items[i].Text);
       if (kelurahan_desa.Items[i].Text='REMBIGA') then urldesa:=kelurahan_desa.Items[i].AttributeValue('href');
  end;  

Keenam, mengambil data TPS dari Kelurahan REMBIGA menggunakan script di bawah ini, letakan di dalam tombol Ambil Data TPS

  Robot.GetURL(main_url+urldesa);
  Sleep(2000);
  tps := Robot.FindElementsByXPath('//*[@id="main"]/div[3]/div[2]/div[2]/div[2]/div/div/table/tbody/tr/td[1]/a');
  Memo1.Append('=== Data TPS ===');
  for i := 0 to tps.Count - 1 do
  begin
       Memo1.Append(tps.Items[i].Text);
       if (tps.Items[i].Text='TPS 002') then urltps:=tps.Items[i].AttributeValue('href');
  end;   

Ketujuh, mengambil informasi hasil perhitungan dari data TPS 002 menggunakan script di bawah ini, letakan di dalam tombol Ambil Hasil Perhitungan

var
  anies, prabowo, ganjar : TWebElement;
begin
  Robot.GetURL(main_url+urltps);
  Sleep(2000);
  anies := Robot.FindElementByXPath('/html/body/div/div[1]/div/div[3]/div[2]/div[2]/div/div/div[1]/table[2]/tbody/tr[1]/td[3]');
  prabowo := Robot.FindElementByXPath('/html/body/div/div[1]/div/div[3]/div[2]/div[2]/div/div/div[1]/table[2]/tbody/tr[2]/td[3]');
  ganjar := Robot.FindElementByXPath('/html/body/div/div[1]/div/div[3]/div[2]/div[2]/div/div/div[1]/table[2]/tbody/tr[3]/td[3]');
  Memo1.Append('=== Hasil Perhitungan ===');
  Memo1.Append('Anies-Muhaimain : '+anies.Text);
  Memo1.Append('Prabowo-Gibran : '+prabowo.Text);
  Memo1.Append('Ganjar-Mahfud : '+ganjar.Text);
end;

Kedelapan, mendownload Form C1 Hasil alias Plano. Proses download ini dilakukan dengan dua tahap. Pertama melakukan click pada button Lihat Form Pindai C Hasil menggunakan script di bawah ini, letakan di dalam tombol Buka C1 Hasil/Plano

  Robot.ExecuteScript('var xpath = "/html/body/div/div[1]/div/div[3]/div[2]/div[2]/div/div/button";'+
                        'function getElementByXpath(path) {'+
                        'return document.evaluate('+
                        '  path,'+
                        '  document,'+
                        '  null,'+
                        '  XPathResult.FIRST_ORDERED_NODE_TYPE,'+
                        '  null'+
                        ').singleNodeValue;'+
                        '}'+
                        'var element = getElementByXpath(xpath);'+
                        'if (!element) {'+
                        'throw new Error("Error: cannot find an element with XPath(" + xpath + ")");'+
                        '}'+
                        'element.click();');   

Kedua, buat folder di dalam folder projek dengan nama Download_C1 untuk menampung hasil download. Adapun proses dowload menggunakan library tambahan yaitu synapse. Silahkan download kemudian tambahkan ke dalam projek (package - open package file (.lpk) - use - add to project). Selanjutnya, karena dalam proses ini kita akan mendownload file dari situs https, jadi kita memerlukan library openssl untuk windows silahkan download di sini. Ekstrak kemudian masukan semua filenya ke dalam folder projek. Lalu tambahkan unit httpsend dan ssl_openssl di dalam uses projek. Terakhir, untuk proses download saya menggunakan script di bawah ini, letakan di dalam tombol Download C1. Source code lengkap ada di github

var
  c1_hasil : TWebElements;
  httpClient: THTTPSend;
begin
  c1_hasil := Robot.FindElementsByXPath('/html/body/div/div[1]/div/div[3]/div[2]/div[2]/div/div/div[4]/div[2]/div/div/a');
  Memo1.Append('=== Download C1 Hasil ===');
  for i := 0 to c1_hasil.Count - 1 do
  begin
       httpClient:= THTTPSend.Create;
       if httpClient.HTTPMethod('GET', c1_hasil.Items[i].AttributeValue('href')) then
            begin
            httpClient.Document.SaveToFile('Download_C1/c1_'+IntToStr(i)+'_xx.jpg');
            Memo1.Append('C1 Hasil Berhasil didownload...');
            end;
       httpClient.Free;
  end;
end;  

oke, that's it.. semoga bermanfaat 

Selasa, 30 Januari 2024

Memprogram Bot Telegram dengan Lazarus Free Pascal

Hallo Pemirsa,

Saya akan berbagi sedikit pengetahuan tentang cara memprogram Bot Telegram menggunakan Bahasa Pemrograman Free Pascal dan Lazarus IDE. Cara ini menggunakan unit dan library murni bawaan Free Pascal dan Lazarus sehingga tidak perlu repot memasang komponen pihak ketiga atau perkakas tambahan yang lumayan merepotkan. 

Tauhidslab

Memprogram Telegram Bot atau Telebot sejatinya dapat dilakukan dengan bahasa pemrograman apa saja karena pertukaran data dilakukan melalui HTTP Request menggunakan data format Javascript Object Notation alias JSON. Alhasil, kita hanya memerlukan komponen HTTP Client untuk mengambil dan mengirimkan data ke server Telegram. Sebelum lebih jauh membahas cara memprogram Telebot dengan Bahasa Pemrograman Objek Pascal dan Lazarus, mari kita mulai dengan membuat sebuah Bot Telegram.  

1. Membuat Bot Telegram

Pastikan anda sudah memasang aplikasi Telegram di Smartphone. Buka aplikasi tersebut kemudian dalam kolom pencarian ketik kata kunci BotFather. Pada daftar tampilan yang muncul pilih yang bercentang biru seperti gambar di bawah ini.

Tauhidslab

Berikutnya ketik perintah /newbot kemudian balas dengan mengirimkan nama dan username bot. Pada contoh ini namanya adalah Free Pascal Bot dan usernamenya adalah freepascalbot. Perhatikan bahwa untuk pemilihan username pastikan mengandung kata bot di dalamnya dan disambung tanpa menggunakan spasi. Jika tidak ada kesalahan, bot telah berhasil dibuat dan BotFather akan membalas dengan Token yang digunakan untuk berkomunikasi dengan bot melalui layanan Application Programming Interface (API). Simpan token tersebut karena akan digunakan nantinya. Perhatikan gambar di bawah ini.

Tauhidslab

Terakhir, untuk memastikan apakah bot sudah tersedia, lakukan pengujian dengan cara mencari bot tersebut menggunakan kata kunci username bot di kolom pencarian aplikasi Telegram. Pastikan menggunakan kata kunci username bukan nama untuk mencegah ketidaksesuaian dalam hasil pencarian mengingat saat ini bot dengan nama yang mirip sangat banyak. Seperti gambar di bawah ini.

Tauhidslab

2. Memprogram Bot Telegram Menggunakan Lazarus Free Pascal

Saya akan memastikan bahwa memprogram Telegram Bot menggunakan Free Pascal sangatlah mudah karena karena semua unit dan komponen yang diperlukan telah tersedia. Seara umum, ada 2 library yang diperlukan, pertama untuk kebutuhan berkomunikasi melalui HTTP Request dan kedua untuk kebutuhan mengelola data dengan format JSON. 

Pada intinya, kemampuan untuk mengelola data format JSON adalah kunci utama dalam memprogram Telegram Bot. Saya telah membuat sebuah projek sederhana yang dapat anda unduh melalui link github ini. Karena dalam proses ini kita akan memproses request dari situs https, jadi kita memerlukan library openssl untuk windows silahkan download di sini. Ekstrak kemudian masukan file libeay32.dll dan ssleay32.dll ke dalam folder projek. Projek sederhana tersebut memiliki kemampuan sbb:

a. Mengambil informasi bot dan menampilkannya dalam pesan dialog
b. Mengambil pesan masuk (inbox) kemudian menampilkannya ke dalam komponen ListBox
c. Mengirimkan pesan berdasarkan chat_id yang diperoleh dari pesan masuk (inbox). 

Sebagai gambaran, berikut saya contohkan bagaimana mengambil Informasi Bot (getMe) melalui Free Pascal dan Lazarus IDE. Pertama-tama pada uses projek anda tambahkan beberapa unit berikut:

fpjson, jsonparser, fphttpclient, opensslsockets, StdCtrls;

Selanjutnya deklarasikan beberapa variabel global sebagai berikut:

  rawData : ansistring;
  JsonPar : TJSONParser;
  jsonDoc : TJSONObject;
  TELEGRAM_BOT_URL : string;  

Adapun contoh kode yang saya gunakan untuk menampilkan Informasi Bot (getMe) adalah sbb:

procedure TForm1.Button3Click(Sender: TObject);
var
  id, first_name, username : string;
begin

   TELEGRAM_BOT_URL := 'https://api.telegram.org/'+Token+'/getMe';

   // Melakukan HTTP Request dengan TFPHTTPClient
   try
      rawData := TFPHTTPClient.SimpleGet(TELEGRAM_BOT_URL);
    except
      on E: Exception do
      begin
        ShowMessage('Gagal membaca sumber data: ' + E.Message);
        Exit;
      end;
    end;

   // Memformat/Parse Output yang diperoleh dari HTTP Request menjadi JsonDoc
    try
      JsonPar := TJSONParser.Create(rawData);
      JsonDoc := TJSONObject(JsonPar.Parse);
    except
      on E: Exception do
      begin
        ShowMessage('Informasi tidak valid: ' + E.Message);
        Exit;
      end;
    end;

    // Membreakdown Hasil Parse (JsonDoc) kemudian menyimpannya ke dalam variabel
     if  jsonDoc.findpath('ok').AsBoolean then
       begin

         // Jika Result tidak kosong
         if (jsonDoc.findpath('result').Count <> 0) then
         begin

           if (jsonDoc.findpath('result').FindPath('id') <> nil) then
              id := jsonDoc.findpath('result').FindPath('id').AsString;
           if (jsonDoc.findpath('result').FindPath('first_name') <> nil) then
              first_name := jsonDoc.findpath('result').FindPath('first_name').AsString;
           if (jsonDoc.findpath('result').FindPath('username') <> nil) then
              username := jsonDoc.findpath('result').FindPath('username').AsString;

           // Menampilkan informasi bot dalam dialog informasi
           ShowMessage('Bot ID : '+id+sLineBreak+'Bot Name : '+first_name+sLineBreak+'Username : '+username);
         end;

       end;
end; 

Untuk lebih jelasnya silahkan download source code projek melalui link github di atas. Silahkan kembangkan sesuai dengan kebutuhan anda. Akhir kata, tetap semangat!!