Delphide Elektrik Harcaması Hesabı

Uygulamaya 03.03.2017 tarihinde Değerleri Kayıt Defterinde otomatik saklama ve Kayıt Defterinden otomatik okuma kodları eklenmiştir 🙂

Elektrikle çalışan her cihazın bir güç değeri vardır. Güç birimi watt’tır. Bir elektrikli cihazın ne kadar harcama yaptığını (elektriki iş) hesaplamak için gücün yanında süreye de ihtiyaç vardır. Elektrik harcaması hesaplanırken güç KiloWatt (Kw) (1000 Watt) cinsinden, süre ise saat cinsinden alınır. Sonuç KiloWatt Saat (Kwh) cinsindendir. Formül aşağıdaki gibidir :

(Elektriksel iş-Kwh) W = P (Elektriksel güç-Kw) x t (Zaman-saat)

Aşağıda Delphi ile yapılmış Elektrik harcaması hesabı yapan basit uygulama bir uygulama bulunmaktadır. Bu uygulama ile herhangi bir elektrikli cihazın girilen sürede ve birim fiyatla kaç liralık elektrik tükettiği bulunabilir. Uygulamanın tasarım şekli ve form dosyası (dfm) içeriği aşağıdadır :

Elektrik harcaması uygulaması tasarım ekranı

object Form1: TForm1
  Left = 508
  Top = 325
  Width = 288
  Height = 240
  Caption = 'Elektrik harcamas'#305
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  Position = poDesktopCenter
  PixelsPerInch = 96
  TextHeight = 13
  object lblGuc: TLabel
    Left = 24
    Top = 19
    Width = 25
    Height = 13
    Caption = 'G'#252#231' :'
  end
  object lblSure: TLabel
    Left = 24
    Top = 46
    Width = 29
    Height = 13
    Caption = 'S'#252're :'
  end
  object lblBirimFiyat: TLabel
    Left = 24
    Top = 73
    Width = 56
    Height = 13
    Caption = 'Birim Fiyat :'
  end
  object edtGuc: TEdit
    Left = 97
    Top = 16
    Width = 65
    Height = 21
    TabOrder = 0
    Text = '0'
  end
  object cbbGuc: TComboBox
    Left = 168
    Top = 16
    Width = 81
    Height = 21
    Style = csDropDownList
    ItemHeight = 13
    ItemIndex = 1
    TabOrder = 1
    Text = 'KWatt'
    Items.Strings = (
      'Watt'
      'KWatt')
  end
  object edtSure: TEdit
    Left = 97
    Top = 43
    Width = 65
    Height = 21
    TabOrder = 2
    Text = '0'
  end
  object cbbSure: TComboBox
    Left = 168
    Top = 43
    Width = 81
    Height = 21
    Style = csDropDownList
    ItemHeight = 13
    ItemIndex = 2
    TabOrder = 3
    Text = 'Saat'
    Items.Strings = (
      'Saniye'
      'Dakika'
      'Saat')
  end
  object edtBirimFiyat: TEdit
    Left = 97
    Top = 70
    Width = 65
    Height = 21
    TabOrder = 4
    Text = '0'
  end
  object btnHesapla: TButton
    Left = 24
    Top = 104
    Width = 225
    Height = 41
    Caption = 'Hesapla'
    TabOrder = 5
    OnClick = btnHesaplaClick
  end
  object edtSonuc: TEdit
    Left = 24
    Top = 160
    Width = 225
    Height = 21
    Color = clYellow
    ReadOnly = True
    TabOrder = 6
    Text = '0'
  end
end

Uygulamada 4 Edit ve 2 adet Combobox vardır. 3 adet Edit’te Güç, Süre ve Birim fiyat girişi yapılırken son Edit’te sonuç Kilowatt saat, tl ve kuruş cinsinden görüntülenmektedir. Combobox’lar ile ise Güç, Kilowatt veya Watt cinsinden; Süre ise saat, dakika veya saniye cinsinden hesaplanması seçilmektedir. Birim fiyat girilerek Tl ve kuruş cinsinden harcama da hesaplanmaktadır.

Birim fiyatı kendi faturama göre Ocak 2017 itibari ile 0,412 kuruş olarak hesapladım. Bu fiyat, tarihe veya şehire göre değişebilir. Birim fiyatı bulmak için son elektrik faturasının elektrik harcamasına bölünmesi yeterlidir. Vergiler ve paylar dahil birim fiyat çıkacaktır.

Aşağıda uygulamanın çalışan hali ve kodu bulunmaktadır :

Elektrik harcaması uygulaması

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Registry;

type
  TForm1 = class(TForm)
    edtGuc: TEdit;
    cbbGuc: TComboBox;
    edtSure: TEdit;
    cbbSure: TComboBox;
    edtBirimFiyat: TEdit;
    btnHesapla: TButton;
    edtSonuc: TEdit;
    lblGuc: TLabel;
    lblSure: TLabel;
    lblBirimFiyat: TLabel;
    procedure btnHesaplaClick(Sender: TObject);
    procedure KayitdefteriOku;
    procedure KayitdefteriYaz;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

const
  Key='Software\Dm7blog\Watthesap\';

var
  Form1: TForm1;
  Reg : TRegistry;

implementation

{$R *.dfm}

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  KayitdefteriYaz;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  KayitdefteriOku;
end;

procedure TForm1.KayitdefteriYaz;
begin
  Reg := TRegistry.Create;
  Reg.RootKey := HKEY_CURRENT_USER;
  Reg.OpenKey(Key, True);
  Reg.WriteString('Guc', edtGuc.text);
  Reg.WriteString('Sure', edtsure.text);
  Reg.WriteString('BirimFiyat', edtbirimfiyat.text);
  Reg.WriteString('Sonuc', edtsonuc.text);
  Reg.WriteInteger('GucBirimi',cbbGuc.ItemIndex);
  Reg.WriteInteger('SureBirimi',cbbSure.ItemIndex);
  Reg.Free;
end;

procedure TForm1.KayitdefteriOku;
begin
  Reg := TRegistry.Create;
  Reg.RootKey := HKEY_CURRENT_USER;
  Reg.OpenKey(Key, True);
  edtGuc.text:=Reg.ReadString('Guc');
  edtsure.text:=Reg.ReadString('Sure');
  edtbirimfiyat.text:=Reg.ReadString('BirimFiyat');
  edtsonuc.text:=Reg.ReadString('Sonuc');
  if Reg.ValueExists('GucBirimi') then
   cbbGuc.ItemIndex:=Reg.ReadInteger('GucBirimi');
  if Reg.ValueExists('SureBirimi') then
   cbbSure.ItemIndex:=Reg.ReadInteger('SureBirimi');
  Reg.Free;
end;

procedure TForm1.btnHesaplaClick(Sender: TObject);
var
guc, sure, bfiyat, sonuc, kwh: Real;
begin
 try
  guc := StrToFloat(edtGuc.text);
 except
  on Exception : EConvertError do
   begin
      ShowMessage('Hatalı güç değeri girişi!');
      guc := 0;
      edtGuc.text := '0';
   end;
 end;

 if cbbGuc.ItemIndex=0 then  guc := guc / 1000; // Watt

 try
  sure := StrToFloat(edtsure.text);
 except
  on Exception : EConvertError do
   begin
      ShowMessage('Hatalı süre değeri girişi!');
      sure := 0;
      edtsure.text := '0';
   end;
 end;

 if cbbSure.ItemIndex=0 then  sure := sure / 3600; // Saniye
 if cbbSure.ItemIndex=1 then  sure := sure / 60; // Dakika

 try
  bfiyat := StrToFloat(edtbirimfiyat.text);
 except
   on Exception : EConvertError do
    begin
      ShowMessage('Hatalı birim fiyat değeri girişi!');
      bfiyat := 0;
      edtBirimfiyat.text := '0';
    end;
 end;

 kwh := guc * sure;
 sonuc := kwh * bfiyat;
 edtSonuc.text := floattostr(kwh) + ' Kwh & ' + floattostr(sonuc) + ' Tl & ' + floattostr(sonuc*100) + ' Kuruş';
end;

end.

Not Bu uygulamada güç hesaplaması yapılırken DC sistem (Doğru akım) veya akım ve gerilimin aynı fazda olduğu (aralarında faz farkı olmadığı) tek fazlı bir AC sistem (Alternatif akım) olduğu varsayılmıştır. Akım ve gerilimin aralarında faz farkı olan tek veya çok fazlı AC sistemlerde bu faz farkı (ϕ) hesaba katılmalıdır.

Reklamlar

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.