Lebih Dalam Tentang Function Pos, PosEx dan Copy di Delphi

Artikel berikut akan membahas tentang function Pos, PosEx, dan Copy yang banyak digunakan dalam contoh program di buku ‘Membuat SMS gateway dengan Delphi 7’. Kombinasi ketiga function di atas sangat ampuh untuk melakukan  parsing isi SMS . Secara umum fungsi ketiga function di atas adalah melakukan find/search suatu substring dalam sebuah string. Berikut ini adalah penjelasan ketiga function di atas dilengkapi dengan contoh programnya.

1. Function ‘Pos’

Function ini berada dalam unit ‘System’ sehingga Anda tidak perlu menambahkan unit ini secara manual ke dalam klausa ‘Uses’ Delphi. Function ‘Pos’ memiliki sintaks sebagai berikut :

function Pos (Substr:string,S:string):integer;

Penjelasan :

Function ‘Pos’ memiliki dua passing variable yakni ‘Substring’ dan ‘S’ yang masing-masing bertipe string. Namun, function ini secara keseluruhan akan mengembalikan sebuah nilai (return value) yang bertipe integer. Jadi, ketika function ini dipanggil, akan dihasilkan sebuah nilai baru yang bertipe integer yang merupakan nomor indeks ‘Substring’ dalam string ‘S’. Jika substring yang dimaksud tidak ditemukan, maka nilai kembalian akan bernilai ‘0’.

Karena bersifat sebagai function, maka ‘Pos’ ini biasanya membutuhkan sebuah variabel untuk menampung nilai kembalian yang kemudian dapat dimanipulasi untuk proses selanjutnya. ‘Indeks’ sendiri bisa diartikan sebagai nomor urut karakter dimulai dari awal string. Untuk detailnya dapat Anda lihat pada gambar di bawah

 Jika ada script Delphi sebagai berikut :

Aindeks:= Pos (‘kaku’,S);  

maka Aindeks akan bernilai 19

Catatan : jika substring yang dicari tidak ditemukan, maka nilai kembalian yang dipanggil oleh function ‘Pos’ akan bernilai 0. Contoh dengan string ‘S’ sama dengan contoh di atas, maka

Aindeks:= Pos (‘nenek’,S);  —> Aindeks akan bernilai 0

Berikut ini adalah contoh implementasi function ‘Pos’ dalam Delphi :

Ambil komponen TButton, TEdit dan TMemo dari Component Pallete, kemudian atur sedemikian rupa di Form seperti gambar di bawah

Kemudian double click tombol ‘Button1’ dan isikan source code sebagai berikut :

procedure TForm1.Button1Click(Sender: TObject);

var Aindeks:integer;

begin

 Aindeks:=pos(‘kaku’,memo1.text);

 edit1.Text:=inttostr(Aindeks);

end;

Running program di atas (tekan F9), kemudian isikan kotak memo1 dengan string ‘Kuku kaki kakekku kaku kaku’. Setelah itu tekan tombol ‘Button1’ dan amati perubahan angka di kotak ‘Edit1’.

2. Function ‘PosEx’

Bersambung ….

3. Function ‘Copy’

Bersambung …..

0 0 votes
Article Rating

Leave a Reply

26 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
aslup

om mau tanya cara membedakan variable ini gmna : 08123456789 dan 081234567

setiap saya pos jika saya hanya ingin mengambil 081234567 selalu 08123456789 terbaca.

Makasih om,,,

HARYO

om cara untuk memparsing multi data sensor dari mikro misalnya dari arduino . untuk ditampilkan di Tedit dephi secara terpisah gimna ya ??

misalnya data sensor terbaca :
27 26 28 29
terus mau di tampilkan di
Tedit1 = 27
Tedit2 =26
Tedit3=28
dst

ini menggunakan Tcomport serial port om ??

Eko cs

Mas , mau tanya ?
Jika saya punya data dari arduino
A1=23
A2=25
A3=26,
Aq kirim serial ke delphi….
Cara ngambil datanya A1,A2 dan A3 nya di delphinya gimana ya?
Terima kasih.

Eko cs

Klo comport udah mas, maksudnya program buat ambil datanya….
Klo data cuma 1 yang diambil kan gampang mas, tapi klo 3 susah mas….?
Klo 1 kan tinggal
Comport1.readStr(data ,count);
Hasil:=StrToint(data);
Edit1.text:=hasil;

Lha klo 3 data gimana?

Eko cs

Mas boleh dicontohin satu mas, masih bingung yang pake posex dan pos….?

Eko cs

Masih mas….. Belum masuk,

Eko cs

Maksudnya cara n

sembiring kembaren

minta tolong mas bantu cara posxnya
bingung mau nampilkannnya di Tedit mas
kasi satu contoh program aja mas biar siap tugas

Eko cs

Cara ngolahnya mas….

Eko cs

Comport1.readStr(data ,count);
A:=posex(‘,’ , data);
B:=posex(‘,’ , data);
C:=posex(‘,’ , data);
Gini mas?

Eko cs

Belum mas, hasilnya 0 semua….

Eko cs

Gini mas,
Data sensor saya dari arduino
Serial
27A25B25C, kadang berubah
28A29B28C…..
Jadi data yang ingin ditampilkan itu sebelum A yaitu 27, sebelum B 25 dan sebelum C yaitu 28 . jadi bukan letak posisi indexnya mas,…..
Data sensornya juga berubah ubah mas…. 🙂

Iskandar

kak ajie mau tanya:
saya punya kasus yang sama dengan diatas mengenaik akses komunikasi serial multi sensor dengan arduino menggunakan delphi. saya new bie banget kak di delphi. dari kemaren nyoba masukin data sensor itu gak bisa bisa.
saya punya data sensor 2 kak misal 11.5A89.25B. bagaimana caranya kak agar nilai sebelum huruf A dan B itu bisa saya masukan ke edit teks1 dan edit teks2. saya masih belum paham dengan pos dan posex nyoba gagal terus kak.

guntur

mas, saya ada data sensor dari arduino, misal 30T65H, dan sudah bisa saya pisahkn dengan fungsi posex dan copy (data 30 masuk edit1 dan data 65 masuk edit2), dan setiap ada perubahan data dari sensor, pembacaan di edit1 dan edit2 jg berubah. Tapi ada sedikit permasalahan sewaktu arduino dan sensor, saya hubungkn dengan module RF NRF24L01 yg menerima data dari Transmitter NRF24L01. Data yang diterima sama dengan sisi TX, dan data yang akan masuk ke delphi, sewaktu dilihat di serial monitor arduino juga masih sama (30T65H), akan tetapi waktu dibaca dan ditampilkan di delphi, data tsb menjadi kacau dan acak… Read more »

26
0
Would love your thoughts, please comment.x
()
x