Arsip: Tanya tenteng Copy String

 
user image
more 18 years ago

krishy

saya lg bikin TA, punya masalah pada pembacaan text dari SMS nya. Namapeternak_namabakul_NoSPPA_Ekor_Kg ==> (format penulisan SMS yang dikirim ke server) text tersebut saya simpan dlm var string dgn perintah copy string. yg jadi masalah nama peternak dan nama bakul kan gak selalu sama. misal SMS 1 = ngadiono wagimin 0001 50 10 SMS 2 = ngadino wagesam 0002 30 15 gimana caranya bisa membaca nama peternak dan nama bakul yg akan disimpan dlm var string agar nama peternak dan nama bakul dpt tersimpan dlm var string. dengan perintah / prosedur seperti apa. mohon bantuan rekan - rekan saya ucapkan terima kasih .....
user image
more 18 years ago

_lmz

@krishy: gimana caranya bisa membaca nama peternak dan nama bakul yg akan disimpan dlm var string agar nama peternak dan nama bakul dpt tersimpan dlm var string. dengan perintah / prosedur seperti apa.
Cara yang susah dan membosankan ya dengan mencari dulu lokasi spasi sebagai pemisah (dengan fungsi Pos), lalu ambil teks dari awal string sampai spasi itu (dengan fungsi Copy). cari lokasi spasi berikutnya lalu potong lagi dan seterusnya... Sebagai alternatif (sekalian kesempatan saya belajar :wink:) ini ada potongan program menggunakan library/komponen TRegExpr.

implementation
uses RegExpr;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var re : TRegExpr;
begin
  re := TRegExpr.Create;
  re.Expression := '^(\S+)\s+(\S+)\s+(\d+)\s+(\d+)\s+(\d+)';
  if re.Exec(Edit1.Text) then begin
    ShowMessage(Format('Namapeternak: %s namabakul: %s NoSPPA: %s Ekor: %s Kg: %s', 
    , re.Match[2], re.Match[3], re.Match[4], re.Match[5]]));
  end
  else begin
    ShowMessage('Format salah');
  end;
  re.Free;
end;
Dengan regular expression di atas maka dapat menangani lebih dari satu spasi di antara field, dan dapat memastikan bahwa NoSPPA, Ekor, dan Kg berupa angka :D asyik juga...
user image
more 18 years ago

kaka-delphi

OOT : @_lmz thx bro for your info's about TRegExpr, sumpeh diriku baru kenal sama nich lib .... :lol: cause diriku masih pake cara primitf ..... :D rupanya diriku kurang googling nich ..... :D
user image
more 18 years ago

_lmz

@kaka-delphi: Yah, memang biasanya yang pakai regular expression adalah programmer PHP, Javascript, Perl atau bahasa scripting lainnya, tapi konsepnya memang powerful dan cocok untuk memproses teks. Kalau ingin mendalami, buku referensi yang umumnya disarankan adalah Mastering Regular Expressions karya Jeffrey Friedl. Saya belajar dari buku itu (kebetulan ada di perpustakaan).
user image
more 18 years ago

kaka-delphi

Thx again bro ... :lol:
user image
more 18 years ago

krishy

Thank's Bro atas infonya. aku dah download. aku coba dech smoga aja bisa. skli lagi thank infonya...
user image
more 18 years ago

krishy

Bro, gimana kalo mo misah string yg dibatasi dengan karakter#. misal formatnya nama_peternak#nama _bakul#No_SPPA#Ekor#Kg Isi Stringnya karjo#Paimin#0001#25#250# tolong bantuan dari rekan rekan ...
user image
more 18 years ago

kaka-delphi

Bisa memkai cara klasik seperti berikut :

var
  st: array of string;
  sKata, sHasil: string;
  i,j: integer;
begin
  sKata:= 'karjo#Paimin#0001#25#250#';
  sHasil:= '';
  j:= 0;
  // Lakukan looping untuk mengkopi karakter
  for i:=1 to Length(sKata) do
  begin
    // jika tidak ketemu karakter '#'
    if sKata[i] <> '#' then
      sHasil:= sHasil + sKata[i]
    else
    // jika ketemu karakter '#' kopikan string
    // yg telah terkumpul ke array string
    begin
      j:= j+1;
      // Alokasikan untuk indeks array baru
      SetLength(st,j);
      st[j-1]:= sHasil;
      sHasil:= '';
    end;
  end;
end;
Dari hasil rutin di atas, maka string sumber(sKata) tersimpan dalam array dinamis seperti berikut :

st[0] -> 'karjo'
st[1] -> 'Paimin'
st[2] -> '0001'
st[3] -> '25'
st[4] -> '250'
Untuk referensi array dinamis, bisa ke thread berikut : http://pascal-id.org/thread/unknown/1250/view-old-thread/ Mungkin bisa membantu ...
user image
more 18 years ago

krishy

:wink: bro smua dah aku coba cara diatas 'n berhasil.thanks ..... aku juga coba pake prosedure sperti ini : procedure TForm1.Button1Click(Sender: TObject) ; var A: TStringList; begin A := TStringList.Create; try Split(' ', 'karjo Paimin 0001 25 250', A) ; ShowMessage(a[0]) ; //karjo ShowMessage(a[1]) ; //paimin ShowMessage(a[2]) ; //0001 ShowMessage(a[3]) ; //25 ShowMessage(a[2]) ; //250 finally A.Free; end; end; procedure Split (const Delimiter: Char; Input: string; const Strings: TStrings) ; begin Assert(Assigned(Strings)) ; Strings.Clear; Strings.Delimiter := Delimiter; Strings.DelimitedText := Input; end; aku coba 'n Alhamdulillah berhasil .... thank bantuannya ......
more ...
  • Pages:
  • 1
Share to

AI Forward

🚀 We're thrilled to partner with Alibaba Cloud for "AI Forward - Alibaba Cloud Global Developer Summit 2025" in Jakarta! Join us and explore the future of AI. Register now: https://int.alibabacloud.com/m/1000400772/
#AlibabaCloud #DeveloperSummit #Jakarta #AIFORWARD

Random Topic

Local Business Directory, Search Engine Submission & SEO Tools FreeWebSubmission.com SonicRun.com