Jumat, 20 April 2012

Ambil Waktu System (Komputer) – Visual C++


Postingan kali ini akan coba dibahas sedikit tentang cara mengambil waktu system. Pengambilan data ini bermanfaat saat kita membuat sebuah aplikasi yang membutuhkan data waktu dari komputer yang digunakan komputer yang menjalankan aplikasi yang telah kita buat.
Untuk bisa mengakses data waktu dari system/komputer, kita memerlukan sebuah library yaitu “time.h”. Dengan library tersebut kita bisa mengakses waktu mulai dari detik, menit, jam dan tanggal. Saat mengakses waktu dalam bentuk jam, menit, detik dan yang berkaitan dengan waktu system kita juga memanfaatkan struktur (struct tm) yang telah disediakan didalam library “time.h”.
Selain itu, untuk dapat mengakses waktu kita juga memanfaatkan fungsi “localtime”.

Berikut ini contoh program mengambil data waktu system kemudian ditampilkan di textbox, yang mana pengambilan data nya memanfaatkan event button click.

private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
       //deklarasi objek yang memanfaatkan class dan struct yang ada di library time.h
       time_t rawtime;
       struct tm * timeinfo;
                            
//deklarasi variabel untuk menampung data sementara dari pemanggilan fungsi localtime
       char jam,menit,detik;

       //proses pengambilan data waktu sistem
       time ( &rawtime );
timeinfo = localtime ( &rawtime );
                            
//proses pemindahan data waktu sesuai dengan format ke dalam variabel
       jam=timeinfo->tm_hour;     //format untuk jam
       menit=timeinfo->tm_min;    //format untuk menit
       detik=timeinfo->tm_sec;    //format untuk detik

       //menampilkan data waktu yang telah diambil kedalam textBox
       textBox1->Text=jam.ToString();
       textBox2->Text=menit.ToString();
       textBox3->Text=detik.ToString();
}

Program diatas akan mengambil data waktu sesuai dengan format waktu jam, menit dan detik. Format jam yang diambil adalah format 24 jam.
Program diatas juga bisa kita modifikasi dengan menambahkan sebuah timer, sehingga bisa memunculkan waktu system secara realtime yang kemudian ditampilkan kedalam sebuah label. Berikut ini merupakan contoh programnya yang memanfaatkan event timer_tick dengan menggunakan interval timer sebesar 100.


private: System::Void timer1_Tick(System::Object^  sender, System::EventArgs^  e) {
       //deklarasi objek yang memanfaatkan class dan struct yang ada di library time.h
       time_t rawtime;
       struct tm * timeinfo;
                            
//deklarasi variabel untuk menampung data sementara dari pemanggilan fungsi localtime
       char jam,menit,detik;

       //proses pengambilan data waktu sistem
       time ( &rawtime );
       timeinfo = localtime ( &rawtime );
                            
       //proses pemindahan data waktu sesuai dengan format ke dalam variabel
       jam=timeinfo->tm_hour;     //format untuk jam
       menit=timeinfo->tm_min;    //format untuk menit
       detik=timeinfo->tm_sec;    //format untuk detik
                            
       //menampilkan data jam, menit dan detik kedalam sebuah label
       label4->Text=jam.ToString() + " : " + menit.ToString() + " : " + detik.ToString();
}

Sebelum menjalankan program diatas, nilai timer1->Enabled harus disetting “true” agar timer aktif. Kalau dilihat dari programnya, sama saja yang berbeda hanya jika menggunakan event yang digunakan adalah button_click maka program hanya dijalankan 1 kali saja(hanya pada saat button ditekan) sehingga waktu yang didapat adalah waktu saat penekanan tombol (button). Jika menggunakan event timer_tick, selama timer aktif maka program akan dijalankan terus menerus selama event timer_tick berlaku, hal tersebut mengakibatkan pengambilan data yangterus menerus dan akan menghasilkan data waktu yang tampil di label bersifat realtime.



Berikut ini merupakan contoh aplikasi yang menggabungkan kedua program diatas.
#include <time.h>
#pragma once

namespace getSystemTime_VC {

       using namespace System;
       using namespace System::ComponentModel;
       using namespace System::Collections;
       using namespace System::Windows::Forms;
       using namespace System::Data;
       using namespace System::Drawing;
       /// <summary>
       /// Summary for Form1
       /// </summary>
       public ref class Form1 : public System::Windows::Forms::Form
       {
       public:
              Form1(void)
              {
                     InitializeComponent();
                     //
                     //TODO: Add the constructor code here
                     //
              }

       protected:
              /// <summary>
              /// Clean up any resources being used.
              /// </summary>
              ~Form1()
              {
                     if (components)
                     {
                           delete components;
                     }
              }
       private: System::Windows::Forms::Button^  button1;
       protected:
       private: System::Windows::Forms::TextBox^  textBox1;
       private: System::Windows::Forms::GroupBox^  groupBox1;
       private: System::Windows::Forms::Label^  label2;
       private: System::Windows::Forms::Label^  label1;
       private: System::Windows::Forms::Label^  label3;
       private: System::Windows::Forms::TextBox^  textBox3;
       private: System::Windows::Forms::TextBox^  textBox2;
       private: System::Windows::Forms::Label^  label4;
       private: System::Windows::Forms::Timer^  timer1;
       private: System::ComponentModel::IContainer^  components;

       private:
              /// <summary>
              /// Required designer variable.
              /// </summary>

#pragma region Windows Form Designer generated code
              /// <summary>
              /// Required method for Designer support - do not modify
              /// the contents of this method with the code editor.
              /// </summary>
              void InitializeComponent(void)
              {
                     this->components = (gcnew System::ComponentModel::Container());
                     this->button1 = (gcnew System::Windows::Forms::Button());
                     this->textBox1 = (gcnew System::Windows::Forms::TextBox());
                     this->groupBox1 = (gcnew System::Windows::Forms::GroupBox());
                     this->label3 = (gcnew System::Windows::Forms::Label());
                     this->textBox3 = (gcnew System::Windows::Forms::TextBox());
                     this->textBox2 = (gcnew System::Windows::Forms::TextBox());
                     this->label2 = (gcnew System::Windows::Forms::Label());
                     this->label1 = (gcnew System::Windows::Forms::Label());
                     this->label4 = (gcnew System::Windows::Forms::Label());
                     this->timer1 = (gcnew System::Windows::Forms::Timer(this->components));
                     this->groupBox1->SuspendLayout();
                     this->SuspendLayout();
                     //
                     // button1
                     //
                     this->button1->Location = System::Drawing::Point(155, 19);
                     this->button1->Name = L"button1";
                     this->button1->Size = System::Drawing::Size(99, 77);
                     this->button1->TabIndex = 0;
                     this->button1->Text = L"Ambil Data Waktu";
                     this->button1->UseVisualStyleBackColor = true;
                     this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
                     //
                     // textBox1
                     //
                     this->textBox1->Location = System::Drawing::Point(64, 19);
                     this->textBox1->Name = L"textBox1";
                     this->textBox1->Size = System::Drawing::Size(75, 20);
                     this->textBox1->TabIndex = 1;
                     //
                     // groupBox1
                     //
                     this->groupBox1->Controls->Add(this->label3);
                     this->groupBox1->Controls->Add(this->button1);
                     this->groupBox1->Controls->Add(this->textBox3);
                     this->groupBox1->Controls->Add(this->textBox2);
                     this->groupBox1->Controls->Add(this->label2);
                     this->groupBox1->Controls->Add(this->label1);
                     this->groupBox1->Controls->Add(this->textBox1);
                     this->groupBox1->Location = System::Drawing::Point(12, 12);
                     this->groupBox1->Name = L"groupBox1";
                     this->groupBox1->Size = System::Drawing::Size(260, 105);
                     this->groupBox1->TabIndex = 2;
                     this->groupBox1->TabStop = false;
                     this->groupBox1->Text = L"Get system time";
                     //
                     // label3
                     //
                     this->label3->AutoSize = true;
                     this->label3->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 9.75F, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,
                           static_cast<System::Byte>(0)));
                     this->label3->Location = System::Drawing::Point(6, 80);
                     this->label3->Name = L"label3";
                     this->label3->Size = System::Drawing::Size(39, 16);
                     this->label3->TabIndex = 6;
                     this->label3->Text = L"Detik";
                     //
                     // textBox3
                     //
                     this->textBox3->Location = System::Drawing::Point(64, 76);
                     this->textBox3->Name = L"textBox3";
                     this->textBox3->Size = System::Drawing::Size(75, 20);
                     this->textBox3->TabIndex = 5;
                     //
                     // textBox2
                     //
                     this->textBox2->Location = System::Drawing::Point(64, 45);
                     this->textBox2->Name = L"textBox2";
                     this->textBox2->Size = System::Drawing::Size(75, 20);
                     this->textBox2->TabIndex = 4;
                     //
                     // label2
                     //
                     this->label2->AutoSize = true;
                     this->label2->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 9.75F, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,
                           static_cast<System::Byte>(0)));
                     this->label2->Location = System::Drawing::Point(6, 50);
                     this->label2->Name = L"label2";
                     this->label2->Size = System::Drawing::Size(43, 16);
                     this->label2->TabIndex = 3;
                     this->label2->Text = L"Menit ";
                     //
                     // label1
                     //
                     this->label1->AutoSize = true;
                     this->label1->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 9.75F, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,
                           static_cast<System::Byte>(0)));
                     this->label1->Location = System::Drawing::Point(6, 19);
                     this->label1->Name = L"label1";
                     this->label1->Size = System::Drawing::Size(34, 16);
                     this->label1->TabIndex = 2;
                     this->label1->Text = L"Jam";
                     //
                     // label4
                     //
                     this->label4->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 27.75F, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point,
                           static_cast<System::Byte>(0)));
                     this->label4->Location = System::Drawing::Point(12, 125);
                     this->label4->Name = L"label4";
                     this->label4->Size = System::Drawing::Size(259, 50);
                     this->label4->TabIndex = 3;
                     this->label4->Text = L"00 : 00 : 00";
                     this->label4->TextAlign = System::Drawing::ContentAlignment::MiddleCenter;
                     //
                     // timer1
                     //
                     this->timer1->Tick += gcnew System::EventHandler(this, &Form1::timer1_Tick);
                     //
                     // Form1
                     //
                     this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
                     this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
                     this->ClientSize = System::Drawing::Size(284, 187);
                     this->Controls->Add(this->label4);
                     this->Controls->Add(this->groupBox1);
                     this->Name = L"Form1";
                     this->Text = L"Get system time by Rifqi";
                     this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);
                     this->groupBox1->ResumeLayout(false);
                     this->groupBox1->PerformLayout();
                     this->ResumeLayout(false);

              }
#pragma endregion

private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
       //deklarasi objek yang memanfaatkan class dan struct yang ada di library time.h
       time_t rawtime;
       struct tm * timeinfo;
                            
//deklarasi variabel untuk menampung data sementara dari pemanggilan fungsi localtime
       char jam,menit,detik;

       //proses pengambilan data waktu sistem
       time ( &rawtime );
       timeinfo = localtime ( &rawtime );
                            
       //proses pemindahan data waktu sesuai dengan format ke dalam variabel
       jam=timeinfo->tm_hour;     //format untuk jam
       menit=timeinfo->tm_min;    //format untuk menit
                            detik=timeinfo->tm_sec;   //format untuk detik

       //menampilkan data waktu yang telah diambil kedalam textBox
       textBox1->Text=jam.ToString();
       textBox2->Text=menit.ToString();
       textBox3->Text=detik.ToString();
}

private: System::Void timer1_Tick(System::Object^  sender, System::EventArgs^  e) {
       //deklarasi objek yang memanfaatkan class dan struct yang ada di library time.h
       time_t rawtime;
       struct tm * timeinfo;
                            
//deklarasi variabel untuk menampung data sementara dari pemanggilan fungsi localtime
       char jam,menit,detik;

       //proses pengambilan data waktu sistem
       time ( &rawtime );
       timeinfo = localtime ( &rawtime );
                            
       //proses pemindahan data waktu sesuai dengan format ke dalam variabel
       jam=timeinfo->tm_hour;     //format untuk jam
       menit=timeinfo->tm_min;    //format untuk menit
       detik=timeinfo->tm_sec;    //format untuk detik
                            
       //menampilkan data jam, menit dan detik kedalam sebuah label
       label4->Text=jam.ToString() + " : " + menit.ToString() + " : " + detik.ToString();
}

private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
                      //mengaktifkan timer, saat aplikasi mulai dijalankan
                      timer1->Enabled=true;
               }
};
}


Desain tampilan aplikasi :


0 komentar:

Posting Komentar